I'll be using this thread to keep track of work I'm doing related to GBA emulation and testing with the goal of console verification of GBA TASes. Code:
https://github.com/alyosha-tas/GBAHawk
This summer I had spent a lot of time working on GBA emulation. I figure this is the next most likely console to see new console verification progress, so I decided to make an emulator core myself to understand the console and hopefully use to make console verified TASes. Originally I wanted to experiment with a modern time keeping / task scheduling style used in other GBA emulators, but after looking over the specs on GBA Tek, there looked to be too many moving parts for me to easily keep track of. So, I went with my usual approach of emulating the whole system one clock cycle at a time. I'm glad I did, as there a lot of nuances, and I spent pretty much all my time focused just on accurate timing of the basic building blocks (cpu, timers, dma, prefetcher) and I haven't even gotten to the ppu or sound much yet. So far though I have really enjoyed the process, this console does a lot of cool things, and I'm really impressed with how everything is put together, and it has been fun learning about a slightly more modern architecture than what I am used to.
Anyway, I have just enough working to present some early results. So far I can pass the Aging Cart tests, get 2020 on mGBA suite (
https://github.com/mgba-emu/suite ) timing tests, and 1256 on the DMA tests, but other emulators can already do that. Additionally, I can get 936 on the mGBA suit count up tests, pass the irq_delay and isr tests (
https://github.com/destoer/gba_tests ) and pass the AGBEEG cart tests (
https://github.com/GhostRain0/AGBEEG-Aging-Cartridge ) all of which I believe no other emulator can do so far:
PPU emulation is my next goal, I only have enough timing details down to pass the basic tests, a lot of work left to do. I haven't properly started rendering yet either, so I have a long road ahead of me.
That's about it for now, my next immediate test goal is the misc. edge case tests on the mGBA suite, which aside from PPU timing I also need to sort out a few details on open bus emulation for. I'm hoping to be able to make a decently detailed post every month or 2 with progress and ideas.