JSRF: Preventing Yoyo's Kidnapping by Changing a Single Bit

Channel:
Subscribers:
9,810
Published on ● Video Link: https://www.youtube.com/watch?v=A6Q4jJUQMLY



Duration: 3:54
102 views
11


Read on in the description for some extra trivia.

This was largely spurred by hearing about a modified JSRF save going around with all the character unlocked from the beginning, where some lamented that Yoyo was still unusable for much of the game. Here, we'll see precisely what locks Yoyo from play and how to get around it.

First, for the sake of correctness: I look at individual bytes from the action records, but the action type is in reality a 32-bit integer, and the argument is a whole 64 bytes. How much of that argument is actually used depends on the action type, including using none of it. All the numbers we talked about here fit into individual bytes, though, so I truncated to make things easier to follow.

For the sake of time, I didn't play through the game to get any of this footage, but instead just swapped mission files around to get where I wanted to be when starting a new game (sometimes creating "new" ones that the swapped ones cause the game to search for). The one problem was that this meant I'd only have the starting characters unlocked after the cutscene at the start of the video, so I actually modified the cutscene's mission file to unlock everyone you'd usually have at that point in the game. Specifically, I added a new action list at the end of the file, with a D6 action for each character I wanted, and modified the so-called "table of contents" to point to that list instead of the original one.

You also might notice that Yoyo loses his voice in the Immortals fight. I believe this is the same bug encountered in some versions of the game where NT-3000, Yoyo, and Roboy can lose their voices under certain circumstances, caused by the game unloading the character's voice while you're playing as them. In this specific case, the opening scene of the Immortals fight loads Yoyo's voice, because it's in the same mission file as the post-fight cutscene which plays Yoyo's laugh as you're captured (not NT-3000's, interestingly). The actual fight then happens in another mission, and I believe the game unloads Yoyo's voice as you go from the first mission to the second as part of unloading all the other stuff the first mission had loaded.

I originally planned to explain the E3 action type as another example, but left it out for time and because I figured the C5 example with music was enough. E3 plays an "event," which is basically a short scene, and its argument is the ID of the event to play. The argument E6 to the E3 action in the video is 230 in decimal, and plays e230.bin. The cutscene is actually composed of four such events, though, numbered 230-233, and there are other lists of events that also contain E3 actions with arguments E7, E8, and E9 for the other three events. If you replace the E6 in the video with E7, for instance, the cutscene starts with the segment about Yoyo going missing (and then softlocks because of some machinery I don't quite understand yet).

I was thinking it'd be really funny to include the secret "even I wonder if I'm the real Yoyo" line from FRZ, but I don't know of any way of triggering it without further modding the game, so I left it out. Its obscurity might leave some people confused, anyways.

Finally, if you'd like to see my ongoing collection of information about the workings of this game and development utilities to examine and modify it, I'm frequently toiling away at this repository: https://codeberg.org/KeybadeBlox/GG-Notebook




Other Videos By KeybadeBlox


2023-08-18Let's Play Viva Piñata: Trouble in Paradise, ep 205: Flashing light warning
2023-08-18Let's Play Spongebob: Cosmic Shake, ep 45: Cannot travel during challenges
2023-08-17Let's Play Spongebob: Cosmic Shake, ep 44: Safe at home, back where they belong
2023-08-17Let's Play Viva Piñata: Trouble in Paradise, ep 204: Baby bonboon
2023-08-16Let's Play Viva Piñata: Trouble in Paradise, ep 203: Taking them out back
2023-08-16Let's Play Spongebob: Cosmic Shake, ep 43: Found it
2023-08-15Let's Play Spongebob: Cosmic Shake, ep 42: Press button, get token
2023-08-15Let's Play Viva Piñata: Trouble in Paradise, ep 202: Finally, a toy
2023-08-14Let's Play Spongebob: Cosmic Shake, ep 41: Round 2
2023-08-14Let's Play Viva Piñata: Trouble in Paradise, ep 201: Kind of creative jameleon dance
2023-08-13JSRF: Preventing Yoyo's Kidnapping by Changing a Single Bit
2023-08-11Let's Play Spongebob: Cosmic Shake, ep 40: Promise fulfilled
2023-08-11Let's Play Viva Piñata: Trouble in Paradise, ep 200: Everybody enters
2023-08-10Let's Play Viva Piñata: Trouble in Paradise, ep 199: Everybody appearing, nobody visiting
2023-08-10Let's Play Spongebob: Cosmic Shake, ep 39: The glove
2023-08-09Let's Play Spongebob: Cosmic Shake, ep 38: That reefblower
2023-08-09Let's Play Viva Piñata: Trouble in Paradise, ep 198: Here comes the money
2023-08-08Let's Play Viva Piñata: Trouble in Paradise, ep 197: Fruity hats
2023-08-08Let's Play Spongebob: Cosmic Shake, ep 37: Glove love Pat
2023-08-07Let's Play Spongebob: Cosmic Shake, ep 36: "Catching" jellyfish
2023-08-07Let's Play Viva Piñata: Trouble in Paradise, ep 196: Building the elephant stash



Tags:
Play
gameplay
videogame
video
game
JSRF
Jet
Set
Radio
Future
Jet Set Radio Future
mod
modding
reverse engineering
Yoyo
cutscene
hex
story
character
unlock



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.