Logo
News
Menu News Editorials Reviews Best of Saturn Resources Magazine Netplay Friends
 
 
 

Under the Microscope: Last Bronx

The Flash Sega Saturn Vol. 18 demo disc includes a preview of the Saturn port of Last Bronx , Sega AM3 ’s 1996 3D arcade fighting game.

The preview is an “auto demo.” You see two characters (Yusaku and Joe) fight each other in one of the levels (Dark Rooftop), and then you’re sent back to the menu. You’re just meant to watch; you can’t control anything.

The top-left button says “Watch auto demo”

…or can you? This isn’t a pre-recorded movie; the scene you’re watching is being rendered in real time. That means the demo has the game’s engine, but it’s just not paying attention to player input.

I’ve created a patch that re-enables player input and allows you to play through this early console version of Last Bronx — get it from SegaXtreme . Below are details about how the patch works and what I noticed about this pre-release build.

Technical details

The retail versions of Last Bronx have something called Watch Mode , which features non-interactive fights between two CPU-controlled characters. How does that work?

Left: Watch Mode selection in the final U.S. version. Right: Watch Mode in action.

To answer that, let’s look at Arcade Mode first. When you choose that mode in the main menu, the game keeps track of which controller made the selection:

  • If controller 1 did it, the flag field at 0606fb09 (NTSC-U version) gets set to 0x02 .
  • If controller 2 did it, the same field gets set to 0x01 .

This flag field determines which character is CPU-controlled. Watch Mode sets it to 0x03 , which means both characters are CPU-controlled.

The analogous flag field in the auto demo is at 0606b7c0 . It gets set to 0x03 on the character select screen and before the match starts. These patches change that value to 0x02 :

060095be e202 # Write 0x02 to register 2 06009e1c e602 # Write 0x02 to register 6 06009e28 e602 # Ditto

And just like that, we’re in control! You can fight as Yusaku against the CPU-controlled Joe.

Playing the no-longer-auto demo

That’s cool, but the experience is still pretty limited. Even if you win the match as player 1, you’re shown a Game Over screen and are transported back to the Flash Sega Saturn demo menu.

What’s going on is this: the game tracks the state of the match in the 1-byte value at 060ffc11 . There are 38 states in total. Number 0x08 is normal gameplay; 0x26 loads the next level; 0x19 is game over.

The game chooses 0x19 regardless of what happened during the match, but we can change that with this patch:

0600a69e e626 # Write 0x26 to register 6

That gets the next level loading, but the demo freezes before this happens. I suspect that this is because it’s missing the data for the loading screen that’s in the final versions.

The loading screen in the final U.S. version

We can avoid the function call that freezes with this patch:

0601b7f2 0009 # Replace the jsr with a nop

There seem to be no ill effects from skipping past the problematic code. Indeed, it allows us to play all the way through the main campaign!

There’s only one oddity to fix: while the final versions of the game have you play against each character once, the demo repeats Joe. We can fix this by updating the array of opponent indexes at 06026b52 . The repeated entry is at index 2:

06026b54 05

The final Japanese version of Last Bronx was built in July 1997. This demo is from late May. What can we tell about the state of development several weeks prior to release?

Build differences

The most obvious difference between this build and the retail versions is that some levels are missing. The text for Lust Subway, Radical Parking Lot, and Brilliant Room displays, but you play in Dark Rooftop instead.

“Lust Subway” (right) is just Dark Rooftop again in the demo (left)

The levels that are present more or less match the ones in the retail versions. However, Naked Airport is missing some background objects:

Left: The demo version. Right: The final version.

I also noticed that some of the character models are a bit incomplete. For example, Yusaku’s lips are gray in the demo:

In the final fight, you play Yusaku vs. Yusaku. In the demo build, your opponent uses the second player color scheme. In the final game, the opponent is silver:

Left: The demo build’s “Brilliant Room.” Right: The final game’s.

Some other things are missing, but some of them might have been intentionally removed from the demo to save disc space:

  • Every level uses the same background music.
  • There’s no code for the mode select menu.
  • The code for input handling on the character select screen has been removed; you can’t choose anybody but Yusaku.
  • There are no staff credits.

If you’re a Last Bronx enthusiast and can spot other differences, leave a comment!

Outro

Thanks for reading. I’ll be back with more from my collection of Sega Saturn hacks and cheats next week. In the meantime, check out my archive of articles here at SHIRO!, or see my Substack blog , which covers games for Dreamcast, PlayStation, and more.


Bo Bayles
 

Rings of Saturn: 32bits.substack.com

 
 
Next Prev Go to top