Windows.


WARLOCK () - 13


EXTRN sliver_column:WORD ;

EXTRN sliver_top:WORD ;

EXTRN sliver_scale:WORD ;

ERN sliver_ray:WORD ;

EXTRN sliver_clip:WORD ; ?

EXTRN scale_row;WORD ; ;

PUBLIC Render_Sliver_32 ;

Render_Sliver_32 PROC FAR ;

.386 ; 80386

push si ; push di

les di, doubie_buffer ; ES:DI

mov dx,sliver_column ; DX

lfs si, sliver_texture ; FS:SI

; offset = (sprite->y 8) + (sprite->y 6) + sprite->x

mov bx,sliver_top ; Y 320

;

shl bx,8

mov ax,bx

shr bx, 2

add bx,ax

add bx,sliver_ray ;

add di,bx

mov bx,sliver_clip ;

mov ax,sliver_scale

add ax,bx

Sliver_Loop: ;

; double_buffer [offset] = work_sprite [work_offset+column]

xchg dx,bx ; BX DX,

; BX

;

mov cl, BYTE PTR fs:[si+bx] ;

mov es:[di], cl ;

xchg dx,bx ; DX

mov , ;

; row = scale_table[scale]

mov dx, scale_row

shl bx,1

add bx, dx

mov dx, WORD PTR [bx] ;

add dx,sliver_column

mov bx,cx

; offset += SCREEN_WIDTH;

add di,320 ;

inc bx ;

cmp bx, ax ; ?

jne Sliver_Loop

pop di ;

pop si

ret ;

Render_Sliver_32 ENDP END

, , -.