; ; 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