Decompiling Tenchu: Stealth Assassins: introduction
Tenchu: Stealth Assassins is a PlayStation stealth action video game from 1998.
I could go on a poetic throwback to my childhood and describe in details a nostalgia feeling for a 25 years old entertainment product, displayed on a 1980s CRT televisions and rhythmed by the noises of a PlayStation optical drive (something that emulators fail to recreate), but I’ll spare you the brunt of it.
What I will say is that this is inspired by video game decompilations projects of the past few years, like Super Mario 64 and Driver 2. However, I do not have it in me to make a perfect, byte-for-byte decompilation like the Super Mario 64 one. Neither do I want to stare at a Ghidra window for an eternity, trying to blindly reimplement a source tree for a game held together with glue and duct tape.
These considerations led me on a lengthy side-quest to try and find a solution to this conundrum… But now, after spending nearly two years prototyping tools and writing case studies, I think I have found the edge I’ve been looking for.
My objective is to create a port of this game by delinking it back into object files and then crafting a working Linux MIPS executable out of the pieces. From there, I intend to rewrite each object file Ship of Theseus-style until I have a complete and portable source code tree.
As far as I can tell this is unlike any other decompilation project out there, so this is completely uncharted territory. Hopefully, this approach will allow me to divide-and-conquer this effort into manageable chunks and make iterative progress possible, in order to keep myself motivated.
Lord Gohda expects much of you. The enemy will be skillful and ruthless. You must be prepared, physically and spiritually. You must focus, you must train hard and train well.
- Decompiling Tenchu: Stealth Assassins: introduction
- Decompiling Tenchu: Stealth Assassins part 1: what's decompiling?
- Decompiling Tenchu: Stealth Assassins part 2: grabbing the files
- Decompiling Tenchu: Stealth Assassins part 3: setting up a Ghidra server on a cheap Synology NAS
- Decompiling Tenchu: Stealth Assassins part 4: juggling executables
- Decompiling Tenchu: Stealth Assassins part 5: memory mismanagement
- Decompiling Tenchu: Stealth Assassins part 6: archive adventures
- Decompiling Tenchu: Stealth Assassins part 7: the AFSMAKE.EXE side-quest
- Decompiling Tenchu: Stealth Assassins part 8: make-believe executable for PSX.SYM
- Decompiling Tenchu: Stealth Assassins part 9: rescue the debugging data
- Decompiling Tenchu: Stealth Assassins part 10: potpourri status update
- Decompiling Tenchu: Stealth Assassins part 11: a modding framework powered by the tears of CS101 teachers
- Decompiling Tenchu: Stealth Assassins part 12: when stuffing PlayStation code inside a Linux MIPS process is no longer worth the trouble