2020-01-14 11:06:40 +00:00
|
|
|
public POINTNUMS_INIT
|
|
|
|
pointnums_init proc near
|
|
|
|
mov _pointnum_white_p, 0
|
|
|
|
mov _pointnum_yellow_p, 0
|
|
|
|
retn
|
|
|
|
pointnums_init endp
|
|
|
|
even
|
|
|
|
|
|
|
|
|
2020-01-15 03:14:12 +00:00
|
|
|
public POINTNUMS_INVALIDATE
|
|
|
|
pointnums_invalidate proc near
|
|
|
|
push si
|
|
|
|
push di
|
|
|
|
mov _tile_invalidate_box.y, POINTNUM_H
|
|
|
|
mov si, offset _pointnums
|
|
|
|
mov di, POINTNUM_COUNT
|
|
|
|
|
|
|
|
@@loop:
|
|
|
|
cmp [si+pointnum_t.flag], 0
|
|
|
|
jz short @@next
|
|
|
|
mov ax, [si+pointnum_t.PN_width]
|
|
|
|
mov _tile_invalidate_box.x, ax
|
|
|
|
mov ax, [si+pointnum_t.PN_center_cur.x]
|
|
|
|
if GAME eq 4
|
|
|
|
cmp [si+pointnum_t.PN_times_2], 0
|
|
|
|
jz short @@not_times_2
|
|
|
|
add ax, ((POINTNUM_TIMES_2_W / 2) shl 4)
|
|
|
|
|
|
|
|
@@not_times_2:
|
|
|
|
endif
|
|
|
|
call tiles_invalidate_around pascal, [si+pointnum_t.PN_center_prev_y], ax
|
|
|
|
|
|
|
|
@@next:
|
|
|
|
add si, size pointnum_t
|
|
|
|
dec di
|
|
|
|
jnz short @@loop
|
|
|
|
pop di
|
|
|
|
pop si
|
|
|
|
retn
|
|
|
|
pointnums_invalidate endp
|
|
|
|
even
|
|
|
|
|
|
|
|
|
|
|
|
public POINTNUMS_UPDATE
|
|
|
|
pointnums_update proc near
|
|
|
|
push si
|
|
|
|
push di
|
|
|
|
mov _pointnum_first_yellow_alive, 0
|
|
|
|
mov bx, offset _pointnums_alive
|
|
|
|
mov si, offset _pointnums
|
|
|
|
mov di, POINTNUM_COUNT
|
|
|
|
|
|
|
|
@@loop:
|
|
|
|
cmp [si+pointnum_t.flag], 0
|
|
|
|
jz short @@next
|
|
|
|
cmp [si+pointnum_t.flag], 2
|
|
|
|
jnz short @@still_alive
|
|
|
|
mov [si+pointnum_t.flag], 0
|
|
|
|
jmp short @@next
|
|
|
|
; ---------------------------------------------------------------------------
|
|
|
|
|
|
|
|
@@still_alive:
|
|
|
|
mov cl, [si+pointnum_t.age]
|
|
|
|
mov ax, [si+pointnum_t.PN_center_cur.y]
|
|
|
|
mov [si+pointnum_t.PN_center_prev_y], ax
|
|
|
|
cmp cl, POINTNUM_POPUP_FRAMES
|
|
|
|
jb short @@popup_frames_elapsed
|
|
|
|
sub ax, (POINTNUM_POPUP_DISTANCE / POINTNUM_POPUP_FRAMES)
|
|
|
|
|
|
|
|
@@popup_frames_elapsed:
|
|
|
|
mov [si+pointnum_t.PN_center_cur.y], ax
|
|
|
|
cmp ax, ((-POINTNUM_H / 2) shl 4)
|
|
|
|
jg short @@not_clipped
|
|
|
|
mov [si+pointnum_t.flag], 2
|
|
|
|
jmp short @@next
|
|
|
|
; ---------------------------------------------------------------------------
|
|
|
|
|
|
|
|
@@not_clipped:
|
|
|
|
inc cl
|
|
|
|
mov [si+pointnum_t.age], cl
|
|
|
|
cmp cl, POINTNUM_FRAMES
|
|
|
|
jbe short @@not_remove
|
|
|
|
mov [si+pointnum_t.flag], 2
|
|
|
|
jmp short @@next
|
|
|
|
; ---------------------------------------------------------------------------
|
|
|
|
|
|
|
|
@@not_remove:
|
|
|
|
mov [bx], si
|
|
|
|
cmp di, POINTNUM_YELLOW_COUNT
|
|
|
|
ja short @@not_yellow
|
|
|
|
cmp _pointnum_first_yellow_alive, 0
|
|
|
|
jnz short @@not_yellow
|
|
|
|
mov _pointnum_first_yellow_alive, si
|
|
|
|
|
|
|
|
@@not_yellow:
|
|
|
|
add bx, word
|
|
|
|
|
|
|
|
@@next:
|
|
|
|
add si, size pointnum_t
|
|
|
|
dec di
|
|
|
|
jnz short @@loop
|
|
|
|
mov word ptr [bx], 0
|
|
|
|
pop di
|
|
|
|
pop si
|
|
|
|
retn
|
|
|
|
pointnums_update endp
|
|
|
|
even
|