FrozenBurnside
Well-Known Member
Hi everyone,
I'm Frozen Burnside and I started doing reverse-engineering of console games two years ago, with Legacy of Kain: Soul Reaver being the first decompilation project I contributed to. Since then, I have helped with the decompilation of a few other games, and eventually started my own project for Code Veronica: https://github.com/fmil95/recvx-decomp
The project targets the PS2 version and it's currently 20% finished. Right now I'm working on decompiling both the CRIware library that was used for the game as well as the Tamsoft Sound Driver, which will be very beneficial to have not only for this game but also for other Resident Evil titles that might be reverse-engineered in the future (RE4 also features CRI ADX, for example).
Here's a few interesting things I discovered throughout the process:
- Developers conserved most function names from the Dreamcast version, and for example the function which checks for the Memory Card status is called CheckConnectVmDrive.
- The VU microprograms kept their labels intact. It was common for PS2 games to build the VU0 and VU1 microcode separatedly from the ELF executable, which meant that even if there were debugging symbols available from the game executable it would be rare to have the developers labels for those. RE: CV has all of the code in just one file (meaning no overlays as well).
- PS2 games would also usually have some sort of hidden data on the disc that the regular ISO filesystem can't detect. However, this is not the case for RE: CV and you can actually repack the game ISO with a modified version of the ELF executable using a tool like ImgBurn and have the resulting disc image still be bootable.
- The largest function of the game is called Common_controll (https://decomp.me/scratch/w6UDt) and it is a staggering 2400 lines long, considerably longer than even the second largest function in the game.
- For some reason, most structs were stored as anonymous in spite of very likely being named by the developers (at least the structs they recycled from the Katana API had names). The cause for this is currently unknown and it limits the amount of detail of the debugging symbols which is otherwise high.
So far, the executable you can compile from the project can be run on PCSX2 and is able to perform the initial memory card check with working controls as seen in the following video:
As the project is open-source I'm looking to expand the team (currently we are three with some frequent collaborators) and also find more people that could be interested for the finished product. Thanks for reading, and stay tuned, more visible progress is likely to come in the upcoming months.
I'm Frozen Burnside and I started doing reverse-engineering of console games two years ago, with Legacy of Kain: Soul Reaver being the first decompilation project I contributed to. Since then, I have helped with the decompilation of a few other games, and eventually started my own project for Code Veronica: https://github.com/fmil95/recvx-decomp
The project targets the PS2 version and it's currently 20% finished. Right now I'm working on decompiling both the CRIware library that was used for the game as well as the Tamsoft Sound Driver, which will be very beneficial to have not only for this game but also for other Resident Evil titles that might be reverse-engineered in the future (RE4 also features CRI ADX, for example).
Here's a few interesting things I discovered throughout the process:
- Developers conserved most function names from the Dreamcast version, and for example the function which checks for the Memory Card status is called CheckConnectVmDrive.
- The VU microprograms kept their labels intact. It was common for PS2 games to build the VU0 and VU1 microcode separatedly from the ELF executable, which meant that even if there were debugging symbols available from the game executable it would be rare to have the developers labels for those. RE: CV has all of the code in just one file (meaning no overlays as well).
- PS2 games would also usually have some sort of hidden data on the disc that the regular ISO filesystem can't detect. However, this is not the case for RE: CV and you can actually repack the game ISO with a modified version of the ELF executable using a tool like ImgBurn and have the resulting disc image still be bootable.
- The largest function of the game is called Common_controll (https://decomp.me/scratch/w6UDt) and it is a staggering 2400 lines long, considerably longer than even the second largest function in the game.
- For some reason, most structs were stored as anonymous in spite of very likely being named by the developers (at least the structs they recycled from the Katana API had names). The cause for this is currently unknown and it limits the amount of detail of the debugging symbols which is otherwise high.
So far, the executable you can compile from the project can be run on PCSX2 and is able to perform the initial memory card check with working controls as seen in the following video:
As the project is open-source I'm looking to expand the team (currently we are three with some frequent collaborators) and also find more people that could be interested for the finished product. Thanks for reading, and stay tuned, more visible progress is likely to come in the upcoming months.