About 5 years ago, I released one of my 1st Dreamcast 60Hz-VGA patches: Resident Evil: Code Veronica. I have always been scared to play that kind of games, to the point that I just played the very beginning to do my testing and missed that the patch was not fixing the video output settings everywhere in the code. A new version of the patch was then necessary. But why did it take me that long to make a new one? Let’s dig into the details.
What was wrong with the first patch? Let me explain some technical details first. All SEGA licensed Dreamcast games were built with the official SDK, for either Katana or Windows CE operating system, providing libraires and code snippets to speed up development. In Katana SDK, used for Resident Evil CV, sbInitSystem is a piece of code in charge of initializing the system main components. It’s in this file that the video stack chosen by the development team (Ninja, Kamui or Kamui2) is initialized to whatever video mode the game developers want. Quite often, the video mode is set only once by sbInitSystem routine, early in the execution. The developers can however decide to change it later on to for instance switch to 60hz after asking the player whether her screen supports that frequency. It can also happen when the game plays a FMV as the playback is handled by a dedicated middleware (remember my post about Dino Crisis VGA patch?). If your patch only changes the sbInitSystem parameters, It may miss other entry points and it is exactly what happened with my first patch! The new version fixes the source of those parameters, used everywhere in the code rather than just the parameters themselves.
Now that we have the patch fixed, it is time to release it, right? Wait, not yet, it was just the easy part. The torment is now about to begin…
Unlike most PAL Dreamcast games but with Capcom staying true to itself, there isn’t one PAL version but one per language region. The countries like Germany, Spain or else France have their own localized version whereas other European countries had to deal with the English one. Note that Italy which has several localized Dreamcast games did not get one for this game. When it comes to patch the game, the main executable (read 1ST_READ.BIN) is almost the same across the versions. And unfortunately almost doesn’t mean equal in terms of programming!
Each version of the main executable embeds region specificities: subtitles, new font characters, new sentence layout, etc. It means you have to make not 1 but 4 different patches, even though the patching logic remains the same. And remember you also have two discs per version which could theoretically lead up to 8 different patches! And if you also want to release patched GDI images along with a patch as I do, it means you have to prepare as many images as discs… But luckily, disc 1 and 2 share the same main binary file and it’s located at the same offset. Phew!
So I think now you understand: releasing all the patches and the patched images took me a long time for good reasons. Usually we say no pain no gain but I save it for later as playing Resident Evil has never been a big thing to me. Anyway, I hope all the Resident Evil CV fans will enjoy playing the Dreamcast version!
- English version: jc-recve-en-60hz-vga-patch-v1.1
- French version: jc-recve-fr-60hz-vga-patch-v1.1
- German version: jc-recve-de-60hz-vga-patch-v1.1
- Spanish version: jc-recve-es-60hz-vga-patch-v1.1
Patched GDI images:
- English version:
- French version:
- German version:
- Spanish version: