You are on page 1of 29

GBC 系统

系 统 配 置
 GBC 是一种掌上游戏机,它能与现有的 GB 软件兼容并且提供了颜色,颜色是通过液晶
显示器显示的,显示尺寸和电池都与现有的 MGB(pocket GameBoy)相同。通过使用扩展
功能,甚至可能比 DMG 运行得更快。

 GBC 系统是围绕 CPU 建立的,并配有液晶显示器

 系统包以下几个部分:
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 的调色板一样能自动选择颜色数据。

2. GBC 模式(使用 GBC 相兼容或 GBC 专用的游戏卡)


 新的 GBC 寄存器,扩展存储区和新的功能都可以使用。

注意: 为了转换到 GBC 模式中,必须在 ROM 寄存器设置一个特定的代码


(参考第 22 页的数据规定)。

 以下游戏卡可在 GBC 系统中使用。


1. DMG 专用的游戏卡(传统的 DMA/MGB)
2. GBC 兼容的游戏卡(DMG/MGB 兼容能在 GBC 运行的游戏卡)
3. GBC 专用的游戏卡(运行于 GBC 模式的特别游戏卡)

1
系统配置
LCD
驱动器 HR-TFT
R 160×144×RGB 点
E
G

耳机接口 LCD LCD


驱动器 驱动器

扩 音量调节
音 显示 RAM
器 8位 64K 位 SRAM
微处理器 器 SRAM

扬声器 显示 RAM
64K 位 SRAM

扩展 WRAM
红外通讯口 32 K 位×8
静态存储器

串行输入/输出接口 游戏程序

控制按钮
电源

后备 SRAM 电源接口

游 戏 卡
电源开关
-15V +3.3V +5V +13V

直流—直流
转换器

GBC 与 DMG/MGB 对照表

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 块

卡通 8×8 256 块 512 块


8×16 128 块 256 块
背景窗颜色层次 4 层灰度 1 调色板 4 种颜色 8 调色板
(DMG/MGB 模式 4 种颜色 1 调色板)
卡通层颜色层次 3 层灰度 2 调色板 3 种颜色 8 调色板
(DMG/MGB 模式 3 种颜色 2 调色板)
卡通的居前顺序
X 坐标不同 X 低坐标居前 新的卡通号居前
(DMG/MGB 模式下 X 低坐标居前)
X 坐标相同 新的卡通号居前 新的卡通号居前

时钟 & 分配 8 位计时器 ×1 8 位计时器 ×1


16 种分类 ×1 16 种分类 ×1
连续输入输出 8 位 ×1 8 位 ×1
波特率 8 K 8K/256K(2 倍速模式—16K/512K)
DMA 控制器
旧的 DMA No.0000~DFFF → OAM No.0000~DFFF → OAM
DMA 并排空间 磁盘和工作内存→ VRAM
DMA 的普通用途 磁盘和工作内存→ VRAM

中断功能
内部中断 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

OAM FE00~FE9F OAM FE00~FE9F


声音 NR x x FF10~FF26 NR x x FF10~FF26
寄存器 Wave RAM FF30~FF3F Wave RAM FF30~FF3F

GBC 存储区

存储区结构

 GBC 游戏机提供了 32K 的存储空间(地址 0~7FFFH) 给程序。

地址 000~0FFH:分配给 RST 指令的跳转目的地址和中断开始区


地址 100~14FH:用来存储游戏名。
地址 150H :用户程序的开始地址

 在系统内分配 16K 的存储区给 LCD 显示存储区,(地址 8000~9FFFH 8k)作为转换存储区,分为


库 0.库 1,通过 VBK(FF4F 端口)第 0 位进行切换. 每个库可分为以下两部分:

1) 显示数据存储区(8000 – 97ff 共 48k), 显示数据存储区又可分为三个部份


8000 – 87FF 为卡通数据存储区,8800 – 8fff 为卡通,背景混合数据存储区
9000 – 97FF 为背景数据存储区
2) BG(Background screen) 背景显示索引数据(写代码,属性)存储区
(9800 – 9fff 16k 其中又分为两个库 1,库 2.各 8k)

 8K(地址 A000~BFFFH)分配给外部扩展存储区

 8K(地址 C000~DFFFH) 的工作 RAM,建立在系统中。

RAM 又分为两个 4K 的体。第 0 体不可切换.第 1 体到第七体可切换(通过写 SVGK FF70 端口的


D0,D1,D3 位,写 0 ,1 代表第 1 库,写 2,3,4,5,6,7 分别代表 2,3,4,5,6,7 库)
,这样共组成 32K 存储空间中。
1)4K(地址 C000~CFFFH)固定为库 0
2)4K(地址 D000~DFFFH)指定为库 1~7

 地址 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 位)内存的空间作为媒介来转换库。

LCD 显示 RAM 示意图

16K 字节的空间被 VBK 寄存器分为 2×8K 字节空间。

库 1 库 2
8000H
显示数据
显示数据
9800H 背景显示索引数据 1
9C00H 背景显示索引数据 2
9FFFH

背景(Background Screen) 显示索引数据


库 0 库 1
7 6 5 4 3 2 1 0
CHR 代码(8 位)

显示优先标志 彩色调色板说明
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

1)当显示背景数据指定地址为 9800~9BFFH 256 位


(32 块)
160 位
RAM 地址 块 号 (20 块)
0 1 2 19 20 30 31
9800H CHR 代码&ATTR 0 1 2
32 33 34 51 52 62 63
9801H CHR 代码&ATTR 1 64 65 65 83 84 94 95
3

9802H
2 96 97 98 115 116 126 127
CHR 代码&ATTR
144 位
(18 块)

9BFDH 1021
CHR 代码&ATTR

9BFEH CHR 代码&ATTR 1022 544 545 546 563

576 577 578


9BFFH CHR 代码&ATTR 1023 608 609 610

256 位
(32 块)

992 993 994 1022 1023

这是当(SCX ,SCY)=(0,0)时,显示在 LCD 上的区

这是当(SCX ,SCY)=(152,8)时,显示在 LCD 上的区

8
SCX—-FF43 SCY—FF42
2) 当显示背景数据指定地址为 9C00~9FFFH

RAM 地址 块 号
9C00H CHR 代码&ATTR 0
9C01H CHR 代码&ATTR 1
9C02H CHR 代码&ATTR 2

9FFDH CHR 代码&ATTR 1021

9FFEH CHR 代码&ATTR 1022

9FFFH CHR 代码&ATTR 1023

字符代码示意图
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

OBJ 代 码 &BG OBJ 代 码 &BG


XFE 8FE0H 代码“080” 代码“180”
点数据 点数据
8FEFH OBJ 代 码 &BG OBJ 代 码 &BG
XFF 8FF0H
代码“081” 代码“181”
点数据 点数据
8FFFH
X00 9000H OBJ 和 BG 的共
享区

900FH OBJ 代 码 &BG OBJ 代 码 &BG


代码“0FE” 代码“1FE”
点数据 点数据
X7F 97F0H

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

802FH OBJ 代码 OBJ 代码


X03 8030H
“000” “100”
803FH 点数据 点数据

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 块

2)当 BG 字符代码指定到地址 8000~8FFFH,那么它同 OBJ 的区和代码点是一样,也和 CHR 代码相同。

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 屏幕上边沿。

FE01H R/W 在 LCD 中的 X 坐标


00~FFH
当 X=8H 时,显示窗口在 LCD 屏幕左边沿。

FE02H R/W CHR 代码


0- FFH

FE03H R/W 属性标志

11
调色板说明
符号库说明
DMG/MGB 模式调色板说明

水平翻转标志
0:不翻转
1:水平翻转

垂直翻转标志
0:不翻转
1:垂直翻转

显示优先标志
0:OBJ 优先
1:BG 优先

注意: 当使用 DMG/MGB 模式时, 用 DMG/MGB 调色板; 然而使用 GBC 模式时,却要


用彩色调色板和字符规则标志

OBJ1~OBJ39 的结构与 OBJ0 相同


OBJ (Object)优先顺序

当 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

注意: 在 DMG/MGB 模式下, 当 X 坐标不同时, 只能 X 坐标低的卡通优先。

LCD 的颜色显示
 GBC 系统的 LCD 的单元能显示 32,768 色,和 32 种变化的 R.G.B 色。

 每种颜色的调色板由 32,768 色中的 4 种所组成,BG 和 OBJ 都能从 8 个调色板的单元中自由的


选择。然而,因 OBJ 要清晰的显示,所以一个调色板只能由 3 色组成。每个调色板能单独存在
于 BG 和 OBJ。

调色板
 每个 BG 和 OBJ 都提供 8 个调色板(调色板号 0~7)

 每种调色板由 4 种颜色所组成,并指定给显示的点(2 bits)。 (色号 0~3)

 每个调色板用 5 位二进制数来分别表示 R.G.B 颜色数据,每个显示点映射两个字节。 (能显示


32,768 种颜色)

调色板的高位 调色板的低位
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 写说明寄存器

H/L 说明(H:1 , L:0)

调色板数据号说明

调色板号说明

0: 不自动加一,固定给位 0~5
1: 每次写完自动指向下一个调色板

BCPD FF69 R/W BG 写入数据寄存器

OCPS FF6A R/W OBJ 写说明寄存器

14
H/L 说明(H:1 , L:0)

调色板数据号说明

调色板号说明

0: 固定给位 0~5
1: 每次写完自动指向下一个调色板

OCPD FF6B R/W OBJ 写入数据寄存器

覆盖 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
×: 任意值

 在 OBJ 或 BG 中的 0 数据用 2 位"00" 表示。

 在 OBJ 和 BG 中用 obj 和 bg 来代表数据("01","10","11")。

 OBJ 和 BG 的优先权由 OBJ OAM 遮挡属性来设定。(OBJ 显示遮挡优先)。

当使用现有的 DMG/MGB 游戏卡时,(DMG/MGB 模式)

 当使用现有的 DMG/MGB-专用游戏卡 (不兼容 GBC),上色时颜色由 BGP,OBP0 和 OBP1 自动完成。然


而,BG 显示时只能用 4 种颜色,OBJ 只能用 2 色板 3 个颜色,除了透明色。(一屏中最大能有 10
个颜色。)

15
1)显示 BG
BGP 中点显示的颜色数据(2 位)由 BG 调色板 NO.0 来说明
2)显示 OBJ
OBP0 和 OBP1 中点显示的颜色数据(2 位)由 OBJ 调色板 NO.0 和 NO.1 来说明

 GBC 中显示的颜色会自动地按照已经在 GBC 中记录好的调色板中选择(它们是不能被程序修改)

 游戏过程中也可能改变调色板,然而调色板必须从在 GBC 登记了的调色板中选择。

 在游戏过程中压动专用的键产生硬件中断改变调色板。游戏改变,把放于调色板菜单中的一个状
态弹出。

 这个功能只能用在 DMG/MGB 方式。

CPU 的操作速度
 GBC-CPU 能根据应用操作来变化速度。
 在正常的模式下,每块 DMG/MGB-CPU 的操作速度都相同,在两倍速模式下,所有的操作的速度加
倍,除了液晶控制电路与声音电路。

正 常 模 式 1.05 MHz (中央处理器系统时钟)


双倍速模式 2.10 MHz (中央处理器系统时钟)
转换 CPU 的操作速度
 GBC-CPU 立即复位后(在立即复位以后清除),系统操作在正常模式下。
 当[ KEY1 ]寄存器的 0 位被设置成"1"时,转换 CPU 操作速度执行“停止”完成命令。当在正常的
模式下执行这个操作,就转化状态到双倍速模式下。如果这操作在双倍速模式下被执行,就转
化状态到正常的模式下。转换 CPU 操作速度之后,[ KEY1 ]寄存器的 0 位将自动复位。
 另外,[ KEY1 ]寄存器的位 7 是 CPU 速度标记与显示当前中央处理器速度。

寄存器名 地 址 7 6 5 4 3 2 1 0
KEY1 FF4D R/W

充许转换速度

速度标志(只读)
0: 正常模式
1: 双倍数模式

注意: 当[KEY1]寄存器的位 0 设置成”1”时,待命功能不能使用。 当要使用待命功能时必须在


[KEY1] 寄存器的位 0 上设定为”0”。

在执行这个操作后, 当要使用待命功能(停止模式)时,必须复位全部的中断启动标志。 在
P1 端口寄存器的位 4 和位 5 上,设置成”1”执行停止命令。

16
在执行这个操作后,将自动返回停止模式和这个操作,它们不需要建立目标来清除停止模
式, 直到 CPU 操作速度被改变和系统时钟恢复为止。

寄存器名 地 址 7 6 5 4 3 2 1 0
P1 FF00 R/W P1 端口寄存器

输入端口

输出端口

在使用双倍速模式时,掩模 ROM 必须和双倍速模式相兼容。

 另外,当使用双倍速模式时,电池寿命会变短。
工作存储区寄存器
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 )

 这种 DMA 传输方式只从地址 0~DFFFH 的 40×32 位的值传输到 OAM(地址 FE00~FE8FH)。传输启


动地址可以从地址 0~DFFFH 中指定任意的 100H 地址, 。

 这传输方法与 DMG/MGB 一样。但是,当从地址 8000~9FFFH 传输时(显示 RAM 区),在存储区内的


数据变换由[ VBK ]寄存器的 0 位指定传输。另外,当从地址 D000~DFFFH(GBC 工作 RAM 区)传
输时,在存储区内的数据变换由[ SVBK ]寄存器的最低的 3 个位指定传输。

 当 CPU 的操作速度被加倍时,传输速度也被加倍。

新的 DMA 传输方式 (背景 DMA FF55)

现在的 DMG/MGB 拥有所有旧的 DMA 的传输方式,另外还增加了以下功能。

1 ) 行扫苗逆程 DMA 传输
 在每个行扫苗逆程周期内自动地从用户程序区(地址 0~7FFFH)和外部 GBC 工作存储区(地
址 A000~DFFFH)传送 16 字节数据到 LCD 显示存储区(地址 8000~9FFFH)。行扫苗逆程 DMA
传输的周期排列顺序从 1 到 128 由[HDMA5(FF55)]寄存器设定的。

 在 DMA 传输期间内 CPU 将中断处理。

2 ) 通用 DMA 传输
 这种传输方式可从用户程序区 (地址 0~7FFFH)和外部 GBC 工作存储区(地址 A000~
DFFFH)传送 16 字节到 2,048 字节的数据(能设定从 16 字节开始增加)到 LCD 显示存储区
(地址 8000~9FFFH)。和并行 DMA 传输一样,在 DMA 传输期间内 CPU 将中断处理。

 这种传输的来源区-GBC 工作存储区(地址 D000~DFFFH)是由 SVBK 寄存器所指定的。

 这种传输的目的区-LCD 显示存储区(地址 8000~9FFFH)是由 VBK 寄存器所指定的。

18
注意: 新的 DMA 传输方式, 是以 16 个字节为单元来传输字节总数。 传输只能由 16 个字节内的任意
一个开始增加。

新的 DMA 传输操作只在正常速度下,不论 CPU 是正常模式还是在双倍速模式

在使用双倍速模式时, 掩模 ROM 必须和双倍速模式相兼容。

新 DMA 控制寄存器
寄存器名 地 址 7 6 5 4 3 2 1 0
HDMA1 FF51 W 传输来源说明

0- 7FH (程序 ROM)


A0~DFH (扩展游戏工作 RAM)

HDMA2 FF52 W 传输来源说明


0X~FXH
和 HDMA1 组合,形成 12 位指向传输的来源区
(000X~7FFXH 或 A00X~DFFXH)

HDMA3 FF53 W 传输目的说明


00~1FH

HDMA4 FF54 W 传输目的说明


0X~FXH
和 HDMA3 组合,形成 9 位指向传输的目的区
(800X~9FFXH)

HDMA5 FF55 R/W 启动传输和传输数量

(n)
在 DMA 并行传输期间,
DMA 传输数的范围在(n+1)
传输总的字节数=16×(n+1)
(最大:2,048 字节)

在通用 DMA 传输期间


传输总的字节数=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 位转换寄存器)

[SC] FF02H R/W 串行传输控制寄存器

SCK 端子 I/O 选择
0: 使用外部时钟
1: 使用内部时钟

内部转换时钟开关标志。
0 : 选择 8 KHz (16 KHz)
1 : 选择 256 KHz (512 KHz)
* 在括号内的数是
在双倍速模式下

串行传输起始标志
0: 关闭串行传输
1: 启动串行传输
(保持为”1”,直到串行传输结束为止,
当串行传输结束时自动转为”0”)

当使用专门的 DMG/MGB 游戏卡时,内部的时钟频率定在 8KHz,不考虑 SC 寄存器位 1


的内容
串行输入/输出 block 示意图
SIN
7 6 5 4 3 2 1 0
SOUT 8 位转换寄存器(SB)
VDD

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 系统设备也具有红外线通讯功能。

 红外线的信号输出是由 RP 寄存器位 0 写入的数据来决定的。

 另外,任何收到红外线的信号都锁定 LST 内部系统频率的增加,另外还能从 RP 寄存器位 1,位 6


和位 7 设定的值"1"来锁定。

 在节电时,当不能发射和接收数据时,则把 RP 寄存器的值设定为 00H。

寄存器名 地 址 7 6 5 4 3 2 1 0
[RP] FF56 R/W

写数据
0: LED 关
1: LED 开

读数据

读数据使能标志
00: 不能
11: 可以

* RP 寄存器最初的值: 00H

22
附录 A

数据寄存器在 ROM 的说明

在 GBC 程序行,就象常规的 DMG/MGB 专用程序一样,它只能在 CPU 内存中 100~14FH 的 80 个字节


地址中写入与游戏名和游戏卡相匹配的说明数据。

然而,请在地址 143H 设定与颜色相兼容的代码不论程序是否是一个与颜色相兼容


的程序。

如果在 143H 的地址中设定"80",系统则认为程序与颜色兼容的程序一样。


另外,如果“ 00 ”或除“ 80 ”以外的任何值(存在于 DMG 游戏卡)储存在这个
地址,它将被认出作为颜色不兼容(常规的 DMG 程序)。

用户程序开始地址

+0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F

0100H 00 C3 LO HI

0110H “任天堂” 字符代码(104H~133H)

0120H

0130H 游戏名称(134H~142H)

0140H 33

颜色兼容代码
80: 颜色兼容 校验和
00: 颜色不兼容
制造者
代码 补码校验
 其它值是颜 游戏单
色不兼容 元代码 掩模 ROM 版本
磁盘类型 目标代码
ROM 尺寸 外部 RAM 尺寸

颜色兼容 : 当使用 GBC 时,在一个屏幕中最大能显示 56 种颜色。


颜色不兼容 : 当使用 GBC 时,在一个屏幕中最大能显示 10 种颜色。

不论任何游戏,都要在以下地址中存上固定的值

 地址 100H = 00H
 地址 101H = C3H
 地址 14BH = 33H

23
 地址 104H~133H = “任天堂”字符数据
给 GBC 编程的例子
 当为 GBC 编程时,在 ROM 记录数据区设置与颜色相兼容的代码给并且根据硬件在程序内使用
分支的方法。
(看流程图 1)

 然而, 如果使用的功能有下列例子中的任意一种,则处理外部分支使之正常。
(看流程图 2)

 程序例子 1,当计划给全部的 GBC 或 DMG/MGB 模式游戏编程时,并且当在 GBC 上显示任意 56 种


颜色时必须说明。 当作用 GBC 功能时,如果使用兼容程序,可能与旧硬件(DMG/MGB)维持兼容
工作。
程序说明
只能在库 0 内写入字符点数据。
只能使用背景颜色调色板属性(在库 1 的位 0~2 )

库 1 库 2
8000H 字符点数据
字符点数据

9800H BG CHR 代码 BG 属性
9C00H BG CHR 代码 BG 属性
9FFFH

7 6 5 4 3 2 1 0

BG 彩色调色板

在 OAM 寄存器中设定颜色调色板和 DMG/MGB 调色板两者的属性标志。

7 6 5 4 3 2 1 0
OAM 寄存器 属性

彩色调色板

DMG/MGB 调色板

 否则,不能使用 GBC 所特定的任何扩展功能。

24
认识 GBC
以下任意一种程序模式(DMG(SGB),MGB(SGB2),或 GBC)在运行中受到限制。

 这些固定的值在存储器(寄存器),CPU 里。

01H DMG(SGB)
FFH MGB(SGB2)
11H GBC

* 有关 SGB determination 信息参考高级的 NES 发展手册

流程图

25
GBC 和 DMG/MGB 的分支处理

在 ROMP 与入代码(数据 80H)

开 始

11H (GBC)

01H (DMG) GBC 标志 1


FFH (MGB)

初始化

GBC 附加的处理

OAM 传输

BG CHR 代码传输 LCD 显示 RAM 库 0

=1 (GBC)

GBC 标志校验

=0 (DMG)

LCDC ON
GBC 显示彩色
DMG 显示单色

LCDC OFF
或者 消隐

GBC 和 DMG/MGB 的正常处理

26
开 始

初始化

GBC 附加的处理

OAM 传输

(LCD 显示 RAM 库 1)

传输 BG CHR 代码 (LCD 显示 RAM 库 0)

LCDC ON
GBC 显示彩色
DMG 显示单色

LCDC OFF
或者 消隐

注意: 一定要传输 BG 基本属性

传输属性之后, 一定要在同一个地址传送 CHR 代码, 即使只改变 BG 的属性。

GBC 控制寄存器组

27
寄存
地址 D7 D6 D5 D4 D3 D2 D1 D0 注解
器名

P1 P15 P14 P13 P12 P11 P10 R/W

FF00
端口 P15~P10 传输数据控制在这

P14P15

SB R/W

串口传输 FF01

寄存器 传输数据

SC 传输启始 时钟速度 转换时钟 R/W

FF02 0:不 0:8KHz 0:扩展

串口控制 1:开启 1:256KHz 1:内部

DIV F/216 F/215 F/214 F/213 F/212 F/211 F/210 F/29 R/W

FF04 由 LC 命 令 清 除 这

分配器 64 Hz 128 Hz 256 Hz 512 Hz 1024 Hz 2048 Hz 4096Hz 8192 Hz 个寄存器

TIMA R/W

FF05

时钟 游戏单元时钟

TMA R/W

FF06

时钟模数 时钟调整寄存器

TAC 时钟停止 选择频率位 R/W

FF07 0: 停止 00:f/2 10:f/2

时钟控制 1: 运行 01:f/2 11:f/2

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

寄存器

SCX FF43 R/W

28
X 卷屏

寄存器

LY R/W

FF44

LCDC Y 坐标

LYC R/W

LY 比较 FF45

寄存器

DMA R/W

FF46

DMA 传输

29

You might also like