I was testing some games in my emu, and found a weird issue with that 7Up game named Spot.
After the scrolling text in title scene, the screen goes blank and a little hand sprite is suposed to appears after a very short wait time, followed by remaining graphics in Main Menu.
In my emulator the screen goes blank, but it never comes back. The hand sprite never shows up, consequently no main menu.
I can press the reset button combination to make the game reset itself, but nothing changes.
Most emulators I tested does not have any issues. The only one that had the same behaviour was a very old version from GBE+ (the 1.0 available on shonumi's github).
From my investigation, looks like it enters an infinite loop of enabling IRQs, then servicing Vblank, then a few calls later it enable IRQ again, service vblank again and keep repeating this, without ever completing the main menu loading routines.
I can break the loop by forcing my code to request a Vbank IRQ at the end of each frame, forcing it to be serviced.
By doing this, the little hand finally appears and game plays normally after that.
I'm sure I'm missing something pretty dumb, but there are so many games that runs fine that is very weird to get trapped like that.
Maybe this has something to do with STAT IRQ blocking? Or anyone knows if there's something tricky with this game that I should be aware?
After the scrolling text in title scene, the screen goes blank and a little hand sprite is suposed to appears after a very short wait time, followed by remaining graphics in Main Menu.
In my emulator the screen goes blank, but it never comes back. The hand sprite never shows up, consequently no main menu.
I can press the reset button combination to make the game reset itself, but nothing changes.
Most emulators I tested does not have any issues. The only one that had the same behaviour was a very old version from GBE+ (the 1.0 available on shonumi's github).
From my investigation, looks like it enters an infinite loop of enabling IRQs, then servicing Vblank, then a few calls later it enable IRQ again, service vblank again and keep repeating this, without ever completing the main menu loading routines.
I can break the loop by forcing my code to request a Vbank IRQ at the end of each frame, forcing it to be serviced.
By doing this, the little hand finally appears and game plays normally after that.
I'm sure I'm missing something pretty dumb, but there are so many games that runs fine that is very weird to get trapped like that.
Maybe this has something to do with STAT IRQ blocking? Or anyone knows if there's something tricky with this game that I should be aware?