-
-
Save bbayles/8cbca018e2c7295b0ebe7ce88d756535 to your computer and use it in GitHub Desktop.
Extract cheat code sequences from *Command & Conquer* (1996) for Saturn and PlayStation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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)) |
Author
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Saturn:
PlayStation