Вектор сброса ARM7 находится по адресу 0x00000000, который указывает на 16 КБ ПЗУ BIOS. Это означает, что Game Boy Advance сначала загружается из BIOS, который, в свою очередь, показывает знаменитую заставку, а затем решает, загружать игру или нет.
ПЗУ BIOS также хранит программные процедуры, которые игры могут вызывать для упрощения определенных операций и уменьшения размера картриджа . К ним относятся:
- Арифметические функции: Процедуры для вычисления деления, квадратного корня и арктангенса.
- Вычисление аффинной матрицы: Получая значение "приближения" и угол, вычисляет аффинную матрицу, которая будет передана в PPU для масштабирования/поворачивания фона или спрайта.
- Есть две функции, одна для спрайтов, другая для фонов. Их параметры немного отличаются, но идея одна и та же.
- Функции разжатия данных: Реализует алгоритмы распаковки, такие как кодирование длин серий (run-length encoding, RLE), LZ77 и алгоритм Хаффмана. Он также обеспечивает распаковку битов и дельта декодирование.
- Копирование памяти: Две функции, которые перемещают память. Первая копирует 32-байтовые блоки, используя специализированный опкод для этого типа передачи (
LDMIAдля загрузки иSDMIAдля хранения) только один раз. Вторая копирует 2-байтовые или 4-байтовые блоки, используя повторяющиеся опкодыLDRH/STRHилиLDMIA/STMIA, соответственно. Таким образом, вторая функция является более гибкой, но не такой быстрой. - Звук: Реализует полноценный MIDI-секвенсор! Он включает в себя множество функций для управления им.
- Интерфейс питания: процедуры для сброса, очистки большей части оперативной памяти, остановки процессора до наступления определенного события (V-blank или пользовательского) или перехода в "режим низкого энергопотребления".
- Мультизагрузка (Multi-boot): Загружает программу на другой GBA и запускает ее. Более подробную информацию можно найти в разделе "Игры".
BIOS подключен через 32-битную шину и реализован с использованием комбинации инструкций Arm и Thumb, хотя последняя является наиболее заметной.
Также помните, что все это будет работать только на ARM7. Другими словами, эти операции не имеют никакого аппаратного ускорения. Таким образом, Nintendo обеспечила всю эту функциональность с помощью программного обеспечения.

