Under the Microscope: Chaos Control

Chaos Control is an on-rails shooting game from Infogrames. It was initially released in 1995 for Mac, PC, Philips CD-i, PlayStation, and Saturn. A second “remixed” version was released for Saturn in 1996.

Cheat sites don’t seem to have anything useful for this game — as of the writing, GameFAQs just tells you about the text files and audio data on the Saturn CD. Does the game have any better secrets?

Answer: yes! I found:

  • A cheat code to enable mirrored versions of the stages in the Saturn “remix” version.
  • A cheat code to enable invincibility in the original Saturn version.

Details are below…


Enable mirror mode (Saturn remix version)

This cheat works for the Saturn PAL version of Chaos Control and for the NTSC-J reissue called Chaos Control Remix. Enter it on the mode select screen:

  • Controller 1: L, R
  • Controller 2: L, R, Start
  • Controller 1: Start
The mode select screen

If you got it right, the name entry screen will appear. You’ve now got the high score!

Left: Name entry. Right: High scores.

You’ll also be able to change the stages to their mirrored versions. Go to the Options screen and adjust the Level:

The Options screen

You’ll see that everything is flipped horizontally if you use one of the “mirror” difficulty levels:

Left: Mirrored. Right: Normal.

Technical details: The function at 0600434c (PAL version) is reading input from both controllers. Its logic is something like this:

def check_code_buttons_01():
    # Look up which controller to check, then get that controller’s input.
    controller_idx = code_buttons_controller[code_counter_01] 
    held_button_1 = inputs[controller_idx]

    # Only proceed if the buttons are released OR if the "in progress"
    # latch is open.
    if (held_button_1 == 0) or (code_in_progress_01 == 0):
        # Fetch the target button for the current step.
        target_button = code_buttons_00[code_counter_01]

        if (target_button & held_button_1) == 0:
            if held_button_1 == 0:
                # User let go of everything. Reset latch so we are ready for
                # input.
                code_in_progress_01 = 0
            else:
                # User is pressing the wrong button. Reset!
                code_in_progress_01 = 0
                code_counter_01 = 0
        else:
            # The target button was pressed. Set the latch and advance the
            # sequence counter.
            code_in_progress_01 = 1
            code_counter_01 = code_counter_01 + 1

        # Completion check: Look at the next required button in the list.
        # If it is 0 (null), the sequence is complete.
        next_target = code_buttons_00[code_counter_01]
        if next_target == 0:
            code_counter_01 = 0 # Reset for next time
            return True

    return False

The code_data variable refers to this table of (controller, button) pairs:

06032464 0000 0008  # Controller 1, L button
06032468 0000 0080  # Controller 1, R button

0603246c 0001 0008  # Controller 2, L button
06032470 0001 0080  # Controller 2, R button
06032474 0001 0800  # Controller 2, Start button

06032478 0000 0800  # Controller 1, Start button

After entering the code, the 4 byte value at 0603c058 is set to 00000001.


Invincibility (Saturn original version)

The original Saturn version of Chaos Control, which was only released in Japan, doesn’t have the mirror modes in it. It has a different cheat code, though. Enter this sequence on the title screen:

A, C, X, Z, B, Y, R, L

You’ll be invincible after that; enemy fire won’t diminish your ship health. You can actually toggle this on and off by pressing and holding B for a moment, but why would you?

Taking fire in the last stage

Technical details: The game records your last 8 button presses in the array at at 06054d8c. The function at 06009254 checks that history against the sequence of button bit patterns at 06031c32:

06031c32 0040  # A button
06031c34 0020  # C button
06031c36 0400  # X button
06031c38 0100  # Z button

06031c3a 0010  # B button
06031c3c 0200  # Y button
06031c3e 0800  # R button
06031c40 1000  # L button

Entering the code sets the 2 byte value at 06031c42 to 0001, which the game checks after you get hit. If it’s nonzero, it doesn’t take health away from your ship.


Outro

For more on Saturn hacks and cheats, see the archive here at SHIRO!. I’ll be back with another article next week!

For even more retro game reverse engineering adventures, check out my Rings of Saturn blog at Substack.

About the author

Bo Bayles

Rings of Saturn: 32bits.substack.com

Leave a comment

Your email address will not be published.


*