In this edition I’m putting Thunder Force V back under the microscope. I examined a prototype version of the game last year, but this time I’m taking a look at the final version.
There’s a cheat code for this game that doesn’t seem to have been published before. Normally the game lets you start on course 1, 2, or 3, but this could allows you to pick any of the seven courses.
To activate the code, enter this sequence at the title screen:
L, R, Z, B, Y, C, X, Start
You’ve gotta go fast with this: you’re only allowed 15 frames between button presses. If you take too long or press a wrong button you have to start over by pressing Start and then B.
You’ll hear a sound effect if you entered the code correctly. Choose Game Start to get to the Course Select screen:
Choose the usual 1 > 2 > 3 progression. Before answering the OK? Yes / No prompt, use the following button combinations along with Start to activate a different starting course:
- Stage 4: Hold Y+Z
- Stage 5: Hold X
- Stage 6: Hold X+Z
- Stage 7: Hold X+Y
You’ll be given weapons that are appropriate for the course you choose.
Technical details
I found this code the way I usually find codes: I located where in memory the game stores user input (you can use Cheat Engine or similar for this), then set a read breakpoint for those addresses (I use the Mednafen debugger).
On Saturn, the code handling is in the function at 06029e14. Its logic looks like this pseudo-Python:
if code_entry_allowed != 0:
if pressed_button == cheat_buttons[correct_counter]:
correct_counter += 1
timeout_frames = 15
if correct_counter > 7:
cheat_effect |= 1
elif pressed_button == 0x00:
timeout_frames -= 1
if timeout_frames < 0:
code_entry_allowed = 0
else:
code_entry_allowed = 0
The code_buttons sequence starts at 060437e4. It uses a standard (for Saturn) mapping of bit patterns to buttons:
060437e4 0008 # L
060437e6 0080 # R
060437e8 0010 # Z
060437ea 0100 # B
060437ec 0020 # Y
060437ee 0200 # C
060437f0 0040 # X
060437f2 0800 # Start
The cheat_effect value is stored at 0601ac14. Its value is checked on the Course Select screen. The function at 060318d8 has logic like this:
if held_button & X_BUTTON != 0:
course_flags |= 4
if held_button & Y_BUTTON != 0:
course_flags |= 2
if held_button & Z_BUTTON != 0:
course_flags |= 1
if course_flags > 6:
course_flags = 0
The flags combine to alter the starting course as shown above. If you hold X+Y+Z, all alterations are reset.
Outro
There’s a version of this code that works on the PlayStation version of Thunder Force V. Check that out on my blog if you’re interested.
I’ll be back next week with another reverse engineering result for Saturn. See the archive for more in the meantime.




Be the first to comment