I decided to research the GBA’s m4a engine, and particularly how the GBA stores / plays audio. The mp3 songs you might listen to take up multiple megabytes even for one or two minutes of play time, while a GBA ROM can only store 2MB of data total. A highly efficient way of storing song data was used, similar to the MIDI format. Programs to export sound already exist (like agbplay or the agb2mid tool from various decompilation projects), but documentation is sparse and incomplete. I decided to write my own GBA audio extractor for the learning experience.
EEPROM Save Type
The GBA has games with different sorts of backup memory. There are 3 types: SRAM, Flash and EEPROM. GBATek explains the EEPROM save type, but I found it quite brief, so I will try to add on to this documentation.
Writing a cached interpreter
A while ago, I rewrote my GBA emulator (GBAC-) in C++ (DSHBA) to make it faster. I wanted to add a hardware renderer, and really focus on optimizing it all the way. After I was “done”, and had reached framerates higher than I had ever hoped before, I recently came back to it, and wanted to try to write a cached interpreter. I have heard a lot of talks about JITs and cached interpreters for performance gain, and since I had reached pretty insane framerates already, I wanted to go even further.
AGS Aging Cartridge Test Decompilation
AGS Aging Cartridge is a test used by Nintendo to test GBA systems. I have used it myself mostly to see how well my emulator performed in it while developing […]
GBA Emulator with Hardware Renderer
After having a lot of fun writing a GBA emulator in C# a while ago, I decided it was too slow for my liking. I took the time to rewrite […]
