Under the Microscope: Blazing Dragons

Blazing Dragons was an animated TV series created by Monty Python alum Terry Jones and entertainment industry wizard Gavin Scott. It ran for two seasons between 1996 and 1998.

This article is about the video game adaptation of the show, which was developed by The Illusions Gaming Company and published by Crystal Dynamics. It’s an adventure game — you’re presented with a series of scenes with elements that you can interact with. It also features a few different mini-games, like “Cat-A-Pult” and “Thumb Wrestling.”

Both the Saturn and PlayStation versions of this game have a cheat code that seems to have stayed hidden for 30 years. Details on how it works are below!


Thumb Wrestling mode

When you boot up the game, you’ll first see a series of intro movies. After those play, a copyright screen appears:

You can start entering the long-lost cheat code on the copyright screen. The button sequences are:

  • Saturn: R, C, B, Y.
  • PlayStation: R2, Circle, X, R1.

You’ll hear a sound effect if you entered the code correctly.

When the main menu appears, select Options. Entering the code adds a new item to it: Thumb Wrestling.

Left: The standard Options menu. Right: The cheat-enhanced Options Menu.

The new Thumb Wrestling menu allows you to:

  • Wrestle Wimpy Human Opponent: Play against a human opponent — requires a second controller.
  • Wrestle Wimpy, Ordinary, Studly, Fiend, & Super-Fiend Loungelot: Play against a CPU opponent with various difficulty levels.
  • Wrestle Nobody: Return to the previous screen.

All of the opponents look the same. Press Left and Right to position your dragon’s thumb. Press one of the face buttons to attack.

Playing against a Loungelot.

Once your opponent is pinned, press the shoulder buttons to fill up the meter. If your button presses are faster than your opponent’s, you win!

A pinned opponent.

Technical details

You can tell that this is a cross-platform game from its code. The things that require hardware-specific interactions are abstracted out into functions that the core logic calls.

Case in point: the game represents each controller button with a number between 1 and 8. It uses a series of functions to access the relevant system input signals, and then maps those to the numbers it needs.

Here’s a cleaned-up version of Ghidra’s decompilation of the Saturn version’s mapping function (which curiously has a ninth return value that can never be reached):

int get_mapped_input_0022aa10(short controller_index) {
    if (check_input_a_002118c8(controller_index)) return 1;
    if (check_input_b_00211934(controller_index)) return 2;
    if (check_input_c_002119a0(controller_index)) return 3;
    if (check_input_x_00211a0c(controller_index)) return 4;
    if (check_input_y_00211a74(controller_index)) return 5;
    if (check_input_z_00211adc(controller_index)) return 6;
    if (check_input_R_00211b44(controller_index)) return 7;
    if (check_input_L_00211bac(controller_index)) return 8;
    if (check_null_00211c14(controller_index))    return 9;

    return 0;
}

Sticking with the Saturn version, the function at 00203560 uses this input mapping function to check for the sequence of button presses described above. Here’s a slightly abbreviated version of Ghidra’s decompilation of part of that function:

short cheat_buttons[8] = {7, 3, 2, 5, 7, 3, 2, 5};

/* ... */

if (cheat_effect_00232660 == 0) {
  button = get_mapped_input_0022aa10(0);
  if (button != 0) {
    next_counter = counter + 1;
    if (button != cheat_buttons[counter]) {
      counter = 0;
    }
    else {
      counter = next_counter;
      if (next_counter == 4) {
        cheat_effect_00232660 = 1;
        play_sfx_0022b3f0(0);
      }
    }
  }
}

The PlayStation version has substantially identical code.

Oddly, the cheat_buttons array has eight entries. But the game stops checking after the first four are entered. I think this is a bug — somebody seems to have had a change of opinion on how long the sequence should be but forgot to sync things up.


Outro

There will be another Saturn game under the microscope next week here at SHIRO!. In the meantime, check out my blog for more retro game reverse engineering articles.


Discover more from SEGA SATURN, SHIRO!

Subscribe to get the latest posts sent to your email.

About the author

Bo Bayles

Rings of Saturn: 32bits.substack.com

Be the first to comment

Leave a comment

Your email address will not be published.


*