Comment out File-based spriteloader methods
This commit is contained in:
parent
11059735ee
commit
4460a4863c
|
@ -146,132 +146,132 @@ static func make_tile_atlas(tile_images) -> Image:
|
|||
return image
|
||||
|
||||
|
||||
func snes_load_worldmap(rom: File):
|
||||
# Load Worldmap Graphics
|
||||
var worldmap_tile_counts = [256, 256, 128] # Only 128 underwater tiles
|
||||
for world_ts in 3: # Bartz/Combined World, Galuf World, Underwater (world tilesets, not to be confused with the 5 world maps)
|
||||
var tile_count: int = worldmap_tile_counts[world_ts]
|
||||
var image := generate_palette(rom, Common.SNES_PSX_addresses['worldmap_palettes']['SNES'] + (world_ts*0x100), 0x100)
|
||||
worldmap_palette_imgs.append(image)
|
||||
worldmap_palette_textures.append(texture_from_image(image))
|
||||
# func snes_load_worldmap(rom: File):
|
||||
# # Load Worldmap Graphics
|
||||
# var worldmap_tile_counts = [256, 256, 128] # Only 128 underwater tiles
|
||||
# for world_ts in 3: # Bartz/Combined World, Galuf World, Underwater (world tilesets, not to be confused with the 5 world maps)
|
||||
# var tile_count: int = worldmap_tile_counts[world_ts]
|
||||
# var image := generate_palette(rom, Common.SNES_PSX_addresses['worldmap_palettes']['SNES'] + (world_ts*0x100), 0x100)
|
||||
# worldmap_palette_imgs.append(image)
|
||||
# worldmap_palette_textures.append(texture_from_image(image))
|
||||
|
||||
var tile_palettes = []
|
||||
rom.seek(Common.SNES_PSX_addresses['worldmap_tiles.bias']['SNES'] + (world_ts*0x100))
|
||||
for pal in 256:
|
||||
tile_palettes.append(rom.get_8())
|
||||
# var tile_palettes = []
|
||||
# rom.seek(Common.SNES_PSX_addresses['worldmap_tiles.bias']['SNES'] + (world_ts*0x100))
|
||||
# for pal in 256:
|
||||
# tile_palettes.append(rom.get_8())
|
||||
|
||||
var tile_images = []
|
||||
# var tile_textures = []
|
||||
rom.seek(Common.SNES_PSX_addresses['worldmap_tiles']['SNES'] + (world_ts*0x2000))
|
||||
for tile in tile_count:
|
||||
var tiledata := rom.get_buffer(32)
|
||||
image = snes_graphics.mode7_compressed_to_tile(tiledata, tile_palettes[tile])
|
||||
tile_images.append(image)
|
||||
# tile_textures.append(texture_from_image(image))
|
||||
if world_ts == 0: # Waterfall hack: lay it out vertically, pushing out dummy tiles
|
||||
tile_images[0x97] = tile_images[0x88]
|
||||
tile_images[0x98] = tile_images[0x87]
|
||||
worldmap_tile_individual_imgs.append(tile_images)
|
||||
worldmap_tile_atlas_textures.append(texture_from_image(make_tile_atlas(tile_images)))
|
||||
# var tile_images = []
|
||||
# # var tile_textures = []
|
||||
# rom.seek(Common.SNES_PSX_addresses['worldmap_tiles']['SNES'] + (world_ts*0x2000))
|
||||
# for tile in tile_count:
|
||||
# var tiledata := rom.get_buffer(32)
|
||||
# image = snes_graphics.mode7_compressed_to_tile(tiledata, tile_palettes[tile])
|
||||
# tile_images.append(image)
|
||||
# # tile_textures.append(texture_from_image(image))
|
||||
# if world_ts == 0: # Waterfall hack: lay it out vertically, pushing out dummy tiles
|
||||
# tile_images[0x97] = tile_images[0x88]
|
||||
# tile_images[0x98] = tile_images[0x87]
|
||||
# worldmap_tile_individual_imgs.append(tile_images)
|
||||
# worldmap_tile_atlas_textures.append(texture_from_image(make_tile_atlas(tile_images)))
|
||||
|
||||
|
||||
# Block definitions
|
||||
var block_images = []
|
||||
var block_textures = []
|
||||
var block_bank_start: int = Common.SNES_PSX_addresses['worldmap_blocks']['SNES'] + (world_ts*0x300)
|
||||
var block_tile_ids := PoolByteArray()
|
||||
for block in 0xC0: # 192 blocks per world tileset
|
||||
image = Image.new()
|
||||
image.create(16, 16, false, INDEX_FORMAT)
|
||||
for tile in 4:
|
||||
rom.seek(block_bank_start + block + (tile * 0xC0)) # Horrible interleaving scheme
|
||||
var src_idx := rom.get_8()
|
||||
block_tile_ids.append(src_idx)
|
||||
if src_idx < tile_count:
|
||||
image.blit_rect(tile_images[src_idx], Rect2(0, 0, 8, 8), Vector2((tile%2)*8, (tile/2)*8))
|
||||
block_images.append(image)
|
||||
block_textures.append(texture_from_image(image))
|
||||
worldmap_block_individual_imgs.append(block_images)
|
||||
worldmap_block_individual_textures.append(block_textures)
|
||||
worldmap_block_tile_ids.append(block_tile_ids)
|
||||
# Make block atlas
|
||||
image = Image.new()
|
||||
image.create(16*16, 16*12, false, INDEX_FORMAT)
|
||||
for block in 0xC0:
|
||||
image.blit_rect(block_images[block], Rect2(0, 0, 16, 16), Vector2((block%16)*16, (block/16)*16))
|
||||
worldmap_block_atlas_imgs.append(image)
|
||||
worldmap_block_atlas_textures.append(texture_from_image(image))
|
||||
# # Block definitions
|
||||
# var block_images = []
|
||||
# var block_textures = []
|
||||
# var block_bank_start: int = Common.SNES_PSX_addresses['worldmap_blocks']['SNES'] + (world_ts*0x300)
|
||||
# var block_tile_ids := PoolByteArray()
|
||||
# for block in 0xC0: # 192 blocks per world tileset
|
||||
# image = Image.new()
|
||||
# image.create(16, 16, false, INDEX_FORMAT)
|
||||
# for tile in 4:
|
||||
# rom.seek(block_bank_start + block + (tile * 0xC0)) # Horrible interleaving scheme
|
||||
# var src_idx := rom.get_8()
|
||||
# block_tile_ids.append(src_idx)
|
||||
# if src_idx < tile_count:
|
||||
# image.blit_rect(tile_images[src_idx], Rect2(0, 0, 8, 8), Vector2((tile%2)*8, (tile/2)*8))
|
||||
# block_images.append(image)
|
||||
# block_textures.append(texture_from_image(image))
|
||||
# worldmap_block_individual_imgs.append(block_images)
|
||||
# worldmap_block_individual_textures.append(block_textures)
|
||||
# worldmap_block_tile_ids.append(block_tile_ids)
|
||||
# # Make block atlas
|
||||
# image = Image.new()
|
||||
# image.create(16*16, 16*12, false, INDEX_FORMAT)
|
||||
# for block in 0xC0:
|
||||
# image.blit_rect(block_images[block], Rect2(0, 0, 16, 16), Vector2((block%16)*16, (block/16)*16))
|
||||
# worldmap_block_atlas_imgs.append(image)
|
||||
# worldmap_block_atlas_textures.append(texture_from_image(image))
|
||||
|
||||
# # DEBUG: Make tile atlas
|
||||
# image = Image.new()
|
||||
# image.create(16*8, (tile_count/16)*8, false, INDEX_FORMAT)
|
||||
# for tile in tile_count:
|
||||
# image.blit_rect(tile_images[tile], Rect2(0, 0, 8, 8), Vector2((tile%16)*8, (tile/16)*8))
|
||||
# worldmap_tile_atlas_textures.append(texture_from_image(image))
|
||||
# # # DEBUG: Make tile atlas
|
||||
# # image = Image.new()
|
||||
# # image.create(16*8, (tile_count/16)*8, false, INDEX_FORMAT)
|
||||
# # for tile in tile_count:
|
||||
# # image.blit_rect(tile_images[tile], Rect2(0, 0, 8, 8), Vector2((tile%16)*8, (tile/16)*8))
|
||||
# # worldmap_tile_atlas_textures.append(texture_from_image(image))
|
||||
|
||||
MapLoader.update_worldmap_block_tile_ids(worldmap_block_tile_ids)
|
||||
# MapLoader.update_worldmap_block_tile_ids(worldmap_block_tile_ids)
|
||||
|
||||
|
||||
func snes_load_battle_sprites(rom: File):
|
||||
# Load Battle sprites
|
||||
rom.seek(Common.SNES_PSX_addresses['character_battle_sprite_layouts']['SNES'])
|
||||
var battle_strip_layouts = rom.get_buffer(num_Character_Battle_Sprite_Layouts * 6)
|
||||
# Character Battle Sprite Tiles
|
||||
for strip in range(0, 22*5):
|
||||
var tiles = []
|
||||
for i in range(0, 32*48, 32):
|
||||
tiles.append(snes_graphics.get_tile(rom, Common.SNES_PSX_addresses['character_battle_sprite_tiles']['SNES'] + (strip*32*48) + i, 32))
|
||||
var strip_image = Image.new()
|
||||
strip_image.create(16, 24 * num_Character_Battle_Sprite_Layouts, false, INDEX_FORMAT)
|
||||
for i in range(6 * num_Character_Battle_Sprite_Layouts):
|
||||
strip_image.blit_rect(tiles[battle_strip_layouts[i]], Rect2(0, 0, 8, 8), Vector2((i%2) * 8, (i/2) * 8))
|
||||
strip_images.append(strip_image)
|
||||
strip_textures.append(texture_from_image(strip_image))
|
||||
# func snes_load_battle_sprites(rom: File):
|
||||
# # Load Battle sprites
|
||||
# rom.seek(Common.SNES_PSX_addresses['character_battle_sprite_layouts']['SNES'])
|
||||
# var battle_strip_layouts = rom.get_buffer(num_Character_Battle_Sprite_Layouts * 6)
|
||||
# # Character Battle Sprite Tiles
|
||||
# for strip in range(0, 22*5):
|
||||
# var tiles = []
|
||||
# for i in range(0, 32*48, 32):
|
||||
# tiles.append(snes_graphics.get_tile(rom, Common.SNES_PSX_addresses['character_battle_sprite_tiles']['SNES'] + (strip*32*48) + i, 32))
|
||||
# var strip_image = Image.new()
|
||||
# strip_image.create(16, 24 * num_Character_Battle_Sprite_Layouts, false, INDEX_FORMAT)
|
||||
# for i in range(6 * num_Character_Battle_Sprite_Layouts):
|
||||
# strip_image.blit_rect(tiles[battle_strip_layouts[i]], Rect2(0, 0, 8, 8), Vector2((i%2) * 8, (i/2) * 8))
|
||||
# strip_images.append(strip_image)
|
||||
# strip_textures.append(texture_from_image(strip_image))
|
||||
|
||||
# Character Battle Sprite Palettes
|
||||
for palette in range(0, 22*5):
|
||||
character_battle_sprite_palette_textures.append(texture_from_image(generate_palette(rom, Common.SNES_PSX_addresses['character_battle_sprite_palettes']['SNES'] + (palette*32))))
|
||||
character_battle_sprite_palette_disabled_texture = texture_from_image(generate_palette(rom, Common.SNES_PSX_addresses['character_battle_sprite_disabled_palette']['SNES']))
|
||||
character_battle_sprite_palette_stone_texture = texture_from_image(generate_palette(rom, Common.SNES_PSX_addresses['character_battle_sprite_stone_palette']['SNES']))
|
||||
# # Character Battle Sprite Palettes
|
||||
# for palette in range(0, 22*5):
|
||||
# character_battle_sprite_palette_textures.append(texture_from_image(generate_palette(rom, Common.SNES_PSX_addresses['character_battle_sprite_palettes']['SNES'] + (palette*32))))
|
||||
# character_battle_sprite_palette_disabled_texture = texture_from_image(generate_palette(rom, Common.SNES_PSX_addresses['character_battle_sprite_disabled_palette']['SNES']))
|
||||
# character_battle_sprite_palette_stone_texture = texture_from_image(generate_palette(rom, Common.SNES_PSX_addresses['character_battle_sprite_stone_palette']['SNES']))
|
||||
|
||||
weapon_textures['Fist'] = texture_from_image(snes_graphics.get_tile(rom, Common.SNES_PSX_addresses['tiles_fist']['SNES'], 24))
|
||||
# weapon_textures['Fist'] = texture_from_image(snes_graphics.get_tile(rom, Common.SNES_PSX_addresses['tiles_fist']['SNES'], 24))
|
||||
|
||||
|
||||
var json_sprite_blocks: Dictionary = Common.load_json('res://data/sprite_blocks.json') # This needs error handling later
|
||||
var sprite_blocks := {}
|
||||
func snes_load_map_sprites(rom: File):
|
||||
# Main palettes
|
||||
var map_palettes = []
|
||||
for i in 4:
|
||||
map_palettes.append(generate_palette(rom, 0x1FFC00 + 32*i))
|
||||
# var json_sprite_blocks: Dictionary = Common.load_json('res://data/sprite_blocks.json') # This needs error handling later
|
||||
# var sprite_blocks := {}
|
||||
# func snes_load_map_sprites(rom: File):
|
||||
# # Main palettes
|
||||
# var map_palettes = []
|
||||
# for i in 4:
|
||||
# map_palettes.append(generate_palette(rom, 0x1FFC00 + 32*i))
|
||||
|
||||
for k in json_sprite_blocks.keys():
|
||||
var v = json_sprite_blocks[k]
|
||||
var start: int = v['start'].hex_to_int()
|
||||
var bpp := int(v['bpp'])
|
||||
var definitions = v['definitions']
|
||||
var total_tiles := 0
|
||||
for defn in definitions:
|
||||
total_tiles += defn[0] * defn[1] * defn[2]
|
||||
print_debug('Processing sprite block "%s" - starts at $%06X with %d %dbpp tiles' % [k, start, total_tiles, bpp])
|
||||
rom.seek(start)
|
||||
var tiles := []
|
||||
match bpp:
|
||||
1:
|
||||
for i in total_tiles:
|
||||
tiles.append(snes_graphics._1plane_to_tile(rom.get_buffer(8)))
|
||||
2:
|
||||
for i in total_tiles:
|
||||
tiles.append(snes_graphics._2plane_to_tile(rom.get_buffer(16)))
|
||||
3:
|
||||
for i in total_tiles:
|
||||
tiles.append(snes_graphics._3plane_to_tile(rom.get_buffer(24)))
|
||||
4:
|
||||
for i in total_tiles:
|
||||
tiles.append(snes_graphics._4plane_to_tile(rom.get_buffer(32)))
|
||||
_:
|
||||
print_debug('Invalid bpp "%s" in sprite blocks json' % bpp)
|
||||
sprite_blocks[k] = tiles
|
||||
# for k in json_sprite_blocks.keys():
|
||||
# var v = json_sprite_blocks[k]
|
||||
# var start: int = v['start'].hex_to_int()
|
||||
# var bpp := int(v['bpp'])
|
||||
# var definitions = v['definitions']
|
||||
# var total_tiles := 0
|
||||
# for defn in definitions:
|
||||
# total_tiles += defn[0] * defn[1] * defn[2]
|
||||
# print_debug('Processing sprite block "%s" - starts at $%06X with %d %dbpp tiles' % [k, start, total_tiles, bpp])
|
||||
# rom.seek(start)
|
||||
# var tiles := []
|
||||
# match bpp:
|
||||
# 1:
|
||||
# for i in total_tiles:
|
||||
# tiles.append(snes_graphics._1plane_to_tile(rom.get_buffer(8)))
|
||||
# 2:
|
||||
# for i in total_tiles:
|
||||
# tiles.append(snes_graphics._2plane_to_tile(rom.get_buffer(16)))
|
||||
# 3:
|
||||
# for i in total_tiles:
|
||||
# tiles.append(snes_graphics._3plane_to_tile(rom.get_buffer(24)))
|
||||
# 4:
|
||||
# for i in total_tiles:
|
||||
# tiles.append(snes_graphics._4plane_to_tile(rom.get_buffer(32)))
|
||||
# _:
|
||||
# print_debug('Invalid bpp "%s" in sprite blocks json' % bpp)
|
||||
# sprite_blocks[k] = tiles
|
||||
|
||||
static func bias_tile(unbiased: PoolByteArray, bias: int) -> Image:
|
||||
var image := Image.new()
|
||||
|
@ -281,10 +281,10 @@ static func bias_tile(unbiased: PoolByteArray, bias: int) -> Image:
|
|||
image.create_from_data(8, 8, false, INDEX_FORMAT, biased)
|
||||
return image
|
||||
|
||||
func load_snes_rom(rom: File):
|
||||
snes_load_battle_sprites(rom)
|
||||
snes_load_worldmap(rom)
|
||||
# snes_load_map_sprites(rom)
|
||||
# func load_snes_rom(rom: File):
|
||||
# snes_load_battle_sprites(rom)
|
||||
# snes_load_worldmap(rom)
|
||||
# # snes_load_map_sprites(rom)
|
||||
|
||||
func load_from_structs(data: Dictionary):
|
||||
# Load Battle sprites
|
||||
|
|
Loading…
Reference in New Issue