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

CoilSnake does not fix the SNES ROM header checksum #298

Open
PhoenixBound opened this issue Sep 8, 2024 · 0 comments
Open

CoilSnake does not fix the SNES ROM header checksum #298

PhoenixBound opened this issue Sep 8, 2024 · 0 comments

Comments

@PhoenixBound
Copy link
Contributor

There is a field in the "header" of all commercial SNES ROMs accessible at address $00FFDE (with the one's complement also stored at address $00FFDC) containing checksum data for the entire ROM. It needs to be calculated in power-of-2-sized pieces in chunks of 2 MB, somehow. I'm not sure how that's supposed to work for 6 MB ROMs/the order to read stuff in...

Some emulators calculate the ROM's checksum themselves. While most emulators don't care about the exact value here as long as the checksum is nonzero and has an appropriate complement, Snes9x does complain if a ROM's checksum doesn't match the data, and that error message can be confusing. It could help to add a bit at the end of compilation that fixes the checksum in the header.

(Not included in this issue: figure out why Snes9X needs a special case for 6 MB EarthBound ROMs in its HiROM/ExHiROM heuristics. Does it expect 6 MB ROMs to be interleaved in some strange way...? Are they not supposed to use a size byte of 8 MB?)

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

No branches or pull requests

1 participant