Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Closed
fleroviux opened this issue May 7, 2021 · 6 comments
Assignees

Comments

@fleroviux
Copy link
Member

fleroviux commented May 7, 2021

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

@fleroviux
Copy link
Member Author

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

@jsmolka
Copy link
Contributor

jsmolka commented May 10, 2021

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.

@fleroviux
Copy link
Member Author

Thanks! Saved me the time properly debugging this.

@fleroviux
Copy link
Member Author

Finally got around to work on NBA. Thanks again!

@jsmolka
Copy link
Contributor

jsmolka commented Jun 19, 2021

This special case looks so hacky :)

@fleroviux
Copy link
Member Author

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants