In this edition we’re examining Bugriders, the 1997 racing game from n-Space and GT Interactive. Here’s the introduction to its the story from the manual:
With the death of the Emperor, his sons and daughters, the rulers of the five regions [of Entymion], organize a series of races to find the champions of their land.
The first race in each series is a Grand Opening Invitational event of sixteen competitors hand picked by the Royal Contender for their proven skills in riding and combat. You have managed to obtain (using whatever means necessary) an invitation to that prestigious event. From the masses of willing participants unable to get an invitation, 120 are chosen in a lottery system to populate fifteen other qualifiers of lower ranking.
The final race is a firefight involving the sixteen top ranked individuals and the Royal Contender. Those lucky enough to finish in the top three spots will receive invitations to the opening event of the next region. The final event is a “Battle Royale” as Entymion’s top competitors and the Royal Contenders battle for the Emperor's crown.
This game caught my attention because it has a password system, but no listed passwords on GameFAQs or other cheat sites. Might it have some interesting one?
Answer: yes! I found several that haven’t been reported in the decades since the game was released, including some fun Easter eggs.
The password system
Examining the game’s memory in the Mednafen debugger reveals some suggestive strings:
Just before the ENTER PASSWORD string are several other 10 character strings, which is the same number of characters the game uses for passwords:
Nothing happens if you put them in, though. What gives? It turns out that they’re scrambled. After you type a password, the game descrambles the list of stored passwords and compares them to your input. If it finds a match, it applies an effect.
Following references to the scrambled passwords strings in Ghidra shows that the password comparison logic is at 800590e4
(NTSC-U version). The descrambling process is:
The ASCII letters
A
throughZ
are mapped to0x00
through0x19
.The ASCII numbers
1
through6
are mapped to0x1A
through0x1F
.The binary representation of each mapped character is XOR-ed with
0x10
.
I wrote a Python script to descramble each of the passwords shown above. The results are below…
Credits and extra credits
Enter this password to see the staff roll:
CREDITROLL
No surprises there. But enter this password to see the special “Lunacy” credits:
SMOODGEMON
This staff roll is a lot goofier! Everyone has a nickname, there are various pieces of artwork, and the inside joke quotient is much higher.
Flying submarine mode
Enter this password to change the player character into a guy wearing a striped shirt on top of a flying submarine:
ARRRGHHHHH
What is this? The Lunacy credits above explain it:
The guy in the striped shirt is Mike Wikan, and flying submarine is from another n-Space game, Tigershark. How do I know? He told me! I showed this to Mike Wikan and he said:
The striped shirt guy is me! I wore it to a Sony E3 Party at House of Blues in LA where the Brian Setzer Orchestra was the entertainment!
The cheat menu
Enter this password to get access to a debug screen:
SECRETMENU
You start playing from an arbitrary point in the game using any character. The “Bug flythrough” is a non-competitive race around the courses.
Slideshow mode
This password enables a special “n-Space Slideshow” mode:
INTHEHOUSE
It’s got pictures of the team, their pets, their kids, their vacations…
There are several silly images and pieces of art:
As with the Lunacy credits, the inside joke quotient is quite high.
Other effects
This code prevents you from dying if your bug takes too much damage:
ALTOPARLAN
This code freezes the countdown timer:
TRSSENSINC
As you might guess, this password makes the bugs larger:
LARGEBUGGS
And this one makes this smaller:
SMALLBUGGS
This password makes your competitor’s ranks show onscreen:
SHOWRANKS1
I don’t think this password actually does anything:
ANALOGPLAY
It sets the value at 800b60f5
to 01
, but that’s what it is by default. It seems to be related to support for the Dual Analog pad (rather than the later DualShock pad). If you have one plugged in, you’ll see it represented in the configuration screen:
Outro
Many thanks to Mike Wikan for giving the backstory on the striped shirt photo.
See my archive for past retro game reverse engineering articles. And to get new ones as they come out, subscribe here at Substack:
I’ll be back next week with more!