ReC98/th04/main/bullet/update.asm

69 lines
1.3 KiB
NASM

public BULLET_TURN_X
bullet_turn_x proc near
@@bullet = word ptr 4
push bp
mov bp, sp
push si
mov si, [bp+@@bullet]
inc [si+bullet_t.turn_count]
mov al, 80h
sub al, [si+bullet_t.BULLET_angle]
mov [si+bullet_t.BULLET_angle], al
mov al, [si+bullet_t.turn_count]
cmp al, _bullet_turn_count_max
jb short @@still_allowed_to_turn
mov [si+bullet_t.move_state], BMS_REGULAR
@@still_allowed_to_turn:
lea ax, [si+bullet_t.pos.velocity]
push ax
push word ptr [si+bullet_t.BULLET_angle]
mov al, [si+bullet_t.speed_cur]
mov ah, 0
push ax
call vector2_near
if GAME eq 5
call bullet_update_patnum pascal, si
endif
pop si
pop bp
retn 2
bullet_turn_x endp
public BULLET_TURN_Y
bullet_turn_y proc near
@@bullet = word ptr 4
push bp
mov bp, sp
push si
mov si, [bp+@@bullet]
inc [si+bullet_t.turn_count]
mov al, [si+bullet_t.BULLET_angle]
neg al
mov [si+bullet_t.BULLET_angle], al
mov al, [si+bullet_t.turn_count]
cmp al, _bullet_turn_count_max
jb short @@still_allowed_to_turn
mov [si+bullet_t.move_state], BMS_REGULAR
@@still_allowed_to_turn:
lea ax, [si+bullet_t.pos.velocity]
push ax
push word ptr [si+bullet_t.BULLET_angle]
mov al, [si+bullet_t.speed_cur]
mov ah, 0
push ax
call vector2_near
if GAME eq 5
call bullet_update_patnum pascal, si
endif
pop si
pop bp
retn 2
bullet_turn_y endp