From 6d3f5b5e28d4eac79cdc7b35c6d6d5e94e21a254 Mon Sep 17 00:00:00 2001 From: Lukas Krickl Date: Wed, 2 Jul 2025 05:52:39 +0200 Subject: [PATCH] oam: Enabled 8x16 objects For this change I had to split up bank 8800 into 8800 and 8C00. Updated the png converter script to convert 8800-8C00 into 8x16 object compatible tiles. Updated map loader to contain an additional pointer gfx. Updated map generator to write the additional pointer to gfx. Updated sprite index for player and demo actors. --- makefile | 3 +- maps/default_map.s | 1 + src/defs.s | 5 +- src/map.s | 8 + src/player.s | 2 +- src/tiles.inc | 4 + src/unit.s | 39 ++- src/unit_demo.s | 4 +- src/video.s | 7 +- tiles/bank8800.inc | 794 ++++++--------------------------------------- tiles/bank8C00.inc | 576 ++++++++++++++++++++++++++++++++ tools/png2chr.py | 39 ++- tools/tms2map.py | 7 +- 13 files changed, 776 insertions(+), 713 deletions(-) create mode 100644 tiles/bank8C00.inc diff --git a/makefile b/makefile index 8f9b4bb..30f3e12 100644 --- a/makefile +++ b/makefile @@ -12,7 +12,8 @@ test: .PHONY: tiles tiles: ./tools/png2chr.py assets/tiles/bank8000.png > tiles/bank8000.inc - ./tools/png2chr.py assets/tiles/bank8800.png > tiles/bank8800.inc + ./tools/png2chr.py assets/tiles/bank8800.png 16 > tiles/bank8800.inc + ./tools/png2chr.py assets/tiles/bank8C00.png > tiles/bank8C00.inc ./tools/png2chr.py assets/tiles/bank9000.png > tiles/bank9000.inc .PHONY: maps diff --git a/maps/default_map.s b/maps/default_map.s index 112449d..02c20b6 100644 --- a/maps/default_map.s +++ b/maps/default_map.s @@ -6,6 +6,7 @@ dw st_map_null dw default_map_actor_table dw bank8000 dw bank8800 +dw bank8C00 dw bank9000 default_map_bg: diff --git a/src/defs.s b/src/defs.s index af6561e..a2a74d4 100644 --- a/src/defs.s +++ b/src/defs.s @@ -255,10 +255,13 @@ ; maps to map property actor_table_ptr .de map_actor_table_ptr, 2 ; pointers to tile banks to be loaded - ; maps to map property tile_bank0, tile_bank1, tile_bank2 + ; maps to map property tile_bank0, tile_bank1, tile_bank2, tile_bank3 + ; note that tile_bank1 and tile_bank2 are 128 bytes each + ; whereas bank0 and bank3 are 256 bytes .de map_tile_bank0_ptr, 2 .de map_tile_bank1_ptr, 2 .de map_tile_bank2_ptr, 2 +.de map_tile_bank3_ptr, 2 ; map actor table struct diff --git a/src/map.s b/src/map.s index 673ba6b..9096eb8 100644 --- a/src/map.s +++ b/src/map.s @@ -263,6 +263,14 @@ map_tile_banks_load: push hl call tiles_load_bank8800 + pop hl + ld a, [hl+] + ld e, a + ld a, [hl+] + ld d, a + push hl + call tiles_load_bank8C00 + pop hl ld a, [hl+] ld e, a diff --git a/src/player.s b/src/player.s index b0bf78b..8063d96 100644 --- a/src/player.s +++ b/src/player.s @@ -47,7 +47,7 @@ unit_player: act_equipment_empty act_effects_empty act_st_def NULL, NULL, st_unit_player_update, st_unit_idle - act_def_meta unit_draw, 0x84, 0, NULL + act_def_meta unit_draw, 0x88, 0, NULL st_unit_player_update: st_def 0x00, unit_player_update, st_unit_player_update diff --git a/src/tiles.inc b/src/tiles.inc index 741df9d..c27ad5b 100644 --- a/src/tiles.inc +++ b/src/tiles.inc @@ -16,6 +16,10 @@ bank8800: #include "bank8800.inc" bank8800_end: +bank8C00: +#include "bank8C00.inc" +bank8C00_end: + bank9000: #include "bank9000.inc" bank9000_end: diff --git a/src/unit.s b/src/unit.s index 21f1f0b..735f40b 100644 --- a/src/unit.s +++ b/src/unit.s @@ -63,6 +63,37 @@ unit_update_draw: call_hl ret + ; gets the left tile offset + ; for object 1 + ; based on the y flip of oam + ; inputs: + ; a: oam flags + ; returns: + ; a: x-offset +get_left_tile_offset1: + and a, OAM_FXFLIP + jr z, @not_set REL + ld a, 8 + ret +@not_set: + xor a, a + ret + + ; gets the left tile offset + ; for object 2 + ; based on the y flip of oam + ; inputs: + ; a: oam flags + ; returns: + ; a: x-offset +get_left_tile_offset2: + and a, OAM_FXFLIP + jr z, @not_set REL + xor a, a + ret +@not_set: + ld a, 8 + ret ; inputs ; de: actor @@ -75,7 +106,7 @@ unit_draw: ld b, a ; tile ld a, [hl] ld c, a ; flags - ld a, 0 ; no x-offset + call get_left_tile_offset1 push bc call unit_generic_draw @@ -83,8 +114,10 @@ unit_draw: pop bc pop de push de - inc b ; b++ - ld a, 8 ; 8 x-offset + inc b + inc b ; b+=2 + ld a, c ; a = flags + call get_left_tile_offset2 call unit_generic_draw pop de diff --git a/src/unit_demo.s b/src/unit_demo.s index 396884b..be3058c 100644 --- a/src/unit_demo.s +++ b/src/unit_demo.s @@ -49,7 +49,7 @@ unit_demo_2: act_equipment_empty act_effects_empty act_st_def NULL, NULL, st_unit_demo_1_cpu_update_idle, st_unit_idle - act_def_meta unit_draw, 0x84, 0, NULL + act_def_meta unit_draw, 0x88, 0, NULL unit_demo_3: st_def 0x00, unit_demo_1_init, st_unit_demo_1_cpu_update @@ -61,7 +61,7 @@ unit_demo_3: act_equipment_empty act_effects_empty act_st_def NULL, NULL, st_unit_demo_1_cpu_update, st_unit_idle - act_def_meta unit_draw, 0x84, 0, NULL + act_def_meta unit_draw, 0x88, 0, NULL st_unit_demo_1_cpu_update: diff --git a/src/video.s b/src/video.s index 2db9ea0..5abfbfa 100644 --- a/src/video.s +++ b/src/video.s @@ -75,7 +75,7 @@ lcd_off: ; turns on the lcd lcd_on: - ld a, LCDCF_ON | LCDCF_BGON | LCDCF_OBJON | LCDF_WINDOWON | LCDF_WINBANKSELECT + ld a, LCDCF_ON | LCDCF_BGON | LCDCF_OBJON | LCDF_WINDOWON | LCDF_WINBANKSELECT | LCDF_OBJ_SIZE ld [RLCD], a ret @@ -125,6 +125,11 @@ tiles_load_bank8800: ld bc, bank8800_end - bank8800 jp memcpy +tiles_load_bank8C00: + ld hl, VRAM8800+0x400 + ld bc, bank8C00_end - bank8C00 + jp memcpy + tiles_load_bank9000: ld hl, VRAM9000 ld bc, bank9000_end - bank9000 diff --git a/tiles/bank8800.inc b/tiles/bank8800.inc index da2dacf..a33b35b 100644 --- a/tiles/bank8800.inc +++ b/tiles/bank8800.inc @@ -7,6 +7,14 @@ .chr 13333310 .chr 10333000 .chr 00333000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 ; tile 1 .chr 00333000 .chr 00221000 @@ -16,6 +24,14 @@ .chr 03333300 .chr 03303300 .chr 03000300 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 ; tile 2 .chr 01000100 .chr 01333100 @@ -25,97 +41,6 @@ .chr 13333310 .chr 10333000 .chr 00333000 -; tile 3 -.chr 00000000 -.chr 00033000 -.chr 00033000 -.chr 00033000 -.chr 00000000 -.chr 00033000 -.chr 00000000 -.chr 00000000 -; tile 4 -.chr 00000033 -.chr 00000033 -.chr 00003333 -.chr 00003333 -.chr 00333333 -.chr 00333333 -.chr 00002222 -.chr 00002222 -; tile 5 -.chr 00000000 -.chr 00000000 -.chr 33001100 -.chr 33001100 -.chr 33331100 -.chr 33331100 -.chr 11001100 -.chr 11001100 -; tile 6 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -; tile 7 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -; tile 8 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -; tile 9 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -; tile 10 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -; tile 11 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -; tile 12 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -; tile 13 .chr 00000000 .chr 00000000 .chr 00000000 @@ -124,52 +49,15 @@ .chr 00000000 .chr 00000000 .chr 00000000 -; tile 14 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -; tile 15 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -; tile 16 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -; tile 17 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -; tile 18 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 +; tile 3 .chr 00000000 +.chr 00033000 +.chr 00033000 +.chr 00033000 .chr 00000000 +.chr 00033000 .chr 00000000 .chr 00000000 -; tile 19 .chr 00000000 .chr 00000000 .chr 00000000 @@ -178,7 +66,15 @@ .chr 00000000 .chr 00000000 .chr 00000000 -; tile 20 +; tile 4 +.chr 00000033 +.chr 00000033 +.chr 00003333 +.chr 00003333 +.chr 00333333 +.chr 00333333 +.chr 00002222 +.chr 00002222 .chr 00003333 .chr 00003333 .chr 00333333 @@ -187,7 +83,15 @@ .chr 00333333 .chr 00003333 .chr 00003333 -; tile 21 +; tile 5 +.chr 00000000 +.chr 00000000 +.chr 33001100 +.chr 33001100 +.chr 33331100 +.chr 33331100 +.chr 11001100 +.chr 11001100 .chr 33001100 .chr 33001100 .chr 33331100 @@ -196,205 +100,8 @@ .chr 33331100 .chr 33001100 .chr 33001100 -; tile 22 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -; tile 23 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -; tile 24 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -; tile 25 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -; tile 26 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -; tile 27 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -; tile 28 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -; tile 29 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -; tile 30 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -; tile 31 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -; tile 32 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -; tile 33 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -; tile 34 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -; tile 35 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -; tile 36 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -; tile 37 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -; tile 38 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -; tile 39 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -; tile 40 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -; tile 41 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -; tile 42 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -; tile 43 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 +; tile 6 .chr 00000000 -; tile 44 .chr 00000000 .chr 00000000 .chr 00000000 @@ -403,7 +110,6 @@ .chr 00000000 .chr 00000000 .chr 00000000 -; tile 45 .chr 00000000 .chr 00000000 .chr 00000000 @@ -411,8 +117,8 @@ .chr 00000000 .chr 00000000 .chr 00000000 +; tile 7 .chr 00000000 -; tile 46 .chr 00000000 .chr 00000000 .chr 00000000 @@ -421,7 +127,6 @@ .chr 00000000 .chr 00000000 .chr 00000000 -; tile 47 .chr 00000000 .chr 00000000 .chr 00000000 @@ -429,8 +134,8 @@ .chr 00000000 .chr 00000000 .chr 00000000 +; tile 8 .chr 00000000 -; tile 48 .chr 00000000 .chr 00000000 .chr 00000000 @@ -439,7 +144,6 @@ .chr 00000000 .chr 00000000 .chr 00000000 -; tile 49 .chr 00000000 .chr 00000000 .chr 00000000 @@ -447,8 +151,8 @@ .chr 00000000 .chr 00000000 .chr 00000000 +; tile 9 .chr 00000000 -; tile 50 .chr 00000000 .chr 00000000 .chr 00000000 @@ -457,7 +161,6 @@ .chr 00000000 .chr 00000000 .chr 00000000 -; tile 51 .chr 00000000 .chr 00000000 .chr 00000000 @@ -465,8 +168,8 @@ .chr 00000000 .chr 00000000 .chr 00000000 +; tile 10 .chr 00000000 -; tile 52 .chr 00000000 .chr 00000000 .chr 00000000 @@ -475,7 +178,6 @@ .chr 00000000 .chr 00000000 .chr 00000000 -; tile 53 .chr 00000000 .chr 00000000 .chr 00000000 @@ -483,8 +185,8 @@ .chr 00000000 .chr 00000000 .chr 00000000 +; tile 11 .chr 00000000 -; tile 54 .chr 00000000 .chr 00000000 .chr 00000000 @@ -493,7 +195,6 @@ .chr 00000000 .chr 00000000 .chr 00000000 -; tile 55 .chr 00000000 .chr 00000000 .chr 00000000 @@ -501,8 +202,8 @@ .chr 00000000 .chr 00000000 .chr 00000000 +; tile 12 .chr 00000000 -; tile 56 .chr 00000000 .chr 00000000 .chr 00000000 @@ -511,7 +212,6 @@ .chr 00000000 .chr 00000000 .chr 00000000 -; tile 57 .chr 00000000 .chr 00000000 .chr 00000000 @@ -519,8 +219,8 @@ .chr 00000000 .chr 00000000 .chr 00000000 +; tile 13 .chr 00000000 -; tile 58 .chr 00000000 .chr 00000000 .chr 00000000 @@ -529,7 +229,6 @@ .chr 00000000 .chr 00000000 .chr 00000000 -; tile 59 .chr 00000000 .chr 00000000 .chr 00000000 @@ -537,17 +236,46 @@ .chr 00000000 .chr 00000000 .chr 00000000 +; tile 14 .chr 00000000 -; tile 60 +.chr 00033333 +.chr 00322222 +.chr 03222222 +.chr 03222222 +.chr 03221222 +.chr 03221222 +.chr 03221222 +.chr 03221222 +.chr 03221222 +.chr 03222222 +.chr 03222222 +.chr 03222222 +.chr 00322222 +.chr 00033333 .chr 00000000 +; tile 15 .chr 00000000 +.chr 33333000 +.chr 22222300 +.chr 22222230 +.chr 22222230 +.chr 21222230 +.chr 21222230 +.chr 21222230 +.chr 21222230 +.chr 21222230 +.chr 22222230 +.chr 22222230 +.chr 22222230 +.chr 22222300 +.chr 33333000 .chr 00000000 +; tile 16 .chr 00000000 .chr 00000000 .chr 00000000 .chr 00000000 .chr 00000000 -; tile 61 .chr 00000000 .chr 00000000 .chr 00000000 @@ -556,16 +284,15 @@ .chr 00000000 .chr 00000000 .chr 00000000 -; tile 62 .chr 00000000 .chr 00000000 .chr 00000000 +; tile 17 .chr 00000000 .chr 00000000 .chr 00000000 .chr 00000000 .chr 00000000 -; tile 63 .chr 00000000 .chr 00000000 .chr 00000000 @@ -574,16 +301,15 @@ .chr 00000000 .chr 00000000 .chr 00000000 -; tile 64 .chr 00000000 .chr 00000000 .chr 00000000 +; tile 18 .chr 00000000 .chr 00000000 .chr 00000000 .chr 00000000 .chr 00000000 -; tile 65 .chr 00000000 .chr 00000000 .chr 00000000 @@ -592,25 +318,15 @@ .chr 00000000 .chr 00000000 .chr 00000000 -; tile 66 -.chr 22222222 -.chr 22222222 -.chr 22222222 -.chr 22222222 -.chr 22222222 -.chr 22222222 -.chr 22222222 -.chr 22222222 -; tile 67 .chr 00000000 .chr 00000000 .chr 00000000 +; tile 19 .chr 00000000 .chr 00000000 .chr 00000000 .chr 00000000 .chr 00000000 -; tile 68 .chr 00000000 .chr 00000000 .chr 00000000 @@ -619,16 +335,15 @@ .chr 00000000 .chr 00000000 .chr 00000000 -; tile 69 .chr 00000000 .chr 00000000 .chr 00000000 +; tile 20 .chr 00000000 .chr 00000000 .chr 00000000 .chr 00000000 .chr 00000000 -; tile 70 .chr 00000000 .chr 00000000 .chr 00000000 @@ -637,16 +352,15 @@ .chr 00000000 .chr 00000000 .chr 00000000 -; tile 71 .chr 00000000 .chr 00000000 .chr 00000000 +; tile 21 .chr 00000000 .chr 00000000 .chr 00000000 .chr 00000000 .chr 00000000 -; tile 72 .chr 00000000 .chr 00000000 .chr 00000000 @@ -655,16 +369,15 @@ .chr 00000000 .chr 00000000 .chr 00000000 -; tile 73 .chr 00000000 .chr 00000000 .chr 00000000 +; tile 22 .chr 00000000 .chr 00000000 .chr 00000000 .chr 00000000 .chr 00000000 -; tile 74 .chr 00000000 .chr 00000000 .chr 00000000 @@ -673,16 +386,15 @@ .chr 00000000 .chr 00000000 .chr 00000000 -; tile 75 .chr 00000000 .chr 00000000 .chr 00000000 +; tile 23 .chr 00000000 .chr 00000000 .chr 00000000 .chr 00000000 .chr 00000000 -; tile 76 .chr 00000000 .chr 00000000 .chr 00000000 @@ -691,16 +403,15 @@ .chr 00000000 .chr 00000000 .chr 00000000 -; tile 77 .chr 00000000 .chr 00000000 .chr 00000000 +; tile 24 .chr 00000000 .chr 00000000 .chr 00000000 .chr 00000000 .chr 00000000 -; tile 78 .chr 00000000 .chr 00000000 .chr 00000000 @@ -709,340 +420,27 @@ .chr 00000000 .chr 00000000 .chr 00000000 -; tile 79 .chr 00000000 .chr 00000000 .chr 00000000 +; tile 25 .chr 00000000 .chr 00000000 .chr 00000000 .chr 00000000 .chr 00000000 -; tile 80 .chr 00000000 -.chr 00333330 -.chr 03333333 -.chr 03300333 -.chr 03303033 -.chr 03330033 -.chr 03333333 -.chr 00333330 -; tile 81 .chr 00000000 -.chr 00003330 -.chr 00033330 -.chr 00030330 -.chr 00000330 -.chr 00000330 -.chr 00000330 -.chr 00000330 -; tile 82 .chr 00000000 -.chr 03333333 -.chr 03333333 -.chr 00000033 -.chr 03333333 -.chr 03300000 -.chr 03333333 -.chr 03333333 -; tile 83 .chr 00000000 -.chr 00333330 -.chr 00333333 -.chr 00000033 -.chr 00033333 -.chr 00000033 -.chr 00333333 -.chr 00333330 -; tile 84 .chr 00000000 -.chr 00330033 -.chr 00330033 -.chr 00330033 -.chr 00333333 -.chr 00000033 -.chr 00000033 -.chr 00000033 -; tile 85 .chr 00000000 -.chr 03333333 -.chr 03333333 -.chr 03300000 -.chr 03333333 -.chr 00000033 -.chr 03333333 -.chr 03333333 -; tile 86 -.chr 00000000 -.chr 03333333 -.chr 03333333 -.chr 03300000 -.chr 03333333 -.chr 03333333 -.chr 03300033 -.chr 03333333 -; tile 87 -.chr 00000000 -.chr 03333330 -.chr 03333330 -.chr 00000330 -.chr 00000330 -.chr 00000330 -.chr 00000330 -.chr 00000330 -; tile 88 -.chr 00000000 -.chr 00333330 -.chr 03333333 -.chr 03300033 -.chr 00333330 -.chr 03300033 -.chr 03333333 -.chr 00333330 -; tile 89 -.chr 00000000 -.chr 00333330 -.chr 03333333 -.chr 03000033 -.chr 03333333 -.chr 00000033 -.chr 03333333 -.chr 03333330 -; tile 90 -.chr 00000000 -.chr 00333330 -.chr 03333333 -.chr 03300033 -.chr 03333333 -.chr 03300033 -.chr 03300033 -.chr 03300033 -; tile 91 .chr 00000000 -.chr 03333300 -.chr 03333330 -.chr 03300330 -.chr 03333300 -.chr 03333330 -.chr 03300330 -.chr 03333300 -; tile 92 -.chr 00000000 -.chr 00333330 -.chr 03333330 -.chr 03330000 -.chr 03300000 -.chr 03330000 -.chr 03333330 -.chr 00333330 -; tile 93 -.chr 00000000 -.chr 03333330 -.chr 03333333 -.chr 03300033 -.chr 03300033 -.chr 03300033 -.chr 03333333 -.chr 03333330 -; tile 94 -.chr 00000000 -.chr 03333330 -.chr 03333330 -.chr 03300000 -.chr 03333300 -.chr 03300000 -.chr 03333330 -.chr 03333330 -; tile 95 -.chr 00000000 -.chr 03333330 -.chr 03333330 -.chr 03300000 -.chr 03333300 -.chr 03333300 -.chr 03300000 -.chr 03300000 -; tile 96 -.chr 00000000 -.chr 00333330 -.chr 03333330 -.chr 03300000 -.chr 03300333 -.chr 03300033 -.chr 03333333 -.chr 00333330 -; tile 97 -.chr 00000000 -.chr 03300330 -.chr 03300330 -.chr 03300330 -.chr 03333330 -.chr 03300330 -.chr 03300330 -.chr 03300330 -; tile 98 -.chr 00000000 -.chr 03333330 -.chr 00033000 -.chr 00033000 -.chr 00033000 -.chr 00033000 -.chr 00033000 -.chr 03333330 -; tile 99 -.chr 00000000 -.chr 00033330 -.chr 00033330 -.chr 00000330 -.chr 00000330 -.chr 00003330 -.chr 00333330 -.chr 00333300 -; tile 100 .chr 00000000 -.chr 03303300 -.chr 03333000 -.chr 03330000 -.chr 03300000 -.chr 03330000 -.chr 03333000 -.chr 03303300 -; tile 101 -.chr 00000000 -.chr 03330000 -.chr 03330000 -.chr 03330000 -.chr 03330000 -.chr 03330000 -.chr 03333330 -.chr 03333330 -; tile 102 -.chr 00000000 -.chr 03300033 -.chr 03330333 -.chr 03333333 -.chr 03333333 -.chr 03300033 -.chr 03300033 -.chr 03300033 -; tile 103 -.chr 00000000 -.chr 03300330 -.chr 03330330 -.chr 03333330 -.chr 03333330 -.chr 03303330 -.chr 03300330 -.chr 03300330 -; tile 104 -.chr 00000000 -.chr 00333330 -.chr 03333333 -.chr 03300033 -.chr 03300033 -.chr 03300033 -.chr 03333333 -.chr 00333330 -; tile 105 -.chr 00000000 -.chr 03333330 -.chr 03300330 -.chr 03300330 -.chr 03333330 -.chr 03300000 -.chr 03300000 -.chr 03300000 -; tile 106 -.chr 00000000 -.chr 00333300 -.chr 03333330 -.chr 03300330 -.chr 03300330 -.chr 03300330 -.chr 03333300 -.chr 00333030 -; tile 107 .chr 00000000 -.chr 03333300 -.chr 03300330 -.chr 03300330 -.chr 03333300 -.chr 03333300 -.chr 03300330 -.chr 03300330 -; tile 108 -.chr 00000000 -.chr 00333330 -.chr 03333330 -.chr 03300000 -.chr 00333300 -.chr 00000330 -.chr 03333330 -.chr 03333300 -; tile 109 .chr 00000000 -.chr 03333330 -.chr 00033000 -.chr 00033000 -.chr 00033000 -.chr 00033000 -.chr 00033000 -.chr 00033000 -; tile 110 -.chr 00000000 -.chr 03300330 -.chr 03300330 -.chr 03300330 -.chr 03300330 -.chr 03333330 -.chr 03333330 -.chr 00333300 -; tile 111 -.chr 00000000 -.chr 03300033 -.chr 03300033 -.chr 03300033 -.chr 03330333 -.chr 03333333 -.chr 00333330 -.chr 00033300 -; tile 112 -.chr 00000000 -.chr 03300033 -.chr 03300033 -.chr 03303033 -.chr 03303033 -.chr 03333333 -.chr 00333330 -.chr 00030300 -; tile 113 -.chr 00000000 -.chr 03300033 -.chr 03330333 -.chr 00333330 -.chr 00033300 -.chr 00333330 -.chr 03330333 -.chr 03300033 -; tile 114 -.chr 00000000 -.chr 03000030 -.chr 03300330 -.chr 03333330 -.chr 00333300 -.chr 00033000 -.chr 00033000 -.chr 00033000 -; tile 115 .chr 00000000 -.chr 03333333 -.chr 03333333 -.chr 00000330 -.chr 00003330 -.chr 00033300 -.chr 03333333 -.chr 03333333 -; tile 116 +; tile 26 .chr 00000000 .chr 00000000 .chr 00000000 @@ -1051,7 +449,6 @@ .chr 00000000 .chr 00000000 .chr 00000000 -; tile 117 .chr 00000000 .chr 00000000 .chr 00000000 @@ -1060,7 +457,7 @@ .chr 00000000 .chr 00000000 .chr 00000000 -; tile 118 +; tile 27 .chr 00000000 .chr 00000000 .chr 00000000 @@ -1069,7 +466,6 @@ .chr 00000000 .chr 00000000 .chr 00000000 -; tile 119 .chr 00000000 .chr 00000000 .chr 00000000 @@ -1078,7 +474,7 @@ .chr 00000000 .chr 00000000 .chr 00000000 -; tile 120 +; tile 28 .chr 00000000 .chr 00000000 .chr 00000000 @@ -1087,7 +483,6 @@ .chr 00000000 .chr 00000000 .chr 00000000 -; tile 121 .chr 00000000 .chr 00000000 .chr 00000000 @@ -1096,7 +491,7 @@ .chr 00000000 .chr 00000000 .chr 00000000 -; tile 122 +; tile 29 .chr 00000000 .chr 00000000 .chr 00000000 @@ -1105,7 +500,6 @@ .chr 00000000 .chr 00000000 .chr 00000000 -; tile 123 .chr 00000000 .chr 00000000 .chr 00000000 @@ -1114,7 +508,7 @@ .chr 00000000 .chr 00000000 .chr 00000000 -; tile 124 +; tile 30 .chr 00000000 .chr 00000000 .chr 00000000 @@ -1123,7 +517,6 @@ .chr 00000000 .chr 00000000 .chr 00000000 -; tile 125 .chr 00000000 .chr 00000000 .chr 00000000 @@ -1132,7 +525,7 @@ .chr 00000000 .chr 00000000 .chr 00000000 -; tile 126 +; tile 31 .chr 00000000 .chr 00000000 .chr 00000000 @@ -1141,7 +534,6 @@ .chr 00000000 .chr 00000000 .chr 00000000 -; tile 127 .chr 00000000 .chr 00000000 .chr 00000000 diff --git a/tiles/bank8C00.inc b/tiles/bank8C00.inc new file mode 100644 index 0000000..6b7821b --- /dev/null +++ b/tiles/bank8C00.inc @@ -0,0 +1,576 @@ +; tile 0 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +; tile 1 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +; tile 2 +.chr 22222222 +.chr 22222222 +.chr 22222222 +.chr 22222222 +.chr 22222222 +.chr 22222222 +.chr 22222222 +.chr 22222222 +; tile 3 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +; tile 4 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +; tile 5 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +; tile 6 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +; tile 7 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +; tile 8 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +; tile 9 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +; tile 10 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +; tile 11 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +; tile 12 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +; tile 13 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +; tile 14 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +; tile 15 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +; tile 16 +.chr 00000000 +.chr 00333330 +.chr 03333333 +.chr 03300333 +.chr 03303033 +.chr 03330033 +.chr 03333333 +.chr 00333330 +; tile 17 +.chr 00000000 +.chr 00003330 +.chr 00033330 +.chr 00030330 +.chr 00000330 +.chr 00000330 +.chr 00000330 +.chr 00000330 +; tile 18 +.chr 00000000 +.chr 03333333 +.chr 03333333 +.chr 00000033 +.chr 03333333 +.chr 03300000 +.chr 03333333 +.chr 03333333 +; tile 19 +.chr 00000000 +.chr 00333330 +.chr 00333333 +.chr 00000033 +.chr 00033333 +.chr 00000033 +.chr 00333333 +.chr 00333330 +; tile 20 +.chr 00000000 +.chr 00330033 +.chr 00330033 +.chr 00330033 +.chr 00333333 +.chr 00000033 +.chr 00000033 +.chr 00000033 +; tile 21 +.chr 00000000 +.chr 03333333 +.chr 03333333 +.chr 03300000 +.chr 03333333 +.chr 00000033 +.chr 03333333 +.chr 03333333 +; tile 22 +.chr 00000000 +.chr 03333333 +.chr 03333333 +.chr 03300000 +.chr 03333333 +.chr 03333333 +.chr 03300033 +.chr 03333333 +; tile 23 +.chr 00000000 +.chr 03333330 +.chr 03333330 +.chr 00000330 +.chr 00000330 +.chr 00000330 +.chr 00000330 +.chr 00000330 +; tile 24 +.chr 00000000 +.chr 00333330 +.chr 03333333 +.chr 03300033 +.chr 00333330 +.chr 03300033 +.chr 03333333 +.chr 00333330 +; tile 25 +.chr 00000000 +.chr 00333330 +.chr 03333333 +.chr 03000033 +.chr 03333333 +.chr 00000033 +.chr 03333333 +.chr 03333330 +; tile 26 +.chr 00000000 +.chr 00333330 +.chr 03333333 +.chr 03300033 +.chr 03333333 +.chr 03300033 +.chr 03300033 +.chr 03300033 +; tile 27 +.chr 00000000 +.chr 03333300 +.chr 03333330 +.chr 03300330 +.chr 03333300 +.chr 03333330 +.chr 03300330 +.chr 03333300 +; tile 28 +.chr 00000000 +.chr 00333330 +.chr 03333330 +.chr 03330000 +.chr 03300000 +.chr 03330000 +.chr 03333330 +.chr 00333330 +; tile 29 +.chr 00000000 +.chr 03333330 +.chr 03333333 +.chr 03300033 +.chr 03300033 +.chr 03300033 +.chr 03333333 +.chr 03333330 +; tile 30 +.chr 00000000 +.chr 03333330 +.chr 03333330 +.chr 03300000 +.chr 03333300 +.chr 03300000 +.chr 03333330 +.chr 03333330 +; tile 31 +.chr 00000000 +.chr 03333330 +.chr 03333330 +.chr 03300000 +.chr 03333300 +.chr 03333300 +.chr 03300000 +.chr 03300000 +; tile 32 +.chr 00000000 +.chr 00333330 +.chr 03333330 +.chr 03300000 +.chr 03300333 +.chr 03300033 +.chr 03333333 +.chr 00333330 +; tile 33 +.chr 00000000 +.chr 03300330 +.chr 03300330 +.chr 03300330 +.chr 03333330 +.chr 03300330 +.chr 03300330 +.chr 03300330 +; tile 34 +.chr 00000000 +.chr 03333330 +.chr 00033000 +.chr 00033000 +.chr 00033000 +.chr 00033000 +.chr 00033000 +.chr 03333330 +; tile 35 +.chr 00000000 +.chr 00033330 +.chr 00033330 +.chr 00000330 +.chr 00000330 +.chr 00003330 +.chr 00333330 +.chr 00333300 +; tile 36 +.chr 00000000 +.chr 03303300 +.chr 03333000 +.chr 03330000 +.chr 03300000 +.chr 03330000 +.chr 03333000 +.chr 03303300 +; tile 37 +.chr 00000000 +.chr 03330000 +.chr 03330000 +.chr 03330000 +.chr 03330000 +.chr 03330000 +.chr 03333330 +.chr 03333330 +; tile 38 +.chr 00000000 +.chr 03300033 +.chr 03330333 +.chr 03333333 +.chr 03333333 +.chr 03300033 +.chr 03300033 +.chr 03300033 +; tile 39 +.chr 00000000 +.chr 03300330 +.chr 03330330 +.chr 03333330 +.chr 03333330 +.chr 03303330 +.chr 03300330 +.chr 03300330 +; tile 40 +.chr 00000000 +.chr 00333330 +.chr 03333333 +.chr 03300033 +.chr 03300033 +.chr 03300033 +.chr 03333333 +.chr 00333330 +; tile 41 +.chr 00000000 +.chr 03333330 +.chr 03300330 +.chr 03300330 +.chr 03333330 +.chr 03300000 +.chr 03300000 +.chr 03300000 +; tile 42 +.chr 00000000 +.chr 00333300 +.chr 03333330 +.chr 03300330 +.chr 03300330 +.chr 03300330 +.chr 03333300 +.chr 00333030 +; tile 43 +.chr 00000000 +.chr 03333300 +.chr 03300330 +.chr 03300330 +.chr 03333300 +.chr 03333300 +.chr 03300330 +.chr 03300330 +; tile 44 +.chr 00000000 +.chr 00333330 +.chr 03333330 +.chr 03300000 +.chr 00333300 +.chr 00000330 +.chr 03333330 +.chr 03333300 +; tile 45 +.chr 00000000 +.chr 03333330 +.chr 00033000 +.chr 00033000 +.chr 00033000 +.chr 00033000 +.chr 00033000 +.chr 00033000 +; tile 46 +.chr 00000000 +.chr 03300330 +.chr 03300330 +.chr 03300330 +.chr 03300330 +.chr 03333330 +.chr 03333330 +.chr 00333300 +; tile 47 +.chr 00000000 +.chr 03300033 +.chr 03300033 +.chr 03300033 +.chr 03330333 +.chr 03333333 +.chr 00333330 +.chr 00033300 +; tile 48 +.chr 00000000 +.chr 03300033 +.chr 03300033 +.chr 03303033 +.chr 03303033 +.chr 03333333 +.chr 00333330 +.chr 00030300 +; tile 49 +.chr 00000000 +.chr 03300033 +.chr 03330333 +.chr 00333330 +.chr 00033300 +.chr 00333330 +.chr 03330333 +.chr 03300033 +; tile 50 +.chr 00000000 +.chr 03000030 +.chr 03300330 +.chr 03333330 +.chr 00333300 +.chr 00033000 +.chr 00033000 +.chr 00033000 +; tile 51 +.chr 00000000 +.chr 03333333 +.chr 03333333 +.chr 00000330 +.chr 00003330 +.chr 00033300 +.chr 03333333 +.chr 03333333 +; tile 52 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +; tile 53 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +; tile 54 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +; tile 55 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +; tile 56 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +; tile 57 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +; tile 58 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +; tile 59 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +; tile 60 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +; tile 61 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +; tile 62 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +; tile 63 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 +.chr 00000000 diff --git a/tools/png2chr.py b/tools/png2chr.py index 720d750..29c0b8e 100755 --- a/tools/png2chr.py +++ b/tools/png2chr.py @@ -8,10 +8,16 @@ import os from PIL import Image from itertools import product +DW = 8 + if len(sys.argv) < 2: - print("Usage: png2chr.py ") + print("Usage: png2chr.py [8/16]") sys.exit(-1) +if len(sys.argv) == 3: + DW = int(sys.argv[2]) + + # these colors are mapped # maps color tuple to .chr string COLORS = {(0, 0, 0, 255): '3', (0, 0, 0, 0): '0', (107, 107, 107, 255): '1', (181, 181, 181, 255): '2', (255, 255, 255, 255): '0'} @@ -44,4 +50,33 @@ def tile(src, d): sys.exit(-1) print("") -tile(src, 8) +def tile16(src, d): + img = Image.open(src) + w, h = img.size + tile_index = 0 + + # split the image into even tiles + grid = product(range(0, h-h%d*2, d*2), range(0, w-w%d, d)) + for i, j in grid: + box = (j, i, j+d, i+d*2) + cropped = img.crop(box) + cw, ch = cropped.size + cropped = cropped.load() + + print('; tile ' + str(tile_index)) + tile_index += 1 + for y in range(0, ch): + print(".chr ", end='') + for x in range(0, cw): + color = cropped[x, y] + if color in COLORS: + print(COLORS[color], end='') + else: + print('Unknown color: ' + str(cropped[x,y])) + sys.exit(-1) + print("") + +if DW == 8: + tile(src, 8) +else: + tile16(src, 8) diff --git a/tools/tms2map.py b/tools/tms2map.py index 97f5016..9d056e9 100755 --- a/tools/tms2map.py +++ b/tools/tms2map.py @@ -11,7 +11,8 @@ ACTOR_OFFSET_Y = 0 state_ptr = "st_map_null" tile_bank0 = "bank8000" tile_bank1 = "bank8800" -tile_bank2 = "bank9000" +tile_bank2 = "bank8C00" +tile_bank3 = "bank9000" actor_table_ptr = "map_actor_table_null" FLAGS = { @@ -100,6 +101,7 @@ def print_header(name): print("dw " + tile_bank0) print("dw " + tile_bank1) print("dw " + tile_bank2) + print("dw " + tile_bank3) print("") def get_flag(tile): @@ -123,6 +125,7 @@ def get_map_props(root): global tile_bank0 global tile_bank1 global tile_bank2 + global tile_bank3 for child in root: if child.tag == "properties": @@ -139,6 +142,8 @@ def get_map_props(root): tile_bank1 = value elif name == 'tile_bank2': tile_bank2 = value + elif name == 'tile_bank3': + tile_bank3 = value return -- 2.30.2