Editor, Experienced Forum User, Expert player
(3119)
Joined: 11/30/2014
Posts: 2563
Location: US
Starting to test out GBA verifications. Decided to do a test run of a short homebrew game (Feline) to test out my workflow. This test run was made entirely in my new core to test out save states and TASing tools. Seems to be working well so far. Feline is also interesting from an emulation point of view by itself because if you get seen by the lab rats, the game attempts to change ARM mode in an architecturally unpredictable way (attempting to set the thumb bit by MSR instruction.) Turns out nothing bad happens on hardware, but it took me a while to figure out why it was crashing on me in emulator.
Link to video
The run plays out the same in mGBA, except you can start a frame earlier in my core (presumably due to pre-fetch but I haven't checked the details), so this was a relatively easy test. Once I fix a few more emulation bugs I'll try something more difficult.
Editor, Experienced Forum User, Expert player
(3119)
Joined: 11/30/2014
Posts: 2563
Location: US
I did some tests with Metroid Fusion and Fire Emblem and they both desynced, apparently due to loading times, I believe because of VRAM access delays not implemented yet. The GBA has a feature called forced blank that allows you to access VRAM without any conflicts. A side effect of this though is that the screen fades to white. So, if you want to change scenes with a fade to black instead, which both of those game do, you have to deal with VRAM access delays as the PPU is still rendering.
Fusion made it the furthest so here is a video:
Link to video
So it looks like I'll have to implement this before further testing.
Editor, Experienced Forum User, Expert player
(3119)
Joined: 11/30/2014
Posts: 2563
Location: US
I tested two of the latest homebrew publications.
[5017] GBA Sushi the Cat by MarioAtWork & Technickle in 01:18.22 synced, so I was able to add that one to the console verified list. This would have raised the number of current GBA console verifications from 2 to 3, but Sonic Advance was improved recently so back to 2.
[5141] GBA Powerpig by Darkman425 in 05:22.95 desynced about half way through the game. I then tried the movie in GBAHawk, and it desynced at the same spot as on hardware. So I resynced the movie and tried again, and it synced:
Link to video
So this is the first example of a real world accuracy improvement compared to mGBA.
Aside from Homebrews I still haven't had any luck syncing any games, so more work is needed.