Professional Documents
Culture Documents
系 统 配 置
GBC 是一种掌上游戏机,它能与现有的 GB 软件兼容并且提供了颜色,颜色是通过液晶
显示器显示的,显示尺寸和电池都与现有的 MGB(pocket GameBoy)相同。通过使用扩展
功能,甚至可能比 DMG 运行得更快。
系统包以下几个部分:
1. 液晶显示的彩色点可以显示 32 种不同的 R.G.B 色
2. DC-DC 电源变压器
3. 声音扩大器
4. 128kbit SRAM
5. 256kbit SRAM
6. 控制按钮
7. 话筒
8. 耳机插孔
9. 直电源插孔
10. 连接通讯口(6 针后备连结器)
11. 红外线通讯口
32 针连结器是为游戏卡而建立的
GBC 系统的特点:
1. DMG/MGB 模式(使用 DMG 显示游戏卡)
新的 GBC 寄存器,扩展存储区和新的功能都不能使用。
与旧的 BGP,OBP0,和 OBP1 的调色板一样能自动选择颜色数据。
1
系统配置
LCD
驱动器 HR-TFT
R 160×144×RGB 点
E
G
扩 音量调节
音 显示 RAM
器 8位 64K 位 SRAM
微处理器 器 SRAM
扬声器 显示 RAM
64K 位 SRAM
扩展 WRAM
红外通讯口 32 K 位×8
静态存储器
串行输入/输出接口 游戏程序
控制按钮
电源
后备 SRAM 电源接口
游 戏 卡
电源开关
-15V +3.3V +5V +13V
直流—直流
转换器
2
功能对照表
项 目 DMG/MGB-CPU GBC-CPU
CPU 的工作速度 1.05 MHz 1.05 MHz
(系统频率) 2.10 MHz ( 可 转 换 的 )
游戏内存
工作与堆栈区 127×8 位 127×8 位
游戏工作区 8,192 字节 32,768 字节
OMA 40×28 位 40×32 位
LCD 显示区 8,192 字节 16,384 字节
游戏卡内存空间
ROM 32,768 字节 32,768 字节
RAM 8,192 字节 8,192 字节
LCD 控制器
显示面积 160×144 点 160×144×RGB 点
配置区
背景显示尺寸 8×8 点 8×8 点
卡通尺寸 8×8 或 8×16 点 8×8 或 8×16 点
同时存在的块数
背景 256 块 512 块
中断功能
内部中断 4 类(可屏蔽的) 4 类(可屏蔽的)
外部中断 1 类(可屏蔽的) 1 类(可屏蔽的)
输入输出口
连续输入输出口 SIN, SCK, SOUT SIN, SCK, SOUT
3
红外接口 可由软件控制的
声音输出范围 4 种声音 4 种声音
外部声道混合输入
寄存器对照表
DMG/MGB–CPU GBC–CPU
应 用 寄存器名 地 址 寄存器名 地 址
接口模式 P1 FF00 P1 FF00
寄存器 SB FF01 SB FF01
SC FF02 SC FF02
DIV FF04 DIV FF04
TIMA FF05 TIMA FF05
TMA FF06 TMA FF06
TAC FF07 TAC FF07
— KEY1 FF4D
— RP FF56
— SVBK FF70
中断标志 IF FF0F IF FF0F
IE FFFF IE FFFF
IME IME
LCD 显示 LCDC FF40 LCDC FF40
寄存器 STAT FF41 STAT FF41
SCY FF42 SCY FF42
SCX FF43 SCX FF43
LY FF44 LY FF44
LYC FF45 LYC FF45
DMA FF46 DMA FF46
BGP FF47 BGP FF47
OBP0 FF48 OBP0 FF48
OBP1 FF49 OBP1 FF49
WY FF4A WY FF4A
WX FF4B WX FF4B
— VBK FF4F
— HDMA1 FF51
— HDMA2 FF52
— HDMA3 FF53
— HDMA4 FF54
— HDMA5 FF55
4
— BCPS FF68
— BCPD FF69
— OCPS FF6A
OCPD FF6B
GBC 存储区
存储区结构
8K(地址 A000~BFFFH)分配给外部扩展存储区
地址 E000~FDFFH 是保留作专用的
5
内部存储器为 GBC–CPU 分配的地址 FE00~FFFFH
地址 FE00~FE9FH:OAM-RAM(保存 40 个卡通的显示数据值,四个字节为一组)
地址 FF00~FF7FH:指定给命令寄存器,给标志
地址 FFFFH :系统控制
地址 FF80~FFFEH:用作 CPU 运行存储区和堆栈存储区
内存示意图
0000H
中断地址
0100H
RST 地址
0150H
游戏名
程序开始地址
用户程序区
32K 字节 8000H 点数据的低字节
8001H 点数据的高字节
8000H
库0
字符数据
库1
字符数据
背景显示数据 1
9800H
9C00H 字符代码 属 性
背景显示数据 1
A000H 字符代码 属 性
外部内存
外部扩展 WRAM
8K 字节
C000H
6
内部内存 库 0 (固定的)
游戏 WRAM 单元
D000H
8K 字节 库 1~7(可变化的)
E000H
地址 E000~FDFF 是专用的
FE00H
OAM(40 个卡通)
(40×32 位)
FF00H
端口模式寄存器
控制寄存器
FF80H 声音寄存器
工作&堆栈存储区
127 字节
FFFEH
FFFFH
LCD 显示 RAM
GBC―CPU 内置 8K 字单元(128K 位)的 LCD 显示 RAM。
LCD 显示 RAM 必须用 VBK 寄存器(地址 FF4FH) 在地址 8000~9FFFH 所指连续的 16K 字
节内存至 8K 字节(64K 位)内存的空间作为媒介来转换库。
库 1 库 2
8000H
显示数据
显示数据
9800H 背景显示索引数据 1
9C00H 背景显示索引数据 2
9FFFH
显示优先标志 彩色调色板说明
0: OBJ 在前(卡通)
7
1: BG 在前(背景) 库号说明
垂直翻转标志 水平翻转标志
0: 普通 0: 普通
1: 垂直翻转 1: 水平翻转
在这个功能里这个位是没有使用
的
LCD 显示 RAM 区寄存器
寄存器名 地 址 7 6 5 4 3 2 1 0
VBK FF4F R/W
库 0 : 库 0 说明
库 1 : 库 1 说明
库 0 被选择之后,立即清除复位信号。
BG(Background Screen)数据与 LCD 显示屏之间的关系
BG 可能保持总数为两屏的显示数据,数据 1 和数据 2。
由 LCDC 寄存器的位 3 来指定背景显示数据是到地址 9800~9BFFH 或是指定它们到地址 9C00~
9FFFH。
库 0 库 1
9800H BG 显示数据 1
9C00H BG 显示数据 2
9FFFH
9802H
2 96 97 98 115 116 126 127
CHR 代码&ATTR
144 位
(18 块)
9BFDH 1021
CHR 代码&ATTR
256 位
(32 块)
8
SCX—-FF43 SCY—FF42
2) 当显示背景数据指定地址为 9C00~9FFFH
RAM 地址 块 号
9C00H CHR 代码&ATTR 0
9C01H CHR 代码&ATTR 1
9C02H CHR 代码&ATTR 2
字符代码示意图
GBC 的 LCD 显示 RAM 比现存的 DMG/MGB 能多存储两倍的字符。目前,在 DMG/MGB 中库 0 和库 1 的映
射方式是一样的
1 1) X00
当 BG 符号数据指定到地址
8000H 8800~97FFH 时
当 BG 和 OBJ 都是 8×8 点/块
800FH
X01 8010H
CHR 代码 801FH 地 址 库 0 库 1
OBJ 代码 OBJ 代码
“000” “100”
X80 8800H
点数据 点数据
880FH OBJ 代码 OBJ 代码
X81 8810H “001” “101”
点数据 点数据
881FH
97FFH 9
OBJ 代 码 &BG OBJ 代 码 &BG
代码“0FF” 代码“1FF”
点数据 点数据
BG 代码 BG 代码
“000” “100”
点数据 点数据
BG 代码 BG 代码
“07F” “17F”
点数据 点数据
CHR 代码:
OBJ 256×2 块
BG 256×2 块
X00 8000H
800FH
X01 8010H
8×16 点/块(OBJ)和 8×8 点/块(BG)
801FH
CHR 代码 8020H
X02 地 址 库 0 库 1
OBJ 代码 OBJ 代码
X80 8800H
“002” “102”
点数据 点数据
880FH
X81 8810H
881FH
OBJ 代码”080” OBJ 代码”180”
&BG 代码“080” &BG 代码“180”
点数据 点数据
XFE 8FE0H
OBJ 代码”080” OBJ 代码”180”
8FEFH &BG 代码“081” &BG 代码“181”
XFF 8FF0H 点数据 点数据
OBJ 和 BG 的
8FFFH 共享区
X00 9000H
OBJ 代码”0FE” OBJ 代码”1FE”
900FH &BG 代码“0FE” &BG 代码“1FE”
点数据 点数据
X7F 97F0H 10
97FFH
OBJ 代码”0FE” OBJ 代码”1FE”
&BG 代码“0FF” &BG 代码“1FF”
点数据 点数据
BG 代码 BG 代码
“000” “100”
点数据 点数据
BG 代码 BG 代码
“07F” “17F”
点数据 点数据
CHR 代码:
OBJ 128×2 块
BG 256×2 块
OBJ(Objects)
40 OBJ(Objects)的值可以写入 OAM-RAM 内部集成电路中,因为那 40 OBJ 能显示在 LCD 的显
示屏上,在相同的 Y 线(轴)能显示 1 到 10 个 OBJ 的块。
一个 OBJ 的组成是由 32 位组成,Y 坐标(8 位),X 坐标(8 位),CHR 代码(8 位),BG/OBJ 显示
优先排列(1 位),垂直翻转(1 位),水平翻转(1 位),DMG/MGB 模式色彩说明(1 位),写库说
明(1 位),和色彩说明(3 位)。
不论 OBJ 是 8×8 点或是 8×16 点的块都能由 LCDC 寄存器中的结构数据指定。
当 OBJ 设定是 8×16 点的结构时, 同 DMA/MGB 一样,CHR 代码指定为相同代码。
OAM 寄存器 (控制卡通,四个字节为一组,fe00 – fe9f,共 40 组)
地 址 7 6 5 4 3 2 1 0
OBJ0 FE00H R/W 在 LCD 中的 Y 坐标
00~FFH
当 Y=10H 时,显示窗口在 LCD 屏幕上边沿。
11
调色板说明
符号库说明
DMG/MGB 模式调色板说明
水平翻转标志
0:不翻转
1:水平翻转
垂直翻转标志
0:不翻转
1:垂直翻转
显示优先标志
0:OBJ 优先
1:BG 优先
当 OBJ 被覆盖时,(最先写入的摆在最前).
1) 当坐标全部一样时
A
B a=OBJ A 号
C b=OBJ B 号
c=OBJ C 号
当 a>b>c 时,卡通按这个方式显示
2) 当坐标不同时
A
A B
B A
a=OBJ A 号
b=OBJ B 号
c=OBJ C 号
12
当 a>b>c 时,
卡通按这个方式显示
B
B
C
C B
A A
A C
LCD 的颜色显示
GBC 系统的 LCD 的单元能显示 32,768 色,和 32 种变化的 R.G.B 色。
调色板
每个 BG 和 OBJ 都提供 8 个调色板(调色板号 0~7)
调色板的高位 调色板的低位
7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
红色数据
绿色数据
蓝色数据
13
调色板的结构
调色板号 颜色数据号
调色板 H00 调色板 L00 0
调色板 0 号 调色板 H00 调色板 L00 1
2
调色板 H00 调色板 L00
3
调色板 H00 调色板 L00
调色板
1~7 号
写数据到调色板中
写数据到调色板可用写入说明寄存器和写入数据寄存器来完成。
在写入规格寄存器中最低的 6 位中详细写入地址。当数据写入数据寄存器中,要写入详细地
址数据到说明寄存器中。在这时,如果"1"设定在说明寄存器中最高的位,写入地址会自动增
长,指向下一个地址(下一个地址从说明寄存器中最不重要的 6 位读出)
从色块中读数据类似于使用写说明寄存器和写数据寄存器。
当读写数据寄存器,数据可在写说明寄存器中说明的地址读到,在读取中,所指定的地址将
不会自动增长,即使"1"在写说明寄存器中最高位上。
寄存器名 地 址 7 6 5 4 3 2 1 0
BCPS FF68 R/W BG 写说明寄存器
调色板数据号说明
调色板号说明
0: 不自动加一,固定给位 0~5
1: 每次写完自动指向下一个调色板
14
H/L 说明(H:1 , L:0)
调色板数据号说明
调色板号说明
0: 固定给位 0~5
1: 每次写完自动指向下一个调色板
覆盖 OBJ,BG
在 OBJ 显示中显示覆盖 OBJ,BG 可根据 OBJ 的显示优先权和 BG 的显示优先权来完成。
优先显示标志 数 据 显 示
BG OBJ OBJ BG 调色板 数据
0 0 BG 0
“0” 0 bg BG bg
obj 0 OBJ obj
“0” obj bg OBJ obj
0 0 BG 0
“1” 0 bg BG bg
obj 0 OBJ obj
obj bg BG bg
× 0 0 BG 0
“1” × 0 bg BG bg
× obj 0 OBJ obj
× obj bg BG bg
×: 任意值
15
1)显示 BG
BGP 中点显示的颜色数据(2 位)由 BG 调色板 NO.0 来说明
2)显示 OBJ
OBP0 和 OBP1 中点显示的颜色数据(2 位)由 OBJ 调色板 NO.0 和 NO.1 来说明
在游戏过程中压动专用的键产生硬件中断改变调色板。游戏改变,把放于调色板菜单中的一个状
态弹出。
CPU 的操作速度
GBC-CPU 能根据应用操作来变化速度。
在正常的模式下,每块 DMG/MGB-CPU 的操作速度都相同,在两倍速模式下,所有的操作的速度加
倍,除了液晶控制电路与声音电路。
寄存器名 地 址 7 6 5 4 3 2 1 0
KEY1 FF4D R/W
充许转换速度
速度标志(只读)
0: 正常模式
1: 双倍数模式
在执行这个操作后, 当要使用待命功能(停止模式)时,必须复位全部的中断启动标志。 在
P1 端口寄存器的位 4 和位 5 上,设置成”1”执行停止命令。
16
在执行这个操作后,将自动返回停止模式和这个操作,它们不需要建立目标来清除停止模
式, 直到 CPU 操作速度被改变和系统时钟恢复为止。
寄存器名 地 址 7 6 5 4 3 2 1 0
P1 FF00 R/W P1 端口寄存器
输入端口
输出端口
另外,当使用双倍速模式时,电池寿命会变短。
工作存储区寄存器
GBC 的工作存储器( 32k )以每 4k 为单元划分成 8 个存储库。在 CPU 的内存空间地址 C000~CFFFH 是
固定给存储库 0,然而,地址 D000~DFFFH 可在存储库(体) 1~7 之间切换。[ SVBK ]存储库寄存器
中最低的 3 位被用于切换。(当"0"被指定时,库 1 被选择。)
寄存器名 地 址 7 6 5 4 3 2 1 0
SVBK FF70H R/W
说明库
0,1 : 指定为库 1
2~7 : 指定为库 2~7
17
DMA 传输方式
旧的 DMA 传输移方式 ( 卡通 DMA FF46 )
当 CPU 的操作速度被加倍时,传输速度也被加倍。
1 ) 行扫苗逆程 DMA 传输
在每个行扫苗逆程周期内自动地从用户程序区(地址 0~7FFFH)和外部 GBC 工作存储区(地
址 A000~DFFFH)传送 16 字节数据到 LCD 显示存储区(地址 8000~9FFFH)。行扫苗逆程 DMA
传输的周期排列顺序从 1 到 128 由[HDMA5(FF55)]寄存器设定的。
2 ) 通用 DMA 传输
这种传输方式可从用户程序区 (地址 0~7FFFH)和外部 GBC 工作存储区(地址 A000~
DFFFH)传送 16 字节到 2,048 字节的数据(能设定从 16 字节开始增加)到 LCD 显示存储区
(地址 8000~9FFFH)。和并行 DMA 传输一样,在 DMA 传输期间内 CPU 将中断处理。
18
注意: 新的 DMA 传输方式, 是以 16 个字节为单元来传输字节总数。 传输只能由 16 个字节内的任意
一个开始增加。
新 DMA 控制寄存器
寄存器名 地 址 7 6 5 4 3 2 1 0
HDMA1 FF51 W 传输来源说明
(n)
在 DMA 并行传输期间,
DMA 传输数的范围在(n+1)
传输总的字节数=16×(n+1)
(最大:2,048 字节)
当”1”写入时
19
“1”写入之后,DMA 并行传输启动
是依照 DMA 的最初周期。
* 如果当”0”写入时,DMA 并行传输
停止是依照 DMA 的下一个周期。
当”0” 写入时
当”0” 写入时(当这个位是”0”时,这
限
制”0”已经被写入)开始通用 DMA 传输
* 通用 DMA 传输不能停止或暂停除
非输入复位信号。
20
串行输入/输出( SIO )
串行输入/输出基本上与 DMG/MGB 一样,而且还可重新指定位 1 来转换内部时钟频率。
寄存器名 地 址 7 6 5 4 3 2 1 0
[SB] FF01H R/W 串行传输数据
(8 位转换寄存器)
SCK 端子 I/O 选择
0: 使用外部时钟
1: 使用内部时钟
内部转换时钟开关标志。
0 : 选择 8 KHz (16 KHz)
1 : 选择 256 KHz (512 KHz)
* 在括号内的数是
在双倍速模式下
串行传输起始标志
0: 关闭串行传输
1: 启动串行传输
(保持为”1”,直到串行传输结束为止,
当串行传输结束时自动转为”0”)
PULL–UP 寄存器
TRI 状态缓
SCK 冲器
OR
选通 3-bit
计数器
反向器
SC7
开关
SC1
SC0
串行控制接口(SC)
0 1 2 3 4 5 6 7
内部变换时钟(8K/16K)
内部变换时钟(256K/512K)
21
红外线通讯接口
SGB 系统设备也具有红外线通讯功能。
寄存器名 地 址 7 6 5 4 3 2 1 0
[RP] FF56 R/W
写数据
0: LED 关
1: LED 开
读数据
读数据使能标志
00: 不能
11: 可以
* RP 寄存器最初的值: 00H
22
附录 A
用户程序开始地址
+0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F
0100H 00 C3 LO HI
0120H
0130H 游戏名称(134H~142H)
0140H 33
颜色兼容代码
80: 颜色兼容 校验和
00: 颜色不兼容
制造者
代码 补码校验
其它值是颜 游戏单
色不兼容 元代码 掩模 ROM 版本
磁盘类型 目标代码
ROM 尺寸 外部 RAM 尺寸
不论任何游戏,都要在以下地址中存上固定的值
地址 100H = 00H
地址 101H = C3H
地址 14BH = 33H
23
地址 104H~133H = “任天堂”字符数据
给 GBC 编程的例子
当为 GBC 编程时,在 ROM 记录数据区设置与颜色相兼容的代码给并且根据硬件在程序内使用
分支的方法。
(看流程图 1)
然而, 如果使用的功能有下列例子中的任意一种,则处理外部分支使之正常。
(看流程图 2)
库 1 库 2
8000H 字符点数据
字符点数据
9800H BG CHR 代码 BG 属性
9C00H BG CHR 代码 BG 属性
9FFFH
7 6 5 4 3 2 1 0
BG 彩色调色板
7 6 5 4 3 2 1 0
OAM 寄存器 属性
彩色调色板
DMG/MGB 调色板
24
认识 GBC
以下任意一种程序模式(DMG(SGB),MGB(SGB2),或 GBC)在运行中受到限制。
这些固定的值在存储器(寄存器),CPU 里。
01H DMG(SGB)
FFH MGB(SGB2)
11H GBC
流程图
25
GBC 和 DMG/MGB 的分支处理
开 始
11H (GBC)
初始化
GBC 附加的处理
OAM 传输
=1 (GBC)
GBC 标志校验
=0 (DMG)
LCDC ON
GBC 显示彩色
DMG 显示单色
LCDC OFF
或者 消隐
26
开 始
初始化
GBC 附加的处理
OAM 传输
(LCD 显示 RAM 库 1)
LCDC ON
GBC 显示彩色
DMG 显示单色
LCDC OFF
或者 消隐
GBC 控制寄存器组
27
寄存
地址 D7 D6 D5 D4 D3 D2 D1 D0 注解
器名
FF00
端口 P15~P10 传输数据控制在这
P14P15
SB R/W
串口传输 FF01
寄存器 传输数据
DIV F/216 F/215 F/214 F/213 F/212 F/211 F/210 F/29 R/W
FF04 由 LC 命 令 清 除 这
TIMA R/W
FF05
时钟 游戏单元时钟
TMA R/W
FF06
时钟模数 时钟调整寄存器
IF P10~P13 R/W
中断请求 FF0F
标志
IE R/W
中断允许 FFFF
标志
IME R/W
中断允许
LCDC R/W
FF40
LCDC 控制
STAT R/W
LCDC 状态 FF41
信息
SCY R/W
Y 卷屏 FF42
寄存器
28
X 卷屏
寄存器
LY R/W
FF44
LCDC Y 坐标
LYC R/W
LY 比较 FF45
寄存器
DMA R/W
FF46
DMA 传输
29