A Retrospective on Sonic Redux

This thing took a while to figure out how to write. I know that not a lot of people care about the hack, especially a year later, but that's not the point. I want to explain the mental state I was in when I was developing Redux, and why it turned out the way it did. I've been meaning to say this for a while, but it's been hard because this veers close to some very personal topics. I needed the time to reflect on this, to sort through my own feelings on the topic. I am being open and vulnerable right now, and that's scary, but I need to talk about this. ...Here we go.

A Little Background

Set the wayback machine to late 2014. At that point in time, I was in high school. And I was a huge Sonic the Hedgehog fan. I had a fondness for the visual styles of the games, the early 8-bit ones and CD especially, the character designs, and of course the gameplay itself (the classic/Adventure games, anyways). Most importantly though, I was huge into the fandom side.

Every year or so, two Sonic fan communities, Sonic Retro and the Sonic Stuff Research Group puts on two events: SAGE (the Sonic Amateur Games Expo) and SHC (the Sonic Hacking Contest). SAGE had really fun stuff like Sonic After the Sequel and some others I can't remember the name of off hand, but SHC was, in my opinion at the time, something else. People took Sonic games, tore them to shreds, did surgery on the remains, and stitched them back together, and it resulted in some pretty amazing stuff like Megamix, The S Factor, and The Next Level.

I had some pretty great respect for the individuals who worked on these hacks. In my mind, they were cool. Untouchably cool. They could make brand new Sonic games that pushed the old hardware to it's breaking point, they knew how to make great art, and they were making a lot better things than what SEGA was pumping out. From experience, it's mindbogglingly impressive.

Contrast that with me. At the time I had some quite severe social anxiety issues. I mostly kept to myself, which left me pretty isolated. Questions like "what kind of video games do you like" terrified me, because jeez, I can't just tell people that I like such obscure games as Freedom Planet and Kerbal Space Program and Sonic. And, like, I can't just go up and talk to people, what the heck am I going to say? It was bad, is what I'm trying to say.

More devastatingly, though, I had this issue of tying my self worth to the things I made. The thought process was that unless I make something that people enjoy, nobody will have any interest in me. In retrospect, of freaking course not. People are amazing because they are people. I can just sit down and share experiences and emotions with a person, and that makes anybody infinitely more "interesting" than anything they can make. But alas, it was 2014, and I hadn't quite internalized that yet.

So, seeing as the Sonic ROM hackers were cool, and I wanted to be cool, it only stands that I should be a Sonic ROM hacker myself. But not just any ROM hacker, oh no. I wanted to hack something that has never been hacked before. Something that can impress people by virtue of just existing. Flipping through my old collection of CDs, I had Sonic R and Sonic 3D Blast. (I didn't want to touch the 8-bit titles, because I didn't feel skilled enough to work with those.)

An Easy Start

I popped in Sonic 3D Blast first. I figured, being mostly 2D, that I could do some interesting stuff with that. However, I couldn't recognize any comprehensible file format for the maps within the game's data. I later learned that it was automatically converted to C from the original Mega Drive assembly source code, which means that it was a freaking mess that no mortal would want to deal with. So I quickly shelved that idea.

Sonic R was a lot more appealing. The character model files were in that folder, the course data were in these folders, once I figured out the file formats it seemed like it would be plug and play. Someone on the Sonic Retro forums (xdaniel, I believe) had already made a model viewer for the character files. So, if I can make a script that converts generic 3D model files to the Sonic R format, I've got custom characters. Seemed easy enough. Somebody else had started, but the download link had broken in the years since it was posted. So I had to do it myself.

With my completely lackluster Python skills (seriously, that conversion script is a mess) I cobbled together an importer and an exporter. I exported Sonic, changed his body to the Sonic Adventure DX model's head and... it crashed? Yeah, turns out Sonic R only has so much memory set aside for models, and if you go over that everything breaks terribly. So instead, I just made his body a cube. That worked, so I shared my results on Retro.

Response was positive. People were really interested in me dumping the models (because at the time no Saturn-era Sonic models had been dumped at all, and Sonic R had the most complete set of characters), and I got a request to replace Sonic's head with Amy's. That was... nice, really, all the positive response. But I had just barely started. I started with the Amy mod. I started with the head. Easy enough, but it looked kind of silly. So I put a skirt on the body, added some shoes, changed some textures, and I had a complete model of Amy. I posted a video of it on YouTube and posted my results and a download link on Sonic Retro.

I got so much positive response from that. I forget my exact emotions at the time, but I do remember obsessively refreshing the view counter every day or so, looking at all the commenters who... liked... me? I think I showed a few people from my high school's robotics team what I made, and they seemed impressed. So of course I had to keep going. Of course I had to up the ante. After dumping the models, I turned my eye to... ugh.

The Mod Loader from Hell

If I was going to make some more models and maybe some day some new courses, I thought, then I should get the whole memory buffer situation all sorted out. To do that, I needed to modify the executable. And to modify the executable, I needed some sort of mod loader.

I really wanted to make my own mod loader. And I really wanted it to run on Windows 95, in case some poor sap wanted to run my creation on their vintage Packard Bell for authenticity points. I looked at a few other mod loaders, half-heartedly. MainMemory's SADX loader was the big one. But I didn't understand the code base, I did not feel in any way, shape, or form comfortable talking to them for help, and besides, it didn't run on Windows 95 anyways. So I started rolling my own.

The idea seemed simple enough. Make a simple dialog, add a patch feature, an unpatch feature, and presto, complete mod loader. I thought I could get it done in a month or two. It took a lot longer than that. A lot longer.

I worked on this a lot during my senior year of high school. It went well enough, but I was starting to hit roadblocks caused by my lack of any worthwhile debugging tools and the codebase slowly spiraling out of control because as it turns out patching is a really complicated problem with the constraints I had. (Like, seriously, this was my dev environment at the time. Completely absurd.) While I wasn't doing that, I was trying to reverse engineer the game and start making character models on the side, as well as start up the article section on this site.

In fall of 2016, I started college. It was an extremely rough time for me. The few friends and social support I did had were now gone, leaving me completely and totally alone. And, for whatever reason, I thought that if I just finished this mod loader, then I can have something to talk about and everyone would like me and I could have friends again maybe? You know, despite the fact that I refused to try and talk with any of my friends from high school, or to join any clubs, or talk with anyone in my hall or my classes. I was so, so horrifically broken at the time.

Introspection

The last time I did one of these retrospective-sorta deals was back in the tail end of 2016 about that one game jam project that I barely remember making at this point. Reading back, I have some disagreements with the things I wrote. I was still too hung up on technical issues, like "don't reinvent the wheel" and "limit your workload". Good lessons, yes. (Ones I never bothered to take to heart while working on Redux, also yes.) But I didn't really start thinking about why I was doing that stuff quite yet. Why I was trying to bite off more than I could chew, why I had such a strong sense of not-invented-here syndrome.

That is, until February of 2017. Someone on the forums asked what I was doing, because I hadn't posted anything since 2015, when I had dumped the tracks and posted those. I never mentioned the mod loader project on the forums, because I wanted to keep it a surprise, like how all the best Sonic ROM hacks weren't announced until the Hacking Contest rolled around. I was stressing out a lot about how the mod loader wasn't panning out and my whole social life situation was not helping.

So I infodumped a freaking novel and an user's manual about my project onto everyone. I was really overselling what I was doing to make it sound like I had been accomplishing a lot in that time, like I wasn't slacking off. I think this goes back to the whole "wanting to be cool" thing. I was afraid of losing community cred, I think. It was so long ago that I can't remember my exact thoughts on the matter...

Regardless, that quickly got into a kerfuffle with MainMemory about why I never just asked somebody for help. I spewed some garbage about how MainMemory's loader wasn't enough (it totally was, I just afraid to ask questions), got another tech member dragged into the mess, spouted another novel filled with a bunch of toxic garbage about every single thing I did wrong, ...yeah. Not pretty. It ended with civility, but damn. Here's the exchange, if you care to read it, and here's a reminder that I'd never post anything like that today.

But that exchange got me thinking a little. (Well, that and the crippling loneliness.) Why... am... I doing this? Really, what is my goal here? I mean, yes, to make a cool Sonic hack where I can, for instance, race against Metal Sonic in Stardust Speedway just like the Sonic CD cutscene, and to play as Silver and Blaze and Amy and Nack, and etc. etc. But... what then? I make a cool game, people play it, then what?

The whole of 2017 became one where I just sat and thought about myself in a way that I never had before, about how toxic my own thoughts were. As it turns out, being convinced you're a disgrace and that nobody likes you for who you are and that your self worth is tied to a couple of megabytes of entertainment is not good. And about my own attitudes towards other people, how afraid I was of them knowing me, as if I wasn't worth knowing. As if people knowing me led to them hurting me, somehow. I don't remember where this way of thinking came from, but it was so painfully toxic that I had to do something about it.

So, I started seeing a therapist. It helped a lot, honestly. Helped me sort through my own thoughts towards being social, why I was so anxious talking to others, why I thought the things I thought, stuff like that. Having someone guide me through the process helped. I have the toolset to explore my emotions, when before I tried very hard to ignore them. I learned how to figure out why I feel a certain way about things, instead of just taking my toxic thoughts at face value. Stuff like that. As a result, I'm not nearly as miserable and lonely anymore. I'm know I still have a long way to go, but I'm miles ahead of where I was.

One Last Push

Around September or October or so of 2017 I decided to poke at the mod loader one last time, because having my very own Sonic hack still seemed kind of fun. I did some smarter things, like porting it to Linux and the latest version of Visual Studio, which let me use actual dev tools, making things a lot smoother. Things were actually starting to slide into place now that some of the friction had been removed.

In fact, after two years, I finally got the bare minimum working. That said, it was still extremely temperamental, the architecture was fundamentally flawed, and it was still missing half the features I needed. While working on a helper utility, I came across a stupidly simplistic way to get exactly what I wanted from my 6,000+ line monstrosity in about 60 lines of C code I wrote in about 3 hours. I would have had no way of figuring that trick out when I started, but still, I had very mixed feelings about that.

This all happened about three weeks before the hacking contest deadline. Despite how tight that was, I wanted to make that. I wanted to prove to myself that I had improved as a person, and finally harpooning my white whale seemed like a good enough way. So I quickly gathered all the assets I had made beforehand (such as what I believed to be the code required to fix the character importer, most of the character models (Nack's model was a last-minute thing, Sonic and Tails were both pretty rushed too), and some other odds and ends) and tried to assemble that into a working game as quickly as possible. When I finally got it all working, I was treated to this:

Screenshot of a very corrupt looking Blaze the Cat on the Sonic R character select screen

Yes, that looked like total crap. But oh gosh, how hard I fought for that freaking screenshot. A few quick fixes later and the model was fixed up and I could play as Blaze in the game. So I kept going. Got the rest of the models working, ported over a widescreen patch I was working on, added custom actions for every character and a boost bar, a whole bunch of small fixes that make the game a little more bearable, etc.

How I did all of that in three weeks, I have no clue. But somehow, by the end, I had "a game" by some definition. And I was damn proud of it. I had finally made it. I made Redux, or at least a demo of it. And, in the land of meatspace, I actually had friends to hang out with, good friends, and those friendships were completely independent of any dumb ROM hack. (Never even mentioned the thing to them, in fact.)

I knew that, even with the janky unshaded models and still-wonky controls, the fact that it existed at all meant that I had come so, so far from where I started as a person. I still had, and have, a long way to go to being truly at peace with myself. It's getting better, though.

New Adventures

With not much time before the deadline, I submitted my final build. It was out there. And it was ready to be seen. It did not go smoothly at all. Most people couldn't run the thing, because Windows 10 did not like the older version of Sonic R I based the hack off of. The vast majority of people agreed that my custom character models were terrible, and now that I'm more emotionally distanced from it I definitely agree, especially with Sonic. It really should have been in the unjudged Expo, in hindsight. But, despite how much it flopped... I was okay. I accomplished what I set out to do, and I was proud of that.

After that whole thing, MainMemory approached me and asked if I wanted to help work on a Sonic R Mod Loader forked from the SADX code. I said "heck yeah". We, along with CheatFreak, worked on that for a bit, porting the widescreen patch from Redux and fixing up a few other things. It went really well, I'd say.

After a few months of that, though, I was feeling burnt out on the whole thing. I wasn't really interested in Sonic R anymore. I had a whole laundry list of things I could do, mostly consisting of porting Redux over to the mod loader but actually polishing it this time. But I wasn't excited to do any of them. So I just quietly put it aside, intending to come back "later". Every time "later" came, I'd be excited to start, realize how backwards and archaic and not fun working with the game is, and then shelve it again.

Instead, I just let myself finally avoid having Sonic R hacking be "the project" that I felt like I had to spend my free time doing, and chase something else. (Back in 2016 again, I had the same issue with feeling pigeonholed about what I was allowed to write about on the site.) Somehow this lead to me making a Game Boy game, which I hope pans out. Maybe it won't. That's okay. It's just a fun hobby, nothing more. I also started to pick up drawing (more so earlier this year than now, though) and added some more fancy things to my site here like a ROM editor for Star Fox and a more open and personal feel to the place.

Long story short, yeah, Redux was a janky mess. But really, the journey was a lot more important than the destination.