ReC98/th03/op/cmt_back_snap.asm

136 lines
2.4 KiB
NASM

; (identical to the already decompiled TH02 version, except for the first two
; X coordinates)
public CMT_BACK_SNAP
cmt_back_snap proc near
@@i = word ptr -6
@@pd = word ptr -4
@@x = word ptr -2
enter 6, 0
push si
push di
mov [bp+@@i], 0
jmp short loc_A8F7
; ---------------------------------------------------------------------------
loc_A8DC:
call hmem_allocbyte pascal, 3200h
mov bx, [bp+@@i]
shl bx, 2
mov word ptr _cmt_back[bx]+2, ax
mov word ptr _cmt_back[bx]+0, 0
inc [bp+@@i]
loc_A8F7:
cmp [bp+@@i], 4
jl short loc_A8DC
xor si, si
mov di, 64
jmp short loc_A97D
; ---------------------------------------------------------------------------
loc_A904:
mov [bp+@@x], 304
jmp short loc_A975
; ---------------------------------------------------------------------------
loc_A90B:
mov ax, [bp+@@x]
sar ax, 3
mov dx, di
shl dx, 6
add ax, dx
mov dx, di
shl dx, 4
add ax, dx
mov [bp+@@pd], ax
les bx, _VRAM_PLANE_B
assume es:nothing
add bx, [bp+@@pd]
mov eax, es:[bx]
les bx, cmt_back_PL_B
mov es:[bx+si], eax
les bx, _VRAM_PLANE_R
add bx, [bp+@@pd]
mov eax, es:[bx]
les bx, cmt_back_PL_R
mov es:[bx+si], eax
les bx, _VRAM_PLANE_G
add bx, [bp+@@pd]
mov eax, es:[bx]
les bx, cmt_back_PL_G
mov es:[bx+si], eax
les bx, _VRAM_PLANE_E
add bx, [bp+@@pd]
mov eax, es:[bx]
les bx, cmt_back_PL_E
mov es:[bx+si], eax
add si, 4
add [bp+@@x], (4 * 8)
loc_A975:
cmp [bp+@@x], 624
jl short loc_A90B
inc di
loc_A97D:
cmp di, 80
jl short loc_A904
mov di, 80
jmp short loc_AA00
; ---------------------------------------------------------------------------
loc_A987:
mov [bp+@@x], 304
jmp short loc_A9F8
; ---------------------------------------------------------------------------
loc_A98E:
mov ax, [bp+@@x]
sar ax, 3
mov dx, di
shl dx, 6
add ax, dx
mov dx, di
shl dx, 4
add ax, dx
mov [bp+@@pd], ax
les bx, _VRAM_PLANE_B
add bx, [bp+@@pd]
mov eax, es:[bx]
les bx, cmt_back_PL_B
mov es:[bx+si], eax
les bx, _VRAM_PLANE_R
add bx, [bp+@@pd]
mov eax, es:[bx]
les bx, cmt_back_PL_R
mov es:[bx+si], eax
les bx, _VRAM_PLANE_G
add bx, [bp+@@pd]
mov eax, es:[bx]
les bx, cmt_back_PL_G
mov es:[bx+si], eax
les bx, _VRAM_PLANE_E
add bx, [bp+@@pd]
mov eax, es:[bx]
les bx, cmt_back_PL_E
mov es:[bx+si], eax
add si, 4
add [bp+@@x], (4 * 8)
loc_A9F8:
cmp [bp+@@x], 624
jl short loc_A98E
inc di
loc_AA00:
cmp di, 384
jl short loc_A987
pop di
pop si
leave
retn
cmt_back_snap endp