ARM7的Reset向量表位于0x00000000处,该地址指向一块16 KB大小的BIOS ROM。 这意味着Game Boy Advance首先从BIOS启动,BIOS会显示标志性的启动动画,然后决定是否加载游戏。
BIOS ROM 还存储了软件例程,游戏可以调用这些例程来简化某些操作并减小卡带的大小。 这些例程包括:
- 算术功能:执行除法、平方根和反正切运算的例程。
- 仿射矩阵计算:在给定"缩放"值和角度的情况下,它将计算出输入PPU的仿射矩阵,以便缩放/旋转背景或精灵。
- 有两个函数,一个用于精灵,另一个用于背景。 它们的参数略有不同,但原理相同。
- 解压缩函数:执行解压缩算法,包括Run-Length、LZ77和Huffman。 它还提供位解包和顺序差。
- 内存复制:两个移动内存的函数。 第一个函数使用专门的操作码复制32字节块,这种类型的传输(
LDMIA加载和SDMIA存储)只需一次。 第二个函数分别使用重复的LDRH/STRH或LDMIA/STMIA操作码复制2字节或4字节的数据块。 因此,第二个功能更加灵活,但速度却没有那么快。 - 声音:实现完整的MIDI音序器! 它包括许多控制功能。
- 电源接口: 用于复位、清除大部分RAM、停止CPU直到某个事件发生(垂直消隐或自定义事件)或切换到"低功耗模式"的快捷方式。
- 多重启动: 将程序上传到另一个GBA并启动它。 更多详情请参见"游戏"部分。
BIOS通过32位总线连接,使用ARM和Thumb指令组合实现,但后者最为突出。
此外,请记住,所有这些都只能在ARM7上运行。 换句话说,没有任何硬件加速来加快这些操作。 因此,任天堂通过软件提供了所有这些功能。

