Difference between revisions of "Gameboy Advance"
m (Add some emulator info) |
m (→Sound: missed a spot) |
||
Line 16: | Line 16: | ||
=== Sound === | === Sound === | ||
− | The | + | The Game Boy Advance has 4 channel sound + 2 x DMA for digital audio. |
==== Make some noise ==== | ==== Make some noise ==== |
Latest revision as of 20:25, 30 April 2024
Contents
Game Boy Advance
The Game Boy Advance uses an ARM7TDMI Processor running at 16.7 MHz, 384kb of memory and a 240x160 pixel resolution.
Setting up
Setting up your development platform for the Gameboy Advance:
- Assembler: -
- Emulator(s): mGBA, NanoBoyAdvance, NO$GBA
Video display
The Game Boy Advance has many graphics modes to play in both 256 colors as well as 15-bit direct RGB access, as well as support for tilemaps and 128 hardware sprites with a max 64x64 resolution.
Getting something on screen
To be added soon.
Sound
The Game Boy Advance has 4 channel sound + 2 x DMA for digital audio.
Make some noise
To be added soon.
ROM Header
The Game Boy Advance ROM header is 192 bytes in size, where 156 bytes are reserved for the Nintendo logo. The first 4 bytes in the ROM header is a ARM-branch instruction to the actual code. The following 156 bytes are the mandatory Nintendo Logo. At offset 0x00A0 the header expects a game title in maximum 12 bytes. These 12 bytes can be reused by inserting instructions instead of a game title. Following the game title, the next 4 bytes are the game code, which can also be used for instructions. After the game code, 2 bytes for the maker code are reserved, which can be used, when already changed into THUMB-Mode. The next byte is fixed and has to be always 0x96. The next byte is free, but hardly to make usage of. One could try to create a useful instruction using the byte before or in general here could be stored some value. After this, another 8 bytes can be used for instructions from offset 0x00B4. At offset 0x00BD a complementary check for the header has to be calculated. If the calculated checksum is different than the stored value, the ROM won't boot. Since some values in the header are fixed, which normaly should be jumped over, one can analyse the resulting instructions created by that fixed bytes and decide whether just slide through it.