Skip to content

Instantly share code, notes, and snippets.

@bbayles
Created July 1, 2026 18:15
Show Gist options
  • Select an option

  • Save bbayles/8cbca018e2c7295b0ebe7ce88d756535 to your computer and use it in GitHub Desktop.

Select an option

Save bbayles/8cbca018e2c7295b0ebe7ce88d756535 to your computer and use it in GitHub Desktop.
Extract cheat code sequences from *Command & Conquer* (1996) for Saturn and PlayStation
from struct import unpack
saturn_data = b'\x00\x00\x00\x00\x00\x01\x02\x03\x00\x01\x02\x03\x00\x01\x02\x03\x09\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x07\x08\x09\x07\x08\x09\x00\x02\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x01\x03\x04\x05\x06\x09\x08\x07\x01\x03\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x04\x05\x06\x03\x02\x01\x00\x03\x02\x01\x00\x04\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x04\x05\x06\x03\x02\x01\x00\x03\x02\x01\x00\x05\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x04\x05\x06\x03\x02\x01\x00\x03\x02\x01\x00\x06\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x01\x03\x04\x00\x02\x01\x03\x04\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x04\x04\x04\x04\x04\x03\x02\x01\x00\x05\x05\x05\x05\x05\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x06\x01\x04\x09\x08\x01\x00\x03\x09\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x07\x08\x09\x01\x02\x03\x00\x01\x02\x03\x00\x07\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x03\x01\x03\x01\x03\x01\x03\x01\x09\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x04\x05\x06\x06\x05\x04\x02\x04\x07\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x08\x04\x05\x05\x04\x02\x04\x05\x05\x04\x02\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x04\x05\x04\x06\x04\x02\x04\x05\x01\x04\x07\x08\x09\x09\x08\xff\x00\x00\x00\x00\x00\x00\x00\x00\x06\x01\x04\x09\x08\x05\x00\x05\x05\x04\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\xd3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
saturn_button_map = [
'Up', 'Right', 'Down', 'Left',
'A', 'B', 'C',
'X', 'Y', 'Z',
]
psx_data = b'\x00\x00\x00\x00\x00\x01\x02\x03\x00\x01\x02\x03\x00\x01\x02\x03\x09\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x07\x08\x09\x07\x08\x09\x00\x02\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x01\x00\x00\x00\x01\x02\x02\x03\x09\x03\x01\x02\x03\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x01\x00\x00\x00\x01\x02\x03\x03\x02\x01\x01\x02\x03\x04\x00\x04\xff\xff\xff\xff\x00\x00\x00\x00\x01\x00\x00\x00\x01\x02\x03\x03\x02\x01\x01\x02\x03\x04\x01\x05\xff\xff\xff\xff\x00\x00\x00\x00\x01\x00\x00\x00\x01\x02\x03\x03\x02\x01\x01\x02\x03\x04\x07\x06\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x06\x06\x06\x00\x06\x07\x08\x06\x06\x06\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x07\x07\x09\x09\x09\x00\x00\x00\x00\x08\x08\x06\x06\x06\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x08\x06\x09\x05\x00\x03\x08\x03\x06\x07\x02\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x07\x00\x02\x03\x04\x01\x06\x01\x01\x09\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x03\x04\x03\x04\x03\x04\x03\x04\x03\x04\x03\x04\x09\xff\xff\xff\x00\x00\x00\x00\x01\x00\x00\x00\x01\x08\x04\x05\x02\x06\x03\x04\x02\x04\x07\xff\xff\xff\xff\xff\x00\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00\x04\x00\x00\x00\x04\x00\x01\x00\x04\x00\x01\x01\x05\x00\x00\x00\x05\x00\x01\x00\x05\x00\x01\x01\x06\x00\x00\x00\x07\x00\x00\x00\x08\x00\x00\x00\x08\x00\x00\x01\x09\x00\x00\x00\x0a\x00\x00\x00\x0a\x00\x00\x01\x0b\x00\x00\x00\x0c\x00\x00\x00\x0c\x00\x00\x01\x0d\x00\x00\x00\x0d\x00\x00\x01\x0e\x00\x00\x00\x0f\x00\x00\x00\x0f\x00\x00\x01\x0f\x00\x00\x02\x16\x00\x00\x00\x17\x00\x00\x00\x24\x00\x00\x00\x26\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x32\x00\x00\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x00\x00\x3f\x00\x00\x00\x40\x00\x00\x00\x01\x01\x00\x00\x02\x01\x00\x00\x02\x01\x00\x01\x03\x01\x00\x00\x03\x01\x00\x01\x04\x01\x00\x00\x04\x01\x00\x01\x05\x01\x00\x00\x06\x01\x00\x00\x06\x01\x00\x01\x06\x01\x00\x02\x07\x01\x00\x00\x07\x01\x00\x01\x07\x01\x00\x02\x08\x01\x00\x00\x08\x01\x00\x01\x09\x01\x00\x00\x0a\x01\x00\x00\x0a\x01\x00\x01\x0b\x01\x00\x00\x0b\x01\x00\x01\x0c\x01\x00\x00\x0d\x01\x00\x00\x0d\x01\x00\x01\x0d\x01\x00\x02\x14\x01\x00\x00\x15\x01\x00\x00\x1e\x01\x00\x00\x1f\x01\x00\x00\x20\x01\x00\x00\x21\x01\x00\x00\x23\x01\x00\x00\x25\x01\x00\x00\x3c\x01\x00\x00\x3d\x01\x00\x00\x3e\x01\x00\x00\x3f\x01\x00\x00\x40\x01\x00\x00'
psx_button_map = [
'Up', 'Right', 'Down', 'Left',
'X', 'Triangle', 'Circle', 'Square',
'R1', 'L1', 'R2', 'L2'
]
for data, button_map in ((saturn_data, saturn_button_map), (psx_data, psx_button_map)):
all_ints = unpack(f"<{len(data) // 1}b", data)
iter_ints = iter(all_ints)
for i in range(15):
code_buttons = []
# Discard the counter
for j in range(4):
next(iter_ints)
for j in range(16):
n = next(iter_ints)
if n == -1:
pass
else:
code_buttons.append(button_map[n])
# Discard the effect
for j in range(4):
next(iter_ints)
print(', '.join(code_buttons))
@bbayles

bbayles commented Jul 1, 2026

Copy link
Copy Markdown
Author

Saturn:

Up, Right, Down, Left, Up, Right, Down, Left, Up, Right, Down, Left, Z
Up, Down, X, Y, Z, X, Y, Z, Up, Down
Right, Left, A, B, C, Z, Y, X, Right, Left
A, B, C, Left, Down, Right, Up, Left, Down, Right, Up, A
A, B, C, Left, Down, Right, Up, Left, Down, Right, Up, B
A, B, C, Left, Down, Right, Up, Left, Down, Right, Up, C
Up, Down, Right, Left, A, Up, Down, Right, Left, A
A, A, A, A, A, Left, Down, Right, Up, B, B, B, B, B
C, Right, A, Z, Y, Right, Up, Left, Z
X, Y, Z, Right, Down, Left, Up, Right, Down, Left, Up, X
Left, Right, Left, Right, Left, Right, Left, Right, Z
Up, Down, A, B, C, C, B, A, Down, A, X
Y, A, B, B, A, Down, A, B, B, A, Down, Up
A, B, A, C, A, Down, A, B, Right, A, X, Y, Z, Z, Y
C, Right, A, Z, Y, B, Up, B, B, A

PlayStation

Up, Right, Down, Left, Up, Right, Down, Left, Up, Right, Down, Left, L1
Up, Down, Square, R1, L1, Square, R1, L1, Up, Down
Right, Down, Down, Left, L1, Left, Right, Down, Left
Right, Down, Left, Left, Down, Right, Right, Down, Left, X, Up, X
Right, Down, Left, Left, Down, Right, Right, Down, Left, X, Right, Triangle
Right, Down, Left, Left, Down, Right, Right, Down, Left, X, Square, Circle
Circle, Circle, Circle, Up, Circle, Square, R1, Circle, Circle, Circle
Square, Square, L1, L1, L1, Up, Up, Up, Up, R1, R1, Circle, Circle, Circle
R1, Circle, L1, Triangle, Up, Left, R1, Left, Circle, Square, Down
Square, Up, Down, Left, X, Right, Circle, Right, Right, L1
Left, X, Left, X, Left, X, Left, X, Left, X, Left, X, L1
Right, R1, X, Triangle, Down, Circle, Left, X, Down, X, Square
Down, Up, Up, Up, Left, Up, Up, Up, X, Up, Up, Up, X, Up, Right, Up
Triangle, Up, Right, Up, Triangle, Up, Right, Right, Circle, Up, Up, Up, Square, Up, Up, Up
L1, Up, Up, Up, R2, Up, Up, Up, R2, Up, Up, Right, L2, Up, Up, Up

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment