def module_main(argv): if len(argv) == 7: level_id = int(argv[5], 0) level_header = level_info.load_level_header(level_id=level_id) output_pal = palette.assemble_palette(level_header.load_list.palettes) main(argv[6], output_pal, int(argv[1], 0), int(argv[2], 0), int(argv[3], 0), int(argv[4])) else: print 'Usage: {0} <chunk_id> <offset> <count> <size> <level_palette> <output.png>'.format(argv[0])
def module_main(argv): if len(argv) == 7: level_id = int(argv[5], 0) level_header = level_info.load_level_header(level_id=level_id) output_pal = palette.assemble_palette(level_header.load_list.palettes) main(argv[6], output_pal, int(argv[1], 0), int(argv[2], 0), int(argv[3], 0), int(argv[4])) else: print 'Usage: {0} <chunk_id> <offset> <count> <size> <level_palette> <output.png>'.format( argv[0])
import sys from lvtools import chunk, level_info from lvtools.compression import decompress_data from lvtools.util import take_n, read_word def main(level_header, out): out.write("%d %d\n" % (level_header.width, level_header.height)) tilemap_data = decompress_data(chunk.read_chunk( level_header.tilemap_chunk)) for row in take_n(tilemap_data, level_header.width * 2): out.write(' '.join( str(read_word(row, i)) for i in xrange(0, len(row), 2))) out.write('\n') if __name__ == '__main__': level_id = int(sys.argv[1], 0) main(level_info.load_level_header(level_id=level_id), sys.stdout)
tile = (util.read_word(data, i+offs) for offs in xrange(0, 8, 2)) # Extract attributes tile = [(x >> 6, x & 0x10, x & 0x20) for x in tile] metatiles.append(tile) return metatiles def main(level_header, output_file, tiles_per_row): output_pal = palette.assemble_palette(level_header.load_list.palettes) tiles = tileset.extract_tiles(level_header) metatile_data = decompress_data(chunk.read_chunk(level_header.metatile_chunk)) meta_info = parse_metatile_info(metatile_data) del metatile_data def assemble_metatile(info): flipped_tiles = [graphics.flip_image(tiles[i], 8, hf, vf) for i, hf, vf in info] return graphics.layout_tiles(flipped_tiles, 8, 8, [[0, 1], [2, 3]])[0] meta_imgs = [assemble_metatile(info) for info in meta_info] output_data, output_w, output_h = graphics.layout_tiles(meta_imgs, 16, 16, tileset.rows_of_tiles(len(meta_imgs), tiles_per_row)) with open(output_file, 'wb') as f: w = png.Writer(output_w, output_h, palette=output_pal) w.write_array(f, output_data) if __name__ == '__main__': level_id = int(sys.argv[1], 0) level_header = level_info.load_level_header(level_id=level_id) main(level_header, sys.argv[2], int(sys.argv[3]))
import sys import dump_tilemap from lvtools import level_info if __name__ == '__main__': filename = "tilemaps/%02d_%s.txt" for i, (chunk_id, name) in enumerate(level_info.level_info): if name in ('MainMenu', 'MainMenu2', 'Ending1'): # Don't have tilesets continue print "Dumping %s..." % (name,) with open(filename % (i, name), 'w') as f: dump_tilemap.main(level_info.load_level_header(chunk_id=chunk_id), f)
import sys from lvtools import chunk, level_info from lvtools.compression import decompress_data from lvtools.util import take_n, read_word def main(level_header, out): out.write("%d %d\n" % (level_header.width, level_header.height)) tilemap_data = decompress_data(chunk.read_chunk(level_header.tilemap_chunk)) for row in take_n(tilemap_data, level_header.width * 2): out.write(' '.join(str(read_word(row, i)) for i in xrange(0, len(row), 2))) out.write('\n') if __name__ == '__main__': level_id = int(sys.argv[1], 0) main(level_info.load_level_header(level_id=level_id), sys.stdout)
import sys import dump_tileset, dump_metatileset, dump_tileset_mask from lvtools import level_info if __name__ == '__main__': dumper = { 'tiles': dump_tileset, 'tilemask': dump_tileset_mask, 'metatiles': dump_metatileset, }[sys.argv[1]] filename = "tilesets/%02d_%s.png" for i, (chunk_id, name) in enumerate(level_info.level_info): if name in ('MainMenu', 'MainMenu2', 'Ending1'): # Don't have tilesets continue print "Dumping %s..." % (name,) dumper.main(level_info.load_level_header(chunk_id=chunk_id), filename % (i, name), 16)
import sys import dump_tileset, dump_metatileset, dump_tileset_mask from lvtools import level_info if __name__ == '__main__': dumper = { 'tiles': dump_tileset, 'tilemask': dump_tileset_mask, 'metatiles': dump_metatileset, }[sys.argv[1]] filename = "tilesets/%02d_%s.png" for i, (chunk_id, name) in enumerate(level_info.level_info): if name in ('MainMenu', 'MainMenu2', 'Ending1'): # Don't have tilesets continue print "Dumping %s..." % (name, ) dumper.main(level_info.load_level_header(chunk_id=chunk_id), filename % (i, name), 16)