Woody Woodpecker Racing was made by Syrox Developments. It was published for PlayStation by Konami in 2000 and for PCs in 2001. It came to my attention when prototypes of a canceled Dreamcast version made their way online in 2023.
The game has three unlockable characters and two unlockable difficulty modes. None of the cheat code sites (or even the GameShark / Action Replay sites) seem to have any shortcuts for making them accessible, so I decided to take a look.
Good news! I found a cheat that unlocks everything. It works for both the official PlayStation version and the Details are below…
Finding the unlockables data
Using Cheat Engine or similar, it’s a snap to locate the cursor position on the Character Select screen (search for a value of 00
when highlighting the leftmost character, then for a value of 01
after moving to the right, etc.). The address is 80047a98
(PlayStation, NTSC-U version).
I set a write breakpoint (using the Mednafen debugger) for that address to find that the code at 80045b68
sets the value. Then I loaded a memory snapshot (also from Mednafen) into Ghidra.
Ghidra’s disassembly shows that game writes whatever value is returned by the function at 8004487c
:
80045b50 jal 0x8004487c # Jump the the function
80045b54 nop
80045b60 sll v1,v1,0x2 # Calculate the address of the cursor
80045b64 v1,v1,s0
80045b68 v0,0x0(v1) # Store the cursor value
That function has logic for navigating in the menus. It has a section that looks like this pseudo-Python (adapted from Ghidra’s decompilation):
if (player_input & X_BUTTON_PATTERN) != 0:
if (
(cursor < 6) or
((cursor < 7) and (some_value > 4)) or
((cursor < 8) and (some_value > 9)) or
(some_value > 0xe)
):
go_to_next_menu()
The some_value
variable is stored at 800846fb
, and when set to 0x0f
, all characters become available.
Finding the cheat controls
Next, I traced references to the address that unlocks the characters. You would generally expect:
One write that initializes the value
One write the restores whatever value is stored in the memory card
One write that unlocks a character when you meet the necessary requirements in game
Some number of writes associated with a cheat code
The most interesting write is the one here:
80045ed4 lui v0,0x8008 # Prepare the addresses
80045ed8 addiu v0,v0,0x46dc
80045edc li v1,0x10 # Load a value of 0x10
80045ee0 li, a0,0x4 # Load a value of 0x04
80045ee4 sb v1,0x1f(v0) # Store the 0x10
80045ee8 a0,0x1e(v0) # Store the 0x04
This sets the address for character unlocks to 0xf
, which makes all characters accessible. It also sets the address next to that to 0x04, which makes the Hard and Expert difficulties available:
This code is part of the function at 80045e28
. But when does that execute? I set a breakpoint for the function address and then started flipping through the menu screens. When I got to the Screen Adjust screen, the breakpoint kicked in:
OK, so once you’re there, what do you do? Ghidra’s decompilation provides a guide:
if (player_input & 0xa0) != 0:
unlock_characters_value = 0xf
unlock_difficulties_value = 0x4
Each controller button stores a bit pattern. In this game Square is 0x80 and Circle is 0x20. Pressing either of those will satisfy the conditions shown above.
So the cheat code is:
Go to Options.
Go to Screen Adjust.
Press Circle or Square.
The Dreamcast version
Does this cheat code exist in the Dreamcast prototypes? Yes!
The screen position handler function is at 8c030cdc
in one this prototype build. The code is a little bit different from the PlayStation version:
if (player_input & 0x85) != 0x85:
unlock_characters_value = 0x10
unlock_difficulties_value = 0x4
On PlayStation you just needed to press one of the buttons to unlock. But on Dreamcast you need to press all three at once: L+X+Y will do the trick.
After that you can race with the bonus character vehicles. But since the build is incomplete, the characters won’t actually appear as drivers:
Outro
For more cheat code recovery operations, see my archive here on Substack.
And for more from me: I’m on the Sega Lounge podcast this week! KC and I talked about Sega, Sonic, reverse engineering, and more.
I’m always looking for more games to check out, so tell me which ones I should be examining. Games that have unlockable elements like this one are good candidates.
Coming soon to Rings of Saturn:
Even more Saturn shmups
20 years of a certain bat-themed game
ひなこ, かな, and わかば
