mirror of https://github.com/nmlgc/ReC98.git
80 lines
1.1 KiB
NASM
80 lines
1.1 KiB
NASM
public BGIMAGE_PUT_RECT
|
|
bgimage_put_rect proc far
|
|
|
|
@@h = word ptr 6
|
|
@@w = word ptr 8
|
|
@@y = word ptr 0Ah
|
|
@@x = word ptr 0Ch
|
|
|
|
push bp
|
|
mov bp, sp
|
|
push di
|
|
push si
|
|
push ds
|
|
cld
|
|
mov ax, [bp+@@x]
|
|
mov dx, [bp+@@y]
|
|
mov bx, ax
|
|
sar bx, 4
|
|
shl bx, 1
|
|
shl dx, 6
|
|
add bx, dx
|
|
shr dx, 2
|
|
add bx, dx
|
|
mov word ptr cs:[@@vram_offset], bx
|
|
and ax, 0Fh
|
|
mov cx, ax
|
|
add ax, [bp+@@w]
|
|
shr ax, 4
|
|
or cx, cx
|
|
jz short @@x_on_word_boundary
|
|
inc ax
|
|
|
|
@@x_on_word_boundary:
|
|
mov word ptr cs:[@@width_words], ax
|
|
jmp short $+2
|
|
mov cx, (ROW_SIZE / 2)
|
|
sub cx, ax
|
|
shl cx, 1
|
|
mov ax, [bp+@@h]
|
|
mov bp, cx
|
|
push 0E000h
|
|
push bgimage_PL_E
|
|
push 0B800h
|
|
push bgimage_PL_G
|
|
push 0B000h
|
|
push bgimage_PL_R
|
|
push 0A800h
|
|
push bgimage_PL_B
|
|
mov dl, 4
|
|
|
|
@@next_plane:
|
|
mov bx, ax
|
|
|
|
@@vram_offset equ $+1
|
|
mov di, 1234h
|
|
pop ds
|
|
assume es:nothing
|
|
pop es
|
|
@@next_row:
|
|
@@width_words equ $+1
|
|
mov cx, 1234h
|
|
mov si, di
|
|
rep movsw
|
|
add di, bp
|
|
dec bx
|
|
if GAME eq 5
|
|
jnz short @@next_row
|
|
else
|
|
jns short @@next_row
|
|
endif
|
|
dec dl
|
|
jnz short @@next_plane
|
|
pop ds
|
|
pop si
|
|
pop di
|
|
pop bp
|
|
retf 8
|
|
bgimage_put_rect endp
|
|
even
|