diff --git a/libs/master.lib/super_roll_put.asm b/libs/master.lib/super_roll_put.asm new file mode 100644 index 00000000..1ac46fdd --- /dev/null +++ b/libs/master.lib/super_roll_put.asm @@ -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 diff --git a/th02_main.asm b/th02_main.asm index 3c01b322..c985aae2 100644 --- a/th02_main.asm +++ b/th02_main.asm @@ -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 diff --git a/th04_main.asm b/th04_main.asm index 58241577..820e33fd 100644 --- a/th04_main.asm +++ b/th04_main.asm @@ -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 diff --git a/th05_main.asm b/th05_main.asm index 12da3029..421487a4 100644 --- a/th05_main.asm +++ b/th05_main.asm @@ -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 ...