Of course, the SADX saga still continues here (at least until I can fill all the blanks to complete the whole SADX modding history), and this time around we got one of the crucial members in SADX modding history: SonicFreak94!
Not only he had made several mods for improving the SADX experience (SADX Fixed Edition and Input Mod, among other things), but also worked in key features for SADX Mod Loader (like increased resolution). On top of that, he also was responsible for the Lantern Engine mod, which restored the lightning engine used in Dreamcast Sonic Adventure. This last one was particularly game-chaniging, as it made the Dreamcast Conversion by PkR look spot-on, and even if it wasn’t used with that, it still was a much better option for lightning than stock SADX.
He’s also responsible of SA2 Battle Network, a quite interesting mod that allows you to play Sonic Adventure 2’s PC port two-player mode…online!
Of course, with the expertise he had, many have been inspired by his work, as well as have enjoyed the mods he developed; so it was natural that I tried reaching out to him after all. Please enjoy!
This interview was conducted by email in May 09, 2020.
So, what can you say about yourself to begin with?
I am a software engineer and reverse engineer with a focus in games. I’ve been writing low level code for about 10 years, but that’s only the time I kept track of.
Since how long have you been in the Sonic community?
I think the first Sonic community I joined was the SRB2 Message Board in 2006, so let’s go with that.
What was your first experience with Sonic?
When I was about 2, my cousins must have gotten in trouble or something, because nobody would do what they did… they were getting rid of their SEGA Genesis?!?!?! So that ended up with my parents, and the first game I ever played was Sonic & Knuckles, followed by Sonic 2.
Around what year did you join X-Hax?
Uh… Oh man… It was definitely after I joined Sonic Retro, so some time after 2008.
Do you recall the first time you saw Sonic Adventure?
It was Christmas 1999 when I got my SEGA Dreamcast. I distinctly remember my parents asking me if I wanted it because it was advertised with Sonic and Knuckles CGI renders, and Knuckles was my favorite character.
What or who inspired you to start hacking Sonic Adventure DX?
I had lots of other Sonic PC games before I got SADX PC, like Sonic R and Sonic 3D Blast. Lots of fan games as well, which of COURSE included SRB2. One thing I loved to do was mess with them. I’ve always liked to tear things apart and see how they work, then put them back together again. In fact, I did this with my Dad’s PC (since he had the fastest in the house – 900 MHz!) many times. The only time he noticed is when I forgot to plug something back in.
Needless to say, I already had the inclination to mess with things. SRB2 being so open-ended is what pushed that over the edge. After that, for SADX PC, it was really just a matter of: It was on my PC, and it was an “upgraded” (hahahah) version of my favorite game, Sonic Adventure. Of course I wanted to know how it worked and make it my own.
Believe it or not, I only found out about SADX PC by pure chance. I didn’t have a GameCube (SEGA household), and I just happened to see it at the store with my Mom one day. I didn’t bring my money with me so I begged her to take me home to get it so I could come back with my savings and buy it. Only $10!
Can you comment about the first years of the SADX modding scene (and your experience back then)?
Several things were already figured out by time I got into SADX PC modding. Things like the basic format of SET files (item layouts for stages), a bit of the model stuff (you could replace Sonic’s head!), and the fact that it used Dreamcast format textures, which was unlike its GameCube counterpart.
As a side note, this is because SADX PC was based on the same framework used for PSOv2 PC at the time. There are strings in SADX PC to this day, and all subsequent versions IIRC, that mention this framework directly as “PSOv2 for PC”, or “Ninja for Windows”.
I used to have lots of fun making custom item layouts–and still do, even–but they were done entirely via hex editor. I even wrote my own tutorial at the time for it which was more comprehensive than the rest of them at the time.
Needless to say, it was quite lacking in the tools department. We had really unreliable software like PVMEdit that people insisted on using which was completely busted, hex editors were required for everything else, etc etc. It was not the most welcoming, but certainly a lot of fun if you were willing to put forth the effort. I learned a lot this way.
What can you comment about your mainstay in X-Hax?
We all liked Sonic Adventure, and we all wanted to do cool things with it or make improvements or whatever. I think at the time I joined, the members were like, Dude [JCorvinus], PolygonJim, Jeztac, and some others I’m forgetting.
Jeztac and I had many projects we worked on together back in the day. One of those was SA2DX. I remember painstakingly modifying each pixel of the soap shoes texture to make sure it would align properly with Sonic’s Light Speed shoes, because it was more feasible than changing the UVs.
What can you comment about Sonic Retro back when you joined it?
It was certainly a more technically-inclined place at the time that I joined. There was lots of valuable info, and lots of research going on with… let’s be real, mostly the classic games.
That was a little disappointing. But, I took that as a challenge. I intended to generate more interest in Sonic Adventure. I think I did fairly successfully, but there was somebody else that joined the scene later that really got the ball rolling. 😉
>10. What were the tools that you used often to develop your mods?
Way back when, I used some tools I think I still have archived on my website to this day.
* Nettapu’s PVM unpacker and creator
* PaintShop Pro/Photoshop 7 – Both of which I had legit copies of from a family friend
* Hex editor – Hex Workshop was my preferred. HxD SUCKS!!!
* Cheat Engine – still useful for debugging ANY program to this very day
And… that’s basically it, I think. But this is in stark contrast to what I use today:
* IDA Pro
* Visual Studio (I used everything from 2010 to 2019)
* Cheat Engine
* SA Tools
* My own tools
Around what time would you say that SADX modding really started taking off?
As I hinted at earlier, I think it really took off when MainMemory joined the scene (now she, btw. I’m so happy for you, MainMemory!). She brought a lot to the table in terms of tools and impressive mods right off the bat, and that really kicked the hacking scene back into gear. It certainly revitalized my interest.
What would you say that was your best contribution to the SADX community?
I’ve done so many things that I’m not sure how much impact they’ve really had, to be honest with you.
I’ve worked on the tools extensively, I’ve worked on the mod loader extensively and added tons of features (like dynamic resolution changes without crashing, the texture pack system, enforced texture filtering and mipmap generation, etc etc).
As far as mods are concerned, I think one of the biggest contributions of mine would be Lantern Engine. But then, input-mod is pretty ubiquitous too… And Fixed Edition…
I don’t know. You tell me!
What was the first thing needed to start developing the Lantern Engine mod?
This might sound like a cop out, but: knowing that the lighting in SA1 was something special.
PkR did tons of research with SA1 on the Dreamcast and figured out that it loads lights from an array of colors in a file. He was the one that brought it to my attention.
Before that, it was maybe a few people here and there, myself and PkR included, that thought the lighting simply “looked better” on the Dreamcast with no knowledge as to why, or how it looked better.
The name “lantern engine”, by the way, is not something we made up. I forget which revision, but SA1 has strings referring to the lighting as the “LANTERN ENGINE”
And critically, graphics programming experience was a must. I had zero graphics programming experience before I started working on Lantern Engine. Now it’s one of my favorite things to do. ORDER-INDEPENDENT TRANSPARENCY FOREVER! LONG LIVE THE DREAMCAST!
I’m aware that you also have been involved with Sonic Adventure 2 modding. What can you comment about that?
Sonic Adventure 2 is a much, much, much more robust game internally than SA1. I cannot stress that enough. It is much more flexible in every conceivable way, and it is really impressive how much Sonic Team improved on in such a short time frame. But it is still obviously based on SA1 and shares a lot of infrastructure, albeit greatly improved.
Sometimes I would even test SADX mod concepts in SA2 first because it is simply easier to work with.
Unfortunately, it’s just not as interesting in a variety of ways compared to SADX, and the PC port is not so great. I hate that this is practically the expectation for modern PC ports of old games these days.
Do you think it would be possible to explain how the SA2 Battle Network mod works?
SA2:BN works by having knowledge of the most critical components of the inputs, characters, menus, and level loading. When I say “most critical”, I mean the bare minimum necessary to ensure stability and network-ability, which I will explain.
For the raw gameplay, SA2:BN tracks only the most necessary changes in inputs, character actions, and character states between game logic ticks (or “frames”).
For example, when a player presses the A button and jumps, SA2:BN will detect a change in inputs (the A button press) and player action. Right at this moment, it will queue up this data into a buffer to send to the other player:
– A button was *JUST* pressed.- Action has changed from [standing] to [jumping] for player [N].- Status has changed, [grounded] flag removed
– There may not have been a change in these, BUT their position, rotation, and velocity were [X, Y, Z, rX, rY, rZ, vX, vY, vZ] when their action changed, so make sure these match up.
If there are any other tracked changes that occur during this tick, they are all queued up into this same buffer of data and sent at the exact end of the logic tick.
There is data that is sent periodically and/or when there are significant changes, like speed or position in the scene. It is only sent periodically because SA2:BN relies on the game logic to fill in the blanks. This is how all ideal game networking should be. SA2:BN is not perfect about this though, because there are things that need a deeper understanding to control.
There are also critical systems that it tracks. For example, whenever a new random seed is set (which in SA2 is basically never, by the way!), the host of the game sends the value to the other player(s). It NEVER allows non-host players to have control over these kinds of critical systems. It is host-authoritative.
Similarly, collecting rings is player-authoritative, since individual entities are not (yet) synchronized. If a player collects a ring erroneously on the other player’s screen, it will not add to their ring count. Instead, it will only accept ring count adjustments if that player says outright “I have collected X rings just now”. This is a hack for lack of entity synchronization.
This same mechanism is used for taking damage, dying, and in a host-authoritative manner for winning and losing.
Unfortunately, there are still some critical elements that are not yet handled properly, like object holding. You can pretty reliably crash the other player’s game by picking up an object. Don’t abuse pls 😉
I have heard that you also did some mods for Sonic Robo Blast 2. Any thoughts about that?
SRB2 is the best Sonic game with the best modding tools. I love SRB2 to death.
What were your thoughs when Sonic Robo Blast 2 v2.2 released?
I’m so proud and I can’t wait to make more stuff for it.
MainMemory was another long-time X-Hax member, contributing with several other mods and reverse engineering; what can you say about him?
Now she, she brought a ton of value to the community by developing previously non-existent tools that were vital for getting more people interested in hacking. She is a good friend of mine and got me started on reverse engineering SADX PC.
Any comments about other specific X-Hax members or friends in particular?
PkR is the best frog.
Any plans for the future related to these or another personal project?
There are lots of things I wanted to do, and still kind of want to do, to Sonic Adventure in general. In fact, you made me want to work on SA2 netplay again! I started porting that to SADX as well. And I’ve already got multiple players working (8 in fact)…
But honestly, I think I’ve moved on to developing my own thing. I am working on a Sonic Adventure framework in Unity with some old x-hax friends because we all want a consistent, clean framework to make Sonic Adventure style games. It’s coming along nicely, and I can’t wait to make stuff with it.
I’m focusing all of my efforts on that when I have the time and energy. Right now I also have a full-time job programming though, so it’s become a little difficult to manage. Once I get used to things I will absolutely get right back on track no matter how long it takes. It is still under development in my absence.
What other communities or games have got you curious before?
Ecco the Dolphin. I love Defender of the Future on the Dreamcast in all its mediocrity. I managed to restore a prototype of an unlockable soccer minigame a long time ago.
I also absolutely adore Phantasy Star. I really want to take the time to improve PSOBB’s client with the features I implemented in SADX, like dynamic resolution changing and high resolution textures, etc. I helped with some PSO2 reverse engineering as well.
What did you think when I requested this interview?
Do you have anything else to add? (Can be anything, final words, personal experiences, etc)
Never give up. Everyone says it, but it’s true. Anything is possible if you try hard enough.
Thanks for checking this out; the SADX Modding History article is actually near completion, so you might want to keep an eye out for that 😉
I also had the chance of interviewing PkR (Dreamcast Conversion developer),; just that I still gotta finish cleaning up the whole thing. I will also attempt to see if I can get in contact with some other key members. And yes, I’m still intending to get some interviews with emudevs, just that I have been pretty busy with this one topic, but I should be back on that when I’m done.