mirror of
https://github.com/BrianPugh/game-and-watch-patch.git
synced 2025-12-16 07:16:26 +01:00
55 lines
2.6 KiB
Python
55 lines
2.6 KiB
Python
from .patch import Patches
|
|
|
|
def parse_patches(args):
|
|
patches = Patches()
|
|
|
|
patches.append("replace", 0x4, "bootloader",
|
|
message="Invoke custom bootloader prior to calling stock Reset_Handler")
|
|
|
|
patches.append("bl", 0x6b52, "read_buttons",
|
|
message="Intercept button presses for macros")
|
|
|
|
if args.winbond:
|
|
patches.append("replace", 0x4FAA, 0x0240, size=2)
|
|
patches.append("replace", 0x4FB8, 0xFDBF, size=2)
|
|
patches.append("replace", 0x4FC4, 0x7B43, size=2)
|
|
patches.append("replace", 0x5004, 0x8141, size=2)
|
|
patches.append("replace", 0x5005, 0x0706, size=2)
|
|
patches.append("replace", 0x500E, 0x9050, size=2)
|
|
patches.append("replace", 0x500F, 0x0706, size=2)
|
|
patches.append("replace", 0x755E, 0x3238, size=2)
|
|
patches.append("replace", 0x7562, 0x8040, size=2)
|
|
patches.append("replace", 0x7776, 0x3505, size=2)
|
|
patches.append("replace", 0x7796, 0x000D, size=2)
|
|
patches.append("replace", 0x7797, 0x20F1, size=2)
|
|
patches.append("replace", 0x7798, 0x8D01, size=2)
|
|
patches.append("replace", 0x7799, 0xF801, size=2)
|
|
patches.append("replace", 0x779A, 0x0020, size=2)
|
|
patches.append("replace", 0x779B, 0x0046, size=2)
|
|
patches.append("replace", 0x779C, 0xC000, size=2)
|
|
patches.append("replace", 0x779D, 0x46F0, size=2)
|
|
patches.append("replace", 0x779E, 0xC03C, size=2)
|
|
patches.append("replace", 0x779F, 0x46F8, size=2)
|
|
patches.append("replace", 0x77A0, 0xC000, size=2)
|
|
patches.append("replace", 0x77A1, 0x4628, size=2)
|
|
patches.append("replace", 0x77A2, 0xC009, size=2)
|
|
patches.append("replace", 0x77A3, 0x46D1, size=2)
|
|
patches.append("replace", 0x77AA, 0x0100, size=2)
|
|
|
|
if args.winbond == 1:
|
|
patches.append("replace", 0xA41E, 0x1414, size=2, message="Winbond 1MB")
|
|
elif args.winbond == 2:
|
|
patches.append("replace", 0xA41E, 0x1514, size=2, message="Winbond 2MB")
|
|
elif args.winbond == 4:
|
|
patches.append("replace", 0xA41E, 0x1614, size=2, message="Winbond 4MB")
|
|
elif args.winbond == 8:
|
|
patches.append("replace", 0xA41E, 0x1714, size=2, message="Winbond 8MB")
|
|
elif args.winbond == 16:
|
|
patches.append("replace", 0xA41E, 0x1814, size=2, message="Winbond 16MB")
|
|
elif args.winbond == 32:
|
|
patches.append("replace", 0xA41E, 0x1914, size=2, message="Winbond 32MB")
|
|
else:
|
|
raise ValueError(f"Cannot handle Winbond flash size {args.winbond}MB")
|
|
|
|
return patches
|