示例#1
0
 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
示例#3
0
def load_rom(path):
    """
    Loads a ROM file into an abbreviated RomStr object.
    """
    return direct_load_rom(filename=path)
示例#4
0
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
示例#5
0
def load_rom(path):
    """
    Load a ROM file into an abbreviated RomStr object.
    """
    return direct_load_rom(filename=path)