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:
parent
a89260977e
commit
e6d23b8700
34
Utils.py
34
Utils.py
|
@ -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()
|
||||
|
|
Loading…
Reference in New Issue