From a20b308cfe92a8bb47c6896e7fdb24b15c2efd59 Mon Sep 17 00:00:00 2001 From: "Juan J. Martinez" Date: Fri, 12 May 2023 23:36:49 +0100 Subject: Add player bullets Also a changes in the entity system: - don't preserve the BG (always erase black) - skip unused entities - fix in the reserved size (and entity is 8 bytes) - allocate new entities --- game/bullet.asm | 99 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100644 game/bullet.asm (limited to 'game/bullet.asm') diff --git a/game/bullet.asm b/game/bullet.asm new file mode 100644 index 0000000..c2b55cd --- /dev/null +++ b/game/bullet.asm @@ -0,0 +1,99 @@ +; +; Player bullets +; +bullet_player_new: + call entities_new + bnc + ret + + ; a : x points to the entity + + ld y, ET_BULLET + ld [a : x], y + + inc x + bo + inc a + + ; caller entity is in the stack + ld y, [sp + 4] + ld b, [sp + 5] + + inc y + bo + inc b + push y + ld y, [b : y] + ; same x + ld [a : x], y + pop y + + inc x + bo + inc a + + inc y + bo + inc b + ld y, [b : y] + ; same y + ld [a : x], y + + inc x + bo + inc a + + ; frame 0 + ld y, 0 + ld [a : x], y + + inc x + bo + inc a + + ; player bullet sprite + ld y, pbullet_sprite + ld [a : x], y + + inc x + bo + inc b + + ; update function + ld y, pbullet_update + ld [a : x], y + + ret + +pbullet_update: + ld x, [sp + 2] + ld a, [sp + 3] + + add x, 2 + bo + inc a + + ld y, [a : x] + sub y, 2 + bo + jmp pbullet_done + ld [a : x], y + ret + +pbullet_done: + ld x, [sp + 2] + ld a, [sp + 3] + + ld y, ET_NONE + ld [a : x], y + ret -- cgit v1.2.3