out_dir = os.path.join(os.path.dirname(__file__), 'dbg_output') base_dir = os.path.join(os.path.dirname(__file__), '..', '..', '..', '..') package = os.path.join(os.path.dirname(__file__), 'parameters_test') os.makedirs(out_dir, exist_ok=True) os.environ['SKYTEMPLE_DEBUG_ARMIPS_OUTPUT'] = 'YES' in_rom = NintendoDSRom.fromFile(os.path.join(base_dir, 'skyworkcopy.nds')) # Load PPMDU config, but remove all data about Patches and LooseBinFiles. config = get_ppmdu_config_for_rom(in_rom) config.asm_patches_constants.patches = {} config.asm_patches_constants.loose_bin_files = {} patcher = Patcher(in_rom, config, skip_core_patches=True) # Load the package patcher.add_pkg(package, False) assert not patcher.is_applied('ParametersTest') # Missing params try: patcher.apply('ParametersTest') except PatchNotConfiguredError: pass else: assert False, "Must throw PatchNotConfiguredError" # Invalid params try: patcher.apply('ParametersTest', config={ 'int_param': -1, 'int_param2': 100,
package = os.path.join(os.path.dirname(__file__), '..', '..', '..', 'docs', 'patch_packages', 'example_patch.skypatch') os.makedirs(out_dir, exist_ok=True) in_rom = NintendoDSRom.fromFile( os.path.join(base_dir, 'skyworkcopy_us.nds')) # Load PPMDU config, but remove all data about Patches and LooseBinFiles. config = get_ppmdu_config_for_rom(in_rom) config.asm_patches_constants.patches = {} config.asm_patches_constants.loose_bin_files = {} patcher = Patcher(in_rom, config, skip_core_patches=True) # Load the package patcher.add_pkg(package) assert not patcher.is_applied('ExamplePatch') patcher.apply('ExamplePatch') with open(os.path.join(out_dir, 'example_patch_ov11.bin'), 'wb') as f: f.write( get_binary_from_rom_ppmdu( in_rom, config.binaries['overlay/overlay_0011.bin'])) assert patcher.is_applied('ExamplePatch') in_rom.saveToFile(os.path.join(out_dir, 'patched.nds')) # Check if really patched out_rom = NintendoDSRom.fromFile(os.path.join(out_dir, 'patched.nds')) new_patcher = Patcher(out_rom, get_ppmdu_config_for_rom(out_rom)) new_patcher.add_pkg(package)