mirror of https://github.com/nmlgc/ReC98.git
29 lines
571 B
NASM
29 lines
571 B
NASM
; Searches and returns the next free shot slot, or NULL if there are no more
|
|
; free ones.
|
|
|
|
; shot_t* shots_add(void);
|
|
public _shots_add
|
|
_shots_add proc near
|
|
xor ax, ax
|
|
|
|
@@loop:
|
|
cmp _shot_last_id, SHOT_COUNT
|
|
jnb short @@ret
|
|
mov bx, _shot_ptr
|
|
add _shot_ptr, size shot_t
|
|
cmp [bx+shot_t.flag], 0
|
|
jz short @@found
|
|
inc _shot_last_id
|
|
jmp short @@loop
|
|
|
|
@@found:
|
|
mov word ptr [bx+shot_t.flag], 1
|
|
mov eax, player_pos.cur
|
|
mov dword ptr [bx+shot_t.pos.cur], eax
|
|
mov dword ptr [bx+shot_t.pos.velocity], (-12 shl 4) shl 16 or (0)
|
|
mov ax, bx
|
|
|
|
@@ret:
|
|
retn
|
|
_shots_add endp
|