From 5e3fc5c90e86977510a2132e5c6877ae22d1ef0a Mon Sep 17 00:00:00 2001 From: Fabian Dill Date: Mon, 14 Sep 2020 19:24:44 +0200 Subject: [PATCH] warn if an invalid sprite is attempted to be used, instead of silently ignoring it --- Rom.py | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/Rom.py b/Rom.py index bb8b51b1..a80ddd0b 100644 --- a/Rom.py +++ b/Rom.py @@ -542,6 +542,14 @@ class Sprite(object): def __hash__(self): return hash(self.name) + def write_to_rom(self, rom : LocalRom): + if not self.valid: + logging.warning("Tried writing invalid sprite to rom, skipping.") + return + rom.write_bytes(0x80000, self.sprite) + rom.write_bytes(0xDD308, self.palette) + rom.write_bytes(0xDEDF5, self.glove_palette) + def patch_rom(world, rom, player, team, enemized): local_random = world.rom_seeds[player] @@ -1498,8 +1506,8 @@ def apply_rom_settings(rom, beep, color, quickswap, fastmenu, disable_music, spr rom.write_byte(0x65561, {'red': 0x05, 'blue': 0x0D, 'green': 0x19, 'yellow': 0x09}[color]) # write link sprite if required - if sprite is not None: - write_sprite(rom, sprite) + if sprite: + sprite.write_to_rom(rom) # reset palette if it was adjusted already default_ow_palettes(rom) @@ -1538,13 +1546,6 @@ def apply_rom_settings(rom, beep, color, quickswap, fastmenu, disable_music, spr rom.write_crc() -def write_sprite(rom, sprite): - if not sprite.valid: - return - rom.write_bytes(0x80000, sprite.sprite) - rom.write_bytes(0xDD308, sprite.palette) - rom.write_bytes(0xDEDF5, sprite.glove_palette) - def set_color(rom, address, color, shade): r = round(min(color[0], 0xFF) * pow(0.8, shade) * 0x1F / 0xFF) g = round(min(color[1], 0xFF) * pow(0.8, shade) * 0x1F / 0xFF)