Under the microscope: A Bug's Life (PlayStation)
De-mystifying game secrets from 1998
It’s time for another entry in my series on unreported cheat codes in licensed Disney games1. This week, we’re covering A Bug’s Life, which was developed by Traveller’s Tales. The PlayStation version of this game has a very unusual “unlock all levels” cheat that I don’t think has been reported before.
To start, choose Training from the main menu. You’ll be given instructions to follow:
Throw berries (Square) six times.
Jump (X) six times.
Stomp (press X while jumping) three times.
Pick up and put down (with Square) a seed three times.
Activate a mushroom seed (jump on it) and then pick it up and throw it (Square).
Collect a green token, use it to change a seed’s color to green (with Triangle), and then activate a leaf (jump on it).
Once you’ve done all that, you’ll have to get to the top of the training area by activating a mushroom and a plant. Bounce off the mushroom and onto the plant, and then jump up out of the valley.
Once you’re on top, collect exactly seven of the grain pieces on the ground. After you’ve done that:
Activate Flik’s spinning move by moving the D-pad clockwise in a circle a few times.
Press Start when Flik is still spinning to pause the game.
Choose Exit level.
Press and hold R1+L2 while answering Yes to “Are you sure?” Keep holding R1+L2.
Once you get back to the main menu, you’ll be able to select any of the levels:
Technical details
Gamehacking.org tells me that to unlock all levels, the value at address 80082284 should be set to 0x000f. I loaded a snapshot of the game’s memory (from the Mednafen debugger) into Ghidra and traced writes to that address.
The function at 8004ecd4 does exactly what we need: write 0x000f to the right address. It executes when you’re in the training stage. It’s got logic that looks like this pseudo-Python:
That is, if a bunch of conditions are met, all levels unlock. I tracked down each of the condition addresses shown to see what they store, mostly by watching how they change in the debugger:
level_state: This changes to0x05when you exit from the pause menu.grain_count: This increments when you pick up a piece of grain.animation_index: This changes when when Flik moves. It becomes0x0dwhen the spinning move is being performed.held_button: This changes to0x0100when L2 is held, to0x0800when R1 is held, and to0x0900when both are held.level_index: This changes when you switch levels.0x11is the training level.
With my labels, the logic looks like this:
The description above is this code translated into English.
Outro
Thanks for reading! As always, feel free to use the information and screenshots in this article on your favorite reference site.
I’ll have another retro game reverse engineering article out this week. You can subscribe here on Substack to get it as soon as it’s published:

See the earlier articles on Hercules, Toy Story 2 and 102 Dalmatians, and 101 Dalmatians II.






