sprite overlay: Added oam alloc
authorLukas Krickl <lukas@krickl.dev>
Mon, 5 Jan 2026 06:15:49 +0000 (07:15 +0100)
committerLukas Krickl <lukas@krickl.dev>
Mon, 5 Jan 2026 06:15:49 +0000 (07:15 +0100)
src/player.s
src/sprites.s
src/wram.s

index 104c9445f1fe07a6ff7c5619d558371f94411636..4eddb94261bee1b2f35cafb3581e2a53943aec8c 100644 (file)
@@ -78,6 +78,7 @@ player_update:
        call player_handle_move
 
        call player_draw_weapon
+       
 
        ret
 
@@ -105,6 +106,9 @@ player_update:
 
        ; draws weapon spirte
 player_draw_weapon:
+       ld de, so_sword
+       call sprite_overlay_draw
+
        ; TODO: for now we just draw a placeholder
        ld a, 8
        call oamalloc
index e33b9bbbec711be0e0a7c3aca57e19fcc40e4a6a..4ad97faa8ada13a577250400aeb93443a34bd972 100644 (file)
@@ -1,5 +1,31 @@
        ; this file contains rendering code for sprite overlays
        ; this can be e.g. weapons displayed in first person view
 
+so_sword:
 osdef 6, 20, 20
 #include "sword.inc"
+       
+       ; draws a sprite overlay
+       ; inputs:
+       ;               de: sprite overlay ptr
+sprite_overlay_draw:
+       ld a, [de]
+       inc de 
+       ; a = required objects
+       push de
+       call oamalloc
+       ; hl = oam ptr
+       pop de
+       
+       ; load y/x origin
+       ld a, [de]
+       ld [so_tmp_y], a
+       inc de
+       ld a, [de]
+       ld [so_tmp_x], a
+       inc de
+
+       ; de = oam data
+
+
+       ret
index 36131b2b17d1dedf01a11524a2cb2afb959cbb1d..435e54f2056ddf66bb2291192463d4d16d5dafca 100644 (file)
@@ -136,3 +136,7 @@ dir_tfs_end:
        
        ; combat data
 combat: .adv combat_size
+
+       ; sprite overlay temporary registers
+so_tmp_y: .adv 1
+so_tmp_x: .adv 1