Add some useful developer commands to Utils.py

These can be used in the interactive python shell by importing Utils.py
This commit is contained in:
Kevin Cathcart 2018-01-01 14:42:23 -05:00
parent a89260977e
commit e6d23b8700
1 changed files with 34 additions and 0 deletions

View File

@ -72,3 +72,37 @@ def close_console():
ctypes.windll.kernel32.FreeConsole()
except Exception:
pass
def new_logic_array():
import random
l = list(range(256))
random.SystemRandom().shuffle(l)
chunks = [l[i:i + 16] for i in range(0, len(l), 16)]
lines = [", ".join([str(j) for j in i]) for i in chunks]
print("logic_hash = ["+",\n ".join(lines)+"]")
def make_new_base2current(old_rom='Zelda no Densetsu - Kamigami no Triforce (Japan).sfc', new_rom='working.sfc'):
from collections import OrderedDict
import json
import hashlib
with open(old_rom, 'rb') as stream:
old_rom_data = bytearray(stream.read())
with open(new_rom, 'rb') as stream:
new_rom_data = bytearray(stream.read())
# extend to 2 mb
old_rom_data.extend(bytearray([0x00] * (2097152 - len(old_rom_data))))
out_data = OrderedDict()
for idx, old in enumerate(old_rom_data):
new = new_rom_data[idx]
if old != new:
out_data[idx] = [int(new)]
for offset in reversed(list(out_data.keys())):
if offset - 1 in out_data:
out_data[offset-1].extend(out_data.pop(offset))
with open('data/base2current.json', 'wt') as outfile:
json.dump([{key:value} for key, value in out_data.items()], outfile, separators=(",", ":"))
basemd5 = hashlib.md5()
basemd5.update(new_rom_data)
return "New Rom Hash: " + basemd5.hexdigest()