oam: Enabled 8x16 objects
authorLukas Krickl <lukas@krickl.dev>
Wed, 2 Jul 2025 03:52:39 +0000 (05:52 +0200)
committerLukas Krickl <lukas@krickl.dev>
Wed, 2 Jul 2025 03:52:39 +0000 (05:52 +0200)
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.

13 files changed:
makefile
maps/default_map.s
src/defs.s
src/map.s
src/player.s
src/tiles.inc
src/unit.s
src/unit_demo.s
src/video.s
tiles/bank8800.inc
tiles/bank8C00.inc [new file with mode: 0644]
tools/png2chr.py
tools/tms2map.py

index 8f9b4bbe98d8bfa9694a70867b79c54ebf5b7d5a..30f3e1200c9be502aca012e9e18c0428ec477f52 100644 (file)
--- 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
index 112449deaac3d20605b25c0c5f43a8ca665024b1..02c20b65d47a2af0b8b6a69f30c2bae236dca45d 100644 (file)
@@ -6,6 +6,7 @@ dw st_map_null
 dw default_map_actor_table
 dw bank8000
 dw bank8800
+dw bank8C00
 dw bank9000
 
 default_map_bg:
index af6561e1adead5923c2fb0b6d444f835272fc064..a2a74d4b08d74e0c5a059a796d87220e9a5d90f7 100644 (file)
   ; 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
index 673ba6bc09624e4e6b93d74862076d7a76cc228b..9096eb87e54c1ff808f656d2d11e610f8c4d3710 100644 (file)
--- 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
index b0bf78b946a4a973881993190b5c40e2a1cc3771..8063d96268b90613dd12e2a155bc3ea5831e7490 100644 (file)
@@ -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 
index 741df9df4e9ca715da1969ac0a3bf5aca00ac2e8..c27ad5b50353d73f73883d4783d5b84ecaccf693 100644 (file)
@@ -16,6 +16,10 @@ bank8800:
 #include "bank8800.inc"
 bank8800_end:
 
+bank8C00:
+#include "bank8C00.inc"
+bank8C00_end:
+
 bank9000:
 #include "bank9000.inc"
 bank9000_end:
index 21f1f0b5ea1a963454fc97648d31c5197dbc8784..735f40b7ac7eb727dcc56ec5e73f2a918c71031b 100644 (file)
@@ -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
 
index 396884b004d5573bb75038c0d01d7ae50ad9db16..be3058ca970301484116e7d70356db05162b146e 100644 (file)
@@ -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:
index 2db9ea083ce944406d3ba789b21f3f488b02485d..5abfbfa139cc97522b9ef2c4b6ed0f4bee88eae4 100644 (file)
@@ -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 
index da2dacfa38bb607540ecf6be85a378afe78b4e37..a33b35b0efed1f53b41749bce1ec4e3ceebc38eb 100644 (file)
@@ -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
 .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
 .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
 .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
 .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
 .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
 .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
 .chr 00000000
 .chr 00000000
 .chr 00000000
-; tile 45
 .chr 00000000
 .chr 00000000
 .chr 00000000
 .chr 00000000
 .chr 00000000
 .chr 00000000
+; tile 7
 .chr 00000000
-; tile 46
 .chr 00000000
 .chr 00000000
 .chr 00000000
 .chr 00000000
 .chr 00000000
 .chr 00000000
-; tile 47
 .chr 00000000
 .chr 00000000
 .chr 00000000
 .chr 00000000
 .chr 00000000
 .chr 00000000
+; tile 8
 .chr 00000000
-; tile 48
 .chr 00000000
 .chr 00000000
 .chr 00000000
 .chr 00000000
 .chr 00000000
 .chr 00000000
-; tile 49
 .chr 00000000
 .chr 00000000
 .chr 00000000
 .chr 00000000
 .chr 00000000
 .chr 00000000
+; tile 9
 .chr 00000000
-; tile 50
 .chr 00000000
 .chr 00000000
 .chr 00000000
 .chr 00000000
 .chr 00000000
 .chr 00000000
-; tile 51
 .chr 00000000
 .chr 00000000
 .chr 00000000
 .chr 00000000
 .chr 00000000
 .chr 00000000
+; tile 10
 .chr 00000000
-; tile 52
 .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
+; tile 11
 .chr 00000000
-; tile 54
 .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
+; tile 12
 .chr 00000000
-; tile 56
 .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
+; tile 13
 .chr 00000000
-; tile 58
 .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
+; 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
 .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
 .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
 .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
 .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
 .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
 .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
 .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
 .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
 .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
 .chr 00000000
 .chr 00000000
 .chr 00000000
-; tile 117
 .chr 00000000
 .chr 00000000
 .chr 00000000
 .chr 00000000
 .chr 00000000
 .chr 00000000
-; tile 118
+; tile 27
 .chr 00000000
 .chr 00000000
 .chr 00000000
 .chr 00000000
 .chr 00000000
 .chr 00000000
-; tile 119
 .chr 00000000
 .chr 00000000
 .chr 00000000
 .chr 00000000
 .chr 00000000
 .chr 00000000
-; tile 120
+; tile 28
 .chr 00000000
 .chr 00000000
 .chr 00000000
 .chr 00000000
 .chr 00000000
 .chr 00000000
-; tile 121
 .chr 00000000
 .chr 00000000
 .chr 00000000
 .chr 00000000
 .chr 00000000
 .chr 00000000
-; tile 122
+; tile 29
 .chr 00000000
 .chr 00000000
 .chr 00000000
 .chr 00000000
 .chr 00000000
 .chr 00000000
-; tile 123
 .chr 00000000
 .chr 00000000
 .chr 00000000
 .chr 00000000
 .chr 00000000
 .chr 00000000
-; tile 124
+; tile 30
 .chr 00000000
 .chr 00000000
 .chr 00000000
 .chr 00000000
 .chr 00000000
 .chr 00000000
-; tile 125
 .chr 00000000
 .chr 00000000
 .chr 00000000
 .chr 00000000
 .chr 00000000
 .chr 00000000
-; tile 126
+; tile 31
 .chr 00000000
 .chr 00000000
 .chr 00000000
 .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 (file)
index 0000000..6b7821b
--- /dev/null
@@ -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
index 720d750ff33b6b0b52764a38ba850088f8b3e683..29c0b8ef8349cc240c1fb19e3bf90ae4d89ddd4f 100755 (executable)
@@ -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 <source>")
+    print("Usage: png2chr.py <source> [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)
index 97f501619a4b64dddf5bc161b582701a07448c4b..9d056e914f5f4eb82e52834baa69b08edcdd4b34 100755 (executable)
@@ -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