Archipelago/Patch.py

46 lines
1.2 KiB
Python
Raw Normal View History

2022-03-18 03:53:09 +00:00
from __future__ import annotations
2021-11-13 19:52:30 +00:00
import os
2020-04-15 08:11:47 +00:00
import sys
from typing import Tuple, Optional, TypedDict
if __name__ == "__main__":
import ModuleUpdate
ModuleUpdate.update()
2022-03-18 03:53:09 +00:00
from worlds.Files import AutoPatchRegister, APDeltaPatch
2022-03-18 03:53:09 +00:00
2021-11-12 13:36:34 +00:00
GAME_ALTTP = "A Link to the Past"
GAME_SM = "Super Metroid"
2021-11-13 19:52:30 +00:00
GAME_SOE = "Secret of Evermore"
2022-03-15 12:55:57 +00:00
GAME_SMZ3 = "SMZ3"
GAME_DKC3 = "Donkey Kong Country 3"
GAME_SMW = "Super Mario World"
2020-06-09 19:18:48 +00:00
class RomMeta(TypedDict):
server: str
player: Optional[int]
player_name: str
2021-11-14 20:03:17 +00:00
def create_rom_file(patch_file: str) -> Tuple[RomMeta, str]:
2022-03-18 03:53:09 +00:00
auto_handler = AutoPatchRegister.get_handler(patch_file)
if auto_handler:
handler: APDeltaPatch = auto_handler(patch_file)
target = os.path.splitext(patch_file)[0]+handler.result_file_ending
handler.patch(target)
return {"server": handler.server,
"player": handler.player,
"player_name": handler.player_name}, target
raise NotImplementedError(f"No Handler for {patch_file} found.")
2021-11-12 13:36:34 +00:00
2020-03-17 18:16:11 +00:00
if __name__ == "__main__":
for file in sys.argv[1:]:
meta_data, result_file = create_rom_file(file)
print(f"Patch with meta-data {meta_data} was written to {result_file}")