JSRF Mod: Future Site After Hours
What I did and how are all explained at length here in the description!
This is a little mod for JSRF just to show the kinds of things I've figured out how to do. This recording is of Cxbx, but I believe it should run fine on console (I just didn't bother trying). I made it as part of the reverse engineering of the game detailed in this repository: https://codeberg.org/KeybadeBlox/GG-Notebook
The majority of this was done with just a hex editor, but I also used neodos's JSRF ModTool to view some models and replace some textures, as well as PES Sound File Converter to create an .adx file.
Now, all the things I changed:
- Most obviously, I made it dark. Specifically, I swapped Future Site's lighting and skybox with those of Bottom Point by swapping their Stg##_t.dat files. It ought to be possible to modify the lightmaps from these files directly instead of having to swap existing files, but JSRF ModTool seems unable to properly export and import them.
- I changed the textures of the lights to make them look turned off. This included removing the moving lights from the wires on the left side of the final straightaway of the course (which is why I look at them briefly).
- I modified the stage models to remove the coloured overlays that created the effect of lights shining on parts of the course. This took a great many hours, because I couldn't figure out where these overlays were stored (and I couldn't quite make it out from neodos's code, either), and even once I found it, I had to go through lots of models in a hex editor and remove the overlays by hand. It's worth noting, though, that I don't think neodos's claim that the fourth byte for these is alpha is correct, though I agree that the first three are BGR channels.
- I imploded the model for Gouji's tower to make it disappear, just because I felt like it. Why is that thing here?
- I removed various objects by modifying the mission files. The important one was the glare effects on the stadium's big perimeter lights, but I also accidentally removed the wall preventing entrance to the inside of the course, and just went with it because I thought it was kind of cool. The traffic cones littered everywhere were also a casualty of this.
- I removed all the pedestrians, also by modifying the mission files. I basically turned the "load pedestrians" command into a no-op.
- I "turned off" the music by replacing ending_l.adx (which I think is unused, but can still be loaded?) with silence and then modifying the mission files to set that as the background music.
- I modified the first mission file to move Jazz and her conversation into the stadium's interior, and to replace her with a Noise Tank. This also required modifying the mission file to tell the game to load the Noise Tank instead of Jazz (the game will crash if you try to use a character that hasn't been loaded).
- I modified the race's mission file to replace Jazz with the Noise Tank. I'm admittedly astounded that this worked, because I literally just replaced every occurrence of Jazz's character ID with the Noise Tank's, except one that didn't look like it was a character ID. It ran perfectly on the first try.
- I modified the TalkEvent files for talking to Jazz and winning the race, replacing her voice and name with the Noise Tank's, and changing the text. I admittedly don't fully understand these files, and had to pad them with a bunch of "$r"s at the end to get them to work, but they do seem to work. I also had to figure out how those "yes/no" prompts work, which turned out pretty simple: it's like those choose-your-own-adventure books where you skip to a different place depending on your decision.
It's pretty remarkable just how much of this comes from modifying mission files. I was actually pretty unfamiliar with all the model-related stuff before making this mod, but embarked on this project regardless because it seemed like modifying just the missions was nearly enough.
There was also a little setup in recording the video. I replaced the opening tutorial mission file with Chapter 9 99th Street to get to where the video starts (there are actually lots of unloaded textures just offscreen, which is why I start recording right next to Future Site), and then I had to name the mission files properly to get them working. Entering Future Site from that mission sets the last two digits of the mission number to 65, and starting the race sets them to 66, so I had to rename the Chapter 9 Future Site and race missions to mssn0165 and mssn0166. These files don't exist in the original game, for what it's worth. I also got myself to play as Jazz by replacing Yoyo's files with hers, rather than trying to unlock and switch to her (though in hindsight, I easily could've by modifying the 99th Street mission file to immediately unlock her, but whatever).
I'm out of space for this description, so I'll stop here. Hopefully all this research into the game will go somewhere interesting, anyways.
Other Videos By KeybadeBlox
Other Statistics
Jet Set Radio Future Statistics For KeybadeBlox
At present, KeybadeBlox has 4,218 views spread across 58 videos for Jet Set Radio Future, with approximately 17 hours of Jet Set Radio Future video on his channel. This is 2.82% of the total watchable video on KeybadeBlox's YouTube channel.