This document contains confidential and proprietary information
of Nintendo and is also protected under the copyright laws of
the United States and other countries. No part of this document
may be released, distributed, transmitted or reproduced in any
form or by any electronic or mechanical means, including
information storage and retrieval systems, without permission in
writing from Nintendo.
Game Boy Advanced (AGB) stresses portability and focuses on 2D rather than 3D image
processing functions, resulting in a cutting-edge portable game device with revolutionary
capabilities.
It provides window-like functions, rotation, scaling, α blending, and fade-in/fade-out
features that can be combined to produce exactly the image representations desired.
Additionally, the bitmap image-rendering function, with its two modes (double buffering
mode for rewriting full-screen images in real time and single buffering mode for stills), can
be used to handle realistic images that are indistinguishable from actual photographs.
The 2.9-inch-wide reflective TFT color LCD screen provides a clear display with little
afterimage.
In addition to Game Boy Color compatible sound, AGB has a PCM stereo sound generator.
Multiple tracks can be played simultaneously by overlapping them using the CPU. L and R
buttons have been added to the Controller. The broader range of control provided also
expands the breadth of game designs possible.
Although AGB uses a 32-bit RISC CPU whose computing performance and data processing
capabilities far surpass those of Game Boy Color, it consumes little power, allowing
approximately 15 hours of continuous play. This is made possible by the inclusion of the various
types of RAM on a single custom chip.
Furthermore, software for AGB can be developed using the C language, minimizing the
cost of development equipment. This favorable development environment and the high
level of freedom of the system configuration allow one to build a profound world of play in
which anyone can become absorbed.
With its extremely high-performance computational and data processing capabilities as a
foundation, AGB provides greater image and sound representation capabilities, making the
pursuit of fun its essential aim.
The purpose of this high level of performance is to bring unique game ideas fully to life.
AGB is an innovation born from experience. While providing backwards compatibility with
the enormous software resources available for the 100 million Game Boy units in use
worldwide, it also breaks new ground for portable game devices.
0.3.6.212/21/1999-Minor modification. ( Numbering for items: P81,P82,P149),
(Reference to chapter removed)
-Deleted 14.3
0.3.6.301/05/2000-Minor modification.
-Corrected BG Offset Registers diagrams
-Corrected the diagrams of Registers for Setting the Direction
Parameters of BG data.
-Corrected diagram of the Sound 1 Duty Cycle.
-Corrected the name of d05 bit for the DISPCNT Register.
-Added the description of Bit map BG mode.
-Corrected the SIO Timing Chart of Normal Serial Communication.
-Changed the diagrams and descriptions of the Sound Control
Registers.
-Added the formula for calculating the number of OBJs that can
be displayed on 1 line.
0.4.001/25/2000
-Changed specifications.
*Changed CPU internal working RAM memory capacity, and
created CPU external working RAM.
*Changed the bit structures of DMA control registers.
*Deleted Infrared Communication functions.
*Created the interrupt IME register, and changed the bit
structures of IE and IF registers.
*Changed the number of colors that can be displayed to 32,768.
*Changed the specifications of Normal Serial Communication
(Bit width, communication speed)
*Changed the specifications of Multi SIO Communication (UART
system).
*Changed the center coordinate of OBJ Rotation to dot
boundary.
*Added UART system communication function.
02/09/2000
0.4.102/22/2000
-Added the Complete Block Diagram.
-Modified the description of Direct Sounds, and corrected
register
02/24/2000
02/25/2000
R bit structure.
-Added the PWM sampling cycle control function.
-Changed the method to specify OBJ size.
-Corrected misprints in the communication control register.
0.4.1.103/08/2000
03/10/2000
-Added the description of ROM registration data.
-Improved the description of interrupt and multiple interrupt
process.
03/10/2000
-Improved the description of system call and multiple system call
process.
0.4.1.204/06/2000-Added the description of UART system communication.
1.012/01/2000-Deleted the checksum of ROM registration data and revised the
diagram.
-Revised the diagram for "AGB Game Link Cable" in the "Communication
Function".
-Revised the number of DMG sold from tens of millions to a hundred
million in the introduction of AGB.
-Revised the hours you can play continuously from "about 20 hours" to
"about 15 hours".
-Revised the illustrations of the AGB hardware and the Multi Player AGB
Game Link cable in the multi play communication diagram.
-Added the description of the timing chart for normal SIO communication.
-Added a caution in the DMA valid flag of all the DMA control registers.
-Added a caution in the master start bit of the multi-play control register.
-Revised the multi-play timing chart.
-Revised the memory map for system reserve area in the work RAM.
-Added a caution to "Communication Function".
-Revised the first sentence in "UART Communication". Added "Relation
between Data register, FIFO and Shift register".
-Revised the expression of [Cautions] to a more specific expression
[Cautions for ~~].
-Added a description of X coordinate and Y coordinate for OAM. Added
the diagram to Y coordinate.
-Revised the description of the pre-fetch buffer flag in the Game Pak
memory wait control register.
-Added cautions to the description of the input/output select flag in the R
register of general communication.
1.012/01/2001-Modified the description of pin 31 in the Game Pak bus.
-Revised the cancel conditions for the Stop function in the power-down
mode.
-Added additional descriptions and cautions for the initialization flag of
Sound 1.
1.022/13/2001-Modified the description of "8-Bit/32-Bit Normal Communication Function"
summary in "Communication" chapter.
-Added a paragraph to "Selecting Communication Function" in
"Communication" chapter.
1.043/1/2001-Specified the method to control the OBJ display individually in
the description of the double size flag and the rotation/scaling
flag for OAM attribute 0.
-Added the description of display synchronization DMA to DMA3.
-Added the description of the DMA problem and how to avoid it at the end
of the chapter on DMA.
*Added the restrictions to the description of the repeat flag in DMA3.
*Updated the timing chart and the cable connection diagram for the multiplay communication.
*Revised the description of the normal serial communication cautions.
AGB is a portable game device that maintains downward compatibility with Game Boy
Color (CGB) and provides higher performance.
AGB’s 2.9-inch-wide reflective TFT color LCD and 32-bit RISC CPU enable production
of games that match or surpass the Super Nintendo Entertainment System (Super
NES) in performance.
AGB CPU
32-bit RISC CPU (ARM7TDMI)/16.78 MHz
Downward Compatibility with CGB
Integral 8-bit CISC CPU for compatibility
(However, it cannot operate at the same time as the AGB CPU.)
Memory
System ROM16 Kbytes (and 2 Kbytes for CGB System ROM)
Working RAM32 Kbytes + CPU External 256 Kbytes (2 wait)
VRAM96 Kbytes
OAM64 bits x 128
Palette RAM16 bits x 512 (256 colors for OBJ ;
256 colors for BG)
Game Pak
memory
Up to 32 MB: mask ROM or flash memory
(&EEPROM)
+
Up to 512 Kbits: SRAM or flash memory
Display
240 x 160 x RGB dots
32,768 colors simultaneously displayable
Special effects features (rotation/scaling, α blending, fade-in/fade-out, and mosaic)
4 image system modes
Operation
Operating keys (A, B, L, R, START, SELECT, and Control Pad)
Sound
4 sounds (corresponding to CGB sounds) + 2 CPU direct sounds (PCM format)
Communication
Serial communication (8 bit/32 bit, UART, Multi-player, General-purpose, JOY Bus)
Like DMG and CGB, AGB is equipped with a 32-pin connector for Game Pak
connection. When a Game Pak is inserted, AGB automatically detects its type and
switches to either CGB or AGB mode.
The following Game Paks operate on the AGB system.
1.DMG Game Paks, DMG/CGB dual mode Game Paks, and CGB dedicated Game
Paks
2.AGB dedicated Game Paks(Game Paks that only function with AGB)
OAM3216/3216/3216/3216/32
Palette RAM1616/3216/3216/3216/32
VRAM1616/3216/3216/3216/32
CPU Internal Working RAM3216/3216/328/16/328/16/32
CPU External Working RAM1616/3216/328/16/328/16/32
Internal registers3216/3216/328/16/328/16/32
Game Pak ROM
1616/3216/328/16/3216/32
(Mask ROM, Flash Memory)
Game Pak RAM
8----88
(SRAM, Flash Memory)
Good execution efficiency is obtained when programs that operate from the Game Pak
use 16-bit instructions (16-bit compiler), and those that operate from CPU Internal
Working RAM use 32-bit instructions (32-bit compiler).
2.4 Little- Endian
In the AGB CPU, memory addresses are allocated in 8-bit increments, and littleendian format is used in implementing the 8-, 16-, and 32-bit access widths.
Three 32 MB Game Pak ROM spaces are allocated to the area beginning
from 08000000h.
The access speed of each of these spaces can be set individually. Thus,
they are named Wait State 0, Wait State 1, and Wait State 2.
This specification enables memory of varying access speeds in Game Pak
ROM to be accessed optimally.
The base addresses of the 3 spaces are 08000000h for Wait State 0,
0A000000h for Wait State 1, and 0C000000h for Wait State 2.
In addition, the upper 1 Mbit of each space is allocated as flash memory.
This area is used primarily for saving data.
2) Game Pak RAM
The area beginning from 0E000000h is the Game Pak RAM area. Up to
512 Kbits of SRAM or Flash Memory can be stored here. However, it is an
8 bit data bus. Due to the specifications, any Game Pak device other than
ROM must be accessed using Nintendo's library.
Although the 32 MB Game Pak memory space is mapped to the area from 08000000h
onward, the 32 MB spaces beginning from 0A000000h and 0C000000h are images of
the 32 MB space that starts at 08000000h.
These images enable memory to be used according to the access speed of the Game
Pak memory (1-4 wait cycles).
AddressRegisterAttributes
15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00
WAITCNT204h0000hR/W
Game Pak RAM
Wait Control
Wait State 0
Wait Control
Wait State 1
Wait Control
Wait State 2
Wait Control
PHI Terminal Output Control
00: No Output
01: 4.19 MHz clock
10: 8.38 MHz clock
11: 16.76 MHZ clock
Prefetch Buffer Flag
0: Disabled
1: Enabled
Game Pak Type Flag
Value
WAITCNT [d15] Game Pak Type Flag
The System ROM uses this.
WAITCNT [d14] Prefetch Buffer Flag
When the Prefetch Buffer Flag is enabled and there is some free space,
the Prefetch Buffer takes control of the Game Pak Bus during the time
when the CPU is not using it, and reads Game Pak ROM data repeatedly.
When the CPU tries to read instructions from the Game Pak and if it hits
the Prefetch Buffer, the fetch is completed with no wait in respect to the
CPU. If there is no hit, the fetch is done from the Game Pak ROM and
there is a wait based on the set wait state.
If the Prefetch Buffer Flag is disabled, the fetch is done from the Game Pak
ROM. There is a wait based on the wait state associated with the fetch
instruction to the Game Pak ROM in respect to the CPU.
WAITCNT [d12 - 11] PHI Terminal Output Control
Controls the output from the PHI terminal. This should always be set to
00(No Output).
WAITCNT [d10 - 08],[d07 - 05],[d04 - 02] Wait State Wait Control
Individual wait cycles for each of the three areas(Wait States 0-2) that
occur in Game Pak ROM can be set. The relation between the wait control
settings and wait cycles is as follows. Use the appropriate settings for the
device you are using.
After executing the System ROM (when the User Program is started) the Wait
Control Value is 000. In the Game Pak Mask ROM used with the actual
manufactured product, the specifications are 1st Access/3 Wait, 2nd Access/1 Wait.
In this case, set the Wait Control Value to 101.
WAITCNT [d01 - 00] Game Pak RAM Wait Control
Wait cycles for the Game Pak RAM can be set. The relation between the
wait control settings and wait cycles is as follows. Use the appropriate
settings for the device you are using.
General LCD status information can be read from bits 0-5 of the
DISPSTAT register.
In addition, 3 types of interrupt requests can be generated by the LCD
controller.
AddressRegister
004h
DISPSTAT
DISPSTAT [d15-08] V Count Setting
15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00
V-Blank Status
V count setting
0-227
V-Blank Interrupt Request Enable Flag
0: Disable
1: Enable
H-Blank Interrupt Request Enable Flag
0: Disable
1: Enable
V Counter Match Interrupt Request Enable Flag
0: Disable
1: Enable
0: Outside V-blank interval
1: During V-blank interval
H-Blank Status
0: Outside H-blank interval
1: During H-blank interval
V Counter Evaluation
0: V counter non-match
1: V counter match
Attributes
R/W
Initial Value
0000h
Can be used to set the value used for V counter evaluation and V counter
match interrupts. The range for this setting is 0-227.
DISPSTAT [d05] V Counter Match Interrupt Request Enable Flag
Allows an interrupt request to be generated when the value of the V counter
setting and the value of the line actually rendered (VCOUNT register value)
agree.
DISPSTAT [d04] H-Blank Interrupt Request Enable Flag
Allows an interrupt request to be generated during horizontal blanking.
DISPSTAT [d03] V-Blank Interrupt Request Enable Flag
Allows an interrupt request to be generated during vertical blanking.
Flag indicating whether the V count setting and the V count register value
match. It is set while they match and automatically reset when they no
longer match.
DISPSTAT [d01] H-Blank Status
Can check whether a horizontal blanking interval is currently in effect.
DISPSTAT [d00] V-Blank Status
Can check whether a vertical blanking interval is currently in effect.
AGB can use different image systems depending on the purpose of the software.
These display-related items are changed mainly using the DISPCNT register.
Setting this bit causes the CPU to forcibly halt operation of the image
processing circuit, allowing access to VRAM, color palette RAM, OAM, and
the internal registers. The LCD screen displays white during a forced
blank. However, the internal HV synchronous counter continues to operate
even during a forced blank. When the internal HV synchronous counter
cancels a forced blank during a display period, the display begins from the
beginning, following the display of three vertical lines.
DISPCNT [d06] OBJ Character VRAM Mapping Format
Specifies the VRAM mapping format for an OBJ character.
A setting of 0 causes the OBJ character to be handled in memory mapped
2-dimensional. A setting of 1 causes the OBJ character to be handled in
memory mapped 1-dimensional.
For information on OBJ character VRAM mapping formats, see section
6.3.2, Character Data Mapping.
DISPCNT [d05] H-Blank Interval OBJ Processing Flag
A setting of 0 executes OBJ Render Processing with all H-Line
intervals(including H-Blank intervals).
A setting of 1 executes OBJ Render Processing with the display intervals
only and not for H-Blank intervals. Thus, when the user accesses OAM or
OBJ VRAM during an H-Blank interval, this bit needs to be set. However,
also in this situation, maximum OBJ display performance cannot be
obtained.
DISPCNT [d04] Display Frame Selection
When rendering in bitmap format in a mode in which there are 2 frame
buffers (BG modes 4 and 5), this bit allows selection of one of the frame
buffers for rendering. A setting of 0 selects the contents of frame buffer 0
for rendering; a setting of 1 selects the contents of frame buffer 1 for
rendering.
DISPCNT [d03] (CGB Mode)
AGB is equipped with 2 CPUs. In AGB mode, a 32-bit RISC CPU starts,
and in CGB mode, an 8-bit CISC CPU starts. Because this bit is
controlled by the system, it cannot be accessed by the user.
DISPCNT [d02-00] BG Mode
Selects the BG mode from a range of 0-5.
For more information on BG modes, see the following section.