[Reverse-engineering] Slot-based PI display

Also covering the two variations for blitting only every second row or
blitting only a 320x200 quarter, as seen in the endings.

So yeah, there's indeed nothing wrong with piread.cpp. TH03 just uses that
separate function that only blits every second row of an image, and indeed
always loads the entire image as it would appear in a PNG conversion. Here's
what happens if you display these images using the non-interlacing function:
https://www.dropbox.com/s/885krj09d9l0890/th03%20PI%20no%20interlace.png
This commit is contained in:
nmlgc 2014-12-18 14:36:43 +01:00
parent 721aa18de8
commit a07e5fad42
13 changed files with 413 additions and 1274 deletions

View File

@ -0,0 +1,65 @@
; Displays the PI image in slot #[slot] at [x],[y]. If the image exceeds the
; screen resolution, it is wrapped vertically and cut off horizontally.
; int DEFCONV pi_slot_put(int x, int y, int slot)
proc_defconv pi_slot_put
arg @@x:word, @@y:word, @@slot:word
if GAME ge 3
local @@row_num:word, @@row_buf:dword
else
local @@row_buf:dword, @@row_num:word
endif
push si
push di
mov si, @@y
mov di, @@slot
mov bx, di
shl bx, 2
mov ax, word ptr (pi_slot_buffers+2)[bx]
mov dx, word ptr pi_slot_buffers[bx]
mov word ptr @@row_buf+2, ax
mov word ptr @@row_buf, dx
mov @@row_num, 0
jmp short @@check
@@put:
push @@x
push si
pushd @@row_buf
mov bx, di
imul bx, size PiHeader
push pi_slot_headers.PiHeader._xsize[bx]
call graph_pack_put_8
inc si
cmp si, 400
jl short @@next_row
sub si, 400
@@next_row:
mov bx, di
imul bx, size PiHeader
mov ax, pi_slot_headers.PiHeader._xsize[bx]
shr ax, 1
add word ptr @@row_buf, ax
mov eax, @@row_buf
shr eax, 10h
mov dx, word ptr @@row_buf
shr dx, 4
add ax, dx
mov dx, word ptr @@row_buf
and dx, 0Fh
mov word ptr @@row_buf+2, ax
mov word ptr @@row_buf, dx
inc @@row_num
@@check:
mov bx, di
imul bx, size PiHeader
mov ax, pi_slot_headers.PiHeader._ysize[bx]
cmp ax, @@row_num
ja short @@put
pop di
pop si
ret
pi_slot_put endp

View File

@ -2320,9 +2320,7 @@ var_C = byte ptr -0Ch
call sub_FBE9 call sub_FBE9
call pi_slot_palette_apply stdcall, 0 call pi_slot_palette_apply stdcall, 0
call pi_slot_palette_apply stdcall, 0 call pi_slot_palette_apply stdcall, 0
pushd 90h call pi_slot_put stdcall, 96, large 144
push 60h
call sub_F970
add sp, 0Ah add sp, 0Ah
call sub_102D6 call sub_102D6
call sub_16A6B call sub_16A6B
@ -8495,11 +8493,7 @@ loc_E782:
sub si, 190h sub si, 190h
loc_E793: loc_E793:
push 1 call pi_slot_put c, 112, si, 1
push si
push 70h ; 'p'
call sub_F970
add sp, 6
loc_E7A0: loc_E7A0:
cmp word_218B6, 56h ; 'V' cmp word_218B6, 56h ; 'V'
@ -8729,10 +8723,7 @@ loc_E9A6:
sub [bp+var_2], 190h sub [bp+var_2], 190h
loc_E9DB: loc_E9DB:
push 1 call pi_slot_put stdcall, 32, [bp+var_2], 1
push [bp+var_2]
push 20h ; ' '
call sub_F970
push 10h push 10h
call sub_FA52 call sub_FA52
add sp, 8 add sp, 8
@ -8959,11 +8950,7 @@ loc_EBCC:
sub si, 190h sub si, 190h
loc_EBE2: loc_EBE2:
push 1 call pi_slot_put c, 32, si, 1
push si
push 20h ; ' '
call sub_F970
add sp, 6
loc_EBEF: loc_EBEF:
test byte ptr word_218B6, 3 test byte ptr word_218B6, 3
@ -10588,76 +10575,7 @@ loc_F927:
sub_F913 endp sub_F913 endp
include th02/formats/pi_slot_palette_apply.asm include th02/formats/pi_slot_palette_apply.asm
include th02/formats/pi_slot_put.asm
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_F970 proc far
var_6 = word ptr -6
var_4 = dword ptr -4
arg_0 = word ptr 6
arg_2 = word ptr 8
arg_4 = word ptr 0Ah
enter 6, 0
push si
push di
mov si, [bp+arg_2]
mov di, [bp+arg_4]
mov bx, di
shl bx, 2
mov ax, [bx+22EEh]
mov dx, [bx+22ECh]
mov word ptr [bp+var_4+2], ax
mov word ptr [bp+var_4], dx
mov [bp+var_6], 0
jmp short loc_F9E4
; ---------------------------------------------------------------------------
loc_F996:
push [bp+arg_0]
push si
pushd [bp+var_4]
mov bx, di
imul bx, 48h
push word ptr [bx+2318h]
call graph_pack_put_8
inc si
cmp si, 190h
jl short loc_F9B7
sub si, 190h
loc_F9B7:
mov bx, di
imul bx, 48h
mov ax, [bx+2318h]
shr ax, 1
add word ptr [bp+var_4], ax
mov eax, [bp+var_4]
shr eax, 10h
mov dx, word ptr [bp+var_4]
shr dx, 4
add ax, dx
mov dx, word ptr [bp+var_4]
and dx, 0Fh
mov word ptr [bp+var_4+2], ax
mov word ptr [bp+var_4], dx
inc [bp+var_6]
loc_F9E4:
mov bx, di
imul bx, 48h
mov ax, [bx+231Ah]
cmp ax, [bp+var_6]
ja short loc_F996
pop di
pop si
leave
retf
sub_F970 endp
include th02/hardware/snd_kaja_func.asm include th02/hardware/snd_kaja_func.asm
; --------------------------------------------------------------------------- ; ---------------------------------------------------------------------------

View File

@ -1058,10 +1058,7 @@ sub_9B64 proc near
call pi_slot_load c, 0, offset aEd01_pi, ds call pi_slot_load c, 0, offset aEd01_pi, ds
call pi_slot_palette_apply stdcall, 0 call pi_slot_palette_apply stdcall, 0
pop cx pop cx
pushd 0 call pi_slot_put c, 0, large 0
push 0
call sub_B7B3
add sp, 6
freePISlotLarge 0 freePISlotLarge 0
push 2 push 2
call palette_black_in call palette_black_in
@ -1294,10 +1291,7 @@ loc_9D96:
call pi_slot_load c, 0, offset aEd02_pi, ds call pi_slot_load c, 0, offset aEd02_pi, ds
call pi_slot_palette_apply stdcall, 0 call pi_slot_palette_apply stdcall, 0
pop cx pop cx
pushd 0 call pi_slot_put c, 0, large 0
push 0
call sub_B7B3
add sp, 6
freePISlotLarge 0 freePISlotLarge 0
push 2 push 2
call palette_black_out call palette_black_out
@ -1594,10 +1588,7 @@ sub_A09D proc near
call pi_slot_load c, 0, offset aEd01_pi, ds call pi_slot_load c, 0, offset aEd01_pi, ds
call pi_slot_palette_apply stdcall, 0 call pi_slot_palette_apply stdcall, 0
pop cx pop cx
pushd 0 call pi_slot_put c, 0, large 0
push 0
call sub_B7B3
add sp, 6
freePISlotLarge 0 freePISlotLarge 0
push 2 push 2
call palette_black_in call palette_black_in
@ -1623,10 +1614,7 @@ sub_A09D proc near
call pi_slot_load c, 0, offset aEd03_pi, ds call pi_slot_load c, 0, offset aEd03_pi, ds
call pi_slot_palette_apply stdcall, 0 call pi_slot_palette_apply stdcall, 0
pop cx pop cx
pushd 0 call pi_slot_put c, 0, large 0
push 0
call sub_B7B3
add sp, 6
freePISlotLarge 0 freePISlotLarge 0
push 0 push 0
call sub_98B5 call sub_98B5
@ -1746,10 +1734,7 @@ loc_A247:
call pi_slot_load c, 0, offset aEd04_pi, ds call pi_slot_load c, 0, offset aEd04_pi, ds
call pi_slot_palette_apply stdcall, 0 call pi_slot_palette_apply stdcall, 0
pop cx pop cx
pushd 0 call pi_slot_put c, 0, large 0
push 0
call sub_B7B3
add sp, 6
freePISlotLarge 0 freePISlotLarge 0
mov dx, 0A6h ; '¦' mov dx, 0A6h ; '¦'
mov al, 0 mov al, 0
@ -1960,10 +1945,7 @@ loc_A451:
call pi_slot_load c, 0, offset aEd05_pi, ds call pi_slot_load c, 0, offset aEd05_pi, ds
call pi_slot_palette_apply stdcall, 0 call pi_slot_palette_apply stdcall, 0
pop cx pop cx
pushd 0 call pi_slot_put c, 0, large 0
push 0
call sub_B7B3
add sp, 6
freePISlotLarge 0 freePISlotLarge 0
push 0 push 0
call sub_98B5 call sub_98B5
@ -2121,10 +2103,7 @@ loc_A620:
call pi_slot_load c, 0, offset aEd05_pi, ds call pi_slot_load c, 0, offset aEd05_pi, ds
call pi_slot_palette_apply stdcall, 0 call pi_slot_palette_apply stdcall, 0
pop cx pop cx
pushd 0 call pi_slot_put c, 0, large 0
push 0
call sub_B7B3
add sp, 6
freePISlotLarge 0 freePISlotLarge 0
push 1 push 1
call sub_98B5 call sub_98B5
@ -2267,10 +2246,7 @@ loc_A6B6:
call pi_slot_load c, 0, offset aEd05_pi, ds call pi_slot_load c, 0, offset aEd05_pi, ds
call pi_slot_palette_apply stdcall, 0 call pi_slot_palette_apply stdcall, 0
pop cx pop cx
pushd 0 call pi_slot_put c, 0, large 0
push 0
call sub_B7B3
add sp, 6
freePISlotLarge 0 freePISlotLarge 0
push 2 push 2
call sub_98B5 call sub_98B5
@ -2492,10 +2468,7 @@ loc_A992:
call pi_slot_load c, 0, offset aEd06_pi, ds call pi_slot_load c, 0, offset aEd06_pi, ds
call pi_slot_palette_apply stdcall, 0 call pi_slot_palette_apply stdcall, 0
pop cx pop cx
pushd 0 call pi_slot_put c, 0, large 0
push 0
call sub_B7B3
add sp, 6
freePISlotLarge 0 freePISlotLarge 0
mov dx, 0A6h ; '¦' mov dx, 0A6h ; '¦'
mov al, 0 mov al, 0
@ -2540,10 +2513,7 @@ loc_A992:
mov al, 1 mov al, 1
out dx, al out dx, al
call pi_slot_load c, 0, offset aEd07_pi, ds call pi_slot_load c, 0, offset aEd07_pi, ds
pushd 0 call pi_slot_put c, 0, large 0
push 0
call sub_B7B3
add sp, 6
freePISlotLarge 0 freePISlotLarge 0
mov dx, 0A6h ; '¦' mov dx, 0A6h ; '¦'
mov al, 0 mov al, 0
@ -2621,10 +2591,7 @@ loc_A992:
mov al, 1 mov al, 1
out dx, al out dx, al
call pi_slot_load c, 0, offset aEd08_pi, ds call pi_slot_load c, 0, offset aEd08_pi, ds
pushd 0 call pi_slot_put c, 0, large 0
push 0
call sub_B7B3
add sp, 6
mov dx, 0A6h ; '¦' mov dx, 0A6h ; '¦'
mov al, 0 mov al, 0
out dx, al out dx, al
@ -2713,10 +2680,7 @@ loc_A992:
call pi_slot_load c, 0, offset aEd09_pi, ds call pi_slot_load c, 0, offset aEd09_pi, ds
call pi_slot_palette_apply stdcall, 0 call pi_slot_palette_apply stdcall, 0
pop cx pop cx
pushd 0 call pi_slot_put c, 0, large 0
push 0
call sub_B7B3
add sp, 6
freePISlotLarge 0 freePISlotLarge 0
push 0 push 0
call graph_copy_page call graph_copy_page
@ -3045,10 +3009,7 @@ sub_AFE7 proc far
call pi_slot_load c, 0, offset aAll_pi, ds call pi_slot_load c, 0, offset aAll_pi, ds
call pi_slot_palette_apply stdcall, 0 call pi_slot_palette_apply stdcall, 0
pop cx pop cx
pushd 0 call pi_slot_put c, 0, large 0
push 0
call sub_B7B3
add sp, 6
freePISlotLarge 0 freePISlotLarge 0
push 2 push 2
call palette_black_in call palette_black_in
@ -3057,10 +3018,7 @@ sub_AFE7 proc far
call pi_slot_load c, 0, offset aBut_pi, ds call pi_slot_load c, 0, offset aBut_pi, ds
call pi_slot_palette_apply stdcall, 0 call pi_slot_palette_apply stdcall, 0
pop cx pop cx
pushd 0 call pi_slot_put c, 0, large 0
push 0
call sub_B7B3
add sp, 6
freePISlotLarge 0 freePISlotLarge 0
call sub_B4B7 call sub_B4B7
push 5 push 5
@ -3087,10 +3045,7 @@ sub_B07F proc far
call pi_slot_load c, 0, offset aAll_pi, ds call pi_slot_load c, 0, offset aAll_pi, ds
call pi_slot_palette_apply stdcall, 0 call pi_slot_palette_apply stdcall, 0
pop cx pop cx
pushd 0 call pi_slot_put c, 0, large 0
push 0
call sub_B7B3
add sp, 6
freePISlotLarge 0 freePISlotLarge 0
push 2 push 2
call palette_black_in call palette_black_in
@ -3099,10 +3054,7 @@ sub_B07F proc far
call pi_slot_load c, 0, offset aExtra_pi, ds call pi_slot_load c, 0, offset aExtra_pi, ds
call pi_slot_palette_apply stdcall, 0 call pi_slot_palette_apply stdcall, 0
pop cx pop cx
pushd 0 call pi_slot_put c, 0, large 0
push 0
call sub_B7B3
add sp, 6
freePISlotLarge 0 freePISlotLarge 0
call sub_B4B7 call sub_B4B7
push 5 push 5
@ -3823,76 +3775,7 @@ loc_B76A:
sub_B756 endp sub_B756 endp
include th02/formats/pi_slot_palette_apply.asm include th02/formats/pi_slot_palette_apply.asm
include th02/formats/pi_slot_put.asm
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_B7B3 proc far
var_6 = word ptr -6
var_4 = dword ptr -4
arg_0 = word ptr 6
arg_2 = word ptr 8
arg_4 = word ptr 0Ah
enter 6, 0
push si
push di
mov si, [bp+arg_2]
mov di, [bp+arg_4]
mov bx, di
shl bx, 2
mov ax, [bx+2924h]
mov dx, [bx+2922h]
mov word ptr [bp+var_4+2], ax
mov word ptr [bp+var_4], dx
mov [bp+var_6], 0
jmp short loc_B827
; ---------------------------------------------------------------------------
loc_B7D9:
push [bp+arg_0]
push si
pushd [bp+var_4]
mov bx, di
imul bx, 48h
push word ptr [bx+294Eh]
call graph_pack_put_8
inc si
cmp si, 190h
jl short loc_B7FA
sub si, 190h
loc_B7FA:
mov bx, di
imul bx, 48h
mov ax, [bx+294Eh]
shr ax, 1
add word ptr [bp+var_4], ax
mov eax, [bp+var_4]
shr eax, 10h
mov dx, word ptr [bp+var_4]
shr dx, 4
add ax, dx
mov dx, word ptr [bp+var_4]
and dx, 0Fh
mov word ptr [bp+var_4+2], ax
mov word ptr [bp+var_4], dx
inc [bp+var_6]
loc_B827:
mov bx, di
imul bx, 48h
mov ax, [bx+2950h]
cmp ax, [bp+var_6]
ja short loc_B7D9
pop di
pop si
leave
retf
sub_B7B3 endp
include th02/hardware/snd_kaja_func.asm include th02/hardware/snd_kaja_func.asm
; =============== S U B R O U T I N E ======================================= ; =============== S U B R O U T I N E =======================================

View File

@ -383,10 +383,7 @@ arg_2 = word ptr 6
mov al, [bp+arg_0] mov al, [bp+arg_0]
out dx, al out dx, al
call pi_slot_palette_apply stdcall, 0 call pi_slot_palette_apply stdcall, 0
push 0 call pi_slot_put stdcall, 0, 0, 0
push 0
push 0
call sub_B17D
add sp, 0Eh add sp, 0Eh
freePISlot 0 freePISlot 0
pop bp pop bp
@ -1095,10 +1092,7 @@ loc_A3BC:
out dx, al out dx, al
call pi_slot_load stdcall, 0, offset aOp2_pi, ds call pi_slot_load stdcall, 0, offset aOp2_pi, ds
call pi_slot_palette_apply stdcall, 0 call pi_slot_palette_apply stdcall, 0
push 0 call pi_slot_put stdcall, 0, 0, 0
push 0
push 0
call sub_B17D
add sp, 0Eh add sp, 0Eh
freePISlot 0 freePISlot 0
push ds push ds
@ -2619,76 +2613,7 @@ include th02/hardware/snd_determine_mode.asm
include th02/hardware/snd_pmd_resident.asm include th02/hardware/snd_pmd_resident.asm
include th02/hardware/snd_load.asm include th02/hardware/snd_load.asm
include th02/formats/pi_slot_palette_apply.asm include th02/formats/pi_slot_palette_apply.asm
include th02/formats/pi_slot_put.asm
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_B17D proc far
var_6 = word ptr -6
var_4 = dword ptr -4
arg_0 = word ptr 6
arg_2 = word ptr 8
arg_4 = word ptr 0Ah
enter 6, 0
push si
push di
mov si, [bp+arg_2]
mov di, [bp+arg_4]
mov bx, di
shl bx, 2
mov ax, [bx+1B4Eh]
mov dx, [bx+1B4Ch]
mov word ptr [bp+var_4+2], ax
mov word ptr [bp+var_4], dx
mov [bp+var_6], 0
jmp short loc_B1F1
; ---------------------------------------------------------------------------
loc_B1A3:
push [bp+arg_0]
push si
pushd [bp+var_4]
mov bx, di
imul bx, 48h
push word ptr [bx+1B78h]
call graph_pack_put_8
inc si
cmp si, 190h
jl short loc_B1C4
sub si, 190h
loc_B1C4:
mov bx, di
imul bx, 48h
mov ax, [bx+1B78h]
shr ax, 1
add word ptr [bp+var_4], ax
mov eax, [bp+var_4]
shr eax, 10h
mov dx, word ptr [bp+var_4]
shr dx, 4
add ax, dx
mov dx, word ptr [bp+var_4]
and dx, 0Fh
mov word ptr [bp+var_4+2], ax
mov word ptr [bp+var_4], dx
inc [bp+var_6]
loc_B1F1:
mov bx, di
imul bx, 48h
mov ax, [bx+1B7Ah]
cmp ax, [bp+var_6]
ja short loc_B1A3
pop di
pop si
leave
retf
sub_B17D endp
include th02/hardware/snd_kaja_func.asm include th02/hardware/snd_kaja_func.asm
; --------------------------------------------------------------------------- ; ---------------------------------------------------------------------------
@ -2866,7 +2791,7 @@ loc_B329:
loc_B330: loc_B330:
push 0 push 0
push 0 push 0
call sub_B17D call pi_slot_put
add sp, 6 add sp, 6
loc_B33C: loc_B33C:
@ -4096,10 +4021,7 @@ sub_BBC0 proc far
out dx, al out dx, al
call pi_slot_load stdcall, 3, offset aTselect_pi, ds call pi_slot_load stdcall, 3, offset aTselect_pi, ds
call pi_slot_palette_apply stdcall, 3 call pi_slot_palette_apply stdcall, 3
push 3 call pi_slot_put stdcall, 0, 0, 3
push 0
push 0
call sub_B17D
add sp, 0Eh add sp, 0Eh
freePISlot 3 freePISlot 3
push 1 push 1
@ -4173,18 +4095,9 @@ loc_BCA3:
add sp, 0Ah add sp, 0Ah
loc_BCBA: loc_BCBA:
push 0 call pi_slot_put stdcall, 24, 136, 0
push 88h call pi_slot_put stdcall, 224, 224, 1
push 18h call pi_slot_put stdcall, 440, 136, 2
call sub_B17D
push 1
push 0E0h
push 0E0h
call sub_B17D
push 2
push 88h
push 1B8h
call sub_B17D
les bx, dword_F3DC les bx, dword_F3DC
mov byte ptr es:[bx+26h], 1 mov byte ptr es:[bx+26h], 1
push 88h push 88h
@ -4292,7 +4205,7 @@ loc_BD6A:
mov ax, ss:[bx] mov ax, ss:[bx]
add ax, 8 add ax, 8
push ax push ax
call sub_B17D call pi_slot_put
add sp, 6 add sp, 6
push 1 push 1
call frame_delay call frame_delay
@ -4357,7 +4270,7 @@ loc_BE0F:
add ax, dx add ax, dx
mov bx, ax mov bx, ax
push word ptr ss:[bx] push word ptr ss:[bx]
call sub_B17D call pi_slot_put
add sp, 6 add sp, 6
loc_BE6D: loc_BE6D:
@ -4396,7 +4309,7 @@ loc_BE77:
mov ax, ss:[bx] mov ax, ss:[bx]
add ax, 8 add ax, 8
push ax push ax
call sub_B17D call pi_slot_put
add sp, 6 add sp, 6
push 1 push 1
call frame_delay call frame_delay
@ -4469,7 +4382,7 @@ loc_BF1C:
add ax, dx add ax, dx
mov bx, ax mov bx, ax
push word ptr ss:[bx] push word ptr ss:[bx]
call sub_B17D call pi_slot_put
add sp, 6 add sp, 6
loc_BF7A: loc_BF7A:
@ -5527,10 +5440,7 @@ var_1 = byte ptr -1
out dx, al out dx, al
call pi_slot_load stdcall, 0, offset aOp3_pi, ds call pi_slot_load stdcall, 0, offset aOp3_pi, ds
call pi_slot_palette_apply stdcall, 0 call pi_slot_palette_apply stdcall, 0
push 0 call pi_slot_put stdcall, 0, 0, 0
push 0
push 0
call sub_B17D
add sp, 0Eh add sp, 0Eh
freePISlot 0 freePISlot 0
mov al, byte_DF97 mov al, byte_DF97
@ -5707,10 +5617,7 @@ loc_C978:
out dx, al out dx, al
call pi_slot_load stdcall, 0, offset aOp2_pi_0, ds call pi_slot_load stdcall, 0, offset aOp2_pi_0, ds
call pi_slot_palette_apply stdcall, 0 call pi_slot_palette_apply stdcall, 0
push 0 call pi_slot_put stdcall, 0, 0, 0
push 0
push 0
call sub_B17D
add sp, 0Eh add sp, 0Eh
freePISlot 0 freePISlot 0
push ds push ds

View File

@ -0,0 +1,59 @@
; Copy of pi_slot_put() that only displays every second row in the given PI.
; int DEFCONV pi_slot_put_interlace(int x, int y, int slot)
proc_defconv pi_slot_put_interlace
arg @@x:word, @@y:word, @@slot:word
local @@row_num:word, @@row_buf:dword
push si
push di
mov si, @@y
mov di, @@slot
mov bx, di
shl bx, 2
mov ax, word ptr (pi_slot_buffers+2)[bx]
mov dx, word ptr pi_slot_buffers[bx]
mov word ptr @@row_buf+2, ax
mov word ptr @@row_buf, dx
mov @@row_num, 0
jmp short @@check
@@put:
push @@x
push si
pushd @@row_buf
mov bx, di
imul bx, size PiHeader
push pi_slot_headers.PiHeader._xsize[bx]
call graph_pack_put_8
inc si
cmp si, 400
jl short @@next_row
sub si, 400
@@next_row:
mov bx, di
imul bx, size PiHeader
mov ax, pi_slot_headers.PiHeader._xsize[bx]
add word ptr @@row_buf, ax
mov eax, @@row_buf
shr eax, 10h
mov dx, word ptr @@row_buf
shr dx, 4
add ax, dx
mov dx, word ptr @@row_buf
and dx, 0Fh
mov word ptr @@row_buf+2, ax
mov word ptr @@row_buf, dx
add @@row_num, 2
@@check:
mov bx, di
imul bx, size PiHeader
mov ax, pi_slot_headers.PiHeader._ysize[bx]
cmp ax, @@row_num
ja short @@put
pop di
pop si
ret
pi_slot_put_interlace endp

View File

@ -0,0 +1,74 @@
; Displays the n-th 320x200 [quarter], counted from the top left, of the PI
; image in slot #[slot] at [x],[y].
; int DEFCONV pi_slot_put_quarter(int x, int y, int slot, int quarter)
proc_defconv pi_slot_put_quarter
arg @@x:word, @@y:word, @@slot:word, @@quarter:word
local @@row_num:word, @@row_buf:dword
push si
push di
mov si, @@y
mov di, @@quarter
mov bx, @@slot
shl bx, 2
mov ax, word ptr (pi_slot_buffers+2)[bx]
mov dx, word ptr pi_slot_buffers[bx]
mov word ptr @@row_buf+2, ax
mov word ptr @@row_buf, dx
cmp di, 1
jnz short @@bottom_left?
add word ptr @@row_buf, (320 / 2)
jmp short @@first
@@bottom_left?:
cmp di, 2
jnz short @@bottom_right?
add word ptr @@row_buf, (640 * 200) / 2
jmp short @@first
@@bottom_right?:
cmp di, 3
jnz short @@first
add word ptr @@row_buf, ((640 * 200) + 320) / 2
@@first:
mov eax, @@row_buf
shr eax, 10h
mov dx, word ptr @@row_buf
shr dx, 4
add ax, dx
mov dx, word ptr @@row_buf
and dx, 0Fh
mov word ptr @@row_buf+2, ax
mov word ptr @@row_buf, dx
mov @@row_num, 0
jmp short @@check
@@put:
call graph_pack_put_8 pascal, @@x, si, @@row_buf, 320
inc si
cmp si, 400
jl short @@next_row
sub si, 400
@@next_row:
add word ptr @@row_buf, 320
mov eax, @@row_buf
shr eax, 10h
mov dx, word ptr @@row_buf
shr dx, 4
add ax, dx
mov dx, word ptr @@row_buf
and dx, 0Fh
mov word ptr @@row_buf+2, ax
mov word ptr @@row_buf, dx
inc @@row_num
@@check:
cmp @@row_num, 200
jl short @@put
pop di
pop si
ret
pi_slot_put_quarter endp

View File

@ -783,14 +783,10 @@ loc_99D4:
loc_99F1: loc_99F1:
call pi_slot_load pascal, 0, ds, offset aStnx0_pi call pi_slot_load pascal, 0, ds, offset aStnx0_pi
pushd 0 call pi_slot_put pascal, large 0, 0
push 0
call sub_CD2F
freePISlotLarge 0 freePISlotLarge 0
call pi_slot_load pascal, 0, ds, word_E504 call pi_slot_load pascal, 0, ds, word_E504
pushd 0 call pi_slot_put pascal, large 0, 0
push 0
call sub_CD2F
leave leave
retn retn
sub_990C endp sub_990C endp
@ -888,9 +884,7 @@ loc_9A8E:
push 1 push 1
call sub_9D20 call sub_9D20
call pi_slot_load pascal, 0, ds, offset aEn2_pi call pi_slot_load pascal, 0, ds, offset aEn2_pi
pushd 118h call pi_slot_put_interlace pascal, large 280, 0
push 0
call sub_CDB7
freePISlotLarge 0 freePISlotLarge 0
les bx, dword_105DA les bx, dword_105DA
mov al, es:[bx+0Dh] mov al, es:[bx+0Dh]
@ -943,9 +937,7 @@ loc_9BBD:
call pi_slot_load call pi_slot_load
loc_9BC2: loc_9BC2:
pushd 130h call pi_slot_put_interlace pascal, large 304, 0
push 0
call sub_CDB7
les bx, dword_105DA les bx, dword_105DA
mov al, es:[bx+0Dh] mov al, es:[bx+0Dh]
mov ah, 0 mov ah, 0
@ -1051,20 +1043,16 @@ arg_4 = word ptr 8
mov si, [bp+arg_4] mov si, [bp+arg_4]
call pi_slot_load pascal, 0, large [bp+arg_0] call pi_slot_load pascal, 0, large [bp+arg_0]
mov ax, si mov ax, si
imul ax, 140h imul ax, 320
push ax call pi_slot_put_interlace pascal, ax, (200 shl 16)
push 0C80000h
call sub_CDB7
freePISlotLarge 0 freePISlotLarge 0
les bx, [bp+arg_0] les bx, [bp+arg_0]
mov byte ptr es:[bx+2], 65h ; 'e' mov byte ptr es:[bx+2], 'e'
mov byte ptr es:[bx+3], 78h ; 'x' mov byte ptr es:[bx+3], 'x'
call pi_slot_load pascal, 0, word ptr [bp+arg_0+2], bx call pi_slot_load pascal, 0, word ptr [bp+arg_0+2], bx
mov ax, si mov ax, si
imul ax, 140h imul ax, 320
push ax call pi_slot_put_interlace pascal, ax, (208 shl 16)
push 0D00000h
call sub_CDB7
freePISlotLarge 0 freePISlotLarge 0
pop si pop si
pop bp pop bp
@ -1476,9 +1464,7 @@ loc_A0C5:
call far ptr palette_show call far ptr palette_show
call pi_slot_load pascal, 0, ds, offset aOver_pi call pi_slot_load pascal, 0, ds, offset aOver_pi
call pi_slot_palette_apply pascal, 0 call pi_slot_palette_apply pascal, 0
pushd 0 call pi_slot_put pascal, large 0, 0
push 0
call sub_CD2F
freePISlotLarge 0 freePISlotLarge 0
kajacall KAJA_SONG_STOP kajacall KAJA_SONG_STOP
les bx, dword_105DA les bx, dword_105DA
@ -2583,9 +2569,7 @@ loc_A9EB:
call pi_slot_palette_apply pascal, 0 call pi_slot_palette_apply pascal, 0
loc_A9FE: loc_A9FE:
pushd 0 call pi_slot_put pascal, large 0, 0
push 0
call sub_CD2F
push 0 push 0
call graph_copy_page call graph_copy_page
mov dx, 0A6h ; '¦' mov dx, 0A6h ; '¦'
@ -2725,10 +2709,7 @@ loc_AB33:
out dx, al out dx, al
loc_AB44: loc_AB44:
push 0A00040h call pi_slot_put_quarter pascal, (160 shl 16) + 64, 0, [bp+var_2]
push 0
push [bp+var_2]
call sub_D4F1
loc_AB54: loc_AB54:
mov dx, 0A4h mov dx, 0A4h
@ -3324,9 +3305,7 @@ sub_AFAC proc near
out dx, al out dx, al
call pi_slot_load pascal, 0, ds, offset aRegib_pi call pi_slot_load pascal, 0, ds, offset aRegib_pi
call pi_slot_palette_apply pascal, 0 call pi_slot_palette_apply pascal, 0
pushd 0 call pi_slot_put pascal, large 0, 0
push 0
call sub_CD2F
freePISlotLarge 0 freePISlotLarge 0
les bx, dword_105DA les bx, dword_105DA
mov al, es:[bx+0Bh] mov al, es:[bx+0Bh]
@ -4531,9 +4510,7 @@ loc_B879:
jz short loc_B8F1 jz short loc_B8F1
call pi_slot_load pascal, 0, ds, offset aConti_pi call pi_slot_load pascal, 0, ds, offset aConti_pi
call pi_slot_palette_apply pascal, 0 call pi_slot_palette_apply pascal, 0
pushd 0 call pi_slot_put pascal, large 0, 0
push 0
call sub_CD2F
freePISlotLarge 0 freePISlotLarge 0
push 0 push 0
push ds push ds
@ -4546,9 +4523,7 @@ loc_B879:
loc_B8F1: loc_B8F1:
call pi_slot_load pascal, 0, ds, offset aOver_pi_0 call pi_slot_load pascal, 0, ds, offset aOver_pi_0
call pi_slot_palette_apply pascal, 0 call pi_slot_palette_apply pascal, 0
pushd 0 call pi_slot_put pascal, large 0, 0
push 0
call sub_CD2F
freePISlotLarge 0 freePISlotLarge 0
call snd_delay_until_volume stdcall, 255 call snd_delay_until_volume stdcall, 255
pop cx pop cx
@ -6776,145 +6751,8 @@ locret_CD08:
sub_CB68 endp sub_CB68 endp
include th02/formats/pi_slot_palette_apply.asm include th02/formats/pi_slot_palette_apply.asm
include th02/formats/pi_slot_put.asm
; =============== S U B R O U T I N E ======================================= include th03/formats/pi_slot_put_interlace.asm
; Attributes: bp-based frame
sub_CD2F proc far
var_6 = word ptr -6
var_4 = dword ptr -4
arg_0 = word ptr 6
arg_2 = word ptr 8
arg_4 = word ptr 0Ah
enter 6, 0
push si
push di
mov si, [bp+arg_2]
mov di, [bp+arg_0]
mov bx, di
shl bx, 2
mov ax, [bx+1F10h]
mov dx, [bx+1F0Eh]
mov word ptr [bp+var_4+2], ax
mov word ptr [bp+var_4], dx
mov [bp+var_6], 0
jmp short loc_CDA3
; ---------------------------------------------------------------------------
loc_CD55:
push [bp+arg_4]
push si
pushd [bp+var_4]
mov bx, di
imul bx, 48h
push word ptr [bx+1F3Ah]
call graph_pack_put_8
inc si
cmp si, 190h
jl short loc_CD76
sub si, 190h
loc_CD76:
mov bx, di
imul bx, 48h
mov ax, [bx+1F3Ah]
shr ax, 1
add word ptr [bp+var_4], ax
mov eax, [bp+var_4]
shr eax, 10h
mov dx, word ptr [bp+var_4]
shr dx, 4
add ax, dx
mov dx, word ptr [bp+var_4]
and dx, 0Fh
mov word ptr [bp+var_4+2], ax
mov word ptr [bp+var_4], dx
inc [bp+var_6]
loc_CDA3:
mov bx, di
imul bx, 48h
mov ax, [bx+1F3Ch]
cmp ax, [bp+var_6]
ja short loc_CD55
pop di
pop si
leave
retf 6
sub_CD2F endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_CDB7 proc far
var_6 = word ptr -6
var_4 = dword ptr -4
arg_0 = word ptr 6
arg_2 = word ptr 8
arg_4 = word ptr 0Ah
enter 6, 0
push si
push di
mov si, [bp+arg_2]
mov di, [bp+arg_0]
mov bx, di
shl bx, 2
mov ax, [bx+1F10h]
mov dx, [bx+1F0Eh]
mov word ptr [bp+var_4+2], ax
mov word ptr [bp+var_4], dx
mov [bp+var_6], 0
jmp short loc_CE2A
; ---------------------------------------------------------------------------
loc_CDDD:
push [bp+arg_4]
push si
pushd [bp+var_4]
mov bx, di
imul bx, 48h
push word ptr [bx+1F3Ah]
call graph_pack_put_8
inc si
cmp si, 190h
jl short loc_CDFE
sub si, 190h
loc_CDFE:
mov bx, di
imul bx, 48h
mov ax, [bx+1F3Ah]
add word ptr [bp+var_4], ax
mov eax, [bp+var_4]
shr eax, 10h
mov dx, word ptr [bp+var_4]
shr dx, 4
add ax, dx
mov dx, word ptr [bp+var_4]
and dx, 0Fh
mov word ptr [bp+var_4+2], ax
mov word ptr [bp+var_4], dx
add [bp+var_6], 2
loc_CE2A:
mov bx, di
imul bx, 48h
mov ax, [bx+1F3Ch]
cmp ax, [bp+var_6]
ja short loc_CDDD
pop di
pop si
leave
retf 6
sub_CDB7 endp
; =============== S U B R O U T I N E ======================================= ; =============== S U B R O U T I N E =======================================
@ -7791,96 +7629,7 @@ loc_D49D:
sub_D47A endp sub_D47A endp
include th02/formats/pi_slot_load.asm include th02/formats/pi_slot_load.asm
include th03/formats/pi_slot_put_quarter.asm
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_D4F1 proc far
var_6 = word ptr -6
var_4 = dword ptr -4
arg_0 = word ptr 6
arg_2 = word ptr 8
arg_4 = word ptr 0Ah
arg_6 = word ptr 0Ch
enter 6, 0
push si
push di
mov si, [bp+arg_4]
mov di, [bp+arg_0]
mov bx, [bp+arg_2]
shl bx, 2
mov ax, [bx+1F10h]
mov dx, [bx+1F0Eh]
mov word ptr [bp+var_4+2], ax
mov word ptr [bp+var_4], dx
cmp di, 1
jnz short loc_D51D
add word ptr [bp+var_4], 0A0h
jmp short loc_D533
; ---------------------------------------------------------------------------
loc_D51D:
cmp di, 2
jnz short loc_D529
add word ptr [bp+var_4], 0FA00h
jmp short loc_D533
; ---------------------------------------------------------------------------
loc_D529:
cmp di, 3
jnz short loc_D533
add word ptr [bp+var_4], 0FAA0h
loc_D533:
mov eax, [bp+var_4]
shr eax, 10h
mov dx, word ptr [bp+var_4]
shr dx, 4
add ax, dx
mov dx, word ptr [bp+var_4]
and dx, 0Fh
mov word ptr [bp+var_4+2], ax
mov word ptr [bp+var_4], dx
mov [bp+var_6], 0
jmp short loc_D595
; ---------------------------------------------------------------------------
loc_D556:
push [bp+arg_6]
push si
pushd [bp+var_4]
push 140h
call graph_pack_put_8
inc si
cmp si, 190h
jl short loc_D571
sub si, 190h
loc_D571:
add word ptr [bp+var_4], 140h
mov eax, [bp+var_4]
shr eax, 10h
mov dx, word ptr [bp+var_4]
shr dx, 4
add ax, dx
mov dx, word ptr [bp+var_4]
and dx, 0Fh
mov word ptr [bp+var_4+2], ax
mov word ptr [bp+var_4], dx
inc [bp+var_6]
loc_D595:
cmp [bp+var_6], 0C8h
jl short loc_D556
pop di
pop si
leave
retf 8
sub_D4F1 endp
; =============== S U B R O U T I N E ======================================= ; =============== S U B R O U T I N E =======================================

View File

@ -2685,9 +2685,7 @@ loc_AC15:
out dx, al out dx, al
call pi_slot_load pascal, 0, ds, offset aOp3_pi call pi_slot_load pascal, 0, ds, offset aOp3_pi
call pi_slot_palette_apply pascal, 0 call pi_slot_palette_apply pascal, 0
pushd 0 call pi_slot_put pascal, large 0, 0
push 0
call sub_C37B
freePISlotLarge 0 freePISlotLarge 0
mov al, byte_DE83 mov al, byte_DE83
mov byte ptr word_F828, al mov byte ptr word_F828, al
@ -2870,16 +2868,12 @@ var_2 = word ptr -2
mov dx, 0A6h ; '¦' mov dx, 0A6h ; '¦'
mov al, 1 mov al, 1
out dx, al out dx, al
pushd 0 call pi_slot_put pascal, large 0, 0
push 0
call sub_C37B
mov dx, 0A6h ; '¦' mov dx, 0A6h ; '¦'
mov al, 0 mov al, 0
out dx, al out dx, al
call pi_slot_palette_apply pascal, 0 call pi_slot_palette_apply pascal, 0
pushd 0 call pi_slot_put pascal, large 0, 0
push 0
call sub_C37B
push 2 push 2
call egc_shift_left_all call egc_shift_left_all
mov Palettes+45, 0 mov Palettes+45, 0
@ -2988,9 +2982,7 @@ loc_AF65:
mov dx, 0A6h ; '¦' mov dx, 0A6h ; '¦'
out dx, al out dx, al
call pi_slot_palette_apply pascal, 0 call pi_slot_palette_apply pascal, 0
pushd 0 call pi_slot_put pascal, large 0, 0
push 0
call sub_C37B
push 1 push 1
call frame_delay call frame_delay
mov PaletteTone, 64h ; 'd' mov PaletteTone, 64h ; 'd'
@ -3018,9 +3010,7 @@ loc_AFD9:
mov dx, 0A6h ; '¦' mov dx, 0A6h ; '¦'
mov al, 1 mov al, 1
out dx, al out dx, al
pushd 0 call pi_slot_put pascal, large 0, 0
push 0
call sub_C37B
mov dx, 0A6h ; '¦' mov dx, 0A6h ; '¦'
mov al, 0 mov al, 0
out dx, al out dx, al
@ -3055,16 +3045,12 @@ sub_B008 proc near
mov dx, 0A6h ; '¦' mov dx, 0A6h ; '¦'
mov al, 1 mov al, 1
out dx, al out dx, al
pushd 0 call pi_slot_put pascal, large 0, 0
push 0
call sub_C37B
mov dx, 0A6h ; '¦' mov dx, 0A6h ; '¦'
mov al, 0 mov al, 0
out dx, al out dx, al
call pi_slot_palette_apply pascal, 0 call pi_slot_palette_apply pascal, 0
pushd 0 call pi_slot_put pascal, large 0, 0
push 0
call sub_C37B
mov dx, 0A6h ; '¦' mov dx, 0A6h ; '¦'
mov al, 0 mov al, 0
out dx, al out dx, al
@ -5427,76 +5413,7 @@ locret_C354:
sub_C1B4 endp sub_C1B4 endp
include th02/formats/pi_slot_palette_apply.asm include th02/formats/pi_slot_palette_apply.asm
include th02/formats/pi_slot_put.asm
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_C37B proc far
var_6 = word ptr -6
var_4 = dword ptr -4
arg_0 = word ptr 6
arg_2 = word ptr 8
arg_4 = word ptr 0Ah
enter 6, 0
push si
push di
mov si, [bp+arg_2]
mov di, [bp+arg_0]
mov bx, di
shl bx, 2
mov ax, [bx+1CAAh]
mov dx, [bx+1CA8h]
mov word ptr [bp+var_4+2], ax
mov word ptr [bp+var_4], dx
mov [bp+var_6], 0
jmp short loc_C3EF
; ---------------------------------------------------------------------------
loc_C3A1:
push [bp+arg_4]
push si
pushd [bp+var_4]
mov bx, di
imul bx, 48h
push word ptr [bx+1CD4h]
call graph_pack_put_8
inc si
cmp si, 190h
jl short loc_C3C2
sub si, 190h
loc_C3C2:
mov bx, di
imul bx, 48h
mov ax, [bx+1CD4h]
shr ax, 1
add word ptr [bp+var_4], ax
mov eax, [bp+var_4]
shr eax, 10h
mov dx, word ptr [bp+var_4]
shr dx, 4
add ax, dx
mov dx, word ptr [bp+var_4]
and dx, 0Fh
mov word ptr [bp+var_4+2], ax
mov word ptr [bp+var_4], dx
inc [bp+var_6]
loc_C3EF:
mov bx, di
imul bx, 48h
mov ax, [bx+1CD6h]
cmp ax, [bp+var_6]
ja short loc_C3A1
pop di
pop si
leave
retf 6
sub_C37B endp
include th02/hardware/snd_kaja_func.asm include th02/hardware/snd_kaja_func.asm
; =============== S U B R O U T I N E ======================================= ; =============== S U B R O U T I N E =======================================

View File

@ -442,9 +442,7 @@ loc_A187:
out dx, al out dx, al
call pi_slot_load pascal, 0, word ptr [bp+var_4+2], bx call pi_slot_load pascal, 0, word ptr [bp+var_4+2], bx
call pi_slot_palette_apply pascal, 0 call pi_slot_palette_apply pascal, 0
pushd 0 call pi_slot_put pascal, large 0, 0
push 0
call sub_CCDD
freePISlotLarge 0 freePISlotLarge 0
push 0 push 0
call graph_copy_page call graph_copy_page
@ -479,9 +477,7 @@ loc_A1FE:
out dx, al out dx, al
call pi_slot_load pascal, 0, large [bp+var_4] call pi_slot_load pascal, 0, large [bp+var_4]
call pi_slot_palette_apply pascal, 0 call pi_slot_palette_apply pascal, 0
pushd 0 call pi_slot_put pascal, large 0, 0
push 0
call sub_CCDD
freePISlotLarge 0 freePISlotLarge 0
push 0 push 0
call graph_copy_page call graph_copy_page
@ -1657,9 +1653,7 @@ loc_AB7A:
call pi_slot_palette_apply pascal, 0 call pi_slot_palette_apply pascal, 0
loc_AB8D: loc_AB8D:
pushd 0 call pi_slot_put pascal, large 0, 0
push 0
call sub_CCDD
push 0 push 0
call graph_copy_page call graph_copy_page
mov dx, 0A6h ; '¦' mov dx, 0A6h ; '¦'
@ -1802,10 +1796,7 @@ loc_ACCF:
out dx, al out dx, al
loc_ACE0: loc_ACE0:
push 0A00040h call pi_slot_put_quarter pascal, (160 shl 16) + 64, 0, [bp+var_2]
push 0
push [bp+var_2]
call sub_CDAB
loc_ACF0: loc_ACF0:
mov dx, 0A4h mov dx, 0A4h
@ -2746,9 +2737,7 @@ sub_B44D proc near
out dx, al out dx, al
call pi_slot_load pascal, 0, ds, offset aSff1_pi call pi_slot_load pascal, 0, ds, offset aSff1_pi
call pi_slot_palette_apply pascal, 0 call pi_slot_palette_apply pascal, 0
pushd 0 call pi_slot_put pascal, large 0, 0
push 0
call sub_CCDD
freePISlotLarge 0 freePISlotLarge 0
push 0 push 0
call graph_copy_page call graph_copy_page
@ -2825,9 +2814,7 @@ sub_B44D proc near
out dx, al out dx, al
call pi_slot_load pascal, 0, ds, offset aSff2_pi call pi_slot_load pascal, 0, ds, offset aSff2_pi
call pi_slot_palette_apply pascal, 0 call pi_slot_palette_apply pascal, 0
pushd 0 call pi_slot_put pascal, large 0, 0
push 0
call sub_CCDD
freePISlotLarge 0 freePISlotLarge 0
push 0 push 0
call graph_copy_page call graph_copy_page
@ -3925,9 +3912,7 @@ sub_C0F8 proc near
out dx, al out dx, al
call pi_slot_load pascal, 0, ds, offset aUde_pi call pi_slot_load pascal, 0, ds, offset aUde_pi
call pi_slot_palette_apply pascal, 0 call pi_slot_palette_apply pascal, 0
pushd 0 call pi_slot_put pascal, large 0, 0
push 0
call sub_CCDD
freePISlotLarge 0 freePISlotLarge 0
push 0 push 0
call graph_copy_page call graph_copy_page
@ -4963,9 +4948,7 @@ var_2 = word ptr -2
out dx, al out dx, al
call pi_slot_load pascal, 0, ds, offset aHi01_pi call pi_slot_load pascal, 0, ds, offset aHi01_pi
call pi_slot_palette_apply pascal, 0 call pi_slot_palette_apply pascal, 0
pushd 0 call pi_slot_put pascal, large 0, 0
push 0
call sub_CCDD
freePISlotLarge 0 freePISlotLarge 0
push 0 push 0
call graph_copy_page call graph_copy_page
@ -5519,166 +5502,9 @@ sub_CC7A endp
include th02/frame_delay.asm include th02/frame_delay.asm
include th02/formats/pi_slot_palette_apply.asm include th02/formats/pi_slot_palette_apply.asm
include th02/formats/pi_slot_put.asm
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_CCDD proc far
var_6 = word ptr -6
var_4 = dword ptr -4
arg_0 = word ptr 6
arg_2 = word ptr 8
arg_4 = word ptr 0Ah
enter 6, 0
push si
push di
mov si, [bp+arg_2]
mov di, [bp+arg_0]
mov bx, di
shl bx, 2
mov ax, [bx+17A4h]
mov dx, [bx+17A2h]
mov word ptr [bp+var_4+2], ax
mov word ptr [bp+var_4], dx
mov [bp+var_6], 0
jmp short loc_CD51
; ---------------------------------------------------------------------------
loc_CD03:
push [bp+arg_4]
push si
pushd [bp+var_4]
mov bx, di
imul bx, 48h
push word ptr [bx+17CEh]
call graph_pack_put_8
inc si
cmp si, 190h
jl short loc_CD24
sub si, 190h
loc_CD24:
mov bx, di
imul bx, 48h
mov ax, [bx+17CEh]
shr ax, 1
add word ptr [bp+var_4], ax
mov eax, [bp+var_4]
shr eax, 10h
mov dx, word ptr [bp+var_4]
shr dx, 4
add ax, dx
mov dx, word ptr [bp+var_4]
and dx, 0Fh
mov word ptr [bp+var_4+2], ax
mov word ptr [bp+var_4], dx
inc [bp+var_6]
loc_CD51:
mov bx, di
imul bx, 48h
mov ax, [bx+17D0h]
cmp ax, [bp+var_6]
ja short loc_CD03
pop di
pop si
leave
retf 6
sub_CCDD endp
include th02/formats/pi_slot_load.asm include th02/formats/pi_slot_load.asm
include th03/formats/pi_slot_put_quarter.asm
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_CDAB proc far
var_6 = word ptr -6
var_4 = dword ptr -4
arg_0 = word ptr 6
arg_2 = word ptr 8
arg_4 = word ptr 0Ah
arg_6 = word ptr 0Ch
enter 6, 0
push si
push di
mov si, [bp+arg_4]
mov di, [bp+arg_0]
mov bx, [bp+arg_2]
shl bx, 2
mov ax, [bx+17A4h]
mov dx, [bx+17A2h]
mov word ptr [bp+var_4+2], ax
mov word ptr [bp+var_4], dx
cmp di, 1
jnz short loc_CDD7
add word ptr [bp+var_4], 0A0h
jmp short loc_CDED
; ---------------------------------------------------------------------------
loc_CDD7:
cmp di, 2
jnz short loc_CDE3
add word ptr [bp+var_4], 0FA00h
jmp short loc_CDED
; ---------------------------------------------------------------------------
loc_CDE3:
cmp di, 3
jnz short loc_CDED
add word ptr [bp+var_4], 0FAA0h
loc_CDED:
mov eax, [bp+var_4]
shr eax, 10h
mov dx, word ptr [bp+var_4]
shr dx, 4
add ax, dx
mov dx, word ptr [bp+var_4]
and dx, 0Fh
mov word ptr [bp+var_4+2], ax
mov word ptr [bp+var_4], dx
mov [bp+var_6], 0
jmp short loc_CE4F
; ---------------------------------------------------------------------------
loc_CE10:
push [bp+arg_6]
push si
pushd [bp+var_4]
push 140h
call graph_pack_put_8
inc si
cmp si, 190h
jl short loc_CE2B
sub si, 190h
loc_CE2B:
add word ptr [bp+var_4], 140h
mov eax, [bp+var_4]
shr eax, 10h
mov dx, word ptr [bp+var_4]
shr dx, 4
add ax, dx
mov dx, word ptr [bp+var_4]
and dx, 0Fh
mov word ptr [bp+var_4+2], ax
mov word ptr [bp+var_4], dx
inc [bp+var_6]
loc_CE4F:
cmp [bp+var_6], 0C8h
jl short loc_CE10
pop di
pop si
leave
retf 8
sub_CDAB endp
; --------------------------------------------------------------------------- ; ---------------------------------------------------------------------------
push di push di

View File

@ -1201,9 +1201,7 @@ loc_AF56:
out dx, al out dx, al
call pi_slot_load pascal, 0, ds, offset aOp1_pi call pi_slot_load pascal, 0, ds, offset aOp1_pi
call pi_slot_palette_apply pascal, 0 call pi_slot_palette_apply pascal, 0
pushd 0 call pi_slot_put pascal, large 0, 0
push 0
call sub_DA75
freePISlotLarge 0 freePISlotLarge 0
push 0 push 0
call graph_copy_page call graph_copy_page
@ -1231,9 +1229,7 @@ loc_AFBD:
out dx, al out dx, al
call pi_slot_load pascal, 0, ds, offset aOp1_pi call pi_slot_load pascal, 0, ds, offset aOp1_pi
call pi_slot_palette_apply pascal, 0 call pi_slot_palette_apply pascal, 0
pushd 0 call pi_slot_put pascal, large 0, 0
push 0
call sub_DA75
freePISlotLarge 0 freePISlotLarge 0
push 0 push 0
call graph_copy_page call graph_copy_page
@ -2472,9 +2468,7 @@ sub_B9CE proc near
out dx, al out dx, al
call pi_slot_load pascal, 0, ds, offset aMs_pi call pi_slot_load pascal, 0, ds, offset aMs_pi
call pi_slot_palette_apply pascal, 0 call pi_slot_palette_apply pascal, 0
pushd 0 call pi_slot_put pascal, large 0, 0
push 0
call sub_DA75
freePISlotLarge 0 freePISlotLarge 0
push 0 push 0
call graph_copy_page call graph_copy_page
@ -2787,9 +2781,7 @@ var_1 = byte ptr -1
out dx, al out dx, al
call pi_slot_load pascal, 0, ds, offset aZun00_pi call pi_slot_load pascal, 0, ds, offset aZun00_pi
call pi_slot_palette_apply pascal, 0 call pi_slot_palette_apply pascal, 0
pushd 0 call pi_slot_put pascal, large 0, 0
push 0
call sub_DA75
freePISlotLarge 0 freePISlotLarge 0
push 0 push 0
call graph_copy_page call graph_copy_page
@ -3736,9 +3728,7 @@ sub_C3B7 proc near
out dx, al out dx, al
call pi_slot_load pascal, 0, ds, offset aMusic_pi call pi_slot_load pascal, 0, ds, offset aMusic_pi
call pi_slot_palette_apply pascal, 0 call pi_slot_palette_apply pascal, 0
pushd 0 call pi_slot_put pascal, large 0, 0
push 0
call sub_DA75
freePISlotLarge 0 freePISlotLarge 0
mov al, byte_102AF mov al, byte_102AF
mov byte ptr word_12DBC, al mov byte ptr word_12DBC, al
@ -4509,16 +4499,12 @@ sub_CA1A proc near
mov al, 1 mov al, 1
out dx, al out dx, al
call pi_slot_palette_apply pascal, 0 call pi_slot_palette_apply pascal, 0
pushd 0 call pi_slot_put pascal, large 0, 0
push 0
call sub_DA75
mov dx, 0A6h ; '¦' mov dx, 0A6h ; '¦'
mov al, 0 mov al, 0
out dx, al out dx, al
call pi_slot_palette_apply pascal, 0 call pi_slot_palette_apply pascal, 0
pushd 0 call pi_slot_put pascal, large 0, 0
push 0
call sub_DA75
push 0 push 0
call sub_C8F5 call sub_C8F5
mov si, 1 mov si, 1
@ -4626,9 +4612,7 @@ loc_CB58:
out dx, al out dx, al
call pi_slot_load pascal, 0, ds, offset aOp1_pi_0 call pi_slot_load pascal, 0, ds, offset aOp1_pi_0
call pi_slot_palette_apply pascal, 0 call pi_slot_palette_apply pascal, 0
pushd 0 call pi_slot_put pascal, large 0, 0
push 0
call sub_DA75
freePISlotLarge 0 freePISlotLarge 0
push 0 push 0
call graph_copy_page call graph_copy_page
@ -4830,11 +4814,11 @@ loc_CD7A:
jnz short loc_CDB0 jnz short loc_CDB0
cmp [bp+var_3], 6 cmp [bp+var_3], 6
jnb short loc_CDB0 jnb short loc_CDB0
pushd 26h ; '&' pushd 38
mov al, [bp+var_3] mov al, [bp+var_3]
mov ah, 0 mov ah, 0
push ax push ax
call sub_DA75 call pi_slot_put
inc [bp+var_3] inc [bp+var_3]
mov dx, 0A6h ; '¦' mov dx, 0A6h ; '¦'
mov al, [bp+var_4] mov al, [bp+var_4]
@ -4881,9 +4865,7 @@ loc_CE50:
out dx, al out dx, al
call pi_slot_load pascal, 0, ds, offset aOp1_pi_1 call pi_slot_load pascal, 0, ds, offset aOp1_pi_1
call pi_slot_palette_apply pascal, 0 call pi_slot_palette_apply pascal, 0
pushd 0 call pi_slot_put pascal, large 0, 0
push 0
call sub_DA75
freePISlotLarge 0 freePISlotLarge 0
push 0 push 0
call graph_copy_page call graph_copy_page
@ -5886,9 +5868,7 @@ sub_D6B2 proc near
mov al, 0 mov al, 0
out dx, al out dx, al
call pi_slot_palette_apply pascal, 0 call pi_slot_palette_apply pascal, 0
pushd 0 call pi_slot_put pascal, large 0, 0
push 0
call sub_DA75
call sub_CF5E call sub_CF5E
push 0 push 0
call sub_D338 call sub_D338
@ -6103,9 +6083,7 @@ loc_D881:
out dx, al out dx, al
mov PaletteTone, 0C8h ; 'È' mov PaletteTone, 0C8h ; 'È'
call far ptr palette_show call far ptr palette_show
pushd 0 call pi_slot_put pascal, large 0, 0
push 0
call sub_DA75
call sub_D650 call sub_D650
push 0 push 0
call graph_copy_page call graph_copy_page
@ -6282,76 +6260,7 @@ sub_DA12 endp
include th02/frame_delay.asm include th02/frame_delay.asm
include th02/formats/pi_slot_palette_apply.asm include th02/formats/pi_slot_palette_apply.asm
include th02/formats/pi_slot_put.asm
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_DA75 proc far
var_6 = word ptr -6
var_4 = dword ptr -4
arg_0 = word ptr 6
arg_2 = word ptr 8
arg_4 = word ptr 0Ah
enter 6, 0
push si
push di
mov si, [bp+arg_2]
mov di, [bp+arg_0]
mov bx, di
shl bx, 2
mov ax, [bx+2372h]
mov dx, [bx+2370h]
mov word ptr [bp+var_4+2], ax
mov word ptr [bp+var_4], dx
mov [bp+var_6], 0
jmp short loc_DAE9
; ---------------------------------------------------------------------------
loc_DA9B:
push [bp+arg_4]
push si
pushd [bp+var_4]
mov bx, di
imul bx, 48h
push word ptr [bx+239Ch]
call graph_pack_put_8
inc si
cmp si, 190h
jl short loc_DABC
sub si, 190h
loc_DABC:
mov bx, di
imul bx, 48h
mov ax, [bx+239Ch]
shr ax, 1
add word ptr [bp+var_4], ax
mov eax, [bp+var_4]
shr eax, 10h
mov dx, word ptr [bp+var_4]
shr dx, 4
add ax, dx
mov dx, word ptr [bp+var_4]
and dx, 0Fh
mov word ptr [bp+var_4+2], ax
mov word ptr [bp+var_4], dx
inc [bp+var_6]
loc_DAE9:
mov bx, di
imul bx, 48h
mov ax, [bx+239Eh]
cmp ax, [bp+var_6]
ja short loc_DA9B
pop di
pop si
leave
retf 6
sub_DA75 endp
include th02/formats/pi_slot_load.asm include th02/formats/pi_slot_load.asm
; --------------------------------------------------------------------------- ; ---------------------------------------------------------------------------

View File

@ -0,0 +1,106 @@
; int DEFCONV pi_slot_put(int x, int y, int slot)
proc_defconv pi_slot_put
@@slot = word ptr [bp + (cPtrSize + 2)]
@@y = word ptr [bp + (cPtrSize + 4)]
@@x = word ptr [bp + (cPtrSize + 6)]
push bp
mov bp, sp
push si
push di
mov si, @@slot
mov di, si
shl si, 2
les si, pi_slot_buffers[si]
imul di, size PiHeader
push @@x
push @@y
mov ax, pi_slot_headers.PiHeader._xsize[di]
push ax
shr ax, 1
push ax
mov di, pi_slot_headers.PiHeader._ysize[di]
call pi_slot_put_rowloop
pop di
pop si
pop bp
ret 6
pi_slot_put endp
align 2
; ---------------------------------------------------------------------------
; int DEFCONV pi_slot_put_quarter(int x, int y, int slot, int quarter)
proc_defconv pi_slot_put_quarter
@@quarter = byte ptr [bp + (cPtrSize + 2)]
@@slot = word ptr [bp + (cPtrSize + 4)]
@@y = word ptr [bp + (cPtrSize + 6)]
@@x = word ptr [bp + (cPtrSize + 8)]
push bp
mov bp, sp
push si
push di
xor ax, ax
xor dx, dx
mov si, @@slot
mov cl, @@quarter
test cl, 1
jz short @@bottom_quarter?
mov ax, 160
@@bottom_quarter?:
test cl, 2
jz short @@put
mov dx, ((640 * 200) / 2) / 16
@@put:
shl si, 2
les si, pi_slot_buffers[si]
add si, ax
mov ax, es
add ax, dx
mov es, ax
push @@x
push @@y
push 320
push 320
mov di, 200
call pi_slot_put_rowloop
pop di
pop si
pop bp
ret 8
pi_slot_put_quarter endp
; ---------------------------------------------------------------------------
pi_slot_put_rowloop proc near
@@stride = word ptr [bp+2]
@@len = word ptr [bp+4]
@@y = word ptr [bp+6]
@@x = word ptr [bp+8]
mov bp, sp
@@put:
push es
call graph_pack_put_8_noclip pascal, @@x, @@y, es, si, @@len
pop es
inc @@y
cmp @@y, 400
jb short @@next_row
sub @@y, 400
@@next_row:
add si, @@stride
mov ax, si
shr ax, 4
mov dx, es
add dx, ax
mov es, dx
and si, 0Fh
dec di
jnz short @@put
retn 8
pi_slot_put_rowloop endp

View File

@ -1379,9 +1379,7 @@ loc_ACE1:
call pi_slot_palette_apply pascal, 0 call pi_slot_palette_apply pascal, 0
loc_ACF4: loc_ACF4:
pushd 0 call pi_slot_put pascal, large 0, 0
push 0
call sub_EFAC
push 0 push 0
call graph_copy_page call graph_copy_page
mov dx, 0A6h ; '¦' mov dx, 0A6h ; '¦'
@ -1474,10 +1472,7 @@ loc_AD9A:
out dx, al out dx, al
cmp [bp+var_2], 4 cmp [bp+var_2], 4
jge short loc_ADE3 jge short loc_ADE3
push 0A00040h call pi_slot_put_quarter pascal, (160 shl 16) + 64, 0, [bp+var_2]
push 0
push [bp+var_2]
call sub_EFDC
jmp loc_AE64 jmp loc_AE64
; --------------------------------------------------------------------------- ; ---------------------------------------------------------------------------
@ -1529,10 +1524,7 @@ loc_AE42:
mov dx, 0A6h ; '¦' mov dx, 0A6h ; '¦'
mov al, 1 mov al, 1
out dx, al out dx, al
push 0A00040h call pi_slot_put_quarter pascal, (160 shl 16) + 64, 0, [bp+var_2]
push 0
push [bp+var_2]
call sub_EFDC
push 1 push 1
call frame_delay call frame_delay
@ -2074,17 +2066,9 @@ loc_B2EE:
loc_B309: loc_B309:
cmp si, 8 cmp si, 8
jl short loc_B2EE jl short loc_B2EE
push di call pi_slot_put_quarter pascal, di, [bp+arg_0], 0, [bp+var_2]
push [bp+arg_0]
push 0
push [bp+var_2]
call sub_EFDC
call sub_B37C call sub_B37C
push di call pi_slot_put_quarter pascal, di, [bp+arg_0], 0, [bp+var_2]
push [bp+arg_0]
push 0
push [bp+var_2]
call sub_EFDC
inc allcast_screen_plus_one inc allcast_screen_plus_one
cmp allcast_screen_plus_one, 8 cmp allcast_screen_plus_one, 8
jge short loc_B357 jge short loc_B357
@ -4112,9 +4096,7 @@ var_2 = word ptr -2
out dx, al out dx, al
call pi_slot_load pascal, 0, ds, offset aHi01_pi call pi_slot_load pascal, 0, ds, offset aHi01_pi
call pi_slot_palette_apply pascal, 0 call pi_slot_palette_apply pascal, 0
pushd 0 call pi_slot_put pascal, large 0, 0
push 0
call sub_EFAC
call pi_slot_free pascal, 0 call pi_slot_free pascal, 0
push 0 push 0
call graph_copy_page call graph_copy_page
@ -5811,9 +5793,7 @@ sub_D1B1 proc near
out dx, al out dx, al
call pi_slot_load pascal, 0, ds, offset aUde_pi call pi_slot_load pascal, 0, ds, offset aUde_pi
call pi_slot_palette_apply pascal, 0 call pi_slot_palette_apply pascal, 0
pushd 0 call pi_slot_put pascal, large 0, 0
push 0
call sub_EFAC
call pi_slot_free pascal, 0 call pi_slot_free pascal, 0
push 0 push 0
call graph_copy_page call graph_copy_page
@ -9349,131 +9329,7 @@ sub_EF39 proc near
sub_EF39 endp sub_EF39 endp
include th05/formats/pi_slot_load.asm include th05/formats/pi_slot_load.asm
include th05/formats/pi_slot_put.asm
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_EFAC proc far
arg_0 = word ptr 6
arg_2 = word ptr 8
arg_4 = word ptr 0Ah
push bp
mov bp, sp
push si
push di
mov si, [bp+arg_0]
mov di, si
shl si, 2
les si, [si+6FEh]
imul di, 48h
push [bp+arg_4]
push [bp+arg_2]
mov ax, [di+27CEh]
push ax
shr ax, 1
push ax
mov di, [di+27D0h]
call sub_F022
pop di
pop si
pop bp
retf 6
sub_EFAC endp
; ---------------------------------------------------------------------------
nop
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_EFDC proc far
arg_0 = byte ptr 6
arg_2 = word ptr 8
arg_4 = word ptr 0Ah
arg_6 = word ptr 0Ch
push bp
mov bp, sp
push si
push di
xor ax, ax
xor dx, dx
mov si, [bp+arg_2]
mov cl, [bp+arg_0]
test cl, 1
jz short loc_EFF3
mov ax, 0A0h
loc_EFF3:
test cl, 2
jz short loc_EFFB
mov dx, 0FA0h
loc_EFFB:
shl si, 2
les si, [si+6FEh]
add si, ax
mov ax, es
add ax, dx
mov es, ax
assume es:nothing
push [bp+arg_6]
push [bp+arg_4]
loc_F010:
push 140h
push 140h
mov di, 0C8h
call sub_F022
pop di
pop si
pop bp
retf 8
sub_EFDC endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_F022 proc near
arg_0 = word ptr 2
arg_2 = word ptr 4
arg_4 = word ptr 6
arg_6 = word ptr 8
mov bp, sp
loc_F024:
push es
call graph_pack_put_8_noclip pascal, \
[bp+arg_6], [bp+arg_4], es, si, [bp+arg_2]
pop es
assume es:nothing
inc [bp+arg_4]
cmp [bp+arg_4], 190h
jb short loc_F045
sub [bp+arg_4], 190h
loc_F045:
add si, [bp+arg_0]
mov ax, si
shr ax, 4
mov dx, es
add dx, ax
mov es, dx
and si, 0Fh
dec di
jnz short loc_F024
retn 8
sub_F022 endp
include th05/formats/pi_slot_palette_apply.asm include th05/formats/pi_slot_palette_apply.asm
include th05/formats/pi_slot_free.asm include th05/formats/pi_slot_free.asm

View File

@ -1100,9 +1100,7 @@ loc_AA91:
out dx, al out dx, al
call pi_slot_load pascal, 0, ds, offset aOp1_pi call pi_slot_load pascal, 0, ds, offset aOp1_pi
call pi_slot_palette_apply pascal, 0 call pi_slot_palette_apply pascal, 0
pushd 0 call pi_slot_put pascal, large 0, 0
push 0
call sub_DE0A
call pi_slot_free pascal, 0 call pi_slot_free pascal, 0
push 0 push 0
call graph_copy_page call graph_copy_page
@ -1121,9 +1119,7 @@ loc_AAE1:
out dx, al out dx, al
call pi_slot_load pascal, 0, ds, offset aOp1_pi call pi_slot_load pascal, 0, ds, offset aOp1_pi
call pi_slot_palette_apply pascal, 0 call pi_slot_palette_apply pascal, 0
pushd 0 call pi_slot_put pascal, large 0, 0
push 0
call sub_DE0A
call pi_slot_free pascal, 0 call pi_slot_free pascal, 0
push 0 push 0
call graph_copy_page call graph_copy_page
@ -1149,9 +1145,7 @@ loc_AB3B:
out dx, al out dx, al
call pi_slot_load pascal, 0, ds, offset aOp1_pi call pi_slot_load pascal, 0, ds, offset aOp1_pi
call pi_slot_palette_apply pascal, 0 call pi_slot_palette_apply pascal, 0
pushd 0 call pi_slot_put pascal, large 0, 0
push 0
call sub_DE0A
call pi_slot_free pascal, 0 call pi_slot_free pascal, 0
push 0 push 0
call graph_copy_page call graph_copy_page
@ -2418,9 +2412,7 @@ sub_B5A6 proc near
out dx, al out dx, al
call pi_slot_load pascal, 0, ds, offset aMs_pi call pi_slot_load pascal, 0, ds, offset aMs_pi
call pi_slot_palette_apply pascal, 0 call pi_slot_palette_apply pascal, 0
pushd 0 call pi_slot_put pascal, large 0, 0
push 0
call sub_DE0A
call pi_slot_free pascal, 0 call pi_slot_free pascal, 0
push 0 push 0
call graph_copy_page call graph_copy_page
@ -2733,9 +2725,7 @@ var_1 = byte ptr -1
out dx, al out dx, al
call pi_slot_load pascal, 0, ds, offset aZun00_pi call pi_slot_load pascal, 0, ds, offset aZun00_pi
call pi_slot_palette_apply pascal, 0 call pi_slot_palette_apply pascal, 0
pushd 0 call pi_slot_put pascal, large 0, 0
push 0
call sub_DE0A
call pi_slot_free pascal, 0 call pi_slot_free pascal, 0
push 0 push 0
call graph_copy_page call graph_copy_page
@ -3313,13 +3303,13 @@ loc_BD55:
cwd cwd
idiv bx idiv bx
call pi_slot_palette_apply pascal, ax call pi_slot_palette_apply pascal, ax
pushd 116h pushd 278
mov ax, si mov ax, si
mov bx, 8 mov bx, 8
cwd cwd
idiv bx idiv bx
push ax push ax
call sub_DE0A call pi_slot_put
loc_BD81: loc_BD81:
push 1 push 1
@ -3414,9 +3404,7 @@ loc_BE46:
mov al, 0 mov al, 0
out dx, al out dx, al
call pi_slot_palette_apply pascal, 0 call pi_slot_palette_apply pascal, 0
pushd 0 call pi_slot_put pascal, large 0, 0
push 0
call sub_DE0A
call pi_slot_free pascal, 0 call pi_slot_free pascal, 0
push 0 push 0
call graph_copy_page call graph_copy_page
@ -4222,9 +4210,7 @@ var_1 = byte ptr -1
out dx, al out dx, al
call pi_slot_load pascal, 0, ds, offset aMusic_pi call pi_slot_load pascal, 0, ds, offset aMusic_pi
call pi_slot_palette_apply pascal, 0 call pi_slot_palette_apply pascal, 0
pushd 0 call pi_slot_put pascal, large 0, 0
push 0
call sub_DE0A
call pi_slot_free pascal, 0 call pi_slot_free pascal, 0
call sub_D894 call sub_D894
call sub_BFB7 call sub_BFB7
@ -5106,16 +5092,12 @@ sub_CBDC proc near
mov al, 1 mov al, 1
out dx, al out dx, al
call pi_slot_palette_apply pascal, 0 call pi_slot_palette_apply pascal, 0
pushd 0 call pi_slot_put pascal, large 0, 0
push 0
call sub_DE0A
mov dx, 0A6h ; '¦' mov dx, 0A6h ; '¦'
mov al, 0 mov al, 0
out dx, al out dx, al
call pi_slot_palette_apply pascal, 0 call pi_slot_palette_apply pascal, 0
pushd 0 call pi_slot_put pascal, large 0, 0
push 0
call sub_DE0A
xor si, si xor si, si
jmp short loc_CC27 jmp short loc_CC27
; --------------------------------------------------------------------------- ; ---------------------------------------------------------------------------
@ -5229,9 +5211,7 @@ loc_CD17:
out dx, al out dx, al
call pi_slot_load pascal, 0, ds, offset aOp1_pi_1 call pi_slot_load pascal, 0, ds, offset aOp1_pi_1
call pi_slot_palette_apply pascal, 0 call pi_slot_palette_apply pascal, 0
pushd 0 call pi_slot_put pascal, large 0, 0
push 0
call sub_DE0A
call pi_slot_free pascal, 0 call pi_slot_free pascal, 0
push 0 push 0
call graph_copy_page call graph_copy_page
@ -5670,9 +5650,7 @@ var_2 = word ptr -2
out dx, al out dx, al
call pi_slot_load pascal, 0, ds, offset aSlb1_pi call pi_slot_load pascal, 0, ds, offset aSlb1_pi
call pi_slot_palette_apply pascal, 0 call pi_slot_palette_apply pascal, 0
pushd 0 call pi_slot_put pascal, large 0, 0
push 0
call sub_DE0A
call pi_slot_free pascal, 0 call pi_slot_free pascal, 0
push 0 push 0
call graph_copy_page call graph_copy_page
@ -7284,115 +7262,7 @@ sub_DD97 proc near
sub_DD97 endp sub_DD97 endp
include th05/formats/pi_slot_load.asm include th05/formats/pi_slot_load.asm
include th05/formats/pi_slot_put.asm
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_DE0A proc far
arg_0 = word ptr 6
arg_2 = word ptr 8
arg_4 = word ptr 0Ah
push bp
mov bp, sp
push si
push di
mov si, [bp+arg_0]
mov di, si
shl si, 2
les si, [si+0A84h]
imul di, 48h
push [bp+arg_4]
push [bp+arg_2]
mov ax, [di+3866h]
push ax
shr ax, 1
push ax
mov di, [di+3868h]
call sub_DE80
pop di
pop si
pop bp
retf 6
sub_DE0A endp
; ---------------------------------------------------------------------------
nop
push bp
mov bp, sp
push si
push di
xor ax, ax
xor dx, dx
mov si, [bp+8]
mov cl, [bp+6]
test cl, 1
jz short loc_DE51
mov ax, 0A0h
loc_DE51:
test cl, 2
jz short loc_DE59
mov dx, 0FA0h
loc_DE59:
shl si, 2
les si, [si+0A84h]
add si, ax
mov ax, es
add ax, dx
mov es, ax
assume es:nothing
push word ptr [bp+0Ch]
push word ptr [bp+0Ah]
push 140h
push 140h
mov di, 0C8h ; 'È'
call sub_DE80
pop di
pop si
pop bp
retf 8
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_DE80 proc near
arg_0 = word ptr 2
arg_2 = word ptr 4
arg_4 = word ptr 6
arg_6 = word ptr 8
mov bp, sp
loc_DE82:
push es
call graph_pack_put_8_noclip pascal, \
[bp+arg_6], [bp+arg_4], es, si, [bp+arg_2]
pop es
assume es:nothing
inc [bp+arg_4]
cmp [bp+arg_4], 190h
jb short loc_DEA3
sub [bp+arg_4], 190h
loc_DEA3:
add si, [bp+arg_0]
mov ax, si
shr ax, 4
mov dx, es
add dx, ax
mov es, dx
and si, 0Fh
dec di
jnz short loc_DE82
retn 8
sub_DE80 endp
include th05/formats/pi_slot_palette_apply.asm include th05/formats/pi_slot_palette_apply.asm
include th05/formats/pi_slot_free.asm include th05/formats/pi_slot_free.asm