mirror of https://github.com/nmlgc/ReC98.git
54 lines
1.0 KiB
NASM
54 lines
1.0 KiB
NASM
public B4BALLS_RENDER
|
|
b4balls_render proc near
|
|
|
|
@@i = word ptr -2
|
|
|
|
enter 2, 0
|
|
push si
|
|
push di
|
|
mov ax, GRAM_400
|
|
mov es, ax
|
|
assume es:nothing
|
|
mov si, offset b4balls
|
|
mov [bp+@@i], 1
|
|
jmp short @@more?
|
|
; ---------------------------------------------------------------------------
|
|
|
|
@@loop:
|
|
cmp [si+b4ball_t.flag], 0
|
|
jz short @@next
|
|
mov di, [si+b4ball_t.B4B_patnum_tiny_base]
|
|
cmp di, PAT_B4BALL_SNOW_HIT
|
|
jge short @@put
|
|
mov ax, [si+b4ball_t.B4B_age]
|
|
and ax, (B4BALL_CELS - 1)
|
|
add ax, di
|
|
mov di, ax
|
|
cmp [si+b4ball_t.B4B_damaged_this_frame], 0
|
|
jz short @@not_hit
|
|
add di, (PAT_B4BALL_SNOW_HIT - PAT_B4BALL_SNOW)
|
|
|
|
@@not_hit:
|
|
mov [si+b4ball_t.B4B_damaged_this_frame], 0
|
|
|
|
@@put:
|
|
call scroll_subpixel_y_to_vram_seg1 pascal, [si+b4ball_t.pos.cur.y]
|
|
mov dx, ax
|
|
mov ax, [si+b4ball_t.pos.cur.x]
|
|
sar ax, 4
|
|
add ax, (PLAYFIELD_X - (B4BALL_W / 2))
|
|
call z_super_roll_put_tiny_32x32_raw pascal, di
|
|
|
|
@@next:
|
|
inc [bp+@@i]
|
|
add si, size b4ball_t
|
|
|
|
@@more?:
|
|
cmp [bp+@@i], 1 + B4BALL_COUNT
|
|
jl short @@loop
|
|
pop di
|
|
pop si
|
|
leave
|
|
retn
|
|
b4balls_render endp
|