Retro Engine Hacking
The technical aspects of the original Sonic the Hedgehog games for the Genesis/Mega Drive were a major influence in me learning to code. It's only natural then that I've toyed around lots with Retro Engine, the custom-built engine used to officially ship remakes of the games (as well as retro revival Sonic Mania) between 2011-2022. While I have made my own private efforts to reverse engineer version 5 (the version of the engine that Mania uses), it was quickly superseded by a separate large-scale decompilation effort. Regardless, the engine is a very fun base for me to explore different design challenges. Here are a few projects I've started with my skills:
-
Rust integration (ongoing): This fork is attempting to port v5 of the decompilation to Rust, as a means to explore the tradeoffs of rust at FFI boundaries and as a way to make certain parts of the codebase easier to refactor.
-
Cosmic (proof of concept): This is a complete source port of v3 (the version of the engine used by the Sonic CD remake) to C#. It also contains many major changes, such as a full-featured 2D hardware rendering backend, real-time settings configuration, collision viewer, and more. Not finished due to third-party library usage getting complicated, and my growing distaste of C# at the time.
-
I had additionally gotten v5 ported to C# at one point, and had even started porting over objects from Mania, but stopped when I realized the sheer scale of tackling the game side... I no longer have the repo, but I do have videos backed up to show what progress had been made.
- Wii ports: I also had v4 and v5 ported to the Wii at one point. Unfortunately I no longer have the code for these ports either, however my work on the Wii port of v5 did attract the attention of someone else working on their own port, and I've since provided some advice and assistance with them understanding the codebase and Wii toolchain.