In this edition, we’re examining Bust-A-Move 3 (a.k.a. Puzzle Bobble 3), the puzzle game from Taito.
While looking through this game’s data, some strings that seem to be part of an unused menu caught my eye:
06039da0 "URA SWITCH "
06039db4 "MY CHARA "
06039dc8 "PLAY STAGE "
06039ddc "GAME LEVEL "
Alas, it’s not accessible via a cheat code. But I’ve made a patch that re-enables it — get it from SegaXtreme! I’ll describe how the patch works below.
Hooking up the cheat menu
By using Ghidra to trace the references to the strings above, I came to the function at 06058b10. It’s got some code that looks like this in the decompiler (I’ve added names for the variables and functions):
if (game_state_060dc4d4 == 0x27) {
if (game_type_060dc4c8 == 5) {
render_cheat_menu_05_0603aee4();
}
else if (game_type_060dc4c8 == 1) {
render_cheat_menu_01_0603a4c8();
}
else if (game_type_060dc4c8 == 3) {
render_cheat_menu_03_06039ad8();
}
}
Here’s what the variables mean:
game_state_060dc4d4tracks the progression of a game. State0x1is the intro animation, state0x2is normal gameplay, state0x4is the winning animation, etc.game_type_060dc4c8stores what play style is active. 0x1 is 1P Arcade, 0x3 is 1P Arcade vs. CPU, and 0x5 is Challenge.
The code above is looking for state 0x27. If you force the game into that state (by using a memory editor or Action Replay code), a cheat menu will pop up. Here’s the one for the 1P Arcade play style:
And here are the ones for the Challenge (left) and 1P Arcade vs. CPU styles:

When the menu is active, you can use the D-pad to make changes and submit them with the A button:
- The Zone Number and Zone Stage / Play Stage items control which stage you’re playing, and have different meanings in the different play styles.
- The URA Switch enables the Another World cheat code’s effect — normally you enter it on the title screen. When active, it enables a different set of stages.
- My Chara / Chara Number control which character you play as.
I suspect that development versions of the game had this menu connected to a controller button to make life easier for the QA staff. But it’s orphaned in the final product.
To hook it back up, I borrowed the Z button’s function. Normally, you can press Z to hide the HUD text. Here are screenshots of the HUD in its default state (text on) and in its hidden state (text off):
The function at 060385b0 controls this feature. It looks like this in the decompiler:
if (((p1_pressed_01 & 0x10) != 0) || ((p2_pressed_060927ba & 0x10) != 0)) {
suppress_hud_060dc818 = suppress_hud_060dc818 + 1;
}
suppress_hud_060dc818 = suppress_hud_060dc818 & 1;
if (suppress_hud_060dc818 == 0) {
hud_vert_offset_060dc634 = 6;
}
else {
hud_vert_offset_060dc634 = -0x20;
}
Interestingly, it doesn’t really turn off the HUD text when you press Z — it just moves it to slightly above the visible part of the screen (position -0x20).
My patch is simple — it changes the target of the first write that happens after you press Z. Instead of storing a value of 0x1 to the “suppress HUD” address, it writes a value of 0x27 to the “game state” index:
if (((p1_pressed_01 & 0x10) != 0) || ((p2_pressed_060927ba & 0x10) != 0)) {
game_state_060dc4d4 = 0x27;
}
Here’s a view of the disassembly code in Mednafen’s debugger:
With these changes, you can sample the game’s stages by pressing Z whenever you get bored with the one you’re playing.
Outro
I checked the PlayStation version of Puzzle Bobble 3, known in the U.S. as Bust-A-Move ’99 for this cheat menu, but it’s not there! The staff roll credits the same programmers, so I’m not sure why it would be missing.
If you like retro gaming, you may also enjoy The Hidden Palace’s podcast. In the latest episode, Hidden Palace founder drx and I chat with a Spore enthusiast about a prerelease version of that game that’s given a boost to the modding scene.
Thanks for reading! I’ll be back next week with another Under the Microscope.
Discover more from SEGA SATURN, SHIRO!
Subscribe to get the latest posts sent to your email.




Be the first to comment