Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python3
- import sys
- import os
- import zipfile
- GBP_BUTTON_A = 0x0001
- GBP_BUTTON_B = 0x0002
- GBP_BUTTON_SELECT = 0x0004
- GBP_BUTTON_START = 0x0008
- GBP_BUTTON_RIGHT = 0x0010
- GBP_BUTTON_LEFT = 0x0020
- GBP_BUTTON_UP = 0x0040
- GBP_BUTTON_DOWN = 0x0080
- GBP_BUTTON_L = 0x0100
- GBP_BUTTON_R = 0x0200
- MAPPING = (GBP_BUTTON_UP,
- GBP_BUTTON_DOWN,
- GBP_BUTTON_LEFT,
- GBP_BUTTON_RIGHT,
- GBP_BUTTON_START,
- GBP_BUTTON_SELECT,
- GBP_BUTTON_B,
- GBP_BUTTON_A,
- GBP_BUTTON_L,
- GBP_BUTTON_R)
- CYCLES_PER_FRAME = 280896
- bk2_path = sys.argv[1]
- if not os.path.isfile(bk2_path):
- print('ERROR: File does not exist!')
- sys.exit(1)
- bk2_abs = os.path.abspath(bk2_path)
- bk2 = zipfile.ZipFile(bk2_abs)
- inputs = bk2.open('Input Log.txt')
- lastInput = ""
- def convert_frame(data):
- out = 0
- for index, button in enumerate(MAPPING):
- if data[index] != ".":
- out ^= button
- return out
- cycle = -83776
- with open("GBItimestamps.txt", "w") as f:
- for line in inputs:
- sline = line.decode().rstrip()
- if sline[0] == "|":
- cycle += CYCLES_PER_FRAME
- data = sline.split(",")[4][:-1]
- if data != lastInput:
- f.write(f"{cycle//4096:08X} {convert_frame(data):04X}\n")
- lastInput = data
Add Comment
Please, Sign In to add comment