Project SA-1 Regional Patches: expanding the enhancements to European and Japanese versions
Hi, everyone!
I'd like to share a side project that I always wanted to work in the past and finally I got the opportunity to put into practice: bring the SA-1 patches to the European and Japanese versions of the games.
Why the SA-1 patches were (mostly) USA only
When I did the initial SA-1 conversions (Super Mario World, Gradius III, Super R-Type and Contra III), the tools for analyzing ROMs were more limited than today. I remember when I took a look on Contra Spirits vs Contra III on "romcmp", a tool I developed a while ago to compare the differences between two ROMs, initially for developing Lunar Fix, the output was over 500 KB of differences. The common sense back then was that the European and Japanese versions were recompiled games, with different code inside, so supporting one of them would mean tracing and studying the whole game again, basically the effort of converting a new game to SA-1. So it never made sense to spend that effort on the same game instead of a new one. The Contra III readme still says it: "Contra Spirits and Super Probotector does not work because both games were recompiled and its codes are different."
What changed
With better tools I decided to look at the question again, and it turns out the "recompiled" theory is not really true... anymore.
Normally a regional version is the same game, assembled again with different text and a few small changes. The translated text has a different size, so everything after it in the ROM moves a bit, and every address in the code moves together. Compare the two ROMs byte by byte (like romcmp, even with disassembly system) and they look very different. Keep the relative things out and line up them... and the code is the same.
This changes everything because the patch doesn't need to understand the game again. It needs to find where each piece of code went.
Step by step, it looks like this:
First I check only the bytes the patch touches against the other regional ROM. This is mostly code changes and if the data structure stays the same, no changes are required. That's how I found out that the European Super R-Type is the American ROM with only 7 bytes changed, all of them in the header.
When the code move, I line up the two ROMs and relocate the patch automatically. Most of it goes through without any manual work, since I just need to make romcmp change where the "comparison" starts for the ROM being analyzed.
What is left are the real regional differences and then I review them manually. Some of them are very interesting and are worth separate posts once I finish the remaining versions to support SA-1.
Finally, play and validate the games; Ensure the routines won't crash and the data differences don't trigger a corruption.
SA-1 games coming with regional support
Gradius III: SA-1 Root already supports both USA and Japan version.
Contra III: (NEW!) Contra Spirits (Japan) and Super Probotector (Europe).
Super R-Type: (NEW!) Europe and Japan.
Super Mario World: (NEW!) Europe and Japan.
SimCity: The incoming SimCity SA-1 will support all languages (German, French, English and Japanese) on a single ROM, based on top of the USA version.
Testing phase
I got some of the games working already and I'm finishing the initial testing. As soon as the first beta versions are ready, I'll create an early-access post for the testing phase. If you own a European console, your help will be especially useful, because I don't have a 50 Hz/PAL SNES console available.
Support
If you want to support this work and get early access to these betas (and to the SimCity SA-1 and Super Metroid SA-1 betas too), consider joining as a paid member :)
Thank you!
Comments (4)
Great news! In Contra III SA-1, could It be possible to keep some of the slowdown when throwing the bomb. It feels more epic that way and seems that It was originally planned to have some. In the original SA-1 version the bomb explosion felt a bit too smooth. Is it possible to be adjusted when running in SA-1? Just an idea. Thanks!
Yes, I think I can adjust this. I will take a look and let you know when I get news
This sounds like this could be the first PAL SA-1 conversion, which is very interesting because as I understand it, Kirby's Fun Pak was the only PAL territory SA-1 title. Very cool for anyone still running 50hz SNES set-ups!
Great news and thanks for sharing these detailed infos on your findings 👌🏻
