GitHub is home to over 20 million developers working together to host and review code, manage projects, and build software together.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
Already on GitHub? Sign in to your account
First off, I've confirmed this as working on hardware twice over; while the hack is amateurish, it's not the problem.
I created a simple hack (one instruction changed) for Super Mario Advance 4: Super Mario Bros. 3 (tested on USA Rev 1 and the Wii U VC edition) which nops the branch over some Game Boy Player behavior so that I can run this ROM on GBA/DS hardware and other emulators with the improved GBP-palette, without having to trigger mGBA's included Game Boy Player support.
However, while this patch works on hardware (DS Lite and, ironically, Game Boy Player tested) and other emulators (no$gba and VBA-M tested), on mGBA the patch results in some unexpected behavior.
With the GBP override turned off in mGBA, the game fails to run with the GBP palette in spite of the patch, and freezes on the "Mario Start!"/"Luigi Start!" screen when attempting to start a level. There's no apparent way to get in-game or play anything.
With the GBP override turned on in mGBA, everything seems to work just fine (although it defeats the purpose of hacking the ROM in the first place).
Thanks for referencing the issue I posted, Vague Rant, and thanks for making this patch too :)
GBA SIO: Improve SIO Normal dummy driver (fixes #520)
Game was trying to trigger a transfer from the non-existent GB Player and then got very confused when the data that came back was bad. Since it was using an external clock when nothing was hooked up it shouldn't have gotten an IRQ, as the external clock never ticks. Making that IRQ not fire fixes the issue.