[Reduction] #255-256: super_roll_put

This commit is contained in:
nmlgc 2014-08-28 08:52:42 +02:00
parent 7bb29aee62
commit f0825bf2e5
4 changed files with 425 additions and 616 deletions

View File

@ -0,0 +1,356 @@
; superimpose & master library module
;
; Description:
; パターンの表示(画面上下接続)
;
; Functions/Procedures:
; void super_roll_put( int x, int y, int num ) ;
;
; Parameters:
; x,y 描画する座標
; num パターン番号
;
; Returns:
;
;
; Binding Target:
; Microsoft-C / Turbo-C / Turbo Pascal
;
; Running Target:
; PC-9801
;
; Requiring Resources:
; CPU: V30
; GRCG
;
; Notes:
;
;
; Compiler/Assembler:
; TASM 3.0
; OPTASM 1.6
;
; Author:
; Kazumi(奥田 仁)
; 恋塚(恋塚昭彦)
;
; Revision History:
;
;$Id: superoll.asm 0.05 92/05/29 20:33:19 Kazumi Rel $
;
; 93/ 3/20 Initial: master.lib <- super.lib 0.22b
; 93/ 9/20 [M0.21] WORD_MASK廃止, サイズ数百バイト減少
;
func SUPER_ROLL_PUT
push BP
mov BP,SP
push DS
push SI
push DI
@@x = (RETSIZE+3)*2
@@y = (RETSIZE+2)*2
@@num = (RETSIZE+1)*2
mov CX,[BP+@@x]
mov DI,[BP+@@y]
mov SI,DI ;-+
shl DI,2 ; |
add DI,SI ; |DI=y*80
shl DI,4 ;-+
mov AX,CX
and CX,7h ;CL=x%8(shift dot counter)
shr AX,3 ;AX=x/8
add DI,AX ;GVRAM offset address
mov BX,CX
mov AL,BYTE_MASK[BX]
mov BX,[BP+@@num]
shl BX,1 ;integer size & near pointer
mov DX,super_patsize[BX] ;pattern size (1-8)
mov CH,DH ;DL -> DH
shr CH,1
mov DS,super_patdata[BX] ;BX+2 -> BX
mov BX,DX
xor BH,BH
add SI,BX ; SI = y + ysize - 400
sub SI,400
jg short @@noroll
xor SI,SI ; SI = 画面下にはみ出た長さ
@@noroll:
sub BX,SI ; BX = 画面内に描画できる長さ
mov CS:SUPEROLL_BP_,SI
mov CS:SUPEROLL_BX_,BX
mov BP,DI
test DI,1
jnz short @@ODD_ADDRESS
@@EVEN_ADDRESS:
test DH,1 ;DX -> DH
jnz short @@ODD_SIZE1
mov BYTE PTR CS:[SUPEROLL_BYTE_MASK1],AL
mov BYTE PTR CS:[superoll_count1],CH
mov AL,80
sub AL,DH ;DL -> DH
mov BYTE PTR CS:[superoll_add_di1],AL
mov CS:SUPEROLL_DISP_ADDRESS,OFFSET superoll_disp1
jmp short @@START
EVEN
@@ODD_SIZE1:
mov BYTE PTR CS:[SUPEROLL_BYTE_MASK2],AL
mov BYTE PTR CS:[superoll_count2],CH
mov AL,80
sub AL,DH
mov BYTE PTR CS:[superoll_add_di2],AL
mov CS:SUPEROLL_DISP_ADDRESS,OFFSET superoll_disp2
jmp short @@START
EVEN
@@ODD_ADDRESS:
dec BP
test DH,1
jnz short @@ODD_SIZE2
mov BYTE PTR CS:[SUPEROLL_BYTE_MASK3],AL
dec CH ;!!!!!!!!!!!!!!!!!!!!!
mov BYTE PTR CS:[superoll_count3],CH
mov AL,78 ;word
sub AL,DH
mov BYTE PTR CS:[superoll_add_di3],AL
mov CS:SUPEROLL_DISP_ADDRESS,OFFSET superoll_disp3
jmp short @@START
EVEN
@@ODD_SIZE2:
mov BYTE PTR CS:[SUPEROLL_BYTE_MASK4],AL
mov BYTE PTR CS:[superoll_count4],CH
mov AL,79 ;word
sub AL,DH
mov BYTE PTR CS:[superoll_add_di4],AL
mov CS:SUPEROLL_DISP_ADDRESS,OFFSET superoll_disp4
EVEN
@@START:
mov CS:SUPEROLL_DI_,BP
xor SI,SI
mov AX,0c0h ;RMW mode
out 7ch,AL
mov AL,AH
out 7eh,AL
out 7eh,AL
out 7eh,AL
out 7eh,AL
mov AX,0a800h
mov ES,AX
call SUPEROLL_DISP ;originally cls_loop
mov AX,0ff00h + 11001110b
out 7ch,AL ;RMW mode
mov AL,AH ;AL==0ffh
out 7eh,AL
out 7eh,AL
out 7eh,AL
out 7eh,AL
call SUPEROLL_DISP
mov AL,11001101b
out 7ch,AL ;RMW mode
call SUPEROLL_DISP
mov AL,11001011b
out 7ch,AL ;RMW mode
call SUPEROLL_DISP
mov AL,11000111b
out 7ch,AL ;RMW mode
call SUPEROLL_DISP
xor AL,AL
out 7ch,AL ;grcg stop
pop DI
pop SI
pop DS
pop BP
ret 6
EVEN
SUPEROLL_DISP:
JMOV BX,SUPEROLL_BX_
JMOV DI,SUPEROLL_DI_
JMOV BP,SUPEROLL_BP_
JMOV AX,SUPEROLL_DISP_ADDRESS
jmp AX
EVEN
superoll_disp1:
xor DL,DL
EVEN
@@put_loop1:
lodsw
ror AX,CL
mov DH,AL
and AL,11h ;dummy
SUPEROLL_BYTE_MASK1 equ $-1
xor DH,AL
or AL,DL
stosw ;mov ES:[DI],AX ;;;or
mov DL,DH
dec CH
jnz @@put_loop1
mov ES:[DI],DL
mov DL,CH ;DL=0
add DI,80 ;dummy
superoll_add_di1 equ $-1
mov CH,11h ;dummy
superoll_count1 equ $-1
dec BX
jnz @@put_loop1
or BP,BP
jnz short @@roll1
retn
EVEN
@@roll1:
sub DI,7d00h
mov BX,BP
xor BP,BP
jmp short @@put_loop1
EVEN
superoll_disp2:
xor DL,DL
EVEN
@@single_check2:
or CH,CH
jz short @@skip2
EVEN
@@put_loop2:
lodsw
ror AX,CL
mov DH,AL
and AL,11h ;dummy
SUPEROLL_BYTE_MASK2 equ $-1
xor DH,AL
or AL,DL
stosw ;mov ES:[DI],AX ;;;or
mov DL,DH
dec CH
jnz @@put_loop2
@@skip2:
lodsb
xor AH,AH
ror AX,CL
or AL,DL
stosw
dec DI
mov DL,CH ;DL=0
add DI,80 ;dummy
superoll_add_di2 equ $-1
mov CH,11h ;dummy
superoll_count2 equ $-1
dec BX
jnz @@single_check2
or BP,BP
jnz short @@roll2
retn
EVEN
@@roll2:
sub DI,7d00h
mov BX,BP
xor BP,BP
jmp short @@single_check2
EVEN
superoll_disp3:
@@put_loop3_1:
lodsb
xor AH,AH
ror AX,CL
mov DL,AH
xchg AH,AL
xor AL,AL
stosw
or CH,CH
jz short @@no_word1
EVEN
@@put_loop3_2:
lodsw
ror AX,CL
mov DH,AL
and AL,11h ;dummy
SUPEROLL_BYTE_MASK3 equ $-1
xor DH,AL
or AL,DL
stosw ;mov ES:[DI],AX ;;;or
mov DL,DH
dec CH
jnz @@put_loop3_2
EVEN
@@no_word1:
lodsb
xor AH,AH
ror AX,CL
or AL,DL
stosw
mov DL,CH ;DL=0
add DI,80 ;dummy
superoll_add_di3 equ $-1
mov CH,11h ;dummy
superoll_count3 equ $-1
dec BX
jnz @@put_loop3_1
or BP,BP
jnz short @@roll3
retn
EVEN
@@roll3:
sub DI,7d00h
mov BX,BP
xor BP,BP
jmp short @@put_loop3_1
EVEN
superoll_disp4:
@@put_loop4_1:
lodsb
xor AH,AH
ror AX,CL
mov DL,AH
xchg AH,AL
xor AL,AL
stosw
or CH,CH
jz short @@no_word2
EVEN
@@put_loop4_2:
lodsw
ror AX,CL
mov DH,AL
and AL,11h ;dummy
SUPEROLL_BYTE_MASK4 equ $-1
xor DH,AL
or AL,DL
stosw ;mov ES:[DI],AX ;;;or
mov DL,DH
dec CH
jnz @@put_loop4_2
EVEN
@@no_word2:
mov ES:[DI],DL
mov DL,CH ;DL=0
add DI,80 ;dummy
superoll_add_di4 equ $-1
mov CH,11h ;dummy
superoll_count4 equ $-1
dec BX
jnz @@put_loop4_1
or BP,BP
jnz short @@roll4
retn
EVEN
@@roll4:
sub DI,7d00h
mov BX,BP
xor BP,BP
jmp short @@put_loop4_1
endfunc

View File

@ -2769,189 +2769,7 @@ include libs/master.lib/super_entry_bfnt.asm
include libs/master.lib/super_cancel_pat.asm
include libs/master.lib/super_clean.asm
include libs/master.lib/super_roll_put_1plane.asm
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_3146 proc far
; sub_EF36+71P ...
arg_0 = word ptr 6
arg_2 = word ptr 8
arg_4 = word ptr 0Ah
push bp
mov bp, sp
push ds
push si
push di
mov cx, [bp+arg_4]
mov di, [bp+arg_2]
mov si, di
shl di, 2
add di, si
shl di, 4
mov ax, cx
and cx, 7
shr ax, 3
add di, ax
mov bx, cx
mov al, [bx+85Ah]
mov bx, [bp+arg_0]
shl bx, 1
mov dx, [bx+1EDAh]
mov ch, dh
shr ch, 1
mov ds, word ptr [bx+1ADAh]
mov bx, dx
xor bh, bh
add si, bx
sub si, 190h
jg short loc_318B
xor si, si
loc_318B:
sub bx, si
mov cs:word_3269, si
mov cs:word_3263, bx
mov bp, di
test di, 1
jnz short loc_31D8
test dh, 1
jnz short loc_31BE
mov cs:byte_3278, al
mov cs:byte_328D, ch
mov al, 50h ; 'P'
sub al, dh
mov cs:byte_328B, al
mov cs:word_326C, 3270h
jmp short loc_3212
; ---------------------------------------------------------------------------
loc_31BE:
mov cs:byte_32AC, al
mov cs:byte_32C7, ch
mov al, 50h ; 'P'
sub al, dh
mov cs:byte_32C5, al
mov cs:word_326C, 32A0h
jmp short loc_3212
; ---------------------------------------------------------------------------
loc_31D8:
dec bp
test dh, 1
jnz short loc_31FA
mov cs:byte_32F0, al
dec ch
mov cs:byte_330A, ch
mov al, 4Eh ; 'N'
sub al, dh
mov cs:byte_3308, al
mov cs:word_326C, 32DAh
jmp short loc_3212
; ---------------------------------------------------------------------------
loc_31FA:
mov cs:byte_3334, al
mov cs:byte_3349, ch
mov al, 4Fh ; 'O'
sub al, dh
mov cs:byte_3347, al
mov cs:word_326C, 331Eh
loc_3212:
mov cs:word_3266, bp
xor si, si
mov ax, 0C0h ; 'À'
out 7Ch, al
mov al, ah
out 7Eh, al
out 7Eh, al
out 7Eh, al
out 7Eh, al
mov ax, 0A800h
mov es, ax
call near ptr byte_3262
mov ax, 0FFCEh
out 7Ch, al
mov al, ah
out 7Eh, al
out 7Eh, al
out 7Eh, al
out 7Eh, al
call near ptr byte_3262
mov al, 0CDh ; 'Í'
out 7Ch, al
call near ptr byte_3262
mov al, 0CBh ; 'Ë'
out 7Ch, al
call near ptr byte_3262
mov al, 0C7h ; 'Ç'
out 7Ch, al
call near ptr byte_3262
xor al, al
out 7Ch, al
pop di
pop si
pop ds
pop bp
retf 6
sub_3146 endp
; ---------------------------------------------------------------------------
byte_3262 db 0BBh
word_3263 dw 1234h
db 0BFh
word_3266 dw 1234h
db 0BDh
word_3269 dw 1234h
db 0B8h
word_326C dw 1234h
; ---------------------------------------------------------------------------
jmp ax
; ---------------------------------------------------------------------------
db 32h, 0D2h, 0ADh, 0D3h, 0C8h, 8Ah, 0F0h, 24h
byte_3278 db 11h
db 32h, 0F0h, 0Ah, 0C2h, 0ABh, 8Ah, 0D6h, 0FEh, 0CDh, 75h
db 0EEh, 26h, 88h, 15h, 8Ah, 0D5h, 83h, 0C7h
byte_328B db 50h
db 0B5h
byte_328D db 11h
db 4Bh, 75h, 0E1h, 0Bh, 0EDh, 75h, 1, 0C3h, 81h, 0EFh
db 0, 7Dh, 8Bh, 0DDh, 33h, 0EDh, 0EBh, 0D2h, 32h, 0D2h
db 0Ah, 0EDh, 74h, 12h, 0ADh, 0D3h, 0C8h, 8Ah, 0F0h, 24h
byte_32AC db 11h
db 32h, 0F0h, 0Ah, 0C2h, 0ABh, 8Ah, 0D6h, 0FEh, 0CDh, 75h
db 0EEh, 0ACh, 32h, 0E4h, 0D3h, 0C8h, 0Ah, 0C2h, 0ABh
db 4Fh, 8Ah, 0D5h, 83h, 0C7h
byte_32C5 db 50h
db 0B5h
byte_32C7 db 11h
db 4Bh, 75h, 0D7h, 0Bh, 0EDh, 75h, 1, 0C3h, 81h, 0EFh
db 0, 7Dh, 8Bh, 0DDh, 33h, 0EDh, 0EBh, 0C8h, 0ACh, 32h
db 0E4h, 0D3h, 0C8h, 8Ah, 0D4h, 86h, 0E0h, 32h, 0C0h, 0ABh
db 0Ah, 0EDh, 74h, 12h, 0ADh, 0D3h, 0C8h, 8Ah, 0F0h, 24h
byte_32F0 db 11h
db 32h, 0F0h, 0Ah, 0C2h, 0ABh, 8Ah, 0D6h, 0FEh, 0CDh, 75h
db 0EEh, 0ACh, 32h, 0E4h, 0D3h, 0C8h, 0Ah, 0C2h, 0ABh
db 8Ah, 0D5h, 83h, 0C7h
byte_3308 db 50h
db 0B5h
byte_330A db 11h
db 4Bh, 75h, 0CCh, 0Bh, 0EDh, 75h, 2, 0C3h, 90h, 81h, 0EFh
db 0, 7Dh, 8Bh, 0DDh, 33h, 0EDh, 0EBh, 0BCh, 0ACh, 32h
db 0E4h, 0D3h, 0C8h, 8Ah, 0D4h, 86h, 0E0h, 32h, 0C0h, 0ABh
db 0Ah, 0EDh, 74h, 12h, 0ADh, 0D3h, 0C8h, 8Ah, 0F0h, 24h
byte_3334 db 11h
db 32h, 0F0h, 0Ah, 0C2h, 0ABh, 8Ah, 0D6h, 0FEh, 0CDh, 75h
db 0EEh, 26h, 88h, 15h, 8Ah, 0D5h, 83h, 0C7h
byte_3347 db 50h
db 0B5h
byte_3349 db 11h
db 4Bh, 75h, 0D1h, 0Bh, 0EDh, 75h, 1, 0C3h, 81h, 0EFh
db 0, 7Dh, 8Bh, 0DDh, 33h, 0EDh, 0EBh, 0C2h
include libs/master.lib/super_roll_put.asm
; ---------------------------------------------------------------------------
loc_335C:
@ -21499,7 +21317,7 @@ loc_D589:
add ax, ax
mov bx, ax
push word ptr [bx+0A94h]
call sub_3146
call super_roll_put
loc_D59F:
test byte ptr dword_20612, 3
@ -24806,7 +24624,7 @@ loc_EF9E:
push word_205F6
push si
push word_1E512
call sub_3146
call super_roll_put
loc_EFAC:
cmp byte_1E516, 8
@ -24904,7 +24722,7 @@ loc_F078:
push word ptr [bx]
push si
push [bp+var_2]
call sub_3146
call super_roll_put
jmp loc_F1D5
; ---------------------------------------------------------------------------
@ -25025,7 +24843,7 @@ loc_F1B6:
push word ptr [bx]
push si
push 0
call sub_3146
call super_roll_put
jmp short loc_F1D5
; ---------------------------------------------------------------------------
@ -29341,7 +29159,7 @@ loc_111F3:
push word ptr es:[bx]
push si
push word_22D4C
call sub_3146
call super_roll_put
pop di
pop si
pop bp
@ -29435,7 +29253,7 @@ loc_112D4:
push word ptr es:[bx]
push di
push [bp+var_2]
call sub_3146
call super_roll_put
mov bx, si
shl bx, 2
les bx, [bx+52ECh]
@ -29444,7 +29262,7 @@ loc_112D4:
push ax
push di
push [bp+var_2]
call sub_3146
call super_roll_put
loc_11302:
pop di
@ -29970,7 +29788,7 @@ loc_11746:
mov bx, si
add bx, bx
push word ptr [bx+52DCh]
call sub_3146
call super_roll_put
loc_1175C:
; sub_116EC+58j
@ -30056,7 +29874,7 @@ loc_117F3:
push word_22D8C
push di
push word_22D54
call sub_3146
call super_roll_put
inc word_1EB26
xor ax, ax
jmp short loc_11871
@ -32675,7 +32493,7 @@ loc_12BDD:
push [bp+var_2]
push di
push ax
call sub_3146
call super_roll_put
dec word ptr [si+6]
jmp short loc_12C60
; ---------------------------------------------------------------------------
@ -32832,7 +32650,7 @@ loc_12CFB:
push word_205F6
push si
push 0
call sub_3146
call super_roll_put
mov al, byte_20618
mov ah, 0
shl ax, 2
@ -32892,13 +32710,13 @@ arg_6 = dword ptr 0Ah
push word ptr es:[bx]
push [bp+arg_4]
push si
call sub_3146
call super_roll_put
les bx, [bp+arg_6]
push word ptr es:[bx]
push [bp+arg_2]
lea ax, [si+8]
push ax
call sub_3146
call super_roll_put
loc_12D8B:
; sub_12D56+15j
@ -34655,7 +34473,7 @@ loc_13AA8:
push word ptr [bx]
push si
push word_24E84
call sub_3146
call super_roll_put
loc_13AB8:
; sub_13909+9Ej ...
@ -34842,7 +34660,7 @@ loc_13C4F:
push word_24E7C
push word_24E7E
push word_2064E
call sub_3146
call super_roll_put
jmp short loc_13C7C
; ---------------------------------------------------------------------------
@ -35293,7 +35111,7 @@ loc_13FE5:
push word_24E7C
push word_24E7E
push word_2064E
call sub_3146
call super_roll_put
loc_14028:
call sub_13C91
@ -35722,7 +35540,7 @@ loc_143D4:
push word ptr [bx]
push si
push di
call sub_3146
call super_roll_put
loc_143E1:
; sub_1424A+D4j ...
@ -35939,7 +35757,7 @@ loc_145B3:
push word ptr [bx]
push si
push word_2064E
call sub_3146
call super_roll_put
jmp short loc_145DB
; ---------------------------------------------------------------------------
@ -36033,7 +35851,7 @@ loc_14689:
push word ptr [bx]
push si
push word_2064E
call sub_3146
call super_roll_put
loc_14699:
; sub_145E1+A6j
@ -36230,7 +36048,7 @@ loc_147E2:
push word ptr [si+2]
push di
push [bp+var_4]
call sub_3146
call super_roll_put
inc byte ptr [si+7]
jmp short loc_14829
; ---------------------------------------------------------------------------
@ -37555,7 +37373,7 @@ loc_15296:
push word ptr [bx]
push si
push word_2064E
call sub_3146
call super_roll_put
push ds
push offset aBoss4_m ; "boss4.m"
nop
@ -41815,7 +41633,7 @@ loc_1765D:
push word_26C4E
push si
push di
call sub_3146
call super_roll_put
xor ax, ax
loc_1766A:
@ -42134,7 +41952,7 @@ loc_17953:
push word ptr [bx+12h]
loc_1795F:
call sub_3146
call super_roll_put
loc_17964:
; sub_1766E+8Cj ...
@ -45866,7 +45684,7 @@ sub_199B3 proc far
push word_205F6
push word_205F8
push 0
call sub_3146
call super_roll_put
mov al, byte_20618
mov ah, 0
shl ax, 2
@ -46356,7 +46174,7 @@ loc_19F9E:
push word_26D76
push si
push word_2064E
call sub_3146
call super_roll_put
loc_19FAC:
pop si
@ -47000,27 +46818,27 @@ loc_1A49D:
push 20h ; ' '
push di
push 22h ; '"'
call sub_3146
call super_roll_put
push 20h ; ' '
push [bp+var_2]
push 2Ah ; '*'
call sub_3146
call super_roll_put
push 40h ; '@'
push di
push 23h ; '#'
call sub_3146
call super_roll_put
push 40h ; '@'
push [bp+var_2]
push 2Bh ; '+'
call sub_3146
call super_roll_put
push 60h ; '`'
push di
push 24h ; '$'
call sub_3146
call super_roll_put
push 60h ; '`'
push [bp+var_2]
push 2Ch ; ','
call sub_3146
call super_roll_put
xor si, si
jmp short loc_1A508
; ---------------------------------------------------------------------------
@ -47032,14 +46850,14 @@ loc_1A4E3:
push ax
push di
push 25h ; '%'
call sub_3146
call super_roll_put
mov ax, si
shl ax, 5
add ax, 80h ; '€'
push ax
push [bp+var_2]
push 2Dh ; '-'
call sub_3146
call super_roll_put
inc si
loc_1A508:
@ -47048,11 +46866,11 @@ loc_1A508:
push 180h
push di
push 26h ; '&'
call sub_3146
call super_roll_put
push 180h
push [bp+var_2]
push 2Eh ; '.'
call sub_3146
call super_roll_put
pop di
pop si
leave
@ -47152,7 +46970,7 @@ loc_1A613:
push word_205F6
push word_205F8
push 0
call sub_3146
call super_roll_put
mov al, byte_20618
mov ah, 0
shl ax, 2
@ -47240,7 +47058,7 @@ sub_1A6C5 proc near
push word_205F6
push word_205F8
push 0
call sub_3146
call super_roll_put
mov al, byte_20618
mov ah, 0
shl ax, 2
@ -47371,7 +47189,7 @@ sub_1A7D5 proc far
push word_205F6
push word_205F8
push 0
call sub_3146
call super_roll_put
mov al, byte_20618
mov ah, 0
shl ax, 2
@ -47427,7 +47245,7 @@ sub_1A7D5 proc far
push word_205F6
push word_205F8
push 0
call sub_3146
call super_roll_put
mov al, byte_20618
mov ah, 0
shl ax, 2

View File

@ -2609,190 +2609,7 @@ include libs/master.lib/super_entry_bfnt.asm
include libs/master.lib/super_cancel_pat.asm
include libs/master.lib/super_clean.asm
include libs/master.lib/super_roll_put_1plane.asm
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_2D3E proc far
; sub_C778:loc_C7DEP ...
arg_0 = word ptr 6
arg_2 = word ptr 8
arg_4 = word ptr 0Ah
push bp
mov bp, sp
push ds
push si
push di
mov cx, [bp+arg_4]
mov di, [bp+arg_2]
mov si, di
shl di, 2
add di, si
shl di, 4
mov ax, cx
and cx, 7
shr ax, 3
add di, ax
mov bx, cx
mov al, [bx+776h]
mov bx, [bp+arg_0]
shl bx, 1
mov dx, [bx+2EC4h]
mov ch, dh
shr ch, 1
mov ds, word ptr [bx+2AC4h]
mov bx, dx
xor bh, bh
add si, bx
sub si, 190h
jg short loc_2D83
xor si, si
loc_2D83:
sub bx, si
mov cs:word_2E61, si
mov cs:word_2E5B, bx
mov bp, di
test di, 1
jnz short loc_2DD0
test dh, 1
jnz short loc_2DB6
mov cs:byte_2E70, al
mov cs:byte_2E85, ch
mov al, 50h ; 'P'
sub al, dh
mov cs:byte_2E83, al
mov cs:word_2E64, 2E68h
jmp short loc_2E0A
; ---------------------------------------------------------------------------
loc_2DB6:
mov cs:byte_2EA4, al
mov cs:byte_2EBF, ch
mov al, 50h ; 'P'
sub al, dh
mov cs:byte_2EBD, al
mov cs:word_2E64, 2E98h
jmp short loc_2E0A
; ---------------------------------------------------------------------------
loc_2DD0:
dec bp
test dh, 1
jnz short loc_2DF2
mov cs:byte_2EE8, al
dec ch
mov cs:byte_2F02, ch
mov al, 4Eh ; 'N'
sub al, dh
mov cs:byte_2F00, al
mov cs:word_2E64, 2ED2h
jmp short loc_2E0A
; ---------------------------------------------------------------------------
loc_2DF2:
mov cs:byte_2F2C, al
mov cs:byte_2F41, ch
mov al, 4Fh ; 'O'
sub al, dh
mov cs:byte_2F3F, al
mov cs:word_2E64, 2F16h
loc_2E0A:
mov cs:word_2E5E, bp
xor si, si
mov ax, 0C0h ; 'À'
out 7Ch, al
mov al, ah
out 7Eh, al
out 7Eh, al
out 7Eh, al
out 7Eh, al
mov ax, 0A800h
mov es, ax
call near ptr byte_2E5A
mov ax, 0FFCEh
out 7Ch, al
mov al, ah
out 7Eh, al
out 7Eh, al
out 7Eh, al
out 7Eh, al
call near ptr byte_2E5A
mov al, 0CDh ; 'Í'
out 7Ch, al
call near ptr byte_2E5A
mov al, 0CBh ; 'Ë'
out 7Ch, al
call near ptr byte_2E5A
mov al, 0C7h ; 'Ç'
out 7Ch, al
call near ptr byte_2E5A
xor al, al
out 7Ch, al
pop di
pop si
pop ds
pop bp
retf 6
sub_2D3E endp
; ---------------------------------------------------------------------------
byte_2E5A db 0BBh
word_2E5B dw 1234h
db 0BFh
word_2E5E dw 1234h
db 0BDh
word_2E61 dw 1234h
db 0B8h
word_2E64 dw 1234h
; ---------------------------------------------------------------------------
jmp ax
; ---------------------------------------------------------------------------
db 32h, 0D2h, 0ADh, 0D3h, 0C8h, 8Ah, 0F0h, 24h
byte_2E70 db 11h
db 32h, 0F0h, 0Ah, 0C2h, 0ABh, 8Ah, 0D6h, 0FEh, 0CDh, 75h
db 0EEh, 26h, 88h, 15h, 8Ah, 0D5h, 83h, 0C7h
byte_2E83 db 50h
db 0B5h
byte_2E85 db 11h
db 4Bh, 75h, 0E1h, 0Bh, 0EDh, 75h, 1, 0C3h, 81h, 0EFh
db 0, 7Dh, 8Bh, 0DDh, 33h, 0EDh, 0EBh, 0D2h, 32h, 0D2h
db 0Ah, 0EDh, 74h, 12h, 0ADh, 0D3h, 0C8h, 8Ah, 0F0h, 24h
byte_2EA4 db 11h
db 32h, 0F0h, 0Ah, 0C2h, 0ABh, 8Ah, 0D6h, 0FEh, 0CDh, 75h
db 0EEh, 0ACh, 32h, 0E4h, 0D3h, 0C8h, 0Ah, 0C2h, 0ABh
db 4Fh, 8Ah, 0D5h, 83h, 0C7h
byte_2EBD db 50h
db 0B5h
byte_2EBF db 11h
db 4Bh, 75h, 0D7h, 0Bh, 0EDh, 75h, 1, 0C3h, 81h, 0EFh
db 0, 7Dh, 8Bh, 0DDh, 33h, 0EDh, 0EBh, 0C8h, 0ACh, 32h
db 0E4h, 0D3h, 0C8h, 8Ah, 0D4h, 86h, 0E0h, 32h, 0C0h, 0ABh
db 0Ah, 0EDh, 74h, 12h, 0ADh, 0D3h, 0C8h, 8Ah, 0F0h, 24h
byte_2EE8 db 11h
db 32h, 0F0h, 0Ah, 0C2h, 0ABh, 8Ah, 0D6h, 0FEh, 0CDh, 75h
db 0EEh, 0ACh, 32h, 0E4h, 0D3h, 0C8h, 0Ah, 0C2h, 0ABh
db 8Ah, 0D5h, 83h, 0C7h
byte_2F00 db 50h
db 0B5h
byte_2F02 db 11h
db 4Bh, 75h, 0CCh, 0Bh, 0EDh, 75h, 2, 0C3h, 90h, 81h, 0EFh
db 0, 7Dh, 8Bh, 0DDh, 33h, 0EDh, 0EBh, 0BCh, 0ACh, 32h
db 0E4h, 0D3h, 0C8h, 8Ah, 0D4h, 86h, 0E0h, 32h, 0C0h, 0ABh
db 0Ah, 0EDh, 74h, 12h, 0ADh, 0D3h, 0C8h, 8Ah, 0F0h, 24h
byte_2F2C db 11h
db 32h, 0F0h, 0Ah, 0C2h, 0ABh, 8Ah, 0D6h, 0FEh, 0CDh, 75h
db 0EEh, 26h, 88h, 15h, 8Ah, 0D5h, 83h, 0C7h
byte_2F3F db 50h
db 0B5h
byte_2F41 db 11h
db 4Bh, 75h, 0D1h, 0Bh, 0EDh, 75h, 1, 0C3h, 81h, 0EFh
db 0, 7Dh, 8Bh, 0DDh, 33h, 0EDh, 0EBh, 0C2h
include libs/master.lib/super_roll_put.asm
include libs/master.lib/super_put.asm
; =============== S U B R O U T I N E =======================================
@ -19182,7 +18999,7 @@ loc_C7A1:
mov al, byte_26704
mov ah, 0
push ax
call sub_2D3E
call super_roll_put
mov ax, word ptr dword_266F4+2
add ax, 100h
push ax
@ -19198,7 +19015,7 @@ loc_C7DD:
push ax
loc_C7DE:
call sub_2D3E
call super_roll_put
jmp loc_C881
; ---------------------------------------------------------------------------
@ -19224,7 +19041,7 @@ loc_C7E6:
div bx
add dx, 93h ; '“'
push dx
call sub_2D3E
call super_roll_put
mov ax, word ptr dword_266F4+2
add ax, 100h
push ax
@ -19351,7 +19168,7 @@ loc_C91E:
push di
push [bp+var_2]
push si
call sub_2D3E
call super_roll_put
jmp short loc_C946
; ---------------------------------------------------------------------------
@ -19395,7 +19212,7 @@ sub_C885 endp
push word ptr [bp-2]
push word ptr [bp-4]
push ax
call sub_2D3E
call super_roll_put
locret_C999:
leave
@ -19906,7 +19723,7 @@ loc_CCAA:
push di
push [bp+var_2]
push si
call sub_2D3E
call super_roll_put
jmp short loc_CCD2
; ---------------------------------------------------------------------------
@ -20095,7 +19912,7 @@ loc_CE5B:
push di
push word ptr [bp-2]
push si
call sub_2D3E
call super_roll_put
jmp short loc_CE8F
; ---------------------------------------------------------------------------
@ -20818,7 +20635,7 @@ loc_D3B0:
push [bp+var_4]
push [bp+var_6]
push [bp+var_2]
call sub_2D3E
call super_roll_put
loc_D3E3:
jmp loc_D528 ; default
@ -24176,7 +23993,7 @@ loc_ED01:
push [bp+var_2]
push ax
push word ptr [si+6]
call sub_2D3E
call super_roll_put
jmp short loc_ED64
; ---------------------------------------------------------------------------
@ -27664,7 +27481,7 @@ loc_10776:
mov al, [bp+var_5]
mov ah, 0
push ax
call sub_2D3E
call super_roll_put
jmp short loc_107D0
; ---------------------------------------------------------------------------
@ -28261,7 +28078,7 @@ loc_10C65:
push di
push [bp+var_2]
push si
call sub_2D3E
call super_roll_put
loc_10C6F:
cmp byte_259A5, 2
@ -28339,7 +28156,7 @@ loc_10CE0:
push di
push ax
push 3
call sub_2D3E
call super_roll_put
loc_10D36:
; sub_10BFD+107j ...
@ -30015,7 +29832,7 @@ loc_11AC4:
mov al, byte_26704
mov ah, 0
push ax
call sub_2D3E
call super_roll_put
loc_11B2F:
; sub_11A9A+6Aj ...
@ -32585,7 +32402,7 @@ loc_12E44:
push [bp+var_2]
push [bp+var_4]
push ax
call sub_2D3E
call super_roll_put
loc_12E86:
; sub_12E37+17j

View File

@ -2806,189 +2806,7 @@ include libs/master.lib/super_entry_bfnt.asm
include libs/master.lib/super_cancel_pat.asm
include libs/master.lib/super_clean.asm
include libs/master.lib/super_roll_put_1plane.asm
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_2FE0 proc far
; sub_EFDE+10AP ...
arg_0 = word ptr 6
arg_2 = word ptr 8
arg_4 = word ptr 0Ah
push bp
mov bp, sp
push ds
push si
push di
mov cx, [bp+arg_4]
mov di, [bp+arg_2]
mov si, di
shl di, 2
add di, si
shl di, 4
mov ax, cx
and cx, 7
shr ax, 3
add di, ax
mov bx, cx
mov al, [bx+6BEh]
mov bx, [bp+arg_0]
shl bx, 1
mov dx, [bx+2A9Eh]
mov ch, dh
shr ch, 1
mov ds, word ptr [bx+269Eh]
mov bx, dx
xor bh, bh
add si, bx
sub si, 190h
jg short loc_3025
xor si, si
loc_3025:
sub bx, si
mov cs:word_3103, si
mov cs:word_30FD, bx
mov bp, di
test di, 1
jnz short loc_3072
test dh, 1
jnz short loc_3058
mov cs:byte_3112, al
mov cs:byte_3127, ch
mov al, 50h ; 'P'
sub al, dh
mov cs:byte_3125, al
mov cs:word_3106, 310Ah
jmp short loc_30AC
; ---------------------------------------------------------------------------
loc_3058:
mov cs:byte_3146, al
mov cs:byte_3161, ch
mov al, 50h ; 'P'
sub al, dh
mov cs:byte_315F, al
mov cs:word_3106, 313Ah
jmp short loc_30AC
; ---------------------------------------------------------------------------
loc_3072:
dec bp
test dh, 1
jnz short loc_3094
mov cs:byte_318A, al
dec ch
mov cs:byte_31A4, ch
mov al, 4Eh ; 'N'
sub al, dh
mov cs:byte_31A2, al
mov cs:word_3106, 3174h
jmp short loc_30AC
; ---------------------------------------------------------------------------
loc_3094:
mov cs:byte_31CE, al
mov cs:byte_31E3, ch
mov al, 4Fh ; 'O'
sub al, dh
mov cs:byte_31E1, al
mov cs:word_3106, 31B8h
loc_30AC:
mov cs:word_3100, bp
xor si, si
mov ax, 0C0h ; 'À'
out 7Ch, al
mov al, ah
out 7Eh, al
out 7Eh, al
out 7Eh, al
out 7Eh, al
mov ax, 0A800h
mov es, ax
call near ptr byte_30FC
mov ax, 0FFCEh
out 7Ch, al
mov al, ah
out 7Eh, al
out 7Eh, al
out 7Eh, al
out 7Eh, al
call near ptr byte_30FC
mov al, 0CDh ; 'Í'
out 7Ch, al
call near ptr byte_30FC
mov al, 0CBh ; 'Ë'
out 7Ch, al
call near ptr byte_30FC
mov al, 0C7h ; 'Ç'
out 7Ch, al
call near ptr byte_30FC
xor al, al
out 7Ch, al
pop di
pop si
pop ds
pop bp
retf 6
sub_2FE0 endp
; ---------------------------------------------------------------------------
byte_30FC db 0BBh
word_30FD dw 1234h
db 0BFh
word_3100 dw 1234h
db 0BDh
word_3103 dw 1234h
db 0B8h
word_3106 dw 1234h
; ---------------------------------------------------------------------------
jmp ax
; ---------------------------------------------------------------------------
db 32h, 0D2h, 0ADh, 0D3h, 0C8h, 8Ah, 0F0h, 24h
byte_3112 db 11h
db 32h, 0F0h, 0Ah, 0C2h, 0ABh, 8Ah, 0D6h, 0FEh, 0CDh, 75h
db 0EEh, 26h, 88h, 15h, 8Ah, 0D5h, 83h, 0C7h
byte_3125 db 50h
db 0B5h
byte_3127 db 11h
db 4Bh, 75h, 0E1h, 0Bh, 0EDh, 75h, 1, 0C3h, 81h, 0EFh
db 0, 7Dh, 8Bh, 0DDh, 33h, 0EDh, 0EBh, 0D2h, 32h, 0D2h
db 0Ah, 0EDh, 74h, 12h, 0ADh, 0D3h, 0C8h, 8Ah, 0F0h, 24h
byte_3146 db 11h
db 32h, 0F0h, 0Ah, 0C2h, 0ABh, 8Ah, 0D6h, 0FEh, 0CDh, 75h
db 0EEh, 0ACh, 32h, 0E4h, 0D3h, 0C8h, 0Ah, 0C2h, 0ABh
db 4Fh, 8Ah, 0D5h, 83h, 0C7h
byte_315F db 50h
db 0B5h
byte_3161 db 11h
db 4Bh, 75h, 0D7h, 0Bh, 0EDh, 75h, 1, 0C3h, 81h, 0EFh
db 0, 7Dh, 8Bh, 0DDh, 33h, 0EDh, 0EBh, 0C8h, 0ACh, 32h
db 0E4h, 0D3h, 0C8h, 8Ah, 0D4h, 86h, 0E0h, 32h, 0C0h, 0ABh
db 0Ah, 0EDh, 74h, 12h, 0ADh, 0D3h, 0C8h, 8Ah, 0F0h, 24h
byte_318A db 11h
db 32h, 0F0h, 0Ah, 0C2h, 0ABh, 8Ah, 0D6h, 0FEh, 0CDh, 75h
db 0EEh, 0ACh, 32h, 0E4h, 0D3h, 0C8h, 0Ah, 0C2h, 0ABh
db 8Ah, 0D5h, 83h, 0C7h
byte_31A2 db 50h
db 0B5h
byte_31A4 db 11h
db 4Bh, 75h, 0CCh, 0Bh, 0EDh, 75h, 2, 0C3h, 90h, 81h, 0EFh
db 0, 7Dh, 8Bh, 0DDh, 33h, 0EDh, 0EBh, 0BCh, 0ACh, 32h
db 0E4h, 0D3h, 0C8h, 8Ah, 0D4h, 86h, 0E0h, 32h, 0C0h, 0ABh
db 0Ah, 0EDh, 74h, 12h, 0ADh, 0D3h, 0C8h, 8Ah, 0F0h, 24h
byte_31CE db 11h
db 32h, 0F0h, 0Ah, 0C2h, 0ABh, 8Ah, 0D6h, 0FEh, 0CDh, 75h
db 0EEh, 26h, 88h, 15h, 8Ah, 0D5h, 83h, 0C7h
byte_31E1 db 50h
db 0B5h
byte_31E3 db 11h
db 4Bh, 75h, 0D1h, 0Bh, 0EDh, 75h, 1, 0C3h, 81h, 0EFh
db 0, 7Dh, 8Bh, 0DDh, 33h, 0EDh, 0EBh, 0C2h
include libs/master.lib/super_roll_put.asm
; ---------------------------------------------------------------------------
loc_31F6:
@ -23877,7 +23695,7 @@ loc_EC1A:
mov al, [bp+var_5]
mov ah, 0
push ax
call sub_2FE0
call super_roll_put
jmp short loc_EC74
; ---------------------------------------------------------------------------
@ -24570,7 +24388,7 @@ loc_F0C2:
push [bp+var_4]
mov ah, 0
push ax
call sub_2FE0
call super_roll_put
loc_F0ED:
jmp loc_F181
@ -25519,7 +25337,7 @@ loc_F816:
mov al, byte_26330
mov ah, 0
push ax
call sub_2FE0
call super_roll_put
loc_F881:
inc [bp+var_2]
@ -27590,7 +27408,7 @@ sub_10848 proc near
push di
push word ptr [bp-2]
push dx
call sub_2FE0
call super_roll_put
mov ax, word ptr dword_26320
sar ax, 4
mov di, ax
@ -27613,7 +27431,7 @@ loc_108B6:
push di
push word ptr [bp-2]
push si
call sub_2FE0
call super_roll_put
jmp short loc_10900
; ---------------------------------------------------------------------------
@ -27778,7 +27596,7 @@ loc_109F0:
push di
push word ptr [bp-2]
push si
call sub_2FE0
call super_roll_put
jmp short loc_10A26
; ---------------------------------------------------------------------------
@ -27900,7 +27718,7 @@ loc_10AE3:
push di
push word ptr [bp-2]
push si
call sub_2FE0
call super_roll_put
jmp short loc_10B19
; ---------------------------------------------------------------------------
@ -27999,7 +27817,7 @@ loc_10BA1:
push [bp+var_4]
push di
push [bp+var_6]
call sub_2FE0
call super_roll_put
jmp short loc_10BC7
; ---------------------------------------------------------------------------
@ -28366,7 +28184,7 @@ loc_10E1F:
push si
push di
push dx
call sub_2FE0
call super_roll_put
jmp short loc_10EAE
; ---------------------------------------------------------------------------
@ -29313,7 +29131,7 @@ loc_1162C:
mov al, byte_26330
mov ah, 0
push ax
call sub_2FE0
call super_roll_put
jmp short loc_11691
; ---------------------------------------------------------------------------
@ -29588,7 +29406,7 @@ loc_11862:
mov al, byte_26330
mov ah, 0
push ax
call sub_2FE0
call super_roll_put
jmp short loc_118CD
; ---------------------------------------------------------------------------
@ -30774,7 +30592,7 @@ loc_122CB:
push di
push [bp+var_2]
push si
call sub_2FE0
call super_roll_put
loc_122D5:
cmp byte_2CEBF, 2
@ -30852,7 +30670,7 @@ loc_12342:
push di
push ax
push 3
call sub_2FE0
call super_roll_put
loc_12398:
; sub_12263+103j ...