Simp Fighter IV

The first real mod I've ever made and the first ever game related project I completed outside of course work.



You can find the mod along with some along with more details on the Donut Team Forums Here.

Notes on Development:

This mod would not have been made if I hadn't been spending my final years at university watching Liquid Wifi. This guy was a speedrunner that ran The Simpsons Hit & Run (which i will start abbrevieating to SHAR) all but one day a week. Very entertaining if you want to check him out at choke.run.

In late 2022, I picked up an M1 Macbook Pro and was looking for things to do with it. Liquid would play some amazing mods made by the community, and these mods seemed crazy considering the age of the game and its limitations. I struggled to maintain my motivations before when trying to learn something like AWS or making fully fledged games on pico8 so I gave myself something simple and stupid.

The idea for Simp Fighter IV was birthed from its own title. To the average twitch user, the word "simp" is a relatively outdated term for a viewer that locked in a parasocial relationship with a streamer, usually giving donations and subs in the hopes of getting attention from them. However, because its the simpsons, "simp" is just an abbreviation of "simpson" to fit the one sylable in street for the name "street fighter". It was always going to take audio from street fighter IV but in the early phases I had dreamed of taking the voice lines and sound effects too for replacing everything you would hear in the game. So to began by istalling Ultra Street Fighter IV, downloaded an application for modding USFIV Audio which would let me extract the audio and went to work.

However, I didnt think to use my Macbook. That wouldn't have been able to run Street Fighter, SHAR or any of the modding tools for either game. So this meant that I had to use my old 700 AUD acer aspire 5. The issue with this was that this laptop had gotten me through my entire batchelors degree. I had used this thing for Visual Studio projects, making games through Unity and things, not to mention, I also used this laptop for a rediculous amount of gaming. It was dying, probably through the battery because I had already replaced the HDD with a SSD after it failed to boot around a year ago. This laptop raised the time it took to extract the music by stupendous amounts of time. How it worked was I would boot the latop, it would take about 10 minutes or so to get itself to the point where it could launch an application, then it would come to the time where I would have to open the file explorer or a dialog box. The file exploror was taking a suspicously long time to load each folder. Opening a folder alone would take about 1 minute on average, but could take up to 3.

To help you grasp how painful and soul crushing, remember that I wanted all the Music and Sound effects from each character. Each character had around 6 or 7 right-click "extract to..." cases for sound effects and voices. Each character and stage would have 2 songs to extract. With the music, you could just right click each file in the viewer and export it as a wav file. For the SFX, however, it was easier to extract them as a compressed file (which is made for the game's engine) in lots of 20 or 60 and go back and use a "convert CBX to WAV" in the audio modding tool. Here's a list of the characters I extracted all this for:

I had attempted to get this to function on the mac but couldn't get it to work. Thank god once all this was extracted, I didn't need the Aspire 5 for much more, and I moved up to the M1 pros bleeding edge processing cababilities. At this point, by the time I had the patience to do that to myself, the project had already taken me about 2/3s of a year.

Now that the files were on my mac, I needed to convert them to from wav to Vorbis OGG with sample rate of 24000Hz to make them compatible with the mod compiler. Because I had over 7000 different audio tracks, using audacity for each one wasn't a rational option so I looked towards programming a solution. I actually had to come up with a second solution which involved sorting the files because I had dumped them all into one folder as it was a much faster solution for extracting all the SFX.

Firstly, I made a method of sorting the SFX files using golang. This only took a day to get working and running the exe sorted all the files in a little over a minute.

As for converting the files into the right format, I found a command line tool through Homebrew called FFMPEG which had heaps of parameters for conversion. By combining it with a "foreach" unix command, I was able to convert every wav file within a file heirachy to a 24Hz ogg file within a few seconds. It felt awesome to have all this done so quicky after having taken so long with the file extraction.

Now it came to modding, or in my case, getting the SHAR modding tools to work. For this I could have used Parrelells (a VM application that runs Windows) but I had already spent the funds for Crossover for gaming so I took that route. This isn't an issue now but I worked out that some of the modding tools required either "mscoreei.dll" and/or "mscorees.dll" to be set to "builtin then native" in the advanced options to run. Funnily enough, it also turned out that the mod launcher itself required the inverse, so to make myself a note within my reference documents to remind me to check these dll files each time. I assume this was because one of the tools was a command line application.

There wasn't any part of this that I would call programming. What I was essentially doing was converting a file found in SHAR's game files to an xml, adding lines to include the filepaths of the files I was adding, then altering the existing code so the game would play my music instead of the original game's. It was pretty mundane task but even this still came with its own issues. There seemed to be some cases where the music couldn't be referenced. It would always showed an error, which normally would have normally provided me with an easy fix; just check I got the file names correct. But what it would show me was this:

I was on my own for this as I was never able to find anything on the Donut Team Forums (the main place for SHAR modding). For the case above I managed to get it working when I converted the file to .rsd (what the ogg would be changed to before it was packed as a mod), put it in the same place the original sound file would have been then changed the name. Unfortunatly, I would run into this error again much later in the mods development. When that later issue arrose, I struggled to find a solution and ended up dropping the project for about a year.

I would come back to the project every now and again to test a new solution to the issue I was having. I'd back up my files each time just to be sure. I was lucky I thought to do this because during one of these tests I actually managed to break a wine bottle messing with the dll files. Finally, I worked out that the issue was just that the filepath was just too long (furious) and got to work polishing up the project for what I would call the 0.1 release after the new year.

All the time I had kept squeaky clean and well documented xml files. I used import statements and headers. Every line I change had a comment above it to say what the mission was and what I changed it to in case I came back to it much later to add the SFX audio. I played through the entire game and played every mission to make sure all the lines were written out correctly. I even remember having the game up, hearing the fireworks on the midnight of new years eve, sipping on my 3rd cider.

At last it went up on the 5th of Jan with a video, the song list and credits. The 0.1 version would be compiled on new years day.

As for the 1.0 finished product, my wine bottle broke again and I forgot how the Mac's folder replacing worked. I managed to replace the source code for the mod with another folder containting some more of the mod, ultimately deleting the most recent backup of the source that I had. I decided to leave it after that as the only other archive I kept was the one I mentions a few paragraphs back.

What I learnt from this:

I think the most important thing I learnt from this is how to optimise a workflow. I was very efficent when I used my own tools and knowledge to speed up some steps of the project, but when it came to editing the XMLs and extracting the files from Street Fighter, I think I wasted a fair bit of time. I may not have been able to do much when it came to extracting the audio from that game but I hadn't really checked if there was. As for the XMLs, I knew damn well I could have used something similar to the sorting application for Golang, I was just too scared that that would have taken longer to work out. Sounds a bit evil but I don't think I needed to be too fussy with the comments either. They were helpful for "Ctrl+F"ing things but I didn't need to make sure every change was documented for myself. And obviously, using version control software would have saved me big time when it came to my code being deleted. I will admit I'm not using for my next mod but if I was doing something with that many files I probably should be.

If you happen to be reading this and looking at making something similar, check out the post on Donut Team's Forum I've linked above. In the credits I've linked all the tools I've used. Don't ask me to come and do some work for your SHAR mod though as I would rather not. I might answer some questions though.