def setUpClass(cls): global rom cls.rom = direct_load_rom() rom = cls.rom
def load_all_sprite_images(config=config): """ Loads all images for each sprite in each direction. """ crystal.direct_load_rom() sprite_headers_address = 0x14736 sprite_header_size = 6 sprite_count = 102 frame_size = 0x40 current_address = sprite_headers_address current_image_id = 0 for sprite_id in xrange(1, sprite_count): rom_bytes = crystal.rom[current_address : current_address + sprite_header_size] header = [ord(x) for x in rom_bytes] bank = header[3] lo = header[0] hi = header[1] sprite_address = (hi * 0x100) + lo - 0x4000 sprite_address += 0x4000 * bank sprite_size = header[2] sprite_type = header[4] sprite_palette = header[5] image_count = sprite_size / frame_size sprite = { "size": sprite_size, "image_count": image_count, "type": sprite_type, "palette": sprite_palette, "images": {}, } if sprite_type in [WALKING_SPRITE, STANDING_SPRITE]: # down, up, left, move down, move up, move left sprite["images"]["down"] = load_sprite_image(sprite_address, config=config) sprite["images"]["up"] = load_sprite_image(sprite_address + 0x40, config=config) sprite["images"]["left"] = load_sprite_image(sprite_address + (0x40 * 2), config=config) if sprite_type == WALKING_SPRITE: current_image_id += image_count * 2 elif sprite_type == STANDING_SPRITE: current_image_id += image_count * 1 elif sprite_type == STILL_SPRITE: # just one image sprite["images"]["still"] = load_sprite_image(sprite_address, config=config) current_image_id += image_count * 1 # store the actual metadata sprites[sprite_id] = sprite current_address += sprite_header_size return sprites
def load_rom(path): """ Loads a ROM file into an abbreviated RomStr object. """ return direct_load_rom(filename=path)
def load_all_sprite_images(config=config): """ Loads all images for each sprite in each direction. """ crystal.direct_load_rom() sprite_headers_address = 0x14736 sprite_header_size = 6 sprite_count = 102 frame_size = 0x40 current_address = sprite_headers_address current_image_id = 0 for sprite_id in xrange(1, sprite_count): rom_bytes = crystal.rom[current_address:current_address + sprite_header_size] header = [ord(x) for x in rom_bytes] bank = header[3] lo = header[0] hi = header[1] sprite_address = (hi * 0x100) + lo - 0x4000 sprite_address += 0x4000 * bank sprite_size = header[2] sprite_type = header[4] sprite_palette = header[5] image_count = sprite_size / frame_size sprite = { "size": sprite_size, "image_count": image_count, "type": sprite_type, "palette": sprite_palette, "images": {}, } if sprite_type in [WALKING_SPRITE, STANDING_SPRITE]: # down, up, left, move down, move up, move left sprite["images"]["down"] = load_sprite_image(sprite_address, config=config) sprite["images"]["up"] = load_sprite_image(sprite_address + 0x40, config=config) sprite["images"]["left"] = load_sprite_image(sprite_address + (0x40 * 2), config=config) if sprite_type == WALKING_SPRITE: current_image_id += image_count * 2 elif sprite_type == STANDING_SPRITE: current_image_id += image_count * 1 elif sprite_type == STILL_SPRITE: # just one image sprite["images"]["still"] = load_sprite_image(sprite_address, config=config) current_image_id += image_count * 1 # store the actual metadata sprites[sprite_id] = sprite current_address += sprite_header_size return sprites
def load_rom(path): """ Load a ROM file into an abbreviated RomStr object. """ return direct_load_rom(filename=path)