Sega Saturn hacking docs (part 1)
Hacking Introduction
(Last Updated December 25, 2002)
List of updates
-December 25, 2002 - First release
Introduction
First of all, as with all my hacking docs this is a WIP (Work-in-progress). I'm sure there will be info that will be inaccurate. But that's what you people reading this are for (so you can help me fix my mistakes ;), right?
Please, if you want to copy portions (whole or in part) of this document, please, at least email me and ask. Linking is fine, just mention where the original doc was found.
Getting familiar with the system
Understand that first of all Saturn is a cd-based system. As such, it's quite a bit different from rom hacking. Instead of everything being stuck together in one small file, everything is split up into their own files. In some cases this can be quite helpful since some developers knew how to accurately name files (e.g. kanji.fnt would be the font file in several games). Of course if the names are confusing, it can be a very frustrating process. Dealing with a file system also means that to make more space for your hacks you have to go through the process of rebuilding the disc. In some cases you will also have to consider subtitling movies or dubbing/subtitling spoken dialogue.
Next understand that not all games are the same! I like how Cless put it in his psx hacking doc:
"Just because you can hack game X fairly easily doesn't mean you're going to be able to hack game Y just as easily."
Lastly, don't forget that Saturn hacking is still a fairly new thing. Unlike popular systems good tools for Saturn can sometimes be hard to come by. So you may have to end up writing a lot of tools yourself.
Finding Data
There are all sorts of ways of doing this. It all depends on the game and what kind of data you're looking for. The best and by far the fastest way is to just play the game to the a place which has what you're looking for on screen (or being played through your speakers, etc.), then dump both lower and higher wram, and whatever else is appropriate (e.g. If it's graphics dump vdp1/vdp2 vram, and for sound dump the sound ram). Then search the ram dumps. Chances are you'll find what you're looking for. Then it's just a matter of figuring out which file it came from (which you can do with a multi file search). The other methods I've seen (like going through asm dumps or browsing each disc on the cd) take a lot more time, and generally don't give you the results you want.
So basically, you'll have to get a Commlink/Action replay setup.
"if you ever have any hopes of ever really getting anywhere with Saturn hacking, you-will- be getting a similar setup, or you won't be getting anywhere. I guarantee it."
-Myself at the SX board
Burning discs vs. "CAR" method
There are essentially two ways of doing tests. The first is the standard “burn a new disc and test it on your Saturn”. Of course this isn't exactly a cheap way of doing things especially if you plan on doing this a lot. This is the only way of testing changes such as subtitled movies, new music, new voice-overs, etc. Hopefully with the improvement of Satourne, there may a better way of testing those changes soon enough.
The second method I've dubbed as the "CAR" method. This stands for Commlink/Action Replay. You have to understand that when a game is loaded, it will always load things to memory first. Things like font and text are usually loaded at the same address and tend to sit there. So if you want to test a hack, just run the game with an Action Replay in "Commlink mode", go to the spot where you know the text will be displayed, check the memory to see where the original text is, then just upload your modified file over it. This method is faster and cheaper, but you're limited in what you can do. Pointer changes for instance may or may not work. You just have to mess around and see what works best for your project.
Patches, other considerations
It's been debated for quite a while. How should you release a patch for a cd-based game? Should you even release a patch at all? I think it really depends on the game you're working on. If there's a ton of movies that need to be subtitled, or perhaps you have to make a huge amount of graphic changes, you may want to consider just doing a full image release. While I can't speak for any company, I imagine a lot of the games for the system have basically become abandon-ware. So I doubt you'll ever have to really worry about legal action.
Questions
If there's an important topic I may have missed feel free to email and ask.
Special Thanks
-The Saturn fans that keep the system alive
-Artemio Urbina for his hacking help
-SkankinMonkey for being ereet
-Sega for making one of my all-time favourite systems.
Cyber Warrior X
cwx@softhome.net
Source: http://www.cyberwarriorx.com