mirror of
https://github.com/MarioSpore/Grinch-AP.git
synced 2025-10-21 20:21:32 -06:00
35 lines
900 B
Python
35 lines
900 B
Python
![]() |
from typing import BinaryIO, Optional, cast
|
||
|
import Utils
|
||
|
from worlds.Files import APDeltaPatch
|
||
|
import os
|
||
|
|
||
|
USHASH = 'd4bf9e7bcf9a48da53785d2ae7bc4270'
|
||
|
|
||
|
|
||
|
class ZillionDeltaPatch(APDeltaPatch):
|
||
|
hash = USHASH
|
||
|
game = "Zillion"
|
||
|
patch_file_ending = ".apzl"
|
||
|
result_file_ending = ".sms"
|
||
|
|
||
|
@classmethod
|
||
|
def get_source_data(cls) -> bytes:
|
||
|
with open(get_base_rom_path(), "rb") as stream:
|
||
|
return read_rom(stream)
|
||
|
|
||
|
|
||
|
def get_base_rom_path(file_name: Optional[str] = None) -> str:
|
||
|
options = Utils.get_options()
|
||
|
if not file_name:
|
||
|
file_name = cast(str, options["zillion_options"]["rom_file"])
|
||
|
if not os.path.exists(file_name):
|
||
|
file_name = Utils.user_path(file_name)
|
||
|
return file_name
|
||
|
|
||
|
|
||
|
def read_rom(stream: BinaryIO) -> bytes:
|
||
|
""" reads rom into bytearray """
|
||
|
data = stream.read()
|
||
|
# I'm not aware of any sms header.
|
||
|
return data
|