wip: Adding map code and test floor tiles
authorLukas Krickl <lukas@krickl.dev>
Thu, 3 Oct 2024 06:17:30 +0000 (08:17 +0200)
committerLukas Krickl <lukas@krickl.dev>
Thu, 3 Oct 2024 06:17:30 +0000 (08:17 +0200)
src/main.s
src/map.s [new file with mode: 0644]
src/player.s
src/wram.s
tiles/tileset1.inc

index 0f8316112fae53dfcd875478b7e82a2e79309cff..fbe653db32643f1ac922681d360278ce5885a6da 100644 (file)
@@ -31,7 +31,6 @@ main:
   ld [frame_ready], a
   jr @forever REL
 
-#include "tiles.inc"
 #include "video.s"
 #include "mem.s"
 #include "strings.s"
@@ -39,6 +38,9 @@ main:
 #include "input.s"
 #include "player.s"
 #include "update.s"
+#include "map.s"
+
+#include "tiles.inc"
 
 ; fill bank
 .fill 0, 0x7FFF - $
diff --git a/src/map.s b/src/map.s
new file mode 100644 (file)
index 0000000..dffa08a
--- /dev/null
+++ b/src/map.s
@@ -0,0 +1,22 @@
+  ; map tiles
+  ; tiles are 2x2 areas 
+  ; this simply defines the first tile 
+  ; in the set 
+#define TILE_FLOOR_1 14
+
+  ; maps are collections of rooms
+
+  ; rooms are made up of 2x2 meta tiles 
+  ; the bottom 2 tiles are reserved for the UI
+  ; a rooms is exactly 1 screen 
+  ; there is no scrolling
+  ; rooms may have 4 regular exits and 1 secret exit
+
+room_draw:
+  ret
+
+  ; base room 
+  ; this can be copied and modified 
+  ; by the map gen
+base_room:
+  
index ab5434568571f770984d6ed20f4904fb302582e7..378bd73f7577a0e624b07635086c271d2afecbd3 100644 (file)
@@ -16,6 +16,12 @@ player_update:
 
   ; d: player_y
   ; e: player_x
+  ; b: obj flags mask
+  
+  ; set up obj flag mask based on frame counter 
+  ld a, [frame_count]
+  and a, 4
+  ld b, 0 
 
   ; input handling
   input_held BTNDOWN
@@ -83,7 +89,7 @@ player_update:
   ld [hl+], a
 
   ; flags
-  xor a, a
+  ld a, b
   ld [hl+], a
 
   ; obj 2
@@ -99,7 +105,7 @@ player_update:
   ld [hl+], a
   
   ; flags
-  xor a, a
+  ld a, b
   ld [hl+], a
 
   ; obj 3
@@ -115,7 +121,7 @@ player_update:
   ld [hl+], a
 
   ; flags
-  xor a, a
+  ld a, b
   ld [hl+], a
 
 
index e96ab66cb97bc804ad1b4dea7d410c255feefe6f..ec573c66df98e2e958d98cb0156f85598a5635da 100644 (file)
@@ -38,3 +38,20 @@ actor_table: .adv ACTORS_MAX * actor_size
 .de player_size, 0
 
 player: .adv player_size
+
+; struct map
+.se 0
+.de map_size, 0
+
+  ; rooms are 18x18 
+#define ROOM_W 18
+#define ROOM_H 18
+
+; struct room
+.se 0
+.de tiles, ROOM_W * ROOM_H
+.de room_size, 0
+
+
+  ; pointer to current room struct 
+curr_room: .adv 2
index cbac2f4713339037e3e7f36ea6dd514fa71698a2..405104dbe47f0973addc9d068becc495d5624152 100644 (file)
 .chr 00000000
 .chr 00000000
 ; tile 65
-.chr 00000000
-.chr 00000000
-.chr 00000000
-.chr 00000000
-.chr 00000000
-.chr 00000000
-.chr 00000000
-.chr 00000000
+.chr 00011111
+.chr 00100000
+.chr 01000000
+.chr 10000000
+.chr 10000000
+.chr 10000000
+.chr 10000000
+.chr 10000001
 ; tile 66
-.chr 00000000
-.chr 00000000
-.chr 00000000
-.chr 00000000
-.chr 00000000
-.chr 00000000
-.chr 00000000
-.chr 00000000
+.chr 11111000
+.chr 00000100
+.chr 00000010
+.chr 00000001
+.chr 00000001
+.chr 00000001
+.chr 00000001
+.chr 10000001
 ; tile 67
 .chr 00000000
 .chr 00000000
 .chr 00000000
 .chr 00000000
 ; tile 81
-.chr 00000000
-.chr 00000000
-.chr 00000000
-.chr 00000000
-.chr 00000000
-.chr 00000000
-.chr 00000000
-.chr 00000000
+.chr 10000001
+.chr 10000000
+.chr 10000000
+.chr 10000000
+.chr 10000000
+.chr 10000000
+.chr 01000000
+.chr 00111111
 ; tile 82
-.chr 00000000
-.chr 00000000
-.chr 00000000
-.chr 00000000
-.chr 00000000
-.chr 00000000
-.chr 00000000
-.chr 00000000
+.chr 10000001
+.chr 00000001
+.chr 00000001
+.chr 00000001
+.chr 00000001
+.chr 00000001
+.chr 00000010
+.chr 11111100
 ; tile 83
 .chr 00000000
 .chr 00000000