player: limited cursor to screen space
authorLukas Krickl <lukas@krickl.dev>
Thu, 2 Apr 2026 11:48:52 +0000 (13:48 +0200)
committerLukas Krickl <lukas@krickl.dev>
Thu, 2 Apr 2026 11:48:52 +0000 (13:48 +0200)
Added new tiles

12 files changed:
assets/maps/l1.tmx
assets/tiles/bank0.png
assets/tiles/bank3.png
gen/maps/l1.inc
gen/tiles/bank0.inc
gen/tiles/bank3.inc
src/actor.s
src/d_map.s
src/d_ui.s [new file with mode: 0644]
src/defs.s
src/main.s
src/ui.s [new file with mode: 0644]

index 325c4798b923a18831b6090635fedbc79d90ecd2..360dc61ce0e43dbe3961f24a01860a377d963374 100644 (file)
@@ -5,18 +5,18 @@
   <data encoding="csv">
 1,1,1,1,1,1,6,6,5,5,5,5,6,6,1,1,1,1,1,1,
 1,1,1,1,1,1,6,6,5,5,5,5,6,6,1,1,1,1,1,1,
-1,1,18,18,5,5,6,6,3,3,3,3,6,6,1,18,18,1,1,1,
-1,1,18,18,5,5,6,6,3,5,5,3,6,6,1,18,18,1,1,1,
-1,1,3,3,5,5,6,6,3,6,6,3,6,6,1,3,3,3,1,1,
-1,19,3,1,5,5,6,6,3,6,6,3,6,6,1,1,1,3,19,1,
-1,17,3,1,1,1,5,5,3,6,6,3,5,5,1,1,1,3,17,1,
-1,17,3,1,1,1,1,1,3,6,6,3,1,1,1,1,1,3,17,1,
+1,1,18,18,1,5,6,6,3,3,3,3,6,6,5,1,82,82,1,1,
+1,1,18,18,1,5,6,6,3,5,5,3,6,6,5,1,82,82,1,1,
+1,1,3,3,5,5,6,6,3,6,6,3,6,6,5,5,3,3,1,1,
+1,19,3,1,5,5,6,6,3,6,6,3,6,6,5,5,1,3,83,1,
+1,17,3,1,1,1,5,5,3,6,6,3,5,5,1,1,1,3,81,1,
+1,17,3,1,1,1,1,50,3,6,6,3,50,1,1,1,1,3,81,1,
 1,1,3,3,3,3,3,3,3,6,6,3,3,3,3,3,3,3,1,1,
-1,1,1,1,1,1,1,1,5,6,6,5,1,1,1,1,1,1,1,1,
-1,1,1,1,1,1,1,1,5,6,6,5,1,1,1,1,1,1,1,1,
-1,1,1,1,1,1,1,1,5,6,6,5,1,1,1,1,1,1,1,1,
-1,1,1,1,1,1,1,1,5,6,6,5,1,1,1,1,1,1,1,1,
-1,1,1,1,1,1,1,1,5,6,6,5,1,1,1,1,1,1,1,1
+1,1,1,1,1,3,5,5,5,6,6,5,5,5,3,1,1,1,1,1,
+1,1,1,5,5,3,5,5,5,6,6,5,5,5,3,5,5,1,1,1,
+1,1,1,5,5,3,6,6,6,6,6,6,6,6,3,5,5,1,1,1,
+1,1,1,5,5,3,3,3,3,3,3,3,3,3,3,5,5,1,1,1,
+1,1,1,5,5,5,5,5,5,6,6,5,5,5,5,5,5,1,1,1
 </data>
  </layer>
 </map>
index 69894423dd2c40247644cf064dc8fef3498efe77..e0fc7d7cce4832716697afd152870a571df59e00 100644 (file)
@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:29df075359f0c564c70247b755e556fefd22b62f26c8a98b56059bbde550ae06
-size 680
+oid sha256:016bfd5e67f83dba887b1a8c8345d81225d64b46110cdd72f2274b260994a4e3
+size 852
index 69894423dd2c40247644cf064dc8fef3498efe77..e0fc7d7cce4832716697afd152870a571df59e00 100644 (file)
@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:29df075359f0c564c70247b755e556fefd22b62f26c8a98b56059bbde550ae06
-size 680
+oid sha256:016bfd5e67f83dba887b1a8c8345d81225d64b46110cdd72f2274b260994a4e3
+size 852
index 59f8bcc9d9d663fd8db0fd9663cf88c7890cbb25..8390ca1515814fa8d0e56d8567c97b2380bcdc25 100644 (file)
 
 .db 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x5, 0x5, 0x4, 0x4, 0x4, 0x4, 0x5, 0x5, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0
 .db 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x5, 0x5, 0x4, 0x4, 0x4, 0x4, 0x5, 0x5, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0
-.db 0x0, 0x0, 0x11, 0x11, 0x4, 0x4, 0x5, 0x5, 0x2, 0x2, 0x2, 0x2, 0x5, 0x5, 0x0, 0x11, 0x11, 0x0, 0x0, 0x0
-.db 0x0, 0x0, 0x11, 0x11, 0x4, 0x4, 0x5, 0x5, 0x2, 0x4, 0x4, 0x2, 0x5, 0x5, 0x0, 0x11, 0x11, 0x0, 0x0, 0x0
-.db 0x0, 0x0, 0x2, 0x2, 0x4, 0x4, 0x5, 0x5, 0x2, 0x5, 0x5, 0x2, 0x5, 0x5, 0x0, 0x2, 0x2, 0x2, 0x0, 0x0
-.db 0x0, 0x12, 0x2, 0x0, 0x4, 0x4, 0x5, 0x5, 0x2, 0x5, 0x5, 0x2, 0x5, 0x5, 0x0, 0x0, 0x0, 0x2, 0x12, 0x0
-.db 0x0, 0x10, 0x2, 0x0, 0x0, 0x0, 0x4, 0x4, 0x2, 0x5, 0x5, 0x2, 0x4, 0x4, 0x0, 0x0, 0x0, 0x2, 0x10, 0x0
-.db 0x0, 0x10, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x5, 0x5, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x10, 0x0
+.db 0x0, 0x0, 0x11, 0x11, 0x0, 0x4, 0x5, 0x5, 0x2, 0x2, 0x2, 0x2, 0x5, 0x5, 0x4, 0x0, 0x51, 0x51, 0x0, 0x0
+.db 0x0, 0x0, 0x11, 0x11, 0x0, 0x4, 0x5, 0x5, 0x2, 0x4, 0x4, 0x2, 0x5, 0x5, 0x4, 0x0, 0x51, 0x51, 0x0, 0x0
+.db 0x0, 0x0, 0x2, 0x2, 0x4, 0x4, 0x5, 0x5, 0x2, 0x5, 0x5, 0x2, 0x5, 0x5, 0x4, 0x4, 0x2, 0x2, 0x0, 0x0
+.db 0x0, 0x12, 0x2, 0x0, 0x4, 0x4, 0x5, 0x5, 0x2, 0x5, 0x5, 0x2, 0x5, 0x5, 0x4, 0x4, 0x0, 0x2, 0x52, 0x0
+.db 0x0, 0x10, 0x2, 0x0, 0x0, 0x0, 0x4, 0x4, 0x2, 0x5, 0x5, 0x2, 0x4, 0x4, 0x0, 0x0, 0x0, 0x2, 0x50, 0x0
+.db 0x0, 0x10, 0x2, 0x0, 0x0, 0x0, 0x0, 0x31, 0x2, 0x5, 0x5, 0x2, 0x31, 0x0, 0x0, 0x0, 0x0, 0x2, 0x50, 0x0
 .db 0x0, 0x0, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x5, 0x5, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x0, 0x0
-.db 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4, 0x5, 0x5, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0
-.db 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4, 0x5, 0x5, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0
-.db 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4, 0x5, 0x5, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0
-.db 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4, 0x5, 0x5, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0
-.db 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4, 0x5, 0x5, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0
+.db 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x4, 0x4, 0x4, 0x5, 0x5, 0x4, 0x4, 0x4, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0
+.db 0x0, 0x0, 0x0, 0x4, 0x4, 0x2, 0x4, 0x4, 0x4, 0x5, 0x5, 0x4, 0x4, 0x4, 0x2, 0x4, 0x4, 0x0, 0x0, 0x0
+.db 0x0, 0x0, 0x0, 0x4, 0x4, 0x2, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x2, 0x4, 0x4, 0x0, 0x0, 0x0
+.db 0x0, 0x0, 0x0, 0x4, 0x4, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x4, 0x4, 0x0, 0x0, 0x0
+.db 0x0, 0x0, 0x0, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x5, 0x5, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x0, 0x0, 0x0
 
index c2be4e2d523c5a4c6653a3b9d5de2ec5774962c6..74735853361a108c751a2a5637405ed2ba19f8c7 100644 (file)
 .chr 00330000
 ; tile 4
 .chr 00000000
-.chr 03330000
-.chr 03330000
-.chr 03330333
-.chr 00100333
-.chr 00100333
-.chr 00000010
-.chr 00000010
+.chr 01110000
+.chr 01110000
+.chr 01110111
+.chr 00200111
+.chr 00200111
+.chr 00000020
+.chr 00000020
 ; tile 5
 .chr 00003000
 .chr 00033000
 .chr 00000000
 ; tile 48
 .chr 00000000
-.chr 00000000
-.chr 00000000
-.chr 00000000
-.chr 00000000
-.chr 00000000
-.chr 00000000
+.chr 00300000
+.chr 00300000
+.chr 03333330
+.chr 03000030
+.chr 03033030
+.chr 03333330
 .chr 00000000
 ; tile 49
-.chr 00000000
-.chr 00000000
-.chr 00000000
-.chr 00000000
-.chr 00000000
-.chr 00000000
-.chr 00000000
-.chr 00000000
+.chr 00000333
+.chr 00333323
+.chr 00302303
+.chr 33330323
+.chr 32032303
+.chr 30230323
+.chr 32032303
+.chr 30030303
 ; tile 50
-.chr 00000000
-.chr 00000000
-.chr 00000000
-.chr 00000000
-.chr 00000000
-.chr 00000000
-.chr 00000000
-.chr 00000000
+.chr 00033000
+.chr 00033000
+.chr 00333300
+.chr 00300300
+.chr 03333330
+.chr 03000030
+.chr 03000030
+.chr 03333330
 ; tile 51
 .chr 00000000
 .chr 00000000
 .chr 00000000
 ; tile 80
 .chr 00000000
-.chr 00000000
-.chr 00000000
-.chr 00000000
-.chr 00000000
-.chr 00000000
-.chr 00000000
+.chr 00300000
+.chr 00300000
+.chr 03333330
+.chr 03222230
+.chr 03233230
+.chr 03333330
 .chr 00000000
 ; tile 81
-.chr 00000000
-.chr 00000000
-.chr 00000000
-.chr 00000000
-.chr 00000000
-.chr 00000000
-.chr 00000000
-.chr 00000000
+.chr 00000333
+.chr 00333313
+.chr 00321323
+.chr 33332313
+.chr 31231323
+.chr 32132313
+.chr 31231323
+.chr 32232323
 ; tile 82
-.chr 00000000
-.chr 00000000
-.chr 00000000
-.chr 00000000
-.chr 00000000
-.chr 00000000
-.chr 00000000
-.chr 00000000
+.chr 00033000
+.chr 00033000
+.chr 00333300
+.chr 00322300
+.chr 03333330
+.chr 03222230
+.chr 03222230
+.chr 03333330
 ; tile 83
 .chr 00000000
 .chr 00000000
 .chr 00000000
 .chr 00000000
 ; tile 125
-.chr 00000000
-.chr 00000000
-.chr 00000000
-.chr 00000000
-.chr 00000000
-.chr 00000000
-.chr 00000000
-.chr 00000000
+.chr 33333333
+.chr 11111111
+.chr 22222222
+.chr 22222222
+.chr 22222222
+.chr 22222222
+.chr 22222222
+.chr 22222222
 ; tile 126
-.chr 00000000
-.chr 00000000
-.chr 00000000
-.chr 00000000
-.chr 00000000
-.chr 00000000
-.chr 00000000
-.chr 00000000
+.chr 22222222
+.chr 22222222
+.chr 22222222
+.chr 22222222
+.chr 22222222
+.chr 22222222
+.chr 22222222
+.chr 22222222
 ; tile 127
 .chr 33333333
 .chr 32333333
index c2be4e2d523c5a4c6653a3b9d5de2ec5774962c6..74735853361a108c751a2a5637405ed2ba19f8c7 100644 (file)
 .chr 00330000
 ; tile 4
 .chr 00000000
-.chr 03330000
-.chr 03330000
-.chr 03330333
-.chr 00100333
-.chr 00100333
-.chr 00000010
-.chr 00000010
+.chr 01110000
+.chr 01110000
+.chr 01110111
+.chr 00200111
+.chr 00200111
+.chr 00000020
+.chr 00000020
 ; tile 5
 .chr 00003000
 .chr 00033000
 .chr 00000000
 ; tile 48
 .chr 00000000
-.chr 00000000
-.chr 00000000
-.chr 00000000
-.chr 00000000
-.chr 00000000
-.chr 00000000
+.chr 00300000
+.chr 00300000
+.chr 03333330
+.chr 03000030
+.chr 03033030
+.chr 03333330
 .chr 00000000
 ; tile 49
-.chr 00000000
-.chr 00000000
-.chr 00000000
-.chr 00000000
-.chr 00000000
-.chr 00000000
-.chr 00000000
-.chr 00000000
+.chr 00000333
+.chr 00333323
+.chr 00302303
+.chr 33330323
+.chr 32032303
+.chr 30230323
+.chr 32032303
+.chr 30030303
 ; tile 50
-.chr 00000000
-.chr 00000000
-.chr 00000000
-.chr 00000000
-.chr 00000000
-.chr 00000000
-.chr 00000000
-.chr 00000000
+.chr 00033000
+.chr 00033000
+.chr 00333300
+.chr 00300300
+.chr 03333330
+.chr 03000030
+.chr 03000030
+.chr 03333330
 ; tile 51
 .chr 00000000
 .chr 00000000
 .chr 00000000
 ; tile 80
 .chr 00000000
-.chr 00000000
-.chr 00000000
-.chr 00000000
-.chr 00000000
-.chr 00000000
-.chr 00000000
+.chr 00300000
+.chr 00300000
+.chr 03333330
+.chr 03222230
+.chr 03233230
+.chr 03333330
 .chr 00000000
 ; tile 81
-.chr 00000000
-.chr 00000000
-.chr 00000000
-.chr 00000000
-.chr 00000000
-.chr 00000000
-.chr 00000000
-.chr 00000000
+.chr 00000333
+.chr 00333313
+.chr 00321323
+.chr 33332313
+.chr 31231323
+.chr 32132313
+.chr 31231323
+.chr 32232323
 ; tile 82
-.chr 00000000
-.chr 00000000
-.chr 00000000
-.chr 00000000
-.chr 00000000
-.chr 00000000
-.chr 00000000
-.chr 00000000
+.chr 00033000
+.chr 00033000
+.chr 00333300
+.chr 00322300
+.chr 03333330
+.chr 03222230
+.chr 03222230
+.chr 03333330
 ; tile 83
 .chr 00000000
 .chr 00000000
 .chr 00000000
 .chr 00000000
 ; tile 125
-.chr 00000000
-.chr 00000000
-.chr 00000000
-.chr 00000000
-.chr 00000000
-.chr 00000000
-.chr 00000000
-.chr 00000000
+.chr 33333333
+.chr 11111111
+.chr 22222222
+.chr 22222222
+.chr 22222222
+.chr 22222222
+.chr 22222222
+.chr 22222222
 ; tile 126
-.chr 00000000
-.chr 00000000
-.chr 00000000
-.chr 00000000
-.chr 00000000
-.chr 00000000
-.chr 00000000
-.chr 00000000
+.chr 22222222
+.chr 22222222
+.chr 22222222
+.chr 22222222
+.chr 22222222
+.chr 22222222
+.chr 22222222
+.chr 22222222
 ; tile 127
 .chr 33333333
 .chr 32333333
index 2ff46c89c71a9b20aa002d2337ec4e4d39b3264b..f9881f30f8893a53537a1a527592b419a152a403 100644 (file)
@@ -79,6 +79,9 @@ act_move_up:
 
        ; lo -= b
        ld a, [hl]
+       cp a, 0
+       ret z
+
        sub a, b
        ld [hl+], a
        
@@ -92,6 +95,9 @@ act_move_down:
 
        ; lo += b
        ld a, [hl]
+       cp a, TILE_SIZE * (MAP_H - 1)
+       ret z
+
        add a, b
        ld [hl+], a
        
@@ -112,6 +118,9 @@ act_move_left:
 
        ; lo -= b
        ld a, [hl]
+       cp a, 0
+       ret z
+
        sub a, b
        ld [hl+], a
        
@@ -126,6 +135,9 @@ act_move_right:
 
        ; lo += b
        ld a, [hl]
+       cp a, TILE_SIZE * (MAP_W - 1)
+       ret z
+
        add a, b
        ld [hl+], a
        
index 0851c547ba29177af04682062825ce3e2ef26448..c3b6e3906f00ca24ef2a34c3f4ff321432ec52d5 100644 (file)
@@ -1,4 +1,6 @@
 
+#define TILE_SIZE 8
+
 #define MAP_H 14
 #define MAP_W 20 
 
diff --git a/src/d_ui.s b/src/d_ui.s
new file mode 100644 (file)
index 0000000..6f8cf95
--- /dev/null
@@ -0,0 +1,8 @@
+#define UI_TILE_BG_TOP 0x7D
+#define UI_TILE_BG 0x7E
+
+       ; tile to start at
+#define UI_DRAW_START SCRN0+32*14
+
+#define UI_W 20
+#define UI_H 4
index aa0081cc1a6496ca68bc8c181044aa08aadf3839..a68144e84db2662a764f35f165011606a4d4686b 100644 (file)
@@ -3,6 +3,7 @@
 #include "d_actor.s"
 #include "d_player.s"
 #include "d_tiles.s"
+#include "d_ui.s"
 
 .def int OAMDMAFN = 0xFF80
 
index 5f6c740e875fba75cd85090d17122008c3bb4d1e..fab2cf74e8141d8651133f995b4228f057b78bfd 100644 (file)
@@ -26,6 +26,7 @@ init:
 
        call map_init
        call player_init
+       call ui_init
        
        call lcd_on
        call vblank_wait
@@ -58,3 +59,4 @@ main:
 #include "map.s"
 #include "actor.s"
 #include "player.s"
+#include "ui.s"
diff --git a/src/ui.s b/src/ui.s
new file mode 100644 (file)
index 0000000..510c5e7
--- /dev/null
+++ b/src/ui.s
@@ -0,0 +1,33 @@
+       ; inits the UI
+       ; clears UI area with empty UI tiles
+       ; only call when rendering is disabled
+ui_init:
+       ld hl, UI_DRAW_START
+
+       ld a, UI_TILE_BG_TOP
+       call ui_draw_row
+
+       ld a, UI_TILE_BG
+       call ui_draw_row
+       call ui_draw_row
+       call ui_draw_row
+
+
+       ret
+       
+       ; draws UI row
+       ; inputs:
+       ;               hl: scrn
+       ;                a: tile
+       ;       returns:
+       ;               hl: next scrn address of new row
+ui_draw_row:
+       ld b, UI_W
+@loop:
+               ld [hl+], a
+               dec b
+       jr nz, @loop REL
+
+       ld de, 12
+       add hl, de
+       ret