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 |