Game Boy Advance BIOS
|Game Boy Advance BIOS|
This game has a prototype article
This game has a prerelease article
Stuff from the source code in the 2020-07-25 Nintendo leak
The Game Boy Advance (GBA) was essentially the true successor to the original Game Boy line launched in 2001. It added an ARM7-based 32-bit CPU on the top of the Z80-based 8-bit CPU used by previous Game Boy models, allowing for full backwards compatibility with the entire Game Boy (GB) and Game Boy Color (GBC) software library (aside from a few games that used GB/GBC exclusive features, mind you) in addition to its own games. Due to hardware simplification, this feature would be removed in the later Game Boy Micro models though, limiting its support only to GBA cartridges (similarly, the original Nintendo DS and the Nintendo DS Lite are also limited to only GBA cartridges for their backwards compatibility).
Its BIOS was more sophisticated than previous models' bootstrap ROMs, containing a variety of routines that games could use to speed up or simplify operations (or dump the normally read-protected BIOS data, thanks to programming oversights).
// Coded by Kawasedo
The five keys (normal, multi, joybus, [unknown], and constant) are used by the GBA to decrypt multiboot images sent over the link cable. When combined, they form this message from the developer.
The last two keys also appear later in the BIOS. "Kawasedo" is a nickname used by "Tomohiro Kawasae", a Nintendo employee most notable for his work on official emulation projects such as the NES emulators included in Animal Crossing and Metroid Prime.
Unused Fade to GBC Mode
The BIOS contains code to detect when a Game Boy or Game Boy Color cartridge is inserted into the slot (by reading bit 15 of REG_WAITCNT 4000204h). If it detects a GBC cartridge, it will fade to an image of a screen border, then perform a software switch to GBC mode (by setting bit 3 of REG_DISPCNT 4000000h).
However, Nintendo couldn't get their hardware to work this way, possibly due to cartridge voltage differences, so they used a physical switch in the cartridge slot to immediately switch to GBC mode instead. The Game Boy Micro model, as well as the DS and DS Lite, lacked this switch.