Under the microscope: Croc & Croc 2 (PlayStation)
The crusading crocodile
In this edition, I’m examining the PlayStation versions of the two Croc games from Argonaut Software.
Croc: Legend of the Gobbos: I found two cheat codes that don’t seem to have been documented in the 29 years since this game was released.
Croc 2: There are some cheat codes for the PC version of this game that somehow never got translated for PlayStation. I do the decoding.
Details are below!
Croc: Legend of the Gobbos
All of the cheat sites have passwords that will take you to any level in the first Croc game. But the consensus opinion seems to be that that the game doesn’t recognize any special button codes.
That consensus opinion is wrong, however – I found two button codes that enable special effects. Here’s the first one: On the main menu, hold Triangle and press Select.
This will change the Enter Password menu item into a Credits menu item:
As you might expect, the staff credits play when you select this new item:
Here’s the second code: Highlight Credits on the main menu. Then hold Square and press Circle until you hear a sound effect. After that, start a game.
When you pause the game and then press Circle, a coordinate display element will appear on the HUD:
This HUD element is enabled by default in the March, 1997 prototype version of Croc:
Technical details: The logic for these two cheat inputs is in the function at 80012c64, which implements the game’s outermost loop.
That function checks player input against the pattern 0x100400. That’s the logical OR of the patterns for Triangle (0x100000) and Select (0x400). If there’s a match, the 32-bit value at 800748e8 gets set from 0 to 1. After that update, the menu switches from showing Enter Password to Show Credits.
The function is also checking for the pattern 0x600000, which is Square’s 0x400000 OR-ed with Circle’s 0x200000. If the menu cursor is on Show Credits when this combination is being pressed, a sound effect plays and the 32-bit value at 80074900 gets set from 0 to 1. This is what enables the coordinate display during gameplay.
Here is Ghidra’s decompilation of the relevant code with my variable labels added:
if ((p1_held_02 & 0x100400) == 0x100400) {
credits_in_menu_01 = 1;
}
if (((((p1_held_02 & 0x600000) == 0x600000) && (mode_select_cursor_01 == 3)) &&
(credits_in_menu_01 != 0)) && (coordinates_cheat_01 == 0)) {
play_sfx_01(DAT_80074f28,0x50,0x18,0,0);
coordinates_cheat_01 = 1;
}Croc 2
Most of the cheat sites have some codes listed for Croc 2. Each one is entered at the title screen:
Cheat Menu: (Holding L1) Triangle, Left, Left, Right, Square, Up, Up, Left, Circle.
Show coordinates: (Holding R1) Square, Down, Circle, Up.
Infinite lives: (Holding L1) Circle, Down, Left, Up, Right, Triangle, Down.
Nine heart pots: (Holding R1) Left, Left, Down, Circle, Square, Square.
Get 100 Crystals: (Holding L1) Square, Square, Circle, Down, Left, Right, Left, Right.
There are two more that you can find for the PC version (see, e.g. speedrun.com). But as far as I can tell, nobody’s written them down for the PlayStation version.
The first code enables a Music test in the in-game Sound Options menu. Enter this sequence while holding R1 at the title screen to enable it: Left, Circle, Up, Down, Square, Circle, X.
Highlight Music Volume on the Sound Options menu and then use L2 and R2 to change which song plays.
The second code shows the staff credits. Enter this sequence while holding L1 at the title screen to enable it: Circle, Right, Circle, Circle, Down, Left, Up, Right, Triangle.
Technical details: The function at 80010b5c implements the typical button code listener logic:
Check player input against a sequence of button patterns.
If there’s a match, increment a counter and start looking for the next button in the sequence.
If there’s a mismatch, reset the counter and start over.
When the “end of sequence” pattern is reached, implement an effect.
This function checks for seven different button sequences. The even ones get checked if you’re holding down L1; the odd get checked if you’re holding down R1. Each cheat sets a bit on the 32-bit flag field at 8006ff88. This value is checked to see which effects to apply.
Here’s part of Ghidra’s decompilation of the cheat code detection logic with my variable labels added:
counters_1_ = &cheat_counter_00 + cheat_index_1;
offset_1 = cheat_index_1 * 0x28;
do {
counter_val_1 = *counters_1_ + 1;
if ((*(uint *)((int)&cheat_buttons_00_cheat_menu + *counters_1_ * 4 + offset_1) &
p1_pressed_01) == 0) {
*counters_1_ = 0;
}
else {
iVar1 = *(int *)((int)&cheat_buttons_00_cheat_menu + counter_val_1 * 4 + offset_1);
*counters_1_ = counter_val_1;
if (iVar1 == 0) {
bit_1 = 1 << (cheat_index_1 & 0x1f);
if ((cheat_flags_01 & bit_1) == 0) {
printf_01("Activated");
cheat_flags_01 = cheat_flags_01 | bit_1;As you can see, the decompiler isn’t always great about inferring types.
Outro
I checked the Saturn version of Croc: Legend of the Gobbos for the Credits and Coordinates cheats. Alas, they aren’t implemented. As far as I can tell, that version truly doesn’t recognize any button codes. There was no sign of the coordinates display text in the PC version, either.
Thanks for reading! Rings of Saturn will return soon with more retro game reverse engineering finds soon.











Very nice finds! Cute games.