From 507f82487874feaaafc2ec0b2a0abdcca30fb000 Mon Sep 17 00:00:00 2001 From: Lukas Krickl Date: Mon, 5 Jan 2026 07:15:49 +0100 Subject: [PATCH] sprite overlay: Added oam alloc --- src/player.s | 4 ++++ src/sprites.s | 26 ++++++++++++++++++++++++++ src/wram.s | 4 ++++ 3 files changed, 34 insertions(+) diff --git a/src/player.s b/src/player.s index 104c944..4eddb94 100644 --- a/src/player.s +++ b/src/player.s @@ -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 diff --git a/src/sprites.s b/src/sprites.s index e33b9bb..4ad97fa 100644 --- a/src/sprites.s +++ b/src/sprites.s @@ -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 diff --git a/src/wram.s b/src/wram.s index 36131b2..435e54f 100644 --- a/src/wram.s +++ b/src/wram.s @@ -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 -- 2.30.2