Difference between revisions of "ARM"
(GBA Rom Header explanation.) |
|||
Line 26: | Line 26: | ||
==== Make some noise ==== | ==== Make some noise ==== | ||
To be added soon. | To be added soon. | ||
+ | |||
+ | ==== ROM Header === | ||
+ | The Gameboy 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. After the fixed byte, 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. | ||
=== Additional Resources === | === Additional Resources === | ||
* [https://problemkaputt.de/gbatek.htm GBATEK] | * [https://problemkaputt.de/gbatek.htm GBATEK] | ||
* [https://www.pouet.net/prodlist.php?type%5B%5D=256b&platform%5B%5D=Gameboy+Advance Pouet: 256 byte productions for the GBA] | * [https://www.pouet.net/prodlist.php?type%5B%5D=256b&platform%5B%5D=Gameboy+Advance Pouet: 256 byte productions for the GBA] |
Revision as of 04:24, 10 September 2020
Contents
Introduction
So here is a bit of help to get you started:
The ARM processor
The ARM Processor is a RISC based architecture and comes in many flavors.
Gameboy Advance
The Gameboy 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): -
Video display
The Gameboy 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 Gameboy Advance has 4 channel sound + 2 x DMA for digital audio.
Make some noise
To be added soon.
= ROM Header
The Gameboy 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. After the fixed byte, 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.