map: added stub for tiles
authorLukas Krickl <lukas@krickl.dev>
Thu, 30 Oct 2025 06:31:59 +0000 (07:31 +0100)
committerLukas Krickl <lukas@krickl.dev>
Thu, 30 Oct 2025 06:31:59 +0000 (07:31 +0100)
src/defs.s
src/macros.inc
src/tiles.s
src/wram.s

index 05ddbdadbad9c144565994d56541000c0db248e5..a36c2f0ae740ed4ff5b6149669b4e5fd102e615e 100644 (file)
@@ -26,6 +26,7 @@
 
 #define MAP_W 16
 #define MAP_H 16
+#define MAP_TILES (MAP_W * MAP_H)
 
   ; actor type enum
 .se 0
 .de map_tile_bank2_ptr, 2
 .de map_tile_bank3_ptr, 2
 .de map_header_size, 0
+       ; the map header is followed by MAP_W * MAP_H bytes
 .de map_tiles, MAP_W * MAP_H
 .de map_size, 0
 
-       ; the map header is followed by MAP_W * MAP_H bytes
+       ; tile type struct
+.se 0
+.de TT_EMPTY, 1
+.de TT_PLAYER, 1
+.de TT_PLAYER_HIVE, 1
+.de TT_ENEMY, 1
+.de TT_ENEMY_HIVE, 1
+.de TT_FOOD, 1
+
+       ; tile struct
+.se 0 
+.de t_type, 1
+.de t_flags, 1
+       ; based on type
+.de t_resource, 1
+       ; 2 bytes of custom state storage
+       ; to be used by tile routine
+.de t_p0, 1
+.de t_state, 1
+       ; graphical tile
+.de t_tile, 1
+.de t_size, 0
+
+
        
        ; alias for directions
 .def int DIRUP = BTNUP
index 962d1efb4d07066e9c4013f07e3b0f9544dde5fb..0961802a2737113d7e2388cd9c855483b8a1a49e 100644 (file)
@@ -167,65 +167,26 @@ $1:
        dw $6
 #endmacro
        
-       ; defines a new actor
+       ; define a tile
        ; inputs:
        ;               $1: type
        ;               $2: flags
-       ;               $3: p0
-       ;               $4: hp
-       ;               $5: armor
-#macro actdef
-       .db $1, $2
-
-       ; placeholder for y, row and x
-       ; since those are set at runtime
-       .db 0, 0
-
-       .db $3
-
-       ; placeholder for state parameter
-       ; this is set by the actor update routine as needed
-       .db 0
-
-       .db $4, $5
-       
-       ; placeholder for collision rectangle
-       ; since those are runtime values
-       .db 0, 0, 0, 0, 0
-#endmacro
-       
-       ; defines a rectangle
-       ; inputs:
-       ;               $1: collision flags
-       ;               $2: y
-       ;               $3: y hi
-       ;               $4: x
-       ;               $5: h
-       ;               $6: w
-#macro recdef
-       .db $1, $2, $3, $4, $5, $6
+       ;               $3: resource count
+       ;               $4: tile gfx
+#macro tiledef
+       .db $1, $2, $3
+       ; p0 and state
+       .db 0, 0 
+       .db $4
 #endmacro
        
-       ; caps an underflow when carry is set
-       ; caps value to 0x00
+       ; defines a new actor
        ; inputs:
-       ;               af: value and carry flag
-#macro capunderflow
-.beginscope
-       jr nc, @no_underflow REL
-               xor a, a
-@no_underflow:         
-.endscope
-#endmacro
+       ;               $1: type
+       ;               $2: flags
+#macro actdef
+       .db $1, $2
        
-       ; caps an overflow when carry is set
-       ; caps value to 0xFF
-       ;       inputs:
-       ;               af: value and carry flag
-#macro capoverflow
-.beginscope
-jr nc, @no_overflow REL 
-       ld a, 0xFF
-@no_overflow:
-.endscope      
+       ; placeholder for y, x p0 and state
+       .db 0, 0, 0, 0
 #endmacro
index adde0eee8378e5effc89bc5a1e0ae41632bad3d2..00a37703fb86c25c9090df1052eab988a8e37562 100644 (file)
@@ -1,9 +1,72 @@
        ; tile definitions
 
+#define GFX_GRASS 0x00
+#define GFX_PHIVE 0x00
+#define GFX_EHIVE 0x00
+#define GFX_FOOD 0x00
+       
+       ; updates a tile with its 
+       ; routine
+       ; inputs:
+       ;               de: tile
+tile_update:
+       ret
+       
+       ; table of update routines
+       ; for each tile
+tile_update_table:
+       dw tile_update_empty
+       dw tile_update_player
+       dw tile_update_player_hive
+       dw tile_update_enemy
+       dw tile_update_enemy_hive
+       dw tile_update_food
+
+       ; updates empty tile
+       ; inputs:
+       ;               de: tile
+tile_update_empty:
+       ret
+       
+       ; updates player controlled tile
+       ; inputs:
+       ;               de: tile
+tile_update_player:
+       ret
+       
+       ; updates player hive
+       ; inputs:
+       ;               de: tile
+tile_update_player_hive:
+       ret
+       
+       ; updates enemy tile
+       ; inputs:
+       ;               de: tile
+tile_update_enemy:
+       ret
+       
+       ; updates enemy hive
+       ; inputs:
+       ;               de: tile
+tile_update_enemy_hive:
+       ret
+       
+       ; updates food tile
+       ; inputs:
+       ;               de: tile
+tile_update_food:
+       ret
+
+
 tile_grass:
+       tiledef TT_EMPTY, 0, 0, GFX_GRASS
 
 tile_player_hive:
+       tiledef TT_PLAYER_HIVE, 0, 0, GFX_PHIVE
 
 tile_enemy_hive:
+       tiledef TT_ENEMY_HIVE, 0, 0, GFX_EHIVE
 
 tile_food:
+       tiledef TT_FOOD, 0, 0, GFX_FOOD
index d767394f5d0cb4c2a74b90c2cecd5d42fb558b88..1e7bc8879440264f7184bc7bf503580a551cfb58 100644 (file)
@@ -71,7 +71,9 @@ enemy: .adv act_size
        
        ; current map ptr
 map: .adv 2
-
-
+       
+       ; ptr to current tile to be updated
+tile_curr: .adv 2
+tiles: .adv t_size * MAP_TILES