|
||||||||||||||
Under the Microscope: Shining WisdomIn a previous edition I looked at Shining the Holy Ark for Saturn. I found an unusual method for enabling that game’s debug menu in that game, so I naturally wondered about its predecessor: does it have any secrets? Answer: yes! It’s also got a debug menu that can be activated in a somewhat unusual way. Details on how this works are below — grab two controllers if you want to try it out. The debug mode cheatThe name entry screen is secretly listening for input from controller 2: Enter the sequence below on the second controller, but press each button two or three times : Start, Start, Start,
It’s OK if you press a wrong button during the sequence, just so long as each of them eventually gets entered. You’ll hear a sound effect after the last button is pressed. After entering the code, the debug menu is enabled: The coolest items are TR (R button), which allows you to warp to arbitrary locations… …and TL (L button), which gives you extra health, items, and spells. Contrast before (left) with after (right): There’s a thorough discussion of the items in the Shining Wisdom article at TCRF — check it out. Technical detailsThe function at 060bca4e (NTSC-J version) has the cheat handling code. It looks like this: if debug_flag == 0x00: if cheat_buttons[cheat_counter] == 999: play_sfx(0x99) debug_flag = 0x01 target_button = cheat_buttons[cheat_counter] held_button = get_held_button(2) # Controller 2 if held_button == target_button: cheat_counter += 1The array I’m calling cheat_buttons starts like this: 060c2af4 0800 # Start 060c2af6 0000 # ... 060c2af8 0800 # Start 060c2afa 0000 # ... 060c2afc 0800 # Start 060c2bfe 0000 # ... 060c2b00 1000 # Up 060c2b02 0000 # ... 060c2b04 1000 # Up 060c2b06 2000 # Down 060c2b08 2000 # UpIt uses a pretty common mapping of bit patterns to Saturn controller buttons. The list ends with a sentinel value of 999 ( 03e7 in hex). I’m not exactly sure why some of the presses have 0000 values in between them and some don’t, but the code entry is forgiving enough that it doesn’t really matter. The get_held_button function in my pseudocode (at 06011ca4 ) returns the value at 06027328 if its input argument is 1 . This is controller 1’s currently held button. It returns the value at 06027334 if its input argument is 2, for controller 2. The debug_flag is the one highlighted on TCRF, and lives at 06006637 . OutroAs far as I can tell, there’s not a way to access the debug features in the Shining Force III games (see TCRF ) with button codes. I still hope to come up with something cool for that trilogy, though! Which other games have hidden features that can be accessed via hacking? Tell me your favorites in the comments; I’ll add the games to my list. For more on Saturn hacks and cheats see my archive here at SHIRO!. And for even more retro game reverse engineering articles, see my Rings of Saturn blog .
|
||||||||||||||