Under the microscope: PaRappa the Rapper (PlayStation)
Get you out of this and now push the button
In this edition:
PaRappa the Rapper has a hidden mode that lets you win by repeatedly pressing a single button.
You can enable this mode with a cheat code in the PlayStation version.
The cheat code is disabled in the PSP version, but the hidden mode can be activated with some hacking.
Or, as Chop Chop Master Onion might say:
Push! Press! It’s all for the code. If you want to cheat, then I found the mode.
L1! L2! Keep them on hold. R1! R2! Don’t let them get cold.
Select! Triangle! We’re very nearly there. Boot up the game and you’ll never need to care.
Tap on Select! Again and again! That’s all you need if you want to win.
Details are below…
The PlayStation version
I always check games to see where they first start looking for user input. This usually happens during an intro movie or logo screen, as you can often skip those with a button press. But occasionally you’ll find a way to access something hidden — see the articles on Toy Story 2 and G Vector for examples.
For PaRappa the Rapper, start holding L1+L2+R1+R2+Select+Triangle as the Masaya Matsuura Presents screen fades out:
This activates a sort of cheat mode. All you have to do to continue playing is to press Select after each cue. You’ll maintain a Good rating as long as you keep it up.
Here’s a video of me playing by just pressing Select repeatedly:
Technical details: I used the Mednafen emulator to take some snapshots of the game’s memory while no controller buttons were being held. Then I took some more snapshots while holding down a controller button. By comparing the two, I found that controller input affects the 32-bit value at 800882f0 (NTSC-U version).
I set a read breakpoint for that memory address and then restarted the game. After it booted up, I checked the locations that tripped the breakpoint. One of them, inside the function at 80016ab4, caught my eye, since it checks for multiple buttons. It’s looking for the bit pattern 0x011f, which is the logical OR of:
L2:
0x0001R2:
0x0002L1:
0x0004R1:
0x0008Select:
0x0100Triangle:
0x0010
This is the standard button-to-bit mapping used in most PlayStation games.
The flag at 800916fa gets set if you’re holding the right buttons. This flag is read during gameplay by the function at 801c7a60. If you press Select, the 16-bit value at 80091810 increments. The game checks this value in a few places before penalizing you for missing a cue.
The PSP version
Alas, you can’t activate cheat mode in the PlayStation Portable version of PaRappa. It seems to have been intentionally disabled.
There’s a bit of code in the function at 0887e66c (US version) that runs just after the logo screens are displayed.
The code starts by calling getting controller input:
# Call the function that returns controller input.
0887e814 jal 0x08875594
0887e818 _li a0,0x1
0887e81c move s0,v0It then calls a function in a loop for either 30 frames or until the player presses a button:
# Break out of the loop if the player pressed any button.
0887e820 bnel s0,zero,0x0887e844
0887e824 _li v0,0
# Call the function at 0x08875410 30 times
0887e828 jal 0x08875410
0887e82c _li a0,0
0887e830 addiu s2,s2,0x1
0887e834 slti v0,s2,0x1e
0887e838 bne v0,zero,0x0887e814
0887e83c _nop
0887e840 li v0,0Then it checks to see whether the Down button was pressed:
# Check whether the button associated with bit pattern 0x40 was pressed.
0887e844 andi v0,v0,0xff
0887e848 sll v0,v0,0x19
0887e84c srl v0,v0,0x1f
0887e850 beq v0,zero,0x0887e874
0887e854 _nopIf it was, the cheat flag gets set:
# Set the value at 0x08a37acc to 0x01.
0887e858 li v1,0x1
0887e85c lui v0,0x8a3
0887e860 sh v1,0x7acc(v0)But the code that sets the cheat flag can never actually execute! There are only two ways to get to the section that checks for the Down bit pattern. But both of them clear the register, v0, that holds the bit pattern.
The PSP’s MIPS processor uses “delay slots.” These are instructions that are placed after branch commands that execute regardless of whether the branch is taken. In the branch that’s taken when you press a button, the instruction in the delay slot overwrites your button press with a 0.
0887e820 bnel s0,zero,0x0887e844 # Jump to the button checking code
0887e824 _li v0,0 # But write a zero to v0 firstI don’t think this is an accident — the developers seem to have added this logic to disable the cheat mode.
If you set the 08a37acc value manually, however, it does still work. You need to press L1+Down during gameplay instead of Select to skip a cue. But other than that, the operation is the same.
Outro
I was surprised that this code hadn’t come to light — PaRappa was a popular game. Tell me in the comments if you’ve seen it reported before.
There doesn’t seem to be a cheat mode like this in Um Jammer Lammy, but PaRappa the Rapper 2 has very similar “ninja star mode” mode that lets you skip cues. You can activate by holding R1+R2 when selecting a stage (see, e.g. GameFAQs).
I’ll be back with more retro game reverse engineering articles soon. Subscribe here at Substack to get the next one as soon as I publish it:







Thing, the PSP had a 4 player multiplayer mode you could hook up to. If someone used this code at the title screen, they could probably use this as a secret unfair advantage during matches. So that's probably why it's been disabled. Curious if it's been disabled for the PS4 port tho.
Interesting! I wonder if the PS4 port has it disabled, too.