Shutokou Battle R is game in the Tokyo Xtreme Racer series. This one was only released in Japan for the PlayStation. It came out in April, 1997.
Prior to the game’s release, a Highlight-ban demo disc was published. It provides a limited preview of the gameplay by letting you race one of the cars on one of the tracks. It has been noted (e.g. here) that it differs from the final version — the car colors are different, for example, and the in-game HUD doesn’t match.
The demo build is from 1997-01-17, about four weeks before the final version (1997-02-12). It’s got a full set of files on the disc, which led me to wonder whether the restrictions could be lifted.
Answer: yes! I’ve made a patch that allows you to use all of the cars (including the bonus ones) and courses. The patch also gives access to a special debug screen. Get it from GitHub.
Selecting cars
The demo allows you access the car selection screen, but it doesn’t respect the choice you make. Using Cheat Engine you can work out that that the index of the car shown on the screen is stored at 800d6040
. Tracing references to that address in Ghidra reveals that the function at 8008e394
reads its value. It would write it to 80071389
, but there’s a branch instruction that prevents that from happening.
I patched out the branch as follows:
8008e3e4 00000000 # Don't skip the write
The 80071389
address is then updated with your selected car’s index.
There are six cars available by default, but the disc has data for the three bonus cars. The menu index above resets to 00
if it reaches the value at 80071387
, which stores the number of available cars. Tracing writes to that address leads to the function at 80088a40
, which has a section that looks like this:
if FLAGS_80071378 & 4 != 0:
BYTE_80071388 = 5
BYTE_80071387 = 9
That is, if one of the bits in a flag field is set, the bonus cars become available. This patch makes sure that this always happens:
80088aa4 00000000 # Ignore the branch
Each of the bonus cars looks different from the final version. Here’s the Genki-SP1 car, which has a less colorful look in the demo. It also has different stats:
The Genki-SP2 has a different paint job and stats:
And the secretive DODA-S30 is blacked out a little less effectively in the demo:
The DODA-S30 textures seem to be unfinished — during races you can see they’re pretty rough looking:
The screenshot shows some lighting differences in this build as well.
Selecting courses
The demo lets you view the courses, but blocks your choice from being saved. The code that does the blocking here is very similar to the analogous code for car selection. This patch undoes its effect:
ADDRESS 00000000 # Ignore the branch
Notably, the courses differ in this demo from the ones in the final game. This one, for example, doesn’t have a match — nothing in the retail release has this shape or distance:
Accessing the debug menu
TCRF notes that there are hidden debug features in the final game. They’re in the demo build, too!
The title menu has three items: Scenario, Practice, and Link race. There’s actually a hidden fourth item, which launches the main menu with debug enabled.
The demo pins the cursor to index 01
for Practice. This patch changes that value to 03
:
8007ba84 03000234 # Pin the cursor to 03
The debug menu looks like this:
The Return value changes which screen you go to when you exit. The My Car, Rival Car, and Round values aren’t write-able (they aren’t in the final version either). The Movie and sound test items work as you might expect. Edit 09 changes how much cash you have available. The BG Map item changes the background image:
Odds and ends
The final game has three cheat codes. They aren’t well attested on the English Internet, but you can find them on Japanese cheat sites (my go-to is this one). You enter them with the second controller at the title screen:
Unlock special parts: Up, Down, Down, Up, Left, Right, Left, Right
Maximum money: Up, Triangle, Down, X, Right, Square, Left, Circle
Have all parts: Right, Right, Down, Up, Up, Left, Down, Left, Circle, Triangle
These are stored in memory at 8009b444
, along with two others:
Unknown 1: Up, Up, Down, Down, Up, Up, Down, Down
Unknown 2: Down, Triangle, Up, Triangle, Left, Square, Right, Circle
I’m reasonably confident that these don’t do anything. The function at 8007fb68
applies effects for the other three, but not these.
This demo also has a codes list, but the function that reads them (80084094) doesn’t get executed:
The first unknown code is present, and it sets the
04
bit in the flag field at80071378
. This is the one we set above the unlocked all cars — it was neutralized for some reason in the final game.There’s an unknown code that sets a different bit in that flag field. Its buttons are
Down, Down, Up, Up, Down, Down, Up, Up
.The maximum money code is present, and it does the same thing.
The final game also has the debug screen shown above. To access it, the same title screen cursor trick works:
8007ba84 04000292 # Allow selecting the hidden 4th item
Outro
If you’re familiar with this game, try out the patch — tell me in the comments if you find other interesting differences with the final version.
See my user page at Hidden Palace for a list of other demo disc patches I’ve developed. And for more on Genki games, see my articles on:
