跳到内容

超级任天堂编程/超级任天堂硬件寄存器

来自维基教科书,开放世界开放书籍
地址 寄存器名称 注释
0x2100 屏幕显示寄存器 a000bbbb a: 0=屏幕开启 1=屏幕关闭,b = 亮度
0x2101 OAM 大小和数据区域指定 aaabbccc a = 大小,b = 名称选择,c = 基址选择
0x2102 访问 OAM 的地址
0x2104 OAM 数据写入
0x2105 BG 模式和图块大小设置 abcdefff abcd = BG 图块大小 (4321): 0 = 8x8 1 = 16x16,e = BG 3 高优先级,f = BG 模式
0x2106 马赛克大小和 BG 使能 aaaabbbb a = 马赛克大小 b = 马赛克 BG 使能
0x2107 BG 1 地址和大小 aaaaaabb a = 屏幕基址 (高 6 位),b = 屏幕大小
0x2108 BG 2 地址和大小 aaaaaabb a = 屏幕基址 (高 6 位),b = 屏幕大小
0x2109 BG 3 地址和大小 aaaaaabb a = 屏幕基址 (高 6 位),b = 屏幕大小
0x210A BG 4 地址和大小 aaaaaabb a = 屏幕基址 (高 6 位),b = 屏幕大小
0x210b BG 1 & 2 图块数据指定 aaaabbbb a = BG 2 图块基址,b = BG 1 图块基址
0x210c BG 3 & 4 图块数据指定 aaaabbbb a = BG 4 图块基址,b = BG 3 图块基址
0x210d BG 1 水平滚动偏移 滚动偏移寄存器均为 16 位宽。
0x210e BG 1 垂直滚动偏移
0x210f BG 2 水平滚动偏移
0x2110 BG 2 垂直滚动偏移
0x2111 BG 3 水平滚动偏移
0x2112 BG 3 垂直滚动偏移
0x2113 BG 4 水平滚动偏移
0x2114 BG 4 垂直滚动偏移
0x2115 VRAM 地址增量值
0x2116 VRAM 读/写地址 (低字节)
0x2117 VRAM 读/写地址 (高字节)
0x2118 VRAM 写入数据 (低字节)
0x2119 VRAM 写入数据 (高字节)
0x211a 模式 7 的初始设置 aa0000bc a = 屏幕覆盖 b = 垂直翻转 c = 水平翻转
0x211b 模式 7 矩阵参数 A 寄存器 211b 到 2120 都是 16 位宽。
0x211B 也用作寄存器 0x2134-6 的 16 位被乘数 (写入两次)
0x211C 也用作寄存器 0x2134-6 的 8 位乘数
0x211c 模式 7 矩阵参数 B
0x211d 模式 7 矩阵参数 C
0x211e 模式 7 矩阵参数 D
0x211f 模式 7 中心位置 X
0x2120 模式 7 中心位置 Y
0x2121 CG-RAM 写入地址
0x2122 CG-RAM 写入数据
0x2123 BG 1 和 2 窗口遮罩设置 aaaabbbb a = BG 2 窗口设置 b = BG 1 窗口设置
0x2124 BG 3 和 4 窗口遮罩设置 aaaabbbb a = BG 4 窗口设置 b = BG 3 窗口设置
0x2125 OBJ 和颜色窗口设置 aaaabbbb a = 颜色窗口设置 b = OBJ 窗口设置
0x2126 窗口 1 左侧位置指定
0x2127 窗口 1 右侧位置指定
0x2128 窗口 2 左侧位置指定
0x2129 窗口 2 右侧位置指定
0x212a BG 1、2、3 和 4 窗口逻辑设置 aabbccdd a = BG 4 b = BG 3 c = BG 2 d = BG 1
0x212b 颜色和 OBJ 窗口逻辑设置 0000aabb a = 颜色窗口 b = OBJ 窗口
0x212c 背景和对象使能 (主屏幕) 000abcde a = 对象 b = BG 4 c = BG 3 d = BG 2 e = BG 1
0x212d 背景和对象使能 (子屏幕) 000abcde a = 对象 b = BG 4 c = BG 3 d = BG 2 e = BG 1
0x212e 主屏幕的窗口遮罩指定 000abcde a = 对象 b = BG 4 c = BG 3 d = BG 2 e = BG 1
0x212f 子屏幕的窗口遮罩指定 000abcde a = 对象 b = BG 4 c = BG 3 d = BG 2 e = BG 1
0x2130 颜色叠加的初始设置 aabb00cd a = 主颜色窗口开启/关闭,b = 子颜色窗口开启/关闭,c = 固定颜色叠加/减法使能,d = 直接选择
0x2131 叠加/减法选择和使能 abcdefgh a = 0 表示叠加,1 表示减法,b = 1/2 使能 c = 后台使能,d = 对象使能,efgh = 使能 BG 4、3、2、1
0x2132 固定颜色数据 abcddddd a = 蓝色 b = 绿色 c = 红色 ddddd = 颜色数据
0x2133 屏幕初始设置 ab00cdef a = 外部同步,b = 外部 BG 模式,c = 伪 512 模式,d = 垂直大小,e = 对象-V 选择,f = 隔行扫描
0x2134 乘法结果 (低字节)
0x2135 乘法结果 (中字节)
0x2136 乘法结果 (高字节)
0x2137 H/V 计数器的软件锁存器
0x2138 从 OAM 读取数据 (低-高)
0x2139 从 VRAM 读取数据 (低)
0x213a 从 VRAM 读取数据 (高)
0x213b 从 CG-RAM 读取数据 (低-高)
0x213c H 计数器数据
0x213d V 计数器数据
0x213e PPU 状态标志
0x213f
0x2140 APU I/O 端口
0x2141
0x2142
0x2143
0x2180 间接工作 RAM 访问端口 0x2181 到 0x2183 中的地址在每次访问后会自动递增
0x2181 间接工作 RAM 访问地址 (低字节)
0x2182 间接工作 RAM 访问地址 (中字节)
0x2183 间接工作 RAM 访问地址 (高位) 0000000a a : 内存库,0 = 0x7E,1 = 0x7F
0x4200 NMI、V/H 计数和手柄使能 a0bc000d a = NMI b = V 计数 c = H 计数 d = 手柄
0x4201 可编程 I/O 端口输出
0x4202 被乘数 A
0x4203 乘数 B
0x4204 被除数 (低字节)
0x4205 被除数 (高字节)
0x4206 除数 B
0x4207 H 计数计时器 (高 8 位)
0x4208 H 计数计时器 MSB (位 0)
0x4209 V 计数计时器 (高 8 位)
0x420a V 计数计时器 MSB (位 0)
0x420b 常规 DMA 通道使能 abcdefgh a = 通道 7...h = 通道 0: 1 = 使能 0 = 禁用
0x420c H-DMA 通道使能 abcdefgh a = 通道 7 .. h = 通道 0: 1 = 使能 0 = 禁用
0x420d 时钟速度指定 0000000a a: 0 = 2.68 MHz,1 = 3.58 MHz
0x4210 NMI 标志和 CPU 版本号 a000bbbb a = NMI 发生 b = CPU 版本号
0x4211 H/V 计数计时器触发的 IRQ 标志
0x4212 H/V 空闲标志和手柄状态
0x4213 可编程 I/O 端口输入
0x4214 除法结果的商 (低字节)
0x4215 除法结果的商 (高字节)
0x4216 乘积/余数结果 (低字节)
0x4217 乘积/余数结果 (高字节)
0x4218 手柄 1 数据 (低字节) abcd0000 a = 按钮 A b = X c = L d = R
0x421a 手柄 2 数据 (低字节)
0x421c 手柄 3 数据 (低字节)
0x421e 手柄 4 数据 (低字节)
0x4219 手柄 1 数据 (高字节) abcdefgh a = B b = Y c = 选择 d = 开始 efgh = 上/下/左/右
0x421b 手柄 2 数据 (高字节)
0x421d 手柄 3 数据 (高字节)
0x421f 手柄 4 数据 (高字节)

DMA 寄存器

[编辑 | 编辑源代码]

'X' 为 0 到 7 之间:

地址 寄存器名称 注释
0x43X0 DMA 传输参数 ab0cdeee a = 方向 b = 类型 c = 增/减 d = 自动/固定 e = 字节大小选择
0x43X1 B 地址
0x43X2 A 地址 (低字节)
0x43X3 A 地址 (高字节)
0x43X4 A 地址库
0x43X5 要传输的字节数 (低字节) (DMA)
0x43X6 要传输的字节数 (高字节) (DMA)
0x43X7 数据库 (H-DMA)
0x43X8 A2 表地址 (低字节)
0x43X9 A2 表地址 (高字节)
0x43Xa 要传输的行数 (H-DMA)
华夏公益教科书