import sys import struct from nml import lz77 def hex_str(s): if isinstance(s, (bytes, memoryview)): return ':'.join('{:02x}'.format(b) for b in s) return ':'.join('{:02x}'.format(ord(c)) for c in s) def read_pseudo_sprite(f): l = struct.unpack(' 0: code = f.read(1)[0] if code >= 128: code -= 256 # print(f'Code {code} num {num}') if code >= 0: size = 0x80 if code == 0 else code num -= size if num < 0: raise RuntimeError('Corrupt sprite') data += f.read(size) else: data_offset = ((code & 7) << 8) | f.read(1)[0] #if (dest - data_offset < dest_orig.get()) return WarnCorruptSprite(file, file_pos, __LINE__); size = -(code >> 3) num -= size if num < 0: raise RuntimeError('Corrupt sprite') data += data[-data_offset:size - data_offset] if num != 0: raise RuntimeError('Corrupt sprite') return data def read_real_sprite(f): sprite_id = struct.unpack('