nba-emu/NanoBoyAdvance

SpongeBob SquarePants (Volume 1) - "not compatible with Game Boy Player" screen repeats ad infinitum

fleroviux opened this issue · 6 comments

Seems to be caused by the Key Pad IRQ. Removing it fixes this issue, but it's obviously not the solution.

The game uses AND-mode with mask=0. Naturally this would always trigger the way the logic works right now.

Was lurking around here and had the same issue. The game does the following during the first seconds:

Write 0xC00F to KEYCNT
Write 0x0000 to KEYCNT
Write 0xC00F to KEYCNT
Write 0xC00F to KEYCNT

Unfortunately the 0x0000 write is split into two MMIO byte writes. So it clears the lower byte first and then does an interrupt check with 0xC000 which will always be true. mGBA doesn't have this issue because it always uses halfwords for I/O writing.

Thanks! Saved me the time properly debugging this.

Finally got around to work on NBA. Thanks again!

This special case looks so hacky :)

It doesn't look beautiful, but it's also not that bad heh. Reworking completely how MMIO works, would likely break more than it fixes.