From 8495bc3169939d034622dcbf6fb84016a7430ef2 Mon Sep 17 00:00:00 2001 From: lonkaars Date: Wed, 22 Mar 2023 15:15:10 +0100 Subject: tilemap build system done --- src/static/makefile | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 src/static/makefile (limited to 'src/static/makefile') diff --git a/src/static/makefile b/src/static/makefile new file mode 100644 index 0000000..a6a18db --- /dev/null +++ b/src/static/makefile @@ -0,0 +1,34 @@ +XXD := xxd +TILEPACK := ../../scripts/tilepack +MANIFEST2HEADER := ../../scripts/manifest2header.awk + +INPUT += shop.hex \ + slime.hex \ + world.hex +USER_META += world.h + +OUT_BIN := $(patsubst %.hex,%.bin, $(INPUT)) +OUT_META := $(patsubst %.hex,%.meta, $(INPUT)) + +.PHONY: all clean + +all: tilemap.bin tilemap.h + +%.bin: %.hex + sed 's/;.*//g' $< | $(XXD) -r | $(TILEPACK) > $@ + +%.meta: %.bin + wc -c $< | tr '.' ' ' | awk '1 { print $$2" "$$1 / 104 }' > $@ + +manifest.txt: $(OUT_BIN) $(OUT_META) + cat $(OUT_META) | sort > $@ + +tilemap.bin: manifest.txt $(OUT_BIN) + awk '1 { print $$1".bin" }' $< | xargs cat > $@ + +tilemap.h: manifest.txt + $(MANIFEST2HEADER) $< > $@ + cat $(USER_META) >> $@ + +clean: + $(RM) $(OUT_BIN) $(OUT_META) manifest.txt tilemap.h tilemap.bin -- cgit v1.2.3 From 657f88952d35145b46d86a04e4b681d91f878c3a Mon Sep 17 00:00:00 2001 From: lonkaars Date: Thu, 23 Mar 2023 15:08:29 +0100 Subject: use sort order in makefile and add air tile at index 0 --- src/static/air.hex | 17 +++++++++++++++++ src/static/makefile | 5 +++-- 2 files changed, 20 insertions(+), 2 deletions(-) create mode 100644 src/static/air.hex (limited to 'src/static/makefile') diff --git a/src/static/air.hex b/src/static/air.hex new file mode 100644 index 0000000..5160cd6 --- /dev/null +++ b/src/static/air.hex @@ -0,0 +1,17 @@ +00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + diff --git a/src/static/makefile b/src/static/makefile index a6a18db..d84e31e 100644 --- a/src/static/makefile +++ b/src/static/makefile @@ -2,7 +2,8 @@ XXD := xxd TILEPACK := ../../scripts/tilepack MANIFEST2HEADER := ../../scripts/manifest2header.awk -INPUT += shop.hex \ +INPUT += air.hex \ + shop.hex \ slime.hex \ world.hex USER_META += world.h @@ -21,7 +22,7 @@ all: tilemap.bin tilemap.h wc -c $< | tr '.' ' ' | awk '1 { print $$2" "$$1 / 104 }' > $@ manifest.txt: $(OUT_BIN) $(OUT_META) - cat $(OUT_META) | sort > $@ + cat $(OUT_META) > $@ tilemap.bin: manifest.txt $(OUT_BIN) awk '1 { print $$1".bin" }' $< | xargs cat > $@ -- cgit v1.2.3 From 9df9b163852cd5fd2462e1dec25ad4b00ca12a8c Mon Sep 17 00:00:00 2001 From: lonkaars Date: Thu, 23 Mar 2023 16:22:45 +0100 Subject: add scripts for converting tiles to separate png images for tilemap editing --- scripts/tiled.mk.awk | 16 ++++++++++++++++ scripts/tilemap2tiled | 42 ++++++++++++++++++++++++++++++++++++++++++ src/static/.gitignore | 2 ++ src/static/makefile | 9 ++++++++- 4 files changed, 68 insertions(+), 1 deletion(-) create mode 100755 scripts/tiled.mk.awk create mode 100755 scripts/tilemap2tiled (limited to 'src/static/makefile') diff --git a/scripts/tiled.mk.awk b/scripts/tiled.mk.awk new file mode 100755 index 0000000..7728cf3 --- /dev/null +++ b/scripts/tiled.mk.awk @@ -0,0 +1,16 @@ +#!/bin/awk -f +BEGIN { + targets="" + print "tiled_dir:\n\tmkdir -p tiled" +} +1 { + for (i = 0; i < $2; i++) { + target = sprintf("tiled/%s_%02d.png", $1,i) + printf target" " + targets = targets" "target + } + printf "&: %s.bin\n",$1 + printf "\t$(TILEMAP2TILED) $<\n\n" +} +END { print "tiled: tiled_dir"targets } + diff --git a/scripts/tilemap2tiled b/scripts/tilemap2tiled new file mode 100755 index 0000000..905f801 --- /dev/null +++ b/scripts/tilemap2tiled @@ -0,0 +1,42 @@ +#!/bin/python3 +# read packed tilemap file from argv[1] and output pngs + +import sys +import io +import struct +from PIL import Image + +color_map = ( + (0x00, 0x00, 0x00), + (0x24, 0x24, 0x24), + (0x49, 0x49, 0x49), + (0x6d, 0x6d, 0x6d), + (0x92, 0x92, 0x92), + (0xb6, 0xb6, 0xb6), + (0xda, 0xda, 0xda), + (0xff, 0xff, 0xff), +) + +img = Image.new('RGB', (16, 16)) + +buf = "" +with open(sys.argv[1], "rb") as f: + buf = f.read() + +i = 0 +sprite_idx = 0 +for x in range(0, len(buf), 2): + word = 0x0000 + word |= buf[x] + word |= buf[x+1] << 8 + + for p in range(5): + img.putpixel((i % 16, i // 16), color_map[(word >> (p * 3)) & 0b111]) + i += 1 + if i > 0xff: + i = 0 + img.save(f"tiled/{sys.argv[1].replace('.bin','')}_{str(sprite_idx).zfill(2)}.png", format="PNG") + img = Image.new('RGB', (16, 16)) + sprite_idx += 1 + break + diff --git a/src/static/.gitignore b/src/static/.gitignore index f24ab90..348c5b9 100644 --- a/src/static/.gitignore +++ b/src/static/.gitignore @@ -2,3 +2,5 @@ **/*.meta manifest.txt tilemap.h +tiled/* +tiled.mk diff --git a/src/static/makefile b/src/static/makefile index d84e31e..6025a55 100644 --- a/src/static/makefile +++ b/src/static/makefile @@ -1,6 +1,8 @@ XXD := xxd TILEPACK := ../../scripts/tilepack MANIFEST2HEADER := ../../scripts/manifest2header.awk +TILEDMK := ../../scripts/tiled.mk.awk +TILEMAP2TILED := ../../scripts/tilemap2tiled INPUT += air.hex \ shop.hex \ @@ -31,5 +33,10 @@ tilemap.h: manifest.txt $(MANIFEST2HEADER) $< > $@ cat $(USER_META) >> $@ +tiled.mk: manifest.txt + $(TILEDMK) < $< > $@ + +include tiled.mk + clean: - $(RM) $(OUT_BIN) $(OUT_META) manifest.txt tilemap.h tilemap.bin + $(RM) -r $(OUT_BIN) $(OUT_META) manifest.txt tilemap.h tilemap.bin tiled.mk tiled -- cgit v1.2.3 From 2ff7020ed6327a49abd3c57491c1286c34a62d40 Mon Sep 17 00:00:00 2001 From: UnavailableDev Date: Tue, 4 Apr 2023 14:38:48 +0200 Subject: dynamic tilemap integration (without pallets) --- src/engine/level_const.c | 6 +- src/engine/player_controller.c | 6 +- src/engine/sprite_controller.h | 19 +- src/engine/title_screen.c | 6 +- src/game_loop/shop.c | 1 + src/static/.gitignore | 3 + src/static/Source.cpp | 42 ++++ src/static/background/bricks.hex | 457 +++++++++++++++++++++++++++++++++++ src/static/background/crates.hex | 39 +++ src/static/background/shop_stall.hex | 202 ++++++++++++++++ src/static/epic.py | 41 ++++ src/static/makefile | 10 +- 12 files changed, 814 insertions(+), 18 deletions(-) create mode 100644 src/static/Source.cpp create mode 100644 src/static/background/bricks.hex create mode 100644 src/static/background/crates.hex create mode 100644 src/static/background/shop_stall.hex create mode 100644 src/static/epic.py (limited to 'src/static/makefile') diff --git a/src/engine/level_const.c b/src/engine/level_const.c index 3847ad8..58b2514 100644 --- a/src/engine/level_const.c +++ b/src/engine/level_const.c @@ -7,16 +7,16 @@ hh_g_all_levels hh_init_game_levels(){ levels.current_level=0; levels.level[0].size.x=40; - levels.level[0].size.y=100; + levels.level[0].size.y=15; levels.level[0].hh_level_completed=false; levels.level[1].size.x=100; levels.level[1].size.y=28; levels.level[1].hh_level_completed=false; - FILE *fp = fopen("../test/bin/level1_test.bin", "rb"); + FILE *fp = fopen("static/shop_new.bin", "rb"); if (fp == NULL) { - printf("level1_test.bin not found!\n"); + printf("shop_new.bin not found!\n"); return levels; } fseek(fp, 0, SEEK_END); diff --git a/src/engine/player_controller.c b/src/engine/player_controller.c index 0fed82d..1b4eec8 100644 --- a/src/engine/player_controller.c +++ b/src/engine/player_controller.c @@ -5,6 +5,8 @@ #include "engine/player_controller.h" #include "input.h" +#include "static/tilemap.h" + #include "engine/animator.h" #include "engine/bullet.h" void hh_player_actions() { @@ -18,14 +20,14 @@ void hh_player_actions() { .vel = (vec2){0,0}, .size = (vec2){32,32}, .render = { - .frame0 = 80, + .frame0 = HH_TM_SLIME_OFFSET, .palette = 3, .ppu_foreground_index = 0, .fam = (hh_s_ppu_loc_fam_entry){ .horizontal_flip = false, .vertical_flip = false, .palette_index = 3, - .tilemap_index = 80, + .tilemap_index = HH_TM_SLIME_OFFSET, } } }, player_new = {0}; diff --git a/src/engine/sprite_controller.h b/src/engine/sprite_controller.h index fc6d3d3..244181c 100644 --- a/src/engine/sprite_controller.h +++ b/src/engine/sprite_controller.h @@ -15,6 +15,7 @@ #define HH_PAL_IDX_SKY 512 #define HH_PAL_IDX_BRICK 1 const static uint8_t hh_g_sprite_palette[HH_SPRITE_COUNT] = { + //TODO: FIGURE OUT HOW TO DEAL WITH DYNAMIC PALLETS //TODO: make a buffer of 16 no-collider sprites (instead of the current 1) 0,1,1,1,1,1,1,1,1,1, //1+9 1,1,1,1,1,1,1,1,1,1, //6+4 @@ -47,13 +48,13 @@ const static hh_ppu_loc_palette_table_t hh_g_palette = { {0x0,0x0,0x0}}, {//Bricks {0x1,0x2,0x3},//01 - {0xd,0x8,0xa},//24 {0x0,0x0,0x1},//25 {0x1,0x1,0x1},//26 {0x1,0x1,0x2},//27 {0x2,0x2,0x3},//28 {0x3,0x4,0x5},//29 - {0x5,0x1,0x7}}, + {0x5,0x1,0x7}, + {0xd,0x8,0xa}},//24 {//slime {0x1,0x2,0x3}, {0x1,0x3,0x2}, @@ -72,16 +73,16 @@ const static hh_ppu_loc_palette_table_t hh_g_palette = { {0xe,0xe,0xe}, //elemental {0x0,0x0,0x0}, {0x0,0x0,0x0}}, - { - {0x0,0x0,0x0}, - {0x0,0x0,0x0}, - {0x0,0x0,0x0}, - {0x0,0x0,0x0}, - {0x0,0x0,0x0}, + {//crates + {0x5,0x7,0x7}, + {0x3,0x1,0x2}, + {0x6,0x2,0x2}, + {0x7,0x4,0x4}, + {0xa,0x7,0x5}, {0x0,0x0,0x0}, {0x0,0x0,0x0}, {0x0,0x0,0x0}}, - {//elemental + { {0x0,0x0,0x0}, {0x0,0x0,0x0}, {0x0,0x0,0x0}, diff --git a/src/engine/title_screen.c b/src/engine/title_screen.c index 9c7ed48..1e9e586 100644 --- a/src/engine/title_screen.c +++ b/src/engine/title_screen.c @@ -2,6 +2,8 @@ #include "ppu/types.h" #include "ppu/consts.h" +#include "static/tilemap.h" + #include "engine/draw_screen.h" #include "engine/entity.h" @@ -12,7 +14,7 @@ void hh_init_title_screen(){ //send data uint8_t idx = 0; - const uint8_t tilemap_offset = 59; + const uint8_t tilemap_offset = HH_TM_TITLE_SCREEN_ICON_OFFSET; int tiles_h = HH_PPU_BG_CANVAS_TILES_H; int vp_h = HH_PPU_SCREEN_WIDTH/HH_PPU_SPRITE_WIDTH; //screen_h in tiles int vert_offset = tiles_h*3; @@ -45,7 +47,7 @@ void hh_init_title_screen(){ } - const uint8_t letters_offset = 66; + const uint8_t letters_offset = HH_TM_TITLE_SCREEN_LETTERES_LARGE_OFFSET; const int _size_hooded = 7, _size_v = 2; // char* hh = "hooded"; diff --git a/src/game_loop/shop.c b/src/game_loop/shop.c index 6a97d25..eb41248 100644 --- a/src/game_loop/shop.c +++ b/src/game_loop/shop.c @@ -14,6 +14,7 @@ void hh_shop(hh_e_game_state* hh_game_state){ hh_clear_screen(); hh_clear_sprite(); // TODO: make function to show shop + // hh_setup_screen(); //hh_setup_shop(); hh_shop_init(&upgrades); selected = HH_SHOP_UPG_DISPLAY/2; diff --git a/src/static/.gitignore b/src/static/.gitignore index 348c5b9..6111050 100644 --- a/src/static/.gitignore +++ b/src/static/.gitignore @@ -4,3 +4,6 @@ manifest.txt tilemap.h tiled/* tiled.mk +*.tsx +*.csv +*.out diff --git a/src/static/Source.cpp b/src/static/Source.cpp new file mode 100644 index 0000000..0bba7c6 --- /dev/null +++ b/src/static/Source.cpp @@ -0,0 +1,42 @@ +#include +#include +#include +#include + +int main(int argc, char** argv) { + + std::ifstream f; + f.open("out.csv"); /* open file with filename as argument */ + if (!f.is_open()) { /* validate file open for reading */ + std::cerr << "error: file open failed '" << argv[1] << "'.\n"; + return 0; + } + + + std::string line, val; /* string for line & value */ + std::vector> array; /* vector of vector */ + + while (std::getline(f, line)) { /* read each line */ + std::vector v; /* row vector v */ + std::stringstream s(line); /* stringstream line */ + while (getline(s, val, ',')) /* get each value (',' delimited) */ + v.push_back(std::stoi(val)); /* add to row vector */ + array.push_back(v); /* add row vector to array */ + } + + std::vector flat_array; /* create 1D vector */ + for (auto& row : array) { /* iterate over rows */ + for (auto& val : row) /* iterate over vals */ + flat_array.push_back(val); /* add to 1D vector */ + } + + int* array1d = flat_array.data(); /* get pointer to data */ + int size = flat_array.size(); /* get size of 1D array */ + + std::ofstream out_file("out.bin", std::ios::binary); /* create binary file */ + out_file.write((char*)&size, sizeof(size)); /* write size of 1D array to file */ + out_file.write((char*)array1d, size * sizeof(int)); /* write 1D array to file */ + out_file.close(); /* close file */ + + return 0; +} diff --git a/src/static/background/bricks.hex b/src/static/background/bricks.hex new file mode 100644 index 0000000..717b91d --- /dev/null +++ b/src/static/background/bricks.hex @@ -0,0 +1,457 @@ +;indices: 7 +;25 3a 5e +;09 0a 14 +;10 14 1f +;15 1d 28 +;20 2e 37 +;39 4a 50 +;57 72 77 + +000000: 06 06 06 06 06 05 06 06 06 06 06 05 06 06 06 06 +000010: 06 05 05 05 05 03 05 05 05 05 05 03 05 05 05 05 +000020: 06 05 04 04 04 03 05 05 05 05 05 03 05 05 05 05 +000030: 06 04 04 04 04 02 02 02 02 02 02 02 02 02 02 02 +000040: 06 04 04 04 04 02 02 03 03 03 03 03 03 02 03 03 +000050: 05 04 04 04 04 02 03 03 03 03 03 03 03 02 03 03 +000060: 05 04 04 04 04 02 03 03 03 03 03 03 03 02 03 03 +000070: 03 03 03 03 03 02 02 02 02 02 02 02 02 02 02 02 +000080: 06 06 04 04 04 04 04 02 02 02 03 03 03 03 02 02 +000090: 05 04 04 04 04 04 04 02 03 03 03 03 03 03 03 02 +0000a0: 05 04 04 04 04 04 04 02 02 03 03 03 03 03 03 02 +0000b0: 05 03 03 03 03 03 02 02 02 02 02 02 02 02 02 02 +0000c0: 00 05 04 04 04 04 04 04 02 02 03 03 03 03 03 03 +0000d0: 00 05 04 04 04 04 04 04 02 03 03 03 03 03 03 03 +0000e0: 00 05 04 04 04 04 04 04 02 03 03 03 03 03 03 03 +0000f0: 06 06 06 05 05 05 02 02 02 02 02 02 02 02 02 02 +000100: 06 06 06 05 06 06 06 06 06 06 06 05 06 06 06 06 +000110: 05 05 05 03 05 05 05 05 05 05 05 03 05 05 05 05 +000120: 05 05 05 03 05 05 05 05 05 05 05 03 05 05 05 05 +000130: 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 +000140: 03 03 03 03 03 02 03 03 03 03 03 03 03 02 03 03 +000150: 03 03 03 03 03 02 03 03 03 03 03 03 03 02 03 03 +000160: 03 03 03 03 02 02 03 03 03 03 03 03 03 02 03 03 +000170: 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 +000180: 02 03 03 03 03 03 03 02 03 03 03 03 03 03 03 02 +000190: 03 03 03 03 03 03 03 02 03 03 03 03 03 03 03 02 +0001a0: 03 03 03 03 03 03 03 02 03 03 03 03 03 03 03 02 +0001b0: 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 +0001c0: 03 02 03 03 03 03 03 03 03 02 03 03 03 03 03 03 +0001d0: 03 02 03 03 03 03 03 03 03 02 03 03 03 03 03 03 +0001e0: 02 02 03 03 03 03 03 03 03 02 03 03 03 03 03 03 +0001f0: 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 +000200: 06 06 06 05 06 06 06 06 06 06 05 06 06 06 06 06 +000210: 05 05 05 03 05 05 05 05 05 05 03 05 05 05 05 06 +000220: 05 05 05 03 05 05 05 05 05 05 03 04 04 05 05 06 +000230: 02 02 02 02 02 02 02 02 02 02 02 04 04 04 04 06 +000240: 03 03 03 03 03 02 03 03 03 03 02 04 04 04 04 06 +000250: 03 03 03 03 03 02 03 03 03 03 02 04 04 04 04 05 +000260: 03 03 03 03 03 02 03 03 03 03 02 04 04 04 04 05 +000270: 02 02 02 02 02 02 02 02 02 02 02 03 03 03 03 05 +000280: 03 03 03 03 03 03 03 02 04 04 04 04 04 05 05 00 +000290: 03 03 03 03 03 03 03 02 04 04 04 04 04 04 05 00 +0002a0: 03 03 03 03 03 03 03 02 04 04 04 04 04 04 05 00 +0002b0: 02 02 02 02 02 02 02 02 02 02 02 05 05 06 06 06 +0002c0: 03 02 03 03 03 03 03 03 03 02 04 04 04 04 04 06 +0002d0: 03 02 03 03 03 03 03 03 03 02 04 04 04 04 04 06 +0002e0: 03 02 03 03 03 03 03 03 03 02 04 04 04 04 04 05 +0002f0: 02 02 02 02 02 02 02 02 02 02 02 02 03 03 03 05 +000300: 06 04 04 04 04 04 04 02 03 03 03 03 03 03 03 02 +000310: 05 04 04 04 04 04 04 02 03 03 03 03 03 03 03 02 +000320: 05 04 04 04 04 04 04 02 02 03 03 03 03 03 02 02 +000330: 05 03 03 03 03 03 02 02 02 02 02 02 02 02 02 02 +000340: 00 05 04 04 04 03 02 03 03 03 03 03 03 02 03 03 +000350: 00 05 04 04 04 02 03 03 03 03 03 03 03 02 03 03 +000360: 00 04 04 04 04 02 03 03 03 03 03 02 02 02 02 03 +000370: 06 06 05 05 02 02 02 02 02 02 02 02 02 02 02 02 +000380: 06 04 04 04 04 04 04 02 03 03 03 03 03 03 03 02 +000390: 05 04 04 04 04 04 04 02 03 03 03 03 03 03 03 02 +0003a0: 05 04 04 04 04 04 04 02 02 03 03 03 03 03 03 02 +0003b0: 05 03 03 03 03 03 02 02 02 02 02 02 02 02 02 02 +0003c0: 00 05 05 04 04 04 04 03 02 03 03 03 03 03 03 03 +0003d0: 00 05 04 04 04 04 04 04 02 02 03 03 03 03 03 03 +0003e0: 00 05 04 04 04 04 04 04 02 02 03 03 03 03 03 03 +0003f0: 00 05 03 03 03 03 03 02 02 02 02 02 02 02 02 02 +000400: 03 03 02 02 02 03 03 03 03 03 03 02 02 03 03 03 +000410: 03 03 03 02 03 03 03 03 03 03 03 02 03 03 03 03 +000420: 03 03 03 02 03 03 03 03 03 03 02 02 02 03 03 03 +000430: 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 +000440: 03 03 03 03 02 02 03 03 03 03 03 03 03 02 03 03 +000450: 03 03 03 03 03 02 03 03 03 03 03 03 03 02 03 03 +000460: 03 03 03 03 03 02 03 03 03 03 03 03 02 02 02 03 +000470: 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 +000480: 02 03 03 03 03 03 03 02 03 03 03 03 03 03 02 02 +000490: 03 03 03 03 03 03 03 02 03 03 03 03 03 03 03 02 +0004a0: 03 03 03 03 03 03 02 02 02 02 03 03 03 03 03 02 +0004b0: 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 +0004c0: 02 02 02 03 03 03 03 03 03 02 03 03 03 03 03 03 +0004d0: 03 02 03 03 03 03 03 03 03 02 03 03 03 03 03 03 +0004e0: 03 02 03 03 03 03 03 03 02 02 02 03 03 03 03 03 +0004f0: 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 +000500: 03 03 03 02 03 03 03 03 03 03 03 02 04 04 05 00 +000510: 03 03 03 02 03 03 03 03 03 03 03 02 04 04 05 00 +000520: 03 03 02 02 03 03 03 03 03 03 03 02 04 04 04 00 +000530: 02 02 02 02 02 02 02 02 02 02 02 02 02 06 06 06 +000540: 03 03 03 03 03 02 03 03 03 02 04 04 04 04 04 06 +000550: 03 03 03 03 03 02 03 03 03 02 04 04 04 04 04 05 +000560: 03 03 03 03 03 02 03 03 03 02 04 04 04 04 04 05 +000570: 02 02 02 02 02 02 02 02 02 02 02 03 03 03 03 05 +000580: 03 03 03 03 03 03 03 02 04 04 04 04 04 05 05 00 +000590: 03 03 03 03 03 03 03 02 04 04 04 04 04 04 05 00 +0005a0: 03 03 03 03 03 03 03 02 04 04 04 04 04 04 05 00 +0005b0: 02 02 02 02 02 02 02 02 02 02 02 03 03 06 06 06 +0005c0: 03 02 03 03 03 03 03 03 03 02 04 04 04 04 04 06 +0005d0: 03 02 03 03 03 03 03 03 03 02 04 04 04 04 04 05 +0005e0: 03 02 03 03 03 03 03 03 03 02 04 04 04 04 04 05 +0005f0: 02 02 02 02 02 02 02 02 02 02 02 02 03 03 03 05 +000600: 06 04 04 04 04 04 04 02 03 03 03 03 03 03 03 02 +000610: 05 04 04 04 04 04 04 02 03 03 03 03 03 03 03 02 +000620: 05 04 04 04 04 04 04 02 02 03 03 03 03 03 02 02 +000630: 05 03 03 03 03 03 02 02 02 02 02 02 02 02 02 02 +000640: 00 05 04 04 04 03 02 03 03 03 03 03 03 02 03 03 +000650: 00 05 04 04 04 02 03 03 03 03 03 03 03 02 03 03 +000660: 00 04 04 04 04 02 03 03 03 03 03 02 02 02 02 03 +000670: 06 06 05 05 02 02 02 02 02 02 02 02 02 02 02 02 +000680: 06 04 04 04 04 04 04 02 03 03 03 03 03 03 03 02 +000690: 05 04 04 04 04 04 04 02 03 03 03 03 03 03 03 02 +0006a0: 05 04 04 04 04 04 04 02 02 03 03 03 03 03 03 02 +0006b0: 05 03 03 03 03 03 02 02 02 02 02 02 02 02 02 02 +0006c0: 00 05 05 04 04 04 04 04 04 04 04 02 02 02 02 04 +0006d0: 00 05 05 04 04 04 04 04 04 04 04 04 02 04 04 04 +0006e0: 00 06 05 05 05 04 04 04 04 04 04 04 03 04 04 04 +0006f0: 00 06 06 06 05 05 05 05 05 05 05 05 03 05 05 05 +000700: 03 03 02 02 02 03 03 03 03 03 03 02 02 03 03 03 +000710: 03 03 03 02 03 03 03 03 03 03 03 02 03 03 03 03 +000720: 03 03 03 02 03 03 03 03 03 03 02 02 02 03 03 03 +000730: 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 +000740: 03 03 03 03 02 02 03 03 03 03 03 03 03 02 03 03 +000750: 03 03 03 03 03 02 03 03 03 03 03 03 03 02 03 03 +000760: 03 03 03 03 03 02 03 03 03 03 03 03 02 02 02 03 +000770: 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 +000780: 02 03 03 03 03 03 03 02 03 03 03 03 03 03 02 02 +000790: 03 03 03 03 03 03 03 02 03 03 03 03 03 03 03 02 +0007a0: 03 03 03 03 03 03 02 02 02 02 03 03 03 03 03 02 +0007b0: 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 +0007c0: 04 04 04 04 04 04 04 04 03 03 03 04 04 04 04 04 +0007d0: 04 04 04 04 04 04 04 04 04 03 03 04 04 04 04 04 +0007e0: 04 04 04 04 04 04 04 04 04 03 04 04 04 04 04 04 +0007f0: 05 05 05 05 05 05 05 05 05 03 05 05 05 05 05 05 +000800: 03 03 03 02 03 03 03 03 03 03 03 02 04 04 05 00 +000810: 03 03 03 02 03 03 03 03 03 03 03 02 04 04 05 00 +000820: 03 03 02 02 03 03 03 03 03 03 03 02 04 04 04 00 +000830: 02 02 02 02 02 02 02 02 02 02 02 02 02 06 06 06 +000840: 03 03 03 03 03 02 03 03 03 02 04 04 04 04 04 06 +000850: 03 03 03 03 03 02 03 03 03 02 04 04 04 04 04 05 +000860: 03 03 03 03 03 02 03 03 03 02 04 04 04 04 04 05 +000870: 02 02 02 02 02 02 02 02 02 02 02 03 03 03 03 05 +000880: 03 03 03 03 03 03 03 02 04 04 04 04 04 05 05 00 +000890: 03 03 03 03 03 03 03 02 04 04 04 04 04 04 05 00 +0008a0: 03 03 03 03 03 03 03 02 04 04 04 04 04 04 05 00 +0008b0: 02 02 02 02 02 02 03 03 03 03 03 03 03 06 06 06 +0008c0: 04 04 03 03 03 04 04 04 04 04 04 04 04 04 05 06 +0008d0: 04 04 04 03 03 04 04 04 04 04 04 04 04 05 05 05 +0008e0: 04 04 04 03 04 04 04 04 04 04 04 05 05 05 05 06 +0008f0: 05 05 05 03 05 05 05 05 05 05 05 05 05 06 06 06 +000900: 06 06 06 06 06 05 06 06 06 06 06 05 06 06 06 06 +000910: 06 05 05 05 05 03 05 05 05 05 05 03 05 05 05 05 +000920: 06 05 04 04 04 03 05 05 05 05 05 03 05 05 05 05 +000930: 06 04 04 04 04 02 02 02 02 02 02 02 02 02 02 02 +000940: 06 04 04 04 04 02 02 03 03 03 03 03 03 02 03 03 +000950: 05 04 04 04 04 02 03 03 03 03 03 03 03 02 03 03 +000960: 05 04 04 04 04 02 03 03 03 03 03 03 03 02 03 03 +000970: 03 03 03 03 03 02 02 02 02 02 02 02 02 02 02 02 +000980: 06 04 04 04 04 04 04 02 03 03 03 03 03 03 03 02 +000990: 05 04 04 04 04 04 04 02 03 03 03 03 03 03 03 02 +0009a0: 05 04 04 04 04 04 04 02 02 03 03 03 03 03 03 02 +0009b0: 05 03 03 03 03 03 02 02 02 02 02 02 02 02 02 02 +0009c0: 00 05 05 04 04 04 04 04 04 04 04 02 02 02 02 04 +0009d0: 00 05 05 04 04 04 04 04 04 04 04 04 02 04 04 04 +0009e0: 00 06 05 05 05 04 04 04 04 04 04 04 03 04 04 04 +0009f0: 00 06 06 06 05 05 05 05 05 05 05 05 03 05 05 05 +000a00: 06 06 06 05 06 06 06 06 06 06 06 05 06 06 06 06 +000a10: 05 05 05 03 05 05 05 05 05 05 05 03 05 05 05 05 +000a20: 05 05 05 03 05 05 05 05 05 05 05 03 05 05 05 05 +000a30: 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 +000a40: 03 03 03 03 03 02 03 03 03 03 03 03 03 02 03 03 +000a50: 03 03 03 03 03 02 03 03 03 03 03 03 03 02 03 03 +000a60: 03 03 03 03 02 02 03 03 03 03 03 03 03 02 03 03 +000a70: 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 +000a80: 02 03 03 03 03 03 03 02 03 03 03 03 03 03 02 02 +000a90: 03 03 03 03 03 03 03 02 03 03 03 03 03 03 03 02 +000aa0: 03 03 03 03 03 03 02 02 02 02 03 03 03 03 03 02 +000ab0: 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 +000ac0: 04 04 04 04 04 04 04 04 03 03 03 04 04 04 04 04 +000ad0: 04 04 04 04 04 04 04 04 04 03 03 04 04 04 04 04 +000ae0: 04 04 04 04 04 04 04 04 04 03 04 04 04 04 04 04 +000af0: 05 05 05 05 05 05 05 05 05 03 05 05 05 05 05 05 +000b00: 06 06 06 05 06 06 06 06 06 06 05 06 06 06 06 06 +000b10: 05 05 05 03 05 05 05 05 05 05 03 05 05 05 05 06 +000b20: 05 05 05 03 05 05 05 05 05 05 03 04 04 05 05 06 +000b30: 02 02 02 02 02 02 02 02 02 02 02 04 04 04 04 06 +000b40: 03 03 03 03 03 02 03 03 03 03 02 04 04 04 04 06 +000b50: 03 03 03 03 03 02 03 03 03 03 02 04 04 04 04 05 +000b60: 03 03 03 03 03 02 03 03 03 03 02 04 04 04 04 05 +000b70: 02 02 02 02 02 02 02 02 02 02 02 03 03 03 03 05 +000b80: 03 03 03 03 03 03 03 02 04 04 04 04 04 05 05 00 +000b90: 03 03 03 03 03 03 03 02 04 04 04 04 04 04 05 00 +000ba0: 03 03 03 03 03 03 03 02 04 04 04 04 04 04 05 00 +000bb0: 02 02 02 02 02 02 03 03 03 03 03 03 03 06 06 06 +000bc0: 04 04 03 03 03 04 04 04 04 04 04 04 04 04 05 06 +000bd0: 04 04 04 03 03 04 04 04 04 04 04 04 04 05 05 05 +000be0: 04 04 04 03 04 04 04 04 04 04 04 05 05 05 05 06 +000bf0: 05 05 05 03 05 05 05 05 05 05 05 05 05 06 06 06 +000c00: 06 06 06 06 06 05 06 06 06 06 05 06 06 06 06 06 +000c10: 06 05 05 05 05 03 05 05 05 05 03 05 05 05 05 06 +000c20: 06 05 04 04 04 03 05 05 05 05 03 04 04 05 05 06 +000c30: 06 04 04 04 04 02 02 02 02 02 02 04 04 04 04 06 +000c40: 06 04 04 04 04 02 02 03 03 03 02 04 04 04 04 06 +000c50: 05 04 04 04 04 02 03 03 03 03 02 04 04 04 04 05 +000c60: 05 04 04 04 04 02 03 03 03 03 02 04 04 04 04 05 +000c70: 03 03 03 03 03 02 02 02 02 02 02 03 03 03 03 05 +000c80: 06 06 04 04 04 04 04 02 04 04 04 04 04 05 05 00 +000c90: 05 04 04 04 04 04 04 02 04 04 04 04 04 04 05 00 +000ca0: 05 04 04 04 04 04 04 02 04 04 04 04 04 04 05 00 +000cb0: 05 03 03 03 03 03 02 02 02 02 02 05 05 06 06 06 +000cc0: 00 05 04 04 04 04 04 04 03 02 04 04 04 04 04 06 +000cd0: 00 05 04 04 04 04 04 04 03 02 04 04 04 04 04 06 +000ce0: 00 05 04 04 04 04 04 04 03 02 04 04 04 04 04 05 +000cf0: 06 06 06 05 05 05 02 02 02 02 02 02 03 03 03 05 +000d00: 06 04 04 04 04 04 04 02 03 03 03 02 04 04 05 00 +000d10: 05 04 04 04 04 04 04 02 03 03 03 02 04 04 05 00 +000d20: 05 04 04 04 04 04 04 02 03 03 03 02 04 04 04 00 +000d30: 05 03 03 03 03 03 02 02 02 02 02 02 02 06 06 06 +000d40: 00 05 04 04 04 03 02 03 03 02 04 04 04 04 04 06 +000d50: 00 05 04 04 04 02 03 03 03 02 04 04 04 04 04 05 +000d60: 00 04 04 04 04 02 03 03 03 02 03 04 04 04 04 05 +000d70: 06 06 05 05 02 02 02 02 02 02 02 03 03 03 03 05 +000d80: 06 04 04 04 04 04 04 02 04 04 04 04 04 05 05 00 +000d90: 05 04 04 04 04 04 04 02 04 04 04 04 04 04 05 00 +000da0: 05 04 04 04 04 04 04 02 04 04 04 04 04 04 05 00 +000db0: 05 03 03 03 03 03 02 02 02 02 02 03 03 06 06 06 +000dc0: 00 05 05 04 04 04 03 03 03 03 03 04 04 04 04 06 +000dd0: 00 05 04 04 04 04 03 03 03 03 04 04 04 04 04 05 +000de0: 00 05 04 04 04 03 03 03 03 03 04 04 04 04 04 05 +000df0: 00 05 03 03 03 03 03 02 02 02 02 02 03 03 03 05 +000e00: 06 04 04 04 04 04 04 02 03 03 03 02 04 04 05 00 +000e10: 05 04 04 04 04 04 04 02 03 03 03 02 04 04 05 00 +000e20: 05 04 04 04 04 04 04 02 03 03 03 02 04 04 04 00 +000e30: 05 03 03 03 03 03 02 02 02 02 02 02 02 06 06 06 +000e40: 00 05 04 04 04 03 02 03 03 02 04 04 04 04 04 06 +000e50: 00 05 04 04 04 02 03 03 03 02 04 04 04 04 04 05 +000e60: 00 04 04 04 04 02 03 03 03 02 04 04 04 04 04 05 +000e70: 06 06 05 05 02 02 02 02 02 02 02 03 03 03 03 05 +000e80: 06 04 04 04 04 04 04 02 04 04 04 04 04 05 05 00 +000e90: 05 04 04 04 04 04 04 02 04 04 04 04 04 04 05 00 +000ea0: 05 04 04 04 04 04 04 02 04 04 04 04 04 04 05 00 +000eb0: 05 03 03 03 03 03 02 02 03 03 03 03 03 06 06 06 +000ec0: 00 05 05 04 04 04 04 04 04 04 04 04 04 04 05 06 +000ed0: 00 05 05 04 04 04 04 04 04 04 04 04 04 05 05 05 +000ee0: 00 06 05 05 05 04 04 04 04 04 04 05 05 05 05 06 +000ef0: 00 06 06 06 05 05 05 05 05 05 05 05 05 06 06 06 +000f00: 03 03 02 02 02 03 03 03 03 03 03 02 02 03 03 03 +000f10: 03 03 03 02 03 03 03 03 03 03 03 02 03 03 03 03 +000f20: 03 03 03 02 03 03 03 03 03 03 02 02 02 03 03 03 +000f30: 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 +000f40: 03 03 03 03 02 02 03 03 03 03 03 03 03 02 03 03 +000f50: 03 03 03 03 03 02 03 03 03 03 03 03 03 02 03 03 +000f60: 03 03 03 03 03 02 03 03 03 03 03 03 02 02 02 03 +000f70: 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 +000f80: 02 03 03 03 03 03 03 02 03 03 03 03 03 03 02 02 +000f90: 03 03 03 03 03 03 03 02 03 03 03 03 03 03 03 02 +000fa0: 03 03 03 03 03 03 02 02 02 02 03 03 03 03 03 02 +000fb0: 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 +000fc0: 02 02 02 03 03 03 03 03 03 02 03 03 03 04 04 04 +000fd0: 03 02 03 03 03 03 03 03 03 02 03 03 04 04 04 04 +000fe0: 03 02 03 03 03 03 03 03 02 02 02 03 04 04 04 04 +000ff0: 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 +001000: 03 03 02 02 02 03 03 03 03 03 03 02 02 03 03 03 +001010: 03 03 03 02 03 03 03 03 03 03 03 02 03 03 03 03 +001020: 03 03 03 02 03 03 03 03 03 03 02 02 02 03 03 03 +001030: 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 +001040: 03 03 03 03 02 02 03 03 03 03 03 03 03 02 03 03 +001050: 03 03 03 03 03 02 03 03 03 03 03 03 03 02 03 03 +001060: 03 03 03 03 03 02 03 03 03 03 03 03 02 02 02 03 +001070: 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 +001080: 02 03 03 03 03 03 03 02 03 03 03 03 03 03 02 02 +001090: 03 03 03 03 03 03 03 02 03 03 03 03 03 03 03 02 +0010a0: 03 03 03 03 03 03 02 02 02 02 03 03 03 03 03 02 +0010b0: 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 +0010c0: 02 02 02 04 04 03 03 03 03 02 03 03 03 03 03 03 +0010d0: 04 02 04 04 04 04 03 03 03 02 03 03 03 03 03 03 +0010e0: 04 02 04 04 04 04 03 03 02 02 02 03 03 03 03 03 +0010f0: 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 +001100: 03 03 02 02 02 03 03 03 03 03 03 02 02 05 05 05 +001110: 03 03 03 02 03 03 03 03 03 03 03 02 03 05 05 05 +001120: 03 03 03 02 03 03 03 03 03 03 02 02 02 03 05 05 +001130: 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 +001140: 03 03 03 03 02 02 03 03 03 03 03 03 03 02 03 03 +001150: 03 03 03 03 03 02 03 03 03 03 03 03 03 02 03 03 +001160: 03 03 03 03 03 02 03 03 03 03 03 03 02 02 02 03 +001170: 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 +001180: 02 03 03 03 03 03 03 02 03 03 03 03 03 03 02 02 +001190: 03 03 03 03 03 03 03 02 03 03 03 03 03 03 03 02 +0011a0: 03 03 03 03 03 03 02 02 02 02 03 03 03 03 03 02 +0011b0: 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 +0011c0: 02 02 02 03 03 03 03 03 03 02 03 03 03 03 03 03 +0011d0: 03 02 03 03 03 03 03 03 03 02 03 03 03 03 03 03 +0011e0: 03 02 03 03 03 03 03 03 02 02 02 03 03 03 03 03 +0011f0: 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 +001200: 06 05 02 02 02 03 03 03 03 03 03 02 02 03 03 03 +001210: 05 05 05 02 03 03 03 03 03 03 03 02 03 03 03 03 +001220: 05 05 03 02 03 03 03 03 03 03 02 02 02 03 03 03 +001230: 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 +001240: 03 03 03 03 02 02 03 03 03 03 03 03 03 02 03 03 +001250: 03 03 03 03 03 02 03 03 03 03 03 03 03 02 03 03 +001260: 03 03 03 03 03 02 03 03 03 03 03 03 02 02 02 03 +001270: 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 +001280: 02 03 03 03 03 03 03 02 03 03 03 03 03 03 02 02 +001290: 03 03 03 03 03 03 03 02 03 03 03 03 03 03 03 02 +0012a0: 03 03 03 03 03 03 02 02 02 02 03 03 03 03 03 02 +0012b0: 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 +0012c0: 02 02 02 03 03 03 03 03 03 02 03 03 03 03 03 03 +0012d0: 03 02 03 03 03 03 03 03 03 02 03 03 03 03 03 03 +0012e0: 03 02 03 03 03 03 03 03 02 02 02 03 03 03 03 03 +0012f0: 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 +001300: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 +001310: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 +001320: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 +001330: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 +001340: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 +001350: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 +001360: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 +001370: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 +001380: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 +001390: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 +0013a0: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 +0013b0: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 +0013c0: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 +0013d0: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 +0013e0: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 +0013f0: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 +001400: 03 03 02 02 02 03 03 03 03 03 03 02 02 03 03 03 +001410: 03 03 03 02 03 03 03 03 03 03 03 02 03 03 03 03 +001420: 03 03 03 02 03 03 03 03 03 03 02 02 02 03 03 03 +001430: 02 02 02 02 02 02 02 02 02 02 02 02 02 01 01 01 +001440: 03 03 03 03 02 02 03 03 02 02 02 02 02 01 02 02 +001450: 03 03 03 03 03 02 02 02 02 02 02 02 02 01 02 02 +001460: 03 03 03 03 03 01 02 02 02 02 02 02 01 01 01 02 +001470: 02 02 02 02 02 01 01 01 01 01 01 01 01 01 01 01 +001480: 02 03 03 03 02 02 02 01 02 02 02 02 02 02 01 01 +001490: 03 03 03 03 02 02 02 01 02 02 02 02 02 02 02 01 +0014a0: 03 03 03 03 02 02 01 01 01 01 02 02 02 02 01 01 +0014b0: 02 02 02 02 01 01 01 01 01 01 01 01 01 01 01 01 +0014c0: 02 02 02 03 03 02 02 02 02 01 02 02 02 01 01 01 +0014d0: 03 02 03 03 03 02 02 02 02 01 02 02 01 01 01 01 +0014e0: 03 02 03 03 03 03 02 02 01 01 01 02 01 01 01 01 +0014f0: 02 02 02 02 02 01 01 01 01 01 01 01 01 01 01 01 +001500: 03 03 02 02 02 03 03 03 03 03 03 02 02 03 03 03 +001510: 03 03 03 02 03 03 03 03 03 03 03 02 03 03 03 03 +001520: 03 03 03 02 03 03 03 03 03 03 02 02 02 03 03 03 +001530: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 +001540: 02 02 02 02 01 01 02 02 02 02 02 02 02 01 02 02 +001550: 02 02 02 02 02 01 02 02 02 02 02 02 02 01 02 02 +001560: 02 02 02 02 02 01 02 02 02 02 02 02 01 01 01 02 +001570: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 +001580: 01 02 02 02 02 02 02 01 02 02 02 02 02 02 01 01 +001590: 01 02 02 02 02 02 02 01 02 02 02 02 02 02 02 01 +0015a0: 01 02 02 02 01 01 01 01 01 01 02 02 02 02 02 01 +0015b0: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 +0015c0: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 +0015d0: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 +0015e0: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 +0015f0: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 +001600: 03 03 02 02 02 03 03 03 03 03 03 02 02 03 03 03 +001610: 03 03 03 02 03 03 03 03 03 03 03 02 03 03 03 03 +001620: 03 03 03 02 03 03 03 03 03 03 02 02 02 03 03 03 +001630: 01 01 01 01 02 02 02 02 02 02 02 02 02 02 02 02 +001640: 02 02 02 02 01 01 03 03 03 03 03 03 03 02 03 03 +001650: 02 02 02 02 02 01 02 02 03 03 03 03 03 02 03 03 +001660: 02 02 02 02 02 01 02 02 02 03 03 03 02 02 02 03 +001670: 01 01 01 01 01 01 01 01 01 01 02 02 02 02 02 02 +001680: 01 02 02 02 02 02 02 01 02 02 03 03 03 03 02 02 +001690: 02 02 02 02 02 02 02 01 02 02 02 03 03 03 03 02 +0016a0: 02 02 02 02 02 02 01 01 01 01 02 03 03 03 03 02 +0016b0: 01 01 01 01 01 01 01 01 01 01 01 02 02 02 02 02 +0016c0: 01 01 01 02 02 02 02 02 02 01 02 03 03 03 03 03 +0016d0: 01 01 02 02 02 02 02 02 02 01 02 03 03 03 03 03 +0016e0: 01 01 02 02 02 02 02 02 01 01 01 03 03 03 03 03 +0016f0: 01 01 01 01 01 01 01 01 01 01 01 02 02 02 02 02 +001700: 03 03 02 02 02 02 02 02 02 02 02 01 01 01 01 01 +001710: 03 03 03 02 03 02 02 02 02 02 02 01 01 01 01 01 +001720: 03 03 03 02 03 02 02 02 02 02 01 01 01 01 01 01 +001730: 02 02 02 02 02 01 01 01 01 01 01 01 01 01 01 01 +001740: 03 03 03 03 02 01 02 02 02 02 02 02 01 01 01 01 +001750: 03 03 03 03 02 01 02 02 02 02 02 02 01 01 01 01 +001760: 03 03 03 03 02 01 02 02 02 02 02 01 01 01 01 01 +001770: 02 02 02 02 01 01 01 01 01 01 01 01 01 01 01 01 +001780: 02 03 03 03 02 02 02 01 02 02 02 01 01 01 01 01 +001790: 03 03 03 03 02 02 02 01 02 02 02 01 01 01 01 01 +0017a0: 03 03 03 03 02 02 01 01 01 01 02 01 01 01 01 01 +0017b0: 02 02 02 02 01 01 01 01 01 01 01 01 01 01 01 01 +0017c0: 02 02 02 03 02 02 02 02 02 01 02 02 01 01 01 01 +0017d0: 03 02 03 03 03 02 02 02 02 01 02 02 02 01 01 01 +0017e0: 03 02 03 03 02 02 02 02 01 01 01 02 02 01 01 01 +0017f0: 02 02 02 02 01 01 01 01 01 01 01 01 01 01 01 01 +001800: 01 01 01 01 01 02 02 02 02 02 02 02 02 03 03 03 +001810: 01 01 01 01 02 02 02 02 02 02 02 02 03 03 03 03 +001820: 01 01 01 01 02 02 02 02 02 02 02 02 02 03 03 03 +001830: 01 01 01 01 01 01 01 01 01 01 02 02 02 02 02 02 +001840: 01 01 01 01 01 02 02 02 02 02 03 03 03 02 03 03 +001850: 01 01 01 01 01 02 02 02 02 02 03 03 03 02 03 03 +001860: 01 01 01 01 01 01 02 02 02 02 03 03 02 02 02 03 +001870: 01 01 01 01 01 01 01 01 01 01 01 02 02 02 02 02 +001880: 01 01 01 01 02 02 02 01 02 02 02 03 03 03 02 02 +001890: 01 01 01 01 02 02 02 01 02 02 02 03 03 03 03 02 +0018a0: 01 01 01 01 01 02 01 01 01 01 02 03 03 03 03 02 +0018b0: 01 01 01 01 01 01 01 01 01 01 01 02 02 02 02 02 +0018c0: 01 01 01 01 01 02 02 02 02 01 02 03 03 03 03 03 +0018d0: 01 01 01 01 02 02 02 02 02 01 02 03 03 03 03 03 +0018e0: 01 01 01 01 02 02 02 02 01 01 02 03 03 03 03 03 +0018f0: 01 01 01 01 01 01 01 01 01 01 01 02 02 02 02 02 +001900: 03 03 02 02 01 02 02 02 02 02 02 01 01 02 01 01 +001910: 03 03 03 02 02 02 02 02 02 02 02 01 02 02 02 01 +001920: 03 03 03 02 02 02 02 02 02 02 01 01 01 02 02 02 +001930: 02 02 02 02 01 01 01 01 01 01 01 01 01 01 01 01 +001940: 03 03 03 03 01 01 02 02 02 02 02 02 02 01 02 02 +001950: 03 03 03 03 02 01 02 02 02 02 02 02 02 01 02 02 +001960: 03 03 03 03 03 01 02 02 02 02 02 02 01 01 01 02 +001970: 02 02 02 02 02 01 01 01 01 01 01 01 01 01 01 01 +001980: 02 03 03 03 03 03 02 01 02 02 02 02 02 02 01 01 +001990: 03 03 03 03 03 03 03 02 02 02 02 02 02 02 02 01 +0019a0: 03 03 03 03 03 03 02 02 02 02 03 03 03 03 03 02 +0019b0: 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 +0019c0: 02 02 02 03 03 03 03 03 03 02 03 03 03 03 03 03 +0019d0: 03 02 03 03 03 03 03 03 03 02 03 03 03 03 03 03 +0019e0: 03 02 03 03 03 03 03 03 02 02 02 03 03 03 03 03 +0019f0: 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 +001a00: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 +001a10: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 +001a20: 02 01 01 01 01 01 01 01 01 01 01 01 01 01 02 02 +001a30: 01 01 01 01 01 01 01 01 02 02 02 02 01 01 01 01 +001a40: 02 02 02 02 01 01 02 02 02 02 02 02 02 01 02 02 +001a50: 02 02 02 02 02 01 02 02 02 02 02 02 02 01 02 02 +001a60: 02 02 02 02 02 01 02 02 02 02 02 02 01 01 01 02 +001a70: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 +001a80: 01 02 02 02 02 02 02 01 02 02 02 02 02 02 01 01 +001a90: 02 02 02 02 02 02 02 01 02 02 02 02 02 02 02 01 +001aa0: 03 03 02 02 02 02 01 01 01 01 02 02 02 02 02 01 +001ab0: 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 +001ac0: 02 02 02 03 03 03 03 03 03 02 03 03 03 03 03 03 +001ad0: 03 02 03 03 03 03 03 03 03 02 03 03 03 03 03 03 +001ae0: 03 02 03 03 03 03 03 03 02 02 02 03 03 03 03 03 +001af0: 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 +001b00: 01 01 01 01 01 02 02 02 02 02 02 02 02 03 03 03 +001b10: 02 02 02 01 02 02 02 02 02 02 02 02 03 03 03 03 +001b20: 02 02 02 01 02 02 02 02 02 02 01 02 02 03 03 03 +001b30: 01 01 01 01 01 01 01 01 01 01 01 02 02 02 02 02 +001b40: 02 02 02 02 01 01 02 02 02 02 02 03 03 02 03 03 +001b50: 02 02 02 02 02 01 02 02 02 02 02 03 03 02 03 03 +001b60: 02 02 02 02 02 01 02 02 02 02 02 03 02 02 02 03 +001b70: 01 01 01 01 01 01 01 01 01 01 02 02 02 02 02 02 +001b80: 01 02 02 02 02 02 02 01 02 02 03 03 03 03 02 02 +001b90: 02 02 02 02 02 02 02 01 02 03 03 03 03 03 03 02 +001ba0: 02 02 02 02 02 02 01 02 02 02 03 03 03 03 03 02 +001bb0: 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 +001bc0: 02 02 02 03 03 03 03 03 03 02 03 03 03 03 03 03 +001bd0: 03 02 03 03 03 03 03 03 03 02 03 03 03 03 03 03 +001be0: 03 02 03 03 03 03 03 03 02 02 02 03 03 03 03 03 +001bf0: 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 \ No newline at end of file diff --git a/src/static/background/crates.hex b/src/static/background/crates.hex new file mode 100644 index 0000000..3d8b332 --- /dev/null +++ b/src/static/background/crates.hex @@ -0,0 +1,39 @@ +;indices: 5 +;57 72 77 +;34 1c 27 +;60 2c 2c +;7a 48 41 +;ad 77 57 + +000000: 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 +000010: 03 04 04 04 04 04 04 04 04 04 04 04 04 04 04 03 +000020: 03 03 03 04 01 01 01 01 01 01 01 01 04 03 03 03 +000030: 03 03 02 03 04 01 01 01 01 01 01 04 03 02 03 03 +000040: 03 03 01 02 03 04 01 01 01 01 04 03 02 01 03 03 +000050: 03 03 01 01 02 03 04 01 01 04 03 02 01 01 03 03 +000060: 03 03 01 01 01 02 03 04 04 03 02 01 01 01 03 03 +000070: 03 03 01 01 01 01 02 03 03 02 01 01 01 01 03 03 +000080: 03 03 01 01 01 01 04 03 03 04 01 01 01 01 03 03 +000090: 03 03 01 01 01 04 03 02 02 03 04 01 01 01 03 03 +0000a0: 03 03 01 01 04 03 02 01 01 02 03 04 01 01 03 03 +0000b0: 03 03 01 04 03 02 01 01 01 01 02 03 04 01 03 03 +0000c0: 03 03 04 03 02 01 01 01 01 01 01 02 03 04 03 03 +0000d0: 03 03 03 02 01 01 01 01 01 01 01 01 02 03 03 03 +0000e0: 03 02 02 02 02 02 02 02 02 02 02 02 02 02 02 03 +0000f0: 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 +000100: 01 01 01 02 01 01 01 01 01 01 01 01 02 01 01 01 +000110: 01 03 03 01 03 03 03 03 03 03 03 03 01 03 03 01 +000120: 01 03 00 01 03 03 03 03 03 03 03 03 01 00 03 01 +000130: 01 03 03 01 04 04 04 04 04 04 04 04 01 03 03 01 +000140: 01 03 03 01 02 02 01 02 02 01 02 02 01 03 03 01 +000150: 01 03 03 01 02 02 01 02 02 01 02 02 01 03 03 01 +000160: 01 03 03 01 02 02 01 02 02 01 02 02 01 03 03 01 +000170: 01 03 03 01 02 02 01 02 02 01 02 02 01 03 03 01 +000180: 01 03 03 01 02 02 01 02 02 01 02 02 01 03 03 01 +000190: 01 03 03 01 02 02 01 02 02 01 02 02 01 03 03 01 +0001a0: 01 03 03 01 02 02 01 02 02 01 02 02 01 03 03 01 +0001b0: 01 03 03 01 02 02 01 02 02 01 02 02 01 03 03 01 +0001c0: 01 03 03 01 04 04 04 04 04 04 04 04 01 03 03 01 +0001d0: 01 03 00 01 03 03 03 03 03 03 03 03 01 00 03 01 +0001e0: 01 03 03 01 03 03 03 03 03 03 03 03 01 03 03 01 +0001f0: 01 01 01 02 01 01 01 01 01 01 01 01 02 01 01 01 \ No newline at end of file diff --git a/src/static/background/shop_stall.hex b/src/static/background/shop_stall.hex new file mode 100644 index 0000000..e156bd1 --- /dev/null +++ b/src/static/background/shop_stall.hex @@ -0,0 +1,202 @@ +;indices: 8 +;17 20 38 +;09 0a 14 +;60 2c 2c +;7a 48 41 +;c0 94 73 +;d7 b5 94 +;39 4a 50 +;81 97 96 + +000000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +000010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +000020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +000030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +000040: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +000050: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +000060: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +000070: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +000080: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +000090: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +0000a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +0000b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +0000c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +0000d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +0000e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 +0000f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 05 +000100: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +000110: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +000120: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +000130: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +000140: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +000150: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +000160: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +000170: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +000180: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +000190: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +0001a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +0001b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +0001c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +0001d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +0001e0: 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +0001f0: 05 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +000200: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 04 +000210: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 04 +000220: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 04 +000230: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 04 +000240: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 04 +000250: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 04 +000260: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 04 +000270: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 04 +000280: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 04 +000290: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 04 +0002a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 04 +0002b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 04 +0002c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 04 +0002d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 04 +0002e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 04 +0002f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 04 +000300: 04 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +000310: 04 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +000320: 04 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +000330: 04 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +000340: 04 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +000350: 04 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +000360: 04 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +000370: 04 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +000380: 04 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +000390: 04 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +0003a0: 04 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +0003b0: 04 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +0003c0: 04 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +0003d0: 04 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +0003e0: 04 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +0003f0: 04 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +000400: 05 01 04 05 05 05 05 05 05 05 05 05 05 05 05 05 +000410: 04 01 04 04 04 04 04 04 04 04 04 04 04 04 04 04 +000420: 04 01 02 02 02 02 02 02 02 02 02 02 02 02 02 02 +000430: 04 01 02 02 02 02 02 02 02 02 02 02 02 02 02 02 +000440: 04 01 02 02 02 02 02 02 02 02 02 02 03 03 03 03 +000450: 04 01 02 02 02 02 03 03 03 03 03 03 03 03 03 03 +000460: 04 01 02 02 03 03 03 03 03 03 03 03 03 03 03 03 +000470: 04 01 02 03 03 03 03 03 03 03 03 03 03 03 03 03 +000480: 04 01 02 03 03 03 03 03 03 03 03 03 03 03 03 03 +000490: 04 01 02 03 03 03 03 03 03 03 03 03 03 03 03 03 +0004a0: 04 01 03 03 03 03 03 03 03 03 03 03 03 03 03 03 +0004b0: 04 01 02 03 03 03 03 03 03 03 03 03 03 03 03 03 +0004c0: 04 01 03 03 03 03 03 03 03 03 03 03 03 03 03 03 +0004d0: 04 01 03 03 03 03 03 03 03 03 03 03 03 03 03 03 +0004e0: 04 01 03 03 03 03 03 03 03 03 03 03 03 03 03 03 +0004f0: 04 01 03 03 03 03 03 03 03 03 03 03 03 03 03 03 +000500: 00 00 00 00 00 00 00 00 00 01 01 01 01 01 01 01 +000510: 00 00 00 00 00 00 00 00 01 04 04 04 04 04 04 04 +000520: 00 00 00 00 00 00 00 00 01 04 04 04 04 04 04 04 +000530: 00 00 00 00 00 00 00 00 01 03 03 03 03 03 03 03 +000540: 00 00 00 00 00 00 00 00 01 03 03 03 03 03 03 03 +000550: 00 00 00 00 00 00 00 00 01 03 03 03 03 03 03 03 +000560: 00 00 00 00 00 00 00 00 01 03 03 03 03 03 03 03 +000570: 00 00 00 00 00 00 00 00 01 03 03 03 03 03 03 03 +000580: 00 00 00 00 00 00 00 00 01 03 03 03 03 03 03 03 +000590: 00 00 00 00 00 00 00 00 01 03 03 03 03 03 03 03 +0005a0: 00 00 00 00 00 00 00 00 01 03 03 03 03 03 03 03 +0005b0: 00 00 00 00 00 00 00 00 01 03 03 03 03 03 03 03 +0005c0: 00 00 00 00 00 00 00 00 01 03 03 03 03 03 03 03 +0005d0: 00 00 00 00 00 00 00 00 01 03 03 03 03 03 03 03 +0005e0: 00 00 00 00 00 00 00 00 01 03 03 03 03 03 03 03 +0005f0: 00 00 00 00 00 00 00 00 00 01 01 01 01 01 01 01 +000600: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 +000610: 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 +000620: 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 +000630: 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 +000640: 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 +000650: 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 +000660: 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 +000670: 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 +000680: 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 +000690: 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 +0006a0: 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 +0006b0: 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 +0006c0: 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 +0006d0: 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 +0006e0: 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 +0006f0: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 +000700: 05 05 05 05 05 05 05 05 05 05 05 05 05 04 01 05 +000710: 04 04 04 04 04 04 04 04 04 04 04 04 04 04 01 04 +000720: 02 02 02 02 02 02 02 02 02 02 02 02 02 02 01 04 +000730: 02 02 02 02 02 02 02 02 02 02 02 02 02 02 01 04 +000740: 03 03 03 03 02 02 02 02 02 02 02 02 02 02 01 04 +000750: 03 03 03 03 03 03 03 03 03 03 02 02 02 02 01 04 +000760: 03 03 03 03 03 03 03 03 03 03 03 03 02 02 01 04 +000770: 03 03 03 03 03 03 03 03 03 03 03 03 03 02 01 04 +000780: 03 03 03 03 03 03 03 03 03 03 03 03 03 02 01 04 +000790: 03 03 03 03 03 03 03 03 03 03 03 03 03 02 01 04 +0007a0: 03 03 03 03 03 03 03 03 03 03 03 03 03 03 01 04 +0007b0: 03 03 03 03 03 03 03 03 03 03 03 03 03 02 01 04 +0007c0: 03 03 03 03 03 03 03 03 03 03 03 03 03 03 01 04 +0007d0: 03 03 03 03 03 03 03 03 03 03 03 03 03 03 01 04 +0007e0: 03 03 03 03 03 03 03 03 03 03 03 03 03 03 01 04 +0007f0: 03 03 03 03 03 03 03 03 03 03 03 03 03 03 01 04 +000800: 01 01 01 01 01 01 01 00 00 00 00 00 00 00 00 00 +000810: 04 04 04 04 04 04 04 01 00 00 00 00 00 00 00 00 +000820: 04 04 04 04 04 04 04 01 00 00 00 00 00 00 00 00 +000830: 03 03 03 03 03 03 03 01 00 00 00 00 00 00 00 00 +000840: 03 03 03 03 03 03 03 01 00 00 00 00 00 00 00 00 +000850: 03 03 03 03 03 03 03 01 00 00 00 00 00 00 00 00 +000860: 03 03 03 03 03 03 03 01 00 00 00 00 00 00 00 00 +000870: 03 03 03 03 03 03 03 01 00 00 00 00 00 00 00 00 +000880: 03 03 03 03 03 03 03 01 00 00 00 00 00 00 00 00 +000890: 03 03 03 03 03 03 03 01 00 00 00 00 00 00 00 00 +0008a0: 03 03 03 03 03 03 03 01 00 00 00 00 00 00 00 00 +0008b0: 03 03 03 03 03 03 03 01 00 00 00 00 00 00 00 00 +0008c0: 03 03 03 03 03 03 03 01 00 00 00 00 00 00 00 00 +0008d0: 03 03 03 03 03 03 03 01 00 00 00 00 00 00 00 00 +0008e0: 03 03 03 03 03 03 03 01 00 00 00 00 00 00 00 00 +0008f0: 01 01 01 01 01 01 01 00 00 00 00 00 00 00 00 00 +000900: 01 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 +000910: 01 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 +000920: 01 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 +000930: 01 07 06 06 06 06 06 06 06 06 06 06 06 06 06 06 +000940: 01 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 +000950: 01 07 06 06 06 06 06 06 06 06 06 06 06 06 06 06 +000960: 01 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 +000970: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 +000980: 01 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 +000990: 01 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 +0009a0: 01 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 +0009b0: 01 07 06 06 06 06 06 06 06 06 06 06 06 06 06 06 +0009c0: 01 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 +0009d0: 01 07 06 06 06 06 06 06 06 06 06 06 06 06 06 06 +0009e0: 01 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 +0009f0: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 +000a00: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 +000a10: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 +000a20: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 +000a30: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 +000a40: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 +000a50: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 +000a60: 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 +000a70: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 +000a80: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 +000a90: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 +000aa0: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 +000ab0: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 +000ac0: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 +000ad0: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 +000ae0: 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 +000af0: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 +000b00: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 01 +000b10: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 01 +000b20: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 01 +000b30: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 07 01 +000b40: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 01 +000b50: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 07 01 +000b60: 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 01 +000b70: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 +000b80: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 01 +000b90: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 01 +000ba0: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 01 +000bb0: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 07 01 +000bc0: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 01 +000bd0: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 07 01 +000be0: 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 01 +000bf0: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 \ No newline at end of file diff --git a/src/static/epic.py b/src/static/epic.py new file mode 100644 index 0000000..9f697ef --- /dev/null +++ b/src/static/epic.py @@ -0,0 +1,41 @@ +#!/bin/python3 +import re + +# Read in the first file and extract the id and image filename for each tile +tile_info = {} +with open('stuff1.tsx', 'r') as f: + for line in f: + id_match = re.match(r'', line.strip()) + if id_match: + tile_id = int(id_match.group(1)) + else: + image_match = re.search(r'source=".*?/(\w+_\d+\.png)"', line.strip()) + if image_match: + image_filename = image_match.group(1) + tile_info[tile_id] = image_filename + +# Read in the second file and extract the size for each tile +tile_sizes = {} +with open('tilemap.h', 'r') as f: + for line in f: + size_match = re.match(r'#define HH_TM_(\w+)_OFFSET (\d+)', line.strip(), re.IGNORECASE) + if size_match: + tile_type = size_match.group(1).lower() + size = int(size_match.group(2)) + tile_sizes[tile_type] = size + +# Read in the third file, update the values, and write to the output file +with open('map.csv', 'r') as input_file, open('out.csv', 'w') as output_file: + for line in input_file: +# #OK + tile_ids = [int(tile_id) for tile_id in line.strip().split(',')] + updated_tile_ids = [] + for tile_id in tile_ids: + image_filename = re.match(r'(\w+)_(\d+)\.png', tile_info[tile_id]) + tile_type = image_filename.group(1).lower() + offset = int(image_filename.group(2)) + size = tile_sizes[tile_type] + updated_tile_id = offset + size + updated_tile_ids.append(str(updated_tile_id)) + output_file.write(','.join(updated_tile_ids) + '\n') + diff --git a/src/static/makefile b/src/static/makefile index 6025a55..9a17326 100644 --- a/src/static/makefile +++ b/src/static/makefile @@ -5,8 +5,14 @@ TILEDMK := ../../scripts/tiled.mk.awk TILEMAP2TILED := ../../scripts/tilemap2tiled INPUT += air.hex \ - shop.hex \ - slime.hex \ + background/bricks.hex \ + background/crates.hex \ + background/shop_stall.hex \ + background/shop.hex \ + background/title_screen_icon.hex \ + foreground/title_screen_letteres_large.hex\ + foreground/slime.hex \ + foreground/font.hex \ world.hex USER_META += world.h -- cgit v1.2.3 From 30ed47e6ea66872951140711323844698a278fff Mon Sep 17 00:00:00 2001 From: UnavailableDev Date: Wed, 5 Apr 2023 20:43:22 +0200 Subject: Dynamic tilemap works --- src/engine/player_controller.c | 13 +++++---- src/engine/sprite_controller.h | 10 ++++--- src/static/foreground/bullet.hex | 58 ++++++++++++++++++++++++++++++++++++++++ src/static/foreground/gozer.hex | 39 +++++++++++++++++++++++++++ src/static/makefile | 6 +++-- 5 files changed, 113 insertions(+), 13 deletions(-) create mode 100644 src/static/foreground/bullet.hex create mode 100644 src/static/foreground/gozer.hex (limited to 'src/static/makefile') diff --git a/src/engine/player_controller.c b/src/engine/player_controller.c index 1b4eec8..807037a 100644 --- a/src/engine/player_controller.c +++ b/src/engine/player_controller.c @@ -18,16 +18,15 @@ void hh_player_actions() { .radius = 16, .pos = (vec2){128+16,32}, .vel = (vec2){0,0}, - .size = (vec2){32,32}, + .size = (vec2){16,32}, .render = { - .frame0 = HH_TM_SLIME_OFFSET, + .frame0 = HH_TM_GOZER_OFFSET, .palette = 3, - .ppu_foreground_index = 0, .fam = (hh_s_ppu_loc_fam_entry){ .horizontal_flip = false, .vertical_flip = false, .palette_index = 3, - .tilemap_index = HH_TM_SLIME_OFFSET, + .tilemap_index = HH_TM_GOZER_OFFSET, } } }, player_new = {0}; @@ -41,13 +40,13 @@ void hh_player_actions() { .pos = (vec2){-16,-16}, .vel = (vec2){0,0}, .render = { - .frame0 = 84, + .frame0 = HH_TM_BULLET_OFFSET, .palette = 3, .fam = (hh_s_ppu_loc_fam_entry){ .horizontal_flip = false, .vertical_flip = false, - .palette_index = 7, - .tilemap_index = 84, + .palette_index = 3, + .tilemap_index = HH_TM_BULLET_OFFSET, } } }; diff --git a/src/engine/sprite_controller.h b/src/engine/sprite_controller.h index 244181c..d89b068 100644 --- a/src/engine/sprite_controller.h +++ b/src/engine/sprite_controller.h @@ -12,7 +12,7 @@ //TODO: pack data inside of sprite_palette LUT //HH_PPU_PALETTE_COUNT #define HH_SPRITE_COUNT 80 -#define HH_PAL_IDX_SKY 512 +#define HH_PAL_IDX_SKY 0 #define HH_PAL_IDX_BRICK 1 const static uint8_t hh_g_sprite_palette[HH_SPRITE_COUNT] = { //TODO: FIGURE OUT HOW TO DEAL WITH DYNAMIC PALLETS @@ -70,9 +70,9 @@ const static hh_ppu_loc_palette_table_t hh_g_palette = { {0x4,0x2,0x5}, {0x7,0x3,0x7}, {0xe,0xe,0xe}, - {0xe,0xe,0xe}, //elemental - {0x0,0x0,0x0}, - {0x0,0x0,0x0}}, + {0x7,0x2,0x3}, //elemental + {0xc,0x5,0x3}, + {0xe,0xc,0x7}}, {//crates {0x5,0x7,0x7}, {0x3,0x1,0x2}, @@ -113,7 +113,9 @@ const static hh_ppu_loc_palette_table_t hh_g_palette = { void hh_setup_palettes(); +//TODO: UPDATE THIS FUNCTION /** @brief return palette index that belongs to tilemap index */ uint8_t hh_get_palette(uint8_t tile_idx); +//TODO: UPDATE THIS FUNCTION bool hh_colidable(uint8_t tile_idx); diff --git a/src/static/foreground/bullet.hex b/src/static/foreground/bullet.hex new file mode 100644 index 0000000..88f5b75 --- /dev/null +++ b/src/static/foreground/bullet.hex @@ -0,0 +1,58 @@ +;indices: 8 +;17 20 38 +;00 00 00 +;00 00 00 +;00 00 00 +;00 00 00 +;75 24 38 +;cf 57 3c +;e8 c1 70 + +000000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +000010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +000020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +000030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +000040: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +000050: 00 00 00 00 00 00 00 00 00 05 00 05 05 05 00 00 +000060: 00 00 00 00 00 00 00 05 05 06 05 06 06 07 05 00 +000070: 00 00 00 00 00 00 05 06 05 05 06 06 07 07 07 05 +000080: 00 00 00 00 00 05 06 05 05 06 06 07 07 07 07 05 +000090: 00 00 00 00 00 00 05 05 06 05 06 06 06 07 05 00 +0000a0: 00 00 00 00 00 00 00 00 05 00 05 05 05 05 00 00 +0000b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +0000c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +0000d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +0000e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +0000f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +000100: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +000110: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +000120: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +000130: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +000140: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +000150: 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 00 +000160: 00 00 00 00 00 00 05 06 05 00 00 00 00 00 00 00 +000170: 00 00 00 00 00 00 05 05 06 05 00 00 00 00 00 00 +000180: 00 00 00 00 00 05 06 05 05 05 00 00 00 00 00 00 +000190: 00 00 00 00 00 00 05 06 05 06 05 00 00 00 00 00 +0001a0: 00 00 00 00 00 05 06 06 06 05 00 00 00 00 00 00 +0001b0: 00 00 00 00 00 05 06 07 06 06 05 00 00 00 00 00 +0001c0: 00 00 00 00 00 05 06 07 07 06 05 00 00 00 00 00 +0001d0: 00 00 00 00 00 05 07 07 07 07 05 00 00 00 00 00 +0001e0: 00 00 00 00 00 00 05 07 07 05 00 00 00 00 00 00 +0001f0: 00 00 00 00 00 00 00 05 05 00 00 00 00 00 00 00 +000200: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +000210: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +000220: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +000230: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +000240: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +000250: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +000260: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +000270: 00 00 00 00 00 00 05 00 00 05 00 00 00 00 00 00 +000280: 00 00 00 00 00 00 00 05 05 06 05 00 00 00 00 00 +000290: 00 00 00 00 00 00 05 06 05 05 05 05 05 00 00 00 +0002a0: 00 00 00 00 00 00 00 05 05 06 06 05 06 05 00 00 +0002b0: 00 00 00 00 00 00 00 00 06 06 06 06 06 05 05 00 +0002c0: 00 00 00 00 00 00 00 00 00 05 06 06 06 07 07 05 +0002d0: 00 00 00 00 00 00 00 00 00 00 05 06 07 07 07 05 +0002e0: 00 00 00 00 00 00 00 00 00 00 00 05 05 07 07 05 +0002f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 05 05 00 \ No newline at end of file diff --git a/src/static/foreground/gozer.hex b/src/static/foreground/gozer.hex new file mode 100644 index 0000000..70a6b7f --- /dev/null +++ b/src/static/foreground/gozer.hex @@ -0,0 +1,39 @@ +;indices: 5 +;17 20 38 +;10 14 1f +;40 27 51 +;7a 36 7b +;eb ed e9 + +000000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +000010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +000020: 00 00 00 00 00 00 01 01 01 01 01 00 00 00 00 00 +000030: 00 00 00 00 01 01 03 03 03 03 03 01 01 00 00 00 +000040: 00 00 00 01 03 03 03 03 03 03 03 03 03 01 00 00 +000050: 00 00 01 03 03 03 03 03 03 03 03 03 03 03 01 00 +000060: 00 01 03 03 03 03 03 03 02 02 02 02 02 02 03 01 +000070: 00 01 03 03 03 03 03 02 01 01 01 01 02 02 02 01 +000080: 01 03 03 02 03 03 02 01 01 01 01 01 01 01 01 01 +000090: 01 03 03 02 03 01 01 01 01 01 01 01 01 01 01 01 +0000a0: 03 03 02 03 03 01 01 01 01 01 04 01 01 04 01 01 +0000b0: 03 02 02 02 03 01 01 01 01 01 04 01 01 04 01 01 +0000c0: 02 01 00 01 02 01 01 01 01 01 04 01 01 04 01 00 +0000d0: 02 00 00 00 01 02 01 01 01 01 01 01 01 01 01 00 +0000e0: 00 00 00 00 01 02 01 01 01 01 01 01 01 01 00 00 +0000f0: 00 00 00 00 00 01 01 02 01 01 01 01 01 00 00 00 +000100: 00 00 00 00 00 00 00 01 02 02 02 01 00 00 00 00 +000110: 00 00 00 00 00 00 01 03 01 01 01 00 00 00 00 00 +000120: 00 00 00 00 00 00 01 03 03 03 01 00 00 00 00 00 +000130: 00 00 00 00 00 01 03 03 03 03 03 02 00 00 00 00 +000140: 00 00 00 00 00 01 03 03 03 03 03 02 00 00 01 01 +000150: 00 00 00 00 01 03 03 03 03 03 03 02 00 00 01 01 +000160: 00 00 00 00 01 03 03 03 03 03 03 03 02 00 00 00 +000170: 00 00 00 00 01 03 01 01 03 03 03 03 02 00 00 00 +000180: 00 00 00 00 01 02 01 01 03 03 03 03 03 01 00 00 +000190: 00 00 00 01 02 01 02 02 02 03 03 02 02 01 00 00 +0001a0: 00 00 00 01 02 02 01 02 02 02 02 02 02 01 00 00 +0001b0: 00 00 01 02 02 02 01 01 01 01 01 01 01 02 01 00 +0001c0: 00 00 01 02 02 01 01 01 02 02 01 01 02 02 01 00 +0001d0: 00 00 00 01 01 00 01 01 01 01 01 01 01 00 00 01 +0001e0: 00 00 00 00 00 00 01 01 00 00 01 01 00 00 00 00 +0001f0: 00 00 00 00 00 00 01 01 00 00 01 01 00 00 00 00 \ No newline at end of file diff --git a/src/static/makefile b/src/static/makefile index 9a17326..9c75bca 100644 --- a/src/static/makefile +++ b/src/static/makefile @@ -11,9 +11,11 @@ INPUT += air.hex \ background/shop.hex \ background/title_screen_icon.hex \ foreground/title_screen_letteres_large.hex\ + foreground/bullet.hex \ + foreground/gozer.hex \ foreground/slime.hex \ - foreground/font.hex \ - world.hex + foreground/font.hex + # world.hex USER_META += world.h OUT_BIN := $(patsubst %.hex,%.bin, $(INPUT)) -- cgit v1.2.3