; ; +-------------------------------------------------------------------------+ ; | This file has been generated by The Interactive Disassembler (IDA) | ; | Copyright (c) 2009 by Hex-Rays, | ; +-------------------------------------------------------------------------+ ; ; Input MD5 : 2CAAD6F798E32B912A08DA327A97DDB4 ; File Name : th01/FUUIN.EXE ; Format : MS-DOS executable (EXE) ; Base Address: 0h Range: 0h-147E0h Loaded length: 13ED8h ; Entry Point : 0:0 ; OS type : MS DOS ; Application type: Executable 16bit .286 ; Force the .model directive to create 16-bit default segments... .model large __LARGE__ equ 1 .386 ; ... then switch to what we actually need. ; And yes, we can't move this to an include file for some reason. include ReC98.inc include th01/th01.asm include libs/BorlandC/regs.inc option emulator extern @$bdla$qnv:proc extern @$bnwa$qui:proc extern FTOL@:proc extern F_LUDIV@:proc extern LUMOD@:proc extern LXLSH@:proc extern LXMUL@:proc extern SCOPY@:proc extern __fgetc:proc extern __mbcjmstojis:proc extern __mbctype:byte extern __setargv__:proc ; main() needs both to be set extern __setenvp__:proc extern _access:proc extern _close:proc extern _delay:proc extern _execl:proc extern _exit:proc extern _farfree:proc extern _farmalloc:proc extern _fclose:proc extern _fgetc:proc extern _filelength:proc extern _fopen:proc extern _getvect:proc extern _int86:proc extern _intdosx:proc extern _memcmp:proc extern _memcpy:proc extern _memset:proc extern _open:proc extern _printf:proc extern _proc:proc extern _puts:proc extern _read:proc extern _segread:proc extern _setvect:proc extern _strcmp:proc extern _strcpy:proc extern _vsprintf:proc extern _write:proc ; =========================================================================== ; Segment type: Pure code _TEXT segment word public 'CODE' use16 assume cs:_TEXT assume es:nothing, ds:_DATA, fs:nothing, gs:nothing include libs/piloadc/piloadc.asm include libs/master.lib/graph_400line.asm include libs/master.lib/graph_clear.asm include libs/master.lib/graph_show.asm include libs/master.lib/graph_start.asm include libs/master.lib/graph_scrollup.asm include libs/master.lib/palette_show.asm include libs/master.lib/palette_init.asm include libs/master.lib/respal_exist.asm include libs/master.lib/respal_free.asm include libs/master.lib/resdata.asm include libs/master.lib/file_read.asm include libs/master.lib/file_close.asm include libs/master.lib/file_ropen.asm include libs/master.lib/file_seek.asm include libs/master.lib/key_sense.asm include libs/master.lib/dos_ropen.asm include libs/master.lib/egc.asm include libs/master.lib/gdc_outpw.asm db 0 include libs/master.lib/random.asm _TEXT ends ; =========================================================================== ; Segment type: Pure code fuuin_01_TEXT segment byte public 'CODE' use16 assume cs:fuuin_01_TEXT ;org 9 assume es:nothing, ss:nothing, ds:_DATA, fs:nothing, gs:nothing ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9F49 proc far var_4 = dword ptr -4 enter 4, 0 push si push di push ds push offset aReiidenconfig ; "ReiidenConfig" push 0Dh push 5 call resdata_exist mov di, ax or di, di jnz short loc_9F65 jmp loc_A05D ; --------------------------------------------------------------------------- loc_9F65: mov word ptr [bp+reiidenconfig+2], di mov word ptr [bp+reiidenconfig], 0 les bx, [bp+reiidenconfig] cmp es:[bx+reiidenconfig_t.end_flag], 0 jnz short loc_9F7A jmp loc_A053 ; --------------------------------------------------------------------------- loc_9F7A: les bx, [bp+reiidenconfig] mov dx, word ptr es:[bx+reiidenconfig_t.score+2] mov ax, word ptr es:[bx+reiidenconfig_t.score] mov word ptr _score+2, dx mov word ptr _score, ax mov word ptr _continues_total+2, 0 mov word ptr _continues_total, 0 les bx, [bp+reiidenconfig] mov al, es:[bx+reiidenconfig_t.end_flag] mov byte_14021, al les bx, [bp+reiidenconfig] mov al, es:[bx+reiidenconfig_t.rank] mov byte_14022, al les bx, [bp+reiidenconfig] mov dx, word ptr es:[bx+reiidenconfig_t.score_highest+2] mov ax, word ptr es:[bx+reiidenconfig_t.score_highest] mov word ptr _score_highest+2, dx mov word ptr _score_highest, ax xor si, si jmp short loc_A003 ; --------------------------------------------------------------------------- loc_9FC2: mov ax, si add ax, ax les bx, [bp+reiidenconfig] add bx, ax mov ax, es:[bx+reiidenconfig_t.continues_per_scene] mov bx, si shl bx, 2 mov word ptr [bx+143Eh], 0 mov [bx+143Ch], ax mov ax, si add ax, ax les bx, [bp+reiidenconfig] add bx, ax mov es:[bx+reiidenconfig_t.continues_per_scene], 0 mov bx, si shl bx, 2 mov dx, [bx+143Eh] mov ax, [bx+143Ch] add word ptr _continues_total, ax adc word ptr _continues_total+2, dx inc si loc_A003: cmp si, 4 jl short loc_9FC2 les bx, [bp+reiidenconfig] mov dx, word ptr es:[bx+reiidenconfig_t.rand+2] mov ax, word ptr es:[bx+reiidenconfig_t.rand] mov word ptr random_seed+2, dx mov word ptr random_seed, ax les bx, [bp+reiidenconfig] mov al, es:[bx+reiidenconfig_t.start_lives_extra] mov byte_14020, al les bx, [bp+reiidenconfig] mov word ptr es:[bx+reiidenconfig_t.score+2], 0 mov word ptr es:[bx+reiidenconfig_t.score], 0 les bx, [bp+reiidenconfig] mov word ptr es:[bx+reiidenconfig_t.continues_total+2], 0 mov word ptr es:[bx+reiidenconfig_t.continues_total], 0 les bx, [bp+reiidenconfig] mov word ptr es:[bx+reiidenconfig_t.score_highest+2], 0 mov word ptr es:[bx+reiidenconfig_t.score_highest], 0 jmp short loc_A05B ; --------------------------------------------------------------------------- loc_A053: push ds push offset aErrorEnd_flagI ; "ERROR : end_flag is not ture !!" jmp short loc_A061 ; --------------------------------------------------------------------------- jmp short loc_A069 ; --------------------------------------------------------------------------- loc_A05B: jmp short loc_A06D ; --------------------------------------------------------------------------- loc_A05D: push ds push offset s ; "ERROR : cfg_id is not alloc!!" loc_A061: call _puts add sp, 4 loc_A069: xor ax, ax jmp short loc_A072 ; --------------------------------------------------------------------------- loc_A06D: mov ax, 1 jmp short $+2 loc_A072: pop di pop si leave retf sub_9F49 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_A076 proc far reiidenconfig = dword ptr -4 enter 4, 0 push si push di push ds push offset aReiidenconfi_0 ; "ReiidenConfig" push 0Dh push 5 call resdata_exist mov di, ax or di, di jz short loc_A0EE mov word ptr [bp+reiidenconfig+2], di mov word ptr [bp+reiidenconfig], 0 les bx, [bp+reiidenconfig] mov word ptr es:[bx+reiidenconfig_t.score+2], 0 mov word ptr es:[bx+reiidenconfig_t.score], 0 les bx, [bp+reiidenconfig] mov word ptr es:[bx+reiidenconfig_t.continues_total+2], 0 mov word ptr es:[bx+reiidenconfig_t.continues_total], 0 les bx, [bp+reiidenconfig] mov es:[bx+reiidenconfig_t.end_flag], 0 les bx, [bp+reiidenconfig] mov word ptr es:[bx+reiidenconfig_t.score_highest+2], 0 mov word ptr es:[bx+reiidenconfig_t.score_highest], 0 xor si, si jmp short loc_A0E0 ; --------------------------------------------------------------------------- loc_A0D0: mov ax, si add ax, ax les bx, [bp+reiidenconfig] add bx, ax mov es:[bx+reiidenconfig_t.continues_per_scene], 0 inc si loc_A0E0: cmp si, 4 jl short loc_A0D0 les bx, [bp+reiidenconfig] mov es:[bx+reiidenconfig_t.stage], 0 loc_A0EE: mov ax, 1 jmp short $+2 pop di pop si leave retf sub_A076 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl main(int argc, const char **argv, const char **envp) public _main _main proc far _argc = word ptr 6 _argv = dword ptr 8 _envp = dword ptr 0Ch push bp mov bp, sp call sub_EF80 or ax, ax jnz short loc_A105 pop bp retf ; --------------------------------------------------------------------------- loc_A105: les bx, [bp+_argv] les bx, es:[bx+4] mov al, es:[bx] cbw cmp ax, 74h ; 't' jz short loc_A121 call sub_9F49 or ax, ax jnz short loc_A11F pop bp retf ; --------------------------------------------------------------------------- loc_A11F: jmp short loc_A13E ; --------------------------------------------------------------------------- loc_A121: les bx, [bp+_argv] les bx, es:[bx+4] mov al, es:[bx+1] cbw cmp ax, 31h ; '1' jnz short loc_A139 mov byte_14021, 1 jmp short loc_A13E ; --------------------------------------------------------------------------- loc_A139: mov byte_14021, 2 loc_A13E: call _mdrv2_check_board call sub_CEAD call sub_B945 call sub_CF1B push 0 push 0 push ds push offset arg0 ; "op" push ds push offset path ; "op" call _execl add sp, 0Ch pop bp retf _main endp fuuin_01_TEXT ends ; =========================================================================== ; Segment type: Pure code fuuin_02_TEXT segment byte public 'CODE' use16 assume cs:fuuin_02_TEXT ;org 8 assume es:nothing, ss:nothing, ds:_DATA, fs:nothing, gs:nothing ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_A168 proc far var_30 = byte ptr -30h var_8 = word ptr -8 var_6 = word ptr -6 var_4 = word ptr -4 var_2 = word ptr -2 arg_0 = word ptr 6 arg_2 = word ptr 8 arg_4 = word ptr 0Ah arg_6 = word ptr 0Ch arg_8 = word ptr 0Eh arg_A = word ptr 10h arg_C = word ptr 12h arg_E = word ptr 14h arg_10 = word ptr 16h enter 30h, 0 push si push di mov si, [bp+arg_0] mov [bp+var_6], 0 mov [bp+var_8], 1 lea ax, [bp+var_30] push ss push ax push ds push offset FULLWIDTH_NUMBERS mov cx, 28h ; '(' call SCOPY@ xor di, di jmp short loc_A1A7 ; --------------------------------------------------------------------------- loc_A190: xor cx, cx mov bx, 0Ah mov dx, [bp+var_6] mov ax, [bp+var_8] call LXMUL@ mov [bp+var_6], dx mov [bp+var_8], ax inc di loc_A1A7: cmp di, [bp+arg_6] jl short loc_A190 loc_A1AC: push 0 push 0Ah push [bp+var_6] push [bp+var_8] call far ptr F_LUDIV@ mov [bp+var_6], dx mov [bp+var_8], ax cmp si, 270h jle short loc_A1CA jmp loc_A261 ; --------------------------------------------------------------------------- loc_A1CA: push 0 push 0Ah push [bp+var_6] push [bp+var_8] push [bp+arg_A] push [bp+arg_8] call far ptr F_LUDIV@ push dx push ax call far ptr LUMOD@ mov [bp+var_2], ax push 0 push 0Ah push [bp+var_6] push [bp+var_8] push [bp+arg_E] push [bp+arg_C] call far ptr F_LUDIV@ push dx push ax call far ptr LUMOD@ mov [bp+var_4], ax cmp [bp+var_2], 0 jz short loc_A213 mov [bp+arg_10], 1 loc_A213: cmp [bp+arg_10], 0 jz short loc_A24A mov ax, [bp+var_2] cmp ax, [bp+var_4] jnz short loc_A229 mov ax, [bp+arg_C] or ax, [bp+arg_E] jnz short loc_A24A loc_A229: mov bx, [bp+var_2] shl bx, 2 lea ax, [bp+var_30] add bx, ax push word ptr ss:[bx+2] push word ptr ss:[bx] push [bp+arg_4] push [bp+arg_2] push si call sub_E10C add sp, 0Ah loc_A24A: add si, 10h cmp [bp+var_6], 0 jbe short loc_A256 jmp loc_A1AC ; --------------------------------------------------------------------------- loc_A256: jnz short loc_A261 cmp [bp+var_8], 1 jbe short loc_A261 jmp loc_A1AC ; --------------------------------------------------------------------------- loc_A261: pop di pop si leave retf sub_A168 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_A265 proc far var_4 = word ptr -4 var_2 = word ptr -2 arg_0 = word ptr 6 enter 4, 0 cmp [bp+arg_0], 1 jnz short loc_A2A5 mov byte_14039, 0 mov byte_1403A, 0 mov byte_1403B, 0 mov byte_1403C, 0 mov byte_1403D, 0 mov byte_1403E, 0 mov byte_1403F, 0 mov byte_14040, 0 mov byte_14041, 0 mov byte_14042, 0 leave retf ; --------------------------------------------------------------------------- leave retf ; --------------------------------------------------------------------------- loc_A2A5: push 7 call key_sense mov [bp+var_2], ax push 5 call key_sense mov [bp+var_4], ax push 7 call key_sense or [bp+var_2], ax push 5 call key_sense or [bp+var_4], ax mov al, byte_14039 mov ah, 0 mov dx, [bp+var_2] and dx, 4 cmp ax, dx jz short loc_A2EE test byte ptr [bp+var_2], 4 jz short loc_A2E9 mov byte_12BA2, 1 jmp short loc_A2EE ; --------------------------------------------------------------------------- loc_A2E9: mov byte_12BA2, 0 loc_A2EE: mov al, byte ptr [bp+var_2] and al, 4 mov byte_14039, al mov al, byte_1403A mov ah, 0 mov dx, [bp+var_2] and dx, 20h cmp ax, dx jz short loc_A317 test byte ptr [bp+var_2], 20h jz short loc_A312 mov byte_12BA3, 1 jmp short loc_A317 ; --------------------------------------------------------------------------- loc_A312: mov byte_12BA3, 0 loc_A317: mov al, byte ptr [bp+var_2] and al, 20h mov byte_1403A, al mov al, byte_1403B mov ah, 0 mov dx, [bp+var_2] and dx, 8 cmp ax, dx jz short loc_A340 test byte ptr [bp+var_2], 8 jz short loc_A33B or byte_12B99, 2 jmp short loc_A340 ; --------------------------------------------------------------------------- loc_A33B: and byte_12B99, 0FDh loc_A340: mov al, byte ptr [bp+var_2] and al, 8 mov byte_1403B, al mov al, byte_1403C mov ah, 0 mov dx, [bp+var_2] and dx, 10h cmp ax, dx jz short loc_A369 test byte ptr [bp+var_2], 10h jz short loc_A364 or byte_12B99, 1 jmp short loc_A369 ; --------------------------------------------------------------------------- loc_A364: and byte_12B99, 0FEh loc_A369: mov al, byte ptr [bp+var_2] and al, 10h mov byte_1403C, al mov al, byte_1403D mov ah, 0 mov dx, [bp+var_4] and dx, 2 cmp ax, dx jz short loc_A392 test byte ptr [bp+var_4], 2 jz short loc_A38D mov byte_12B9C, 1 jmp short loc_A392 ; --------------------------------------------------------------------------- loc_A38D: mov byte_12B9C, 0 loc_A392: mov al, byte ptr [bp+var_4] and al, 2 mov byte_1403D, al mov al, byte_1403E mov ah, 0 mov dx, [bp+var_4] and dx, 4 cmp ax, dx jz short loc_A3BB test byte ptr [bp+var_4], 4 jz short loc_A3B6 mov byte_12BA1, 1 jmp short loc_A3BB ; --------------------------------------------------------------------------- loc_A3B6: mov byte_12BA1, 0 loc_A3BB: mov al, byte ptr [bp+var_4] and al, 4 mov byte_1403E, al push 0 call key_sense mov [bp+var_2], ax push 3 call key_sense mov [bp+var_4], ax push 0 call key_sense or [bp+var_2], ax push 3 call key_sense or [bp+var_4], ax mov al, byte_1403F mov ah, 0 mov dx, [bp+var_2] and dx, 1 cmp ax, dx jz short loc_A409 test byte ptr [bp+var_2], 1 jz short loc_A409 mov al, 1 sub al, byte_12B9F mov byte_12B9F, al loc_A409: mov al, byte ptr [bp+var_2] and al, 1 mov byte_1403F, al mov al, byte_14040 mov ah, 0 mov dx, [bp+var_4] and dx, 10h cmp ax, dx jz short loc_A445 test byte ptr [bp+var_4], 10h jz short loc_A440 cmp byte_12B9F, 1 jnz short loc_A439 cmp byte_12B9C, 1 jnz short loc_A439 mov byte_12B9D, 1 loc_A439: mov byte_12BA0, 1 jmp short loc_A445 ; --------------------------------------------------------------------------- loc_A440: mov byte_12BA0, 0 loc_A445: mov al, byte ptr [bp+var_4] and al, 10h mov byte_14040, al leave retf sub_A265 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_A44F proc far push bp mov bp, sp mov byte_12B99, 0 mov byte_12BA2, 0 mov byte_12BA3, 0 mov byte_12BA0, 0 mov byte_12B9F, 0 mov byte_12B9C, 0 mov byte_12BA1, 0 mov byte_12B9A, 0 mov byte_12B9B, 0 push 1 call sub_A265 pop cx pop bp retf sub_A44F endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_A488 proc far arg_0 = byte ptr 6 push bp mov bp, sp mov al, [bp+arg_0] add al, 9Ch pop bp retf sub_A488 endp ; --------------------------------------------------------------------------- pop bp retf ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_A494 proc far arg_0 = byte ptr 6 push bp mov bp, sp mov al, [bp+arg_0] add al, 64h ; 'd' pop bp retf sub_A494 endp ; --------------------------------------------------------------------------- pop bp retf ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_A4A0 proc far dest = byte ptr -26h var_16 = word ptr -16h var_14 = word ptr -14h var_12 = dword ptr -12h stream = dword ptr -0Eh var_A = word ptr -0Ah var_8 = word ptr -8 var_6 = word ptr -6 var_4 = word ptr -4 var_2 = word ptr -2 enter 26h, 0 push si mov [bp+var_4], ds mov [bp+var_6], 1ACh mov word ptr [bp+var_12+2], ds mov word ptr [bp+var_12], 1AFh mov [bp+var_14], ds mov [bp+var_16], 1C0h mov al, byte_14022 mov ah, 0 mov bx, ax cmp bx, 3 ja short loc_A4F5 add bx, bx jmp cs:off_A614[bx] loc_A4D0: push ds push offset aReyhies_dat ; "REYHIES.DAT" jmp short loc_A4E6 ; --------------------------------------------------------------------------- loc_A4D6: push ds push offset aReyhino_dat ; "REYHINO.DAT" jmp short loc_A4E6 ; --------------------------------------------------------------------------- loc_A4DC: push ds push offset aReyhiha_dat ; "REYHIHA.DAT" jmp short loc_A4E6 ; --------------------------------------------------------------------------- loc_A4E2: push ds push offset src ; "REYHILU.DAT" loc_A4E6: push ss lea ax, [bp+dest] push ax ; dest call _strcpy add sp, 8 jmp short $+2 loc_A4F5: cli push ds push offset aWB ; "wb" push ss lea ax, [bp+dest] push ax ; path call _fopen add sp, 8 mov word ptr [bp+stream+2], dx mov word ptr [bp+stream], ax or ax, dx jnz short loc_A517 jmp loc_A610 ; --------------------------------------------------------------------------- jmp loc_A611 ; --------------------------------------------------------------------------- loc_A517: push 7 push [bp+var_14] push [bp+var_16] les bx, [bp+stream] mov al, es:[bx+4] cbw push ax call _write add sp, 8 mov [bp+var_2], 0Ah mov [bp+var_8], 0 mov [bp+var_A], 3E8h xor si, si jmp short loc_A55A ; --------------------------------------------------------------------------- loc_A543: les bx, [bp+var_12] add bx, si mov al, es:[bx] push ax call sub_A488 pop cx les bx, [bp+var_12] add bx, si mov es:[bx], al inc si loc_A55A: cmp si, 10h jl short loc_A543 xor si, si jmp short loc_A57D ; --------------------------------------------------------------------------- loc_A563: push 10h push word ptr [bp+var_12+2] push word ptr [bp+var_12] les bx, [bp+stream] mov al, es:[bx+4] cbw push ax call _write add sp, 8 inc si loc_A57D: cmp si, 0Ah jl short loc_A563 xor si, si jmp short loc_A5B1 ; --------------------------------------------------------------------------- loc_A586: push 4 push ss lea ax, [bp+var_A] push ax les bx, [bp+stream] mov al, es:[bx+4] cbw push ax call _write add sp, 8 mov dx, [bp+var_8] mov ax, [bp+var_A] add ax, 0FF9Ch adc dx, 0FFFFh mov [bp+var_8], dx mov [bp+var_A], ax inc si loc_A5B1: cmp si, 0Ah jl short loc_A586 xor si, si jmp short loc_A5DA ; --------------------------------------------------------------------------- loc_A5BA: push 2 push ss lea ax, [bp+var_2] push ax les bx, [bp+stream] mov al, es:[bx+4] cbw push ax call _write add sp, 8 mov ax, [bp+var_2] dec ax mov [bp+var_2], ax inc si loc_A5DA: cmp si, 0Ah jl short loc_A5BA xor si, si jmp short loc_A5FD ; --------------------------------------------------------------------------- loc_A5E3: push 2 push [bp+var_4] push [bp+var_6] les bx, [bp+stream] mov al, es:[bx+4] cbw push ax call _write add sp, 8 inc si loc_A5FD: cmp si, 0Ah jl short loc_A5E3 push word ptr [bp+stream+2] push word ptr [bp+stream] ; stream call _fclose add sp, 4 loc_A610: sti loc_A611: pop si leave retf sub_A4A0 endp ; --------------------------------------------------------------------------- off_A614 dw offset loc_A4D0 dw offset loc_A4D6 dw offset loc_A4DC dw offset loc_A4E2 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_A61C proc far dest = byte ptr -46h s1 = byte ptr -36h stream = dword ptr -4 enter 46h, 0 push si mov al, byte_14022 mov ah, 0 mov bx, ax cmp bx, 3 ja short loc_A659 add bx, bx jmp cs:off_A7C7[bx] loc_A634: push ds push offset aReyhies_dat_0 ; "REYHIES.DAT" jmp short loc_A64A ; --------------------------------------------------------------------------- loc_A63A: push ds push offset aReyhino_dat_0 ; "REYHINO.DAT" jmp short loc_A64A ; --------------------------------------------------------------------------- loc_A640: push ds push offset aReyhiha_dat_0 ; "REYHIHA.DAT" jmp short loc_A64A ; --------------------------------------------------------------------------- loc_A646: push ds push offset aReyhilu_dat_0 ; "REYHILU.DAT" loc_A64A: push ss lea ax, [bp+dest] push ax ; dest call _strcpy add sp, 8 jmp short $+2 loc_A659: push 0 ; amode push ss lea ax, [bp+dest] push ax ; path call _access add sp, 6 or ax, ax jz short loc_A670 call sub_A4A0 loc_A670: cli push ds push offset aRb ; "rb" push ss lea ax, [bp+dest] push ax ; path call _fopen add sp, 8 mov word ptr [bp+stream+2], dx mov word ptr [bp+stream], ax or ax, dx jnz short loc_A694 push ds push offset aGtg@gcglvkvVVi ; "ファイルがみつかんない" jmp short loc_A6D5 ; --------------------------------------------------------------------------- jmp short loc_A6DE ; --------------------------------------------------------------------------- loc_A694: push 7 push ss lea ax, [bp+s1] push ax les bx, [bp+stream] mov al, es:[bx+4] cbw push ax call _read add sp, 8 push 4 ; n push ds push offset aHiscore ; "HISCORE" push ss lea ax, [bp+s1] push ax ; s1 call _memcmp add sp, 0Ah or ax, ax jz short loc_A6E4 push word ptr [bp+stream+2] push word ptr [bp+stream] ; stream call _fclose add sp, 4 push ds push offset format ; "ファイルが違う!" loc_A6D5: call _printf add sp, 4 sti loc_A6DE: mov ax, 1 jmp loc_A7C4 ; --------------------------------------------------------------------------- loc_A6E4: push 0A0h call @$bnwa$qui pop cx mov word ptr font+2, dx mov word ptr font, ax push 14h call @$bnwa$qui pop cx mov word ptr off_1402C+2, dx mov word ptr off_1402C, ax push 14h call @$bnwa$qui pop cx mov word ptr off_14028+2, dx mov word ptr off_14028, ax push 28h ; '(' call @$bnwa$qui pop cx mov word ptr off_14034+2, dx mov word ptr off_14034, ax push 0A0h push word ptr font+2 push word ptr font les bx, [bp+stream] mov al, es:[bx+4] cbw push ax call _read add sp, 8 push 28h ; '(' push word ptr off_14034+2 push word ptr off_14034 les bx, [bp+stream] mov al, es:[bx+4] cbw push ax call _read add sp, 8 push 14h push word ptr off_1402C+2 push word ptr off_1402C les bx, [bp+stream] mov al, es:[bx+4] cbw push ax call _read add sp, 8 push 14h push word ptr off_14028+2 push word ptr off_14028 les bx, [bp+stream] mov al, es:[bx+4] cbw push ax call _read add sp, 8 push word ptr [bp+stream+2] push word ptr [bp+stream] ; stream call _fclose add sp, 4 xor si, si jmp short loc_A7B9 ; --------------------------------------------------------------------------- loc_A7A0: les bx, font add bx, si mov al, es:[bx] push ax call sub_A494 pop cx les bx, font add bx, si mov es:[bx], al inc si loc_A7B9: cmp si, 0A0h jl short loc_A7A0 sti xor ax, ax jmp short $+2 loc_A7C4: pop si leave retf sub_A61C endp ; --------------------------------------------------------------------------- off_A7C7 dw offset loc_A634 dw offset loc_A63A dw offset loc_A640 dw offset loc_A646 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_A7CF proc far arg_0 = word ptr 6 arg_2 = dword ptr 8 push bp mov bp, sp xor dx, dx jmp short loc_A7F2 ; --------------------------------------------------------------------------- loc_A7D6: mov bx, [bp+arg_0] shl bx, 4 add bx, dx mov es, word ptr font+2 add bx, word ptr font mov al, es:[bx] les bx, [bp+arg_2] add bx, dx mov es:[bx], al inc dx loc_A7F2: cmp dx, 10h jl short loc_A7D6 les bx, [bp+arg_2] mov byte ptr es:[bx+10h], 0 pop bp retf sub_A7CF endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_A801 proc far var_2 = word ptr -2 enter 2, 0 push si push di mov [bp+var_2], 27h ; ''' mov di, 8282h mov si, 1 jmp short loc_A84F ; --------------------------------------------------------------------------- loc_A814: mov ax, di and ax, 0FFh push ax mov ax, di shr ax, 8 push ax ; arglist push ds push offset aCC ; "%c%c" push [bp+var_2] ; int mov ax, si mov bx, 12h cwd idiv bx imul ax, 18h add ax, 0F0h push ax ; int mov ax, si mov bx, 12h cwd idiv bx shl dx, 5 add dx, 20h ; ' ' push dx ; int call sub_E9E4 add sp, 0Eh inc di inc si loc_A84F: cmp si, 1Ah jl short loc_A814 push ds push offset aVb ; "a" push 823h push 0F0h push 20h ; ' ' call sub_E10C add sp, 0Ah mov di, 8260h xor si, si jmp short loc_A8AA ; --------------------------------------------------------------------------- loc_A86F: mov ax, di and ax, 0FFh push ax mov ax, di shr ax, 8 push ax ; arglist push ds push offset aCC_0 ; "%c%c" push [bp+var_2] ; int mov ax, si mov bx, 12h cwd idiv bx imul ax, 18h add ax, 120h push ax ; int mov ax, si mov bx, 12h cwd idiv bx shl dx, 5 add dx, 20h ; ' ' push dx ; int call sub_E9E4 add sp, 0Eh inc di inc si loc_A8AA: cmp si, 1Ah jl short loc_A86F xor si, si jmp short loc_A8F5 ; --------------------------------------------------------------------------- loc_A8B3: mov bx, si add bx, bx mov di, [bx+108h] mov ax, di and ax, 0FFh push ax mov ax, di shr ax, 8 push ax ; arglist push ds push offset aCC_1 ; "%c%c" push [bp+var_2] ; int mov ax, si mov bx, 12h cwd idiv bx imul ax, 18h add ax, 150h push ax ; int mov ax, si mov bx, 12h cwd idiv bx shl dx, 5 add dx, 20h ; ' ' push dx ; int call sub_E9E4 add sp, 0Eh inc si loc_A8F5: cmp si, 12h jl short loc_A8B3 mov di, 824Fh xor si, si jmp short loc_A93C ; --------------------------------------------------------------------------- loc_A901: mov ax, di and ax, 0FFh push ax mov ax, di shr ax, 8 push ax ; arglist push ds push offset aCC_2 ; "%c%c" push [bp+var_2] ; int mov ax, si mov bx, 12h cwd idiv bx imul ax, 18h add ax, 168h push ax ; int mov ax, si mov bx, 12h cwd idiv bx shl dx, 5 add dx, 20h ; ' ' push dx ; int call sub_E9E4 add sp, 0Eh inc di inc si loc_A93C: cmp si, 0Ah jl short loc_A901 push ds push offset aSp ; "SP" push [bp+var_2] ; int mov ax, si mov bx, 12h cwd idiv bx imul ax, 18h add ax, 168h push ax ; int mov ax, si mov bx, 12h cwd idiv bx shl dx, 5 add dx, 20h ; ' ' push dx ; int call sub_E9E4 add sp, 0Ah mov si, 0Fh push ds push offset aBi ; "←" push [bp+var_2] ; int mov ax, si mov bx, 12h cwd idiv bx imul ax, 18h add ax, 168h push ax ; int mov ax, si mov bx, 12h cwd idiv bx shl dx, 5 add dx, 20h ; ' ' push dx ; int call sub_E9E4 add sp, 0Ah inc si push ds push offset aBi_0 ; "→" push [bp+var_2] ; int mov ax, si mov bx, 12h cwd idiv bx imul ax, 18h add ax, 168h push ax ; int mov ax, si mov bx, 12h cwd idiv bx shl dx, 5 add dx, 20h ; ' ' push dx ; int call sub_E9E4 add sp, 0Ah inc si push ds push offset aPi ; "終" push [bp+var_2] ; int mov ax, si mov bx, 12h cwd idiv bx imul ax, 18h add ax, 168h push ax ; int mov ax, si mov bx, 12h cwd idiv bx shl dx, 5 add dx, 20h ; ' ' push dx ; int call sub_E9E4 add sp, 0Ah inc si pop di pop si leave retf sub_A801 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_A9FF proc far var_12 = byte ptr -12h arg_0 = word ptr 6 arg_2 = word ptr 8 arg_4 = word ptr 0Ah arg_6 = word ptr 0Ch arg_8 = dword ptr 0Eh arg_C = word ptr 12h arg_E = word ptr 14h enter 12h, 0 push si push di mov di, [bp+arg_0] lea ax, [bp+var_12] push ss push ax push ds push offset aBqbqbqbqbqbqbq ; "________" mov cx, 11h call SCOPY@ push 0 call _graph_accesspage_func pop cx push ds push offset aB@cB@iB@ ; " 霊 位 " push 33h ; '3' push 30h ; '0' push 20h ; ' ' call sub_E10C add sp, 0Ah push ds push offset aB@b@cB@b@sob@b ; "  名  前  " push 33h ; '3' push 30h ; '0' push 90h call sub_E10C add sp, 0Ah push ds push offset aB@b@uB@b@u_b@b ; "  得  点  " push 33h ; '3' push 30h ; '0' push 160h call sub_E10C add sp, 0Ah push ds push offset aGxgebGwbeglbGg ; "ステージ・ルート" push 33h ; '3' push 30h ; '0' push 200h call sub_E10C add sp, 0Ah xor si, si jmp loc_AD66 ; --------------------------------------------------------------------------- loc_AA71: mov bx, si cmp bx, 9 jbe short loc_AA7B jmp loc_AB4F ; --------------------------------------------------------------------------- loc_AA7B: add bx, bx jmp cs:off_AD72[bx] loc_AA82: push ds push offset aB@sB@r_b@ ; " 靈 神 " cmp si, di jnz short loc_AA8F mov ax, 3 jmp short loc_AA92 ; --------------------------------------------------------------------------- loc_AA8F: mov ax, 7 loc_AA92: jmp loc_AB36 ; --------------------------------------------------------------------------- loc_AA95: push ds push offset aSMRgcId ; "太元帥明王" cmp si, di jnz short loc_AAA2 mov ax, 3 jmp short loc_AAA5 ; --------------------------------------------------------------------------- loc_AAA2: mov ax, 7 loc_AAA5: jmp loc_AB36 ; --------------------------------------------------------------------------- loc_AAA8: push ds push offset aB@uvb@rxb@ ; " 天 仙 " cmp si, di jnz short loc_AAB5 mov ax, 3 jmp short loc_AAB8 ; --------------------------------------------------------------------------- loc_AAB5: mov ax, 7 loc_AAB8: jmp short loc_AB36 ; --------------------------------------------------------------------------- loc_AABA: push ds push offset aB@r_b@rxb@ ; " 神 仙 " cmp si, di jnz short loc_AAC7 mov ax, 3 jmp short loc_AACA ; --------------------------------------------------------------------------- loc_AAC7: mov ax, 7 loc_AACA: jmp short loc_AB36 ; --------------------------------------------------------------------------- loc_AACC: push ds push offset aB@tnb@rxb@ ; " 地 仙 " cmp si, di jnz short loc_AAD9 mov ax, 3 jmp short loc_AADC ; --------------------------------------------------------------------------- loc_AAD9: mov ax, 7 loc_AADC: jmp short loc_AB36 ; --------------------------------------------------------------------------- loc_AADE: push ds push offset aB@rlb@rxb@ ; " 人 仙 " cmp si, di jnz short loc_AAEB mov ax, 3 jmp short loc_AAEE ; --------------------------------------------------------------------------- loc_AAEB: mov ax, 7 loc_AAEE: jmp short loc_AB36 ; --------------------------------------------------------------------------- loc_AAF0: push ds push offset aB@rxb@pcb@ ; " 仙 女 " cmp si, di jnz short loc_AAFD mov ax, 3 jmp short loc_AB00 ; --------------------------------------------------------------------------- loc_AAFD: mov ax, 7 loc_AB00: jmp short loc_AB36 ; --------------------------------------------------------------------------- loc_AB02: push ds push offset aIab@czb@ot ; "陰 陽 師" cmp si, di jnz short loc_AB0F mov ax, 3 jmp short loc_AB12 ; --------------------------------------------------------------------------- loc_AB0F: mov ax, 7 loc_AB12: jmp short loc_AB36 ; --------------------------------------------------------------------------- loc_AB14: push ds push offset aSB@fB@ot ; "靈 媒 師" cmp si, di jnz short loc_AB21 mov ax, 3 jmp short loc_AB24 ; --------------------------------------------------------------------------- loc_AB21: mov ax, 7 loc_AB24: jmp short loc_AB36 ; --------------------------------------------------------------------------- loc_AB26: push ds push offset aPcb@lB@o ; "修 業 者" cmp si, di jnz short loc_AB33 mov ax, 3 jmp short loc_AB36 ; --------------------------------------------------------------------------- loc_AB33: mov ax, 7 loc_AB36: or ax, 20h push ax mov ax, si shl ax, 4 add ax, 40h push ax push 20h ; ' ' call sub_E10C add sp, 0Ah jmp short $+2 loc_AB4F: cmp si, di jnz short loc_AB5A mov dx, ss lea ax, [bp+var_12] jmp short loc_AB69 ; --------------------------------------------------------------------------- loc_AB5A: mov ax, si imul ax, 12h mov dx, [bp+arg_E] push ax mov ax, [bp+arg_C] pop bx add ax, bx loc_AB69: push dx push ax cmp si, di jnz short loc_AB74 mov ax, 3 jmp short loc_AB77 ; --------------------------------------------------------------------------- loc_AB74: mov ax, 7 loc_AB77: or ax, 20h push ax mov ax, si shl ax, 4 add ax, 40h push ax push 90h call sub_E10C add sp, 0Ah push 0 push 0 push 0 cmp di, si jnz short loc_ABA1 mov dx, [bp+arg_4] mov ax, [bp+arg_2] jmp short loc_ABB3 ; --------------------------------------------------------------------------- loc_ABA1: mov ax, si shl ax, 2 les bx, off_14034 add bx, ax mov dx, es:[bx+2] mov ax, es:[bx] loc_ABB3: push dx push ax push 7 cmp si, di jnz short loc_ABC0 mov ax, 3 jmp short loc_ABC3 ; --------------------------------------------------------------------------- loc_ABC0: mov ax, 7 loc_ABC3: or ax, 30h push ax mov ax, si shl ax, 4 add ax, 40h push ax push 160h call sub_A168 add sp, 12h cmp si, di jz short loc_ABEE mov ax, si add ax, ax les bx, off_1402C add bx, ax cmp word ptr es:[bx], 28h ; '(' jl short loc_ABF8 loc_ABEE: cmp si, di jnz short loc_AC3F cmp [bp+arg_6], 28h ; '(' jge short loc_AC3F loc_ABF8: push 0 push 0 push 0 cmp si, di jnz short loc_AC07 mov ax, [bp+arg_6] jmp short loc_AC14 ; --------------------------------------------------------------------------- loc_AC07: mov ax, si add ax, ax les bx, off_1402C add bx, ax mov ax, es:[bx] loc_AC14: cwd push dx push ax push 2 cmp si, di jnz short loc_AC22 mov ax, 3 jmp short loc_AC25 ; --------------------------------------------------------------------------- loc_AC22: mov ax, 7 loc_AC25: or ax, 20h push ax mov ax, si shl ax, 4 add ax, 40h push ax push 210h call sub_A168 add sp, 12h jmp loc_ACCD ; --------------------------------------------------------------------------- loc_AC3F: cmp si, di jz short loc_AC53 mov ax, si add ax, ax les bx, off_1402C add bx, ax cmp word ptr es:[bx], 32h ; '2' jz short loc_AC5D loc_AC53: cmp si, di jnz short loc_AC87 cmp [bp+arg_6], 32h ; '2' jnz short loc_AC87 loc_AC5D: push ds push offset aCvke ; "魔界" cmp si, di jnz short loc_AC6A mov ax, 3 jmp short loc_AC6D ; --------------------------------------------------------------------------- loc_AC6A: mov ax, 7 loc_AC6D: or ax, 20h push ax mov ax, si shl ax, 4 add ax, 40h push ax push 210h call sub_E10C add sp, 0Ah jmp short loc_ACCD ; --------------------------------------------------------------------------- loc_AC87: cmp si, di jz short loc_AC9B mov ax, si add ax, ax les bx, off_1402C add bx, ax cmp word ptr es:[bx], 3Ch ; '<' jz short loc_ACA5 loc_AC9B: cmp si, di jnz short loc_ACCD cmp [bp+arg_6], 3Ch ; '<' jnz short loc_ACCD loc_ACA5: push ds push offset aTnnc ; "地獄" cmp si, di jnz short loc_ACB2 mov ax, 3 jmp short loc_ACB5 ; --------------------------------------------------------------------------- loc_ACB2: mov ax, 7 loc_ACB5: or ax, 20h push ax mov ax, si shl ax, 4 add ax, 40h push ax push 210h call sub_E10C add sp, 0Ah loc_ACCD: push ds push offset aB ; "−" cmp si, di jnz short loc_ACDA mov ax, 3 jmp short loc_ACDD ; --------------------------------------------------------------------------- loc_ACDA: mov ax, 7 loc_ACDD: or ax, 20h push ax mov ax, si shl ax, 4 add ax, 40h push ax push 230h call sub_E10C add sp, 0Ah cmp si, di jnz short loc_ACFE les bx, [bp+arg_8] jmp short loc_AD0A ; --------------------------------------------------------------------------- loc_ACFE: mov bx, si add bx, bx mov es, word ptr off_14028+2 add bx, word ptr off_14028 loc_AD0A: mov al, es:[bx+1] cbw push ax cmp si, di jnz short loc_AD19 les bx, [bp+arg_8] jmp short loc_AD23 ; --------------------------------------------------------------------------- loc_AD19: mov ax, si add ax, ax les bx, off_14028 add bx, ax loc_AD23: mov al, es:[bx] cbw push ax ; arglist push ds push offset aCC_3 ; "%c%c" cmp si, di jnz short loc_AD35 mov ax, 3 jmp short loc_AD38 ; --------------------------------------------------------------------------- loc_AD35: mov ax, 7 loc_AD38: or ax, 20h push ax ; int mov ax, si shl ax, 4 add ax, 40h push ax ; int push 240h ; int call sub_E9E4 add sp, 0Eh cmp di, si jnz short loc_AD65 mov word_14030, 90h mov ax, si shl ax, 4 add ax, 40h mov word_14032, ax loc_AD65: inc si loc_AD66: cmp si, 0Ah jge short loc_AD6E jmp loc_AA71 ; --------------------------------------------------------------------------- loc_AD6E: pop di pop si leave retf sub_A9FF endp ; --------------------------------------------------------------------------- off_AD72 dw offset loc_AA82 dw offset loc_AA95 dw offset loc_AAA8 dw offset loc_AABA dw offset loc_AACC dw offset loc_AADE dw offset loc_AAF0 dw offset loc_AB02 dw offset loc_AB14 dw offset loc_AB26 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_AD86 proc far var_4 = word ptr -4 var_2 = word ptr -2 arg_0 = word ptr 6 arg_2 = word ptr 8 arg_4 = word ptr 0Ah enter 4, 0 push si push di mov si, [bp+arg_0] mov di, [bp+arg_2] mov [bp+var_2], 0 push 10h push 20h ; ' ' push di push si call _egc_copy_rect_1_to_0 add sp, 8 cmp [bp+arg_4], 0 jnz short loc_ADB0 mov ax, 7 jmp short loc_ADB3 ; --------------------------------------------------------------------------- loc_ADB0: mov ax, 803h loc_ADB3: or ax, 20h mov [bp+var_4], ax cmp di, 0F0h jnz short loc_ADD1 lea ax, [si-20h] mov bx, 20h ; ' ' cwd idiv bx add ax, 8281h mov [bp+var_2], ax jmp loc_AECD ; --------------------------------------------------------------------------- loc_ADD1: cmp di, 108h jnz short loc_ADE9 lea ax, [si-20h] mov bx, 20h ; ' ' cwd idiv bx add ax, 8293h mov [bp+var_2], ax jmp loc_AECD ; --------------------------------------------------------------------------- loc_ADE9: cmp di, 120h jnz short loc_AE01 lea ax, [si-20h] mov bx, 20h ; ' ' cwd idiv bx add ax, 8260h mov [bp+var_2], ax jmp loc_AECD ; --------------------------------------------------------------------------- loc_AE01: cmp di, 138h jnz short loc_AE19 lea ax, [si-20h] mov bx, 20h ; ' ' cwd idiv bx add ax, 8272h mov [bp+var_2], ax jmp loc_AECD ; --------------------------------------------------------------------------- loc_AE19: cmp di, 150h jnz short loc_AE36 lea ax, [si-20h] mov bx, 20h ; ' ' cwd idiv bx add ax, ax mov bx, ax mov ax, [bx+108h] mov [bp+var_2], ax jmp loc_AECD ; --------------------------------------------------------------------------- loc_AE36: cmp di, 168h jnz short loc_AE53 cmp si, 160h jge short loc_AE53 lea ax, [si-20h] mov bx, 20h ; ' ' cwd idiv bx add ax, 824Fh mov [bp+var_2], ax jmp short loc_AECD ; --------------------------------------------------------------------------- loc_AE53: cmp di, 168h jnz short loc_AE72 cmp si, 160h jnz short loc_AE72 push ds push offset aSp_0 ; "SP" push [bp+var_4] ; int push di ; int push si ; int call sub_E9E4 add sp, 0Ah jmp short loc_AECD ; --------------------------------------------------------------------------- loc_AE72: cmp di, 168h jnz short loc_AE91 cmp si, 200h jnz short loc_AE91 push ds push offset aBi_1 ; "←" push [bp+var_4] ; int push di ; int push si ; int call sub_E9E4 add sp, 0Ah jmp short loc_AECD ; --------------------------------------------------------------------------- loc_AE91: cmp di, 168h jnz short loc_AEB0 cmp si, 220h jnz short loc_AEB0 push ds push offset aBi_2 ; "→" push [bp+var_4] ; int push di ; int push si ; int call sub_E9E4 add sp, 0Ah jmp short loc_AECD ; --------------------------------------------------------------------------- loc_AEB0: cmp di, 168h jnz short loc_AECD cmp si, 240h jnz short loc_AECD push ds push offset aPi_0 ; "終" push [bp+var_4] ; int push di ; int push si ; int call sub_E9E4 add sp, 0Ah loc_AECD: cmp [bp+var_2], 0 jz short loc_AEF2 mov ax, [bp+var_2] and ax, 0FFh push ax mov ax, [bp+var_2] sar ax, 8 push ax ; arglist push ds push offset aCC_4 ; "%c%c" push [bp+var_4] ; int push di ; int push si ; int call sub_E9E4 add sp, 0Eh loc_AEF2: pop di pop si leave retf sub_AD86 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl __far sub_AEF6(int, int, char arglist, int, __int32) sub_AEF6 proc far var_14 = byte ptr -14h var_13 = byte ptr -13h var_2 = word ptr -2 arg_0 = word ptr 6 arg_2 = word ptr 8 _arglist = byte ptr 0Ah arg_8 = dword ptr 0Eh enter 14h, 0 push si push di mov si, [bp+arg_0] mov di, [bp+arg_2] mov [bp+var_2], 0 lea ax, [bp+var_14] push ss push ax push ds push offset aB@b@b@b@b@b@b@ ; "        " mov cx, 11h call SCOPY@ cmp di, 0F0h jnz short loc_AF30 lea ax, [si-20h] mov bx, 20h ; ' ' cwd idiv bx add ax, 8281h mov [bp+var_2], ax jmp loc_B021 ; --------------------------------------------------------------------------- loc_AF30: cmp di, 108h jnz short loc_AF48 lea ax, [si-20h] mov bx, 20h ; ' ' cwd idiv bx add ax, 8293h mov [bp+var_2], ax jmp loc_B021 ; --------------------------------------------------------------------------- loc_AF48: cmp di, 120h jnz short loc_AF60 lea ax, [si-20h] mov bx, 20h ; ' ' cwd idiv bx add ax, 8260h mov [bp+var_2], ax jmp loc_B021 ; --------------------------------------------------------------------------- loc_AF60: cmp di, 138h jnz short loc_AF78 lea ax, [si-20h] mov bx, 20h ; ' ' cwd idiv bx add ax, 8272h mov [bp+var_2], ax jmp loc_B021 ; --------------------------------------------------------------------------- loc_AF78: cmp di, 150h jnz short loc_AF95 lea ax, [si-20h] mov bx, 20h ; ' ' cwd idiv bx add ax, ax mov bx, ax mov ax, [bx+108h] mov [bp+var_2], ax jmp loc_B021 ; --------------------------------------------------------------------------- loc_AF95: cmp di, 168h jnz short loc_AFB2 cmp si, 160h jge short loc_AFB2 lea ax, [si-20h] mov bx, 20h ; ' ' cwd idiv bx add ax, 824Fh mov [bp+var_2], ax jmp short loc_B021 ; --------------------------------------------------------------------------- loc_AFB2: cmp di, 168h jnz short loc_AFC5 cmp si, 160h jnz short loc_AFC5 mov [bp+var_2], 8140h jmp short loc_B021 ; --------------------------------------------------------------------------- loc_AFC5: cmp di, 168h jnz short loc_AFEA cmp si, 200h jnz short loc_AFEA les bx, [bp+arg_8] dec word ptr es:[bx] les bx, [bp+arg_8] cmp word ptr es:[bx], 0 jge short loc_AFE8 les bx, [bp+arg_8] mov word ptr es:[bx], 0 loc_AFE8: jmp short loc_B021 ; --------------------------------------------------------------------------- loc_AFEA: cmp di, 168h jnz short loc_B00F cmp si, 220h jnz short loc_B00F les bx, [bp+arg_8] inc word ptr es:[bx] les bx, [bp+arg_8] cmp word ptr es:[bx], 7 jle short loc_B00D les bx, [bp+arg_8] mov word ptr es:[bx], 7 loc_B00D: jmp short loc_B021 ; --------------------------------------------------------------------------- loc_B00F: cmp di, 168h jnz short loc_B021 cmp si, 240h jnz short loc_B021 mov ax, 1 jmp loc_B0D5 ; --------------------------------------------------------------------------- loc_B021: cmp [bp+var_2], 0 jz short loc_B063 mov ax, [bp+var_2] sar ax, 8 les bx, [bp+arg_8] mov dx, es:[bx] add dx, dx les bx, dword ptr [bp+_arglist] add bx, dx mov es:[bx], al les bx, [bp+arg_8] mov bx, es:[bx] add bx, bx mov es, word ptr [bp+0Ch] add bx, word ptr [bp+_arglist] mov al, byte ptr [bp+var_2] and al, 0FFh mov es:[bx+1], al les bx, [bp+arg_8] cmp word ptr es:[bx], 7 jge short loc_B063 les bx, [bp+arg_8] inc word ptr es:[bx] loc_B063: push 10h push 80h push word_14032 push word_14030 call _egc_copy_rect_1_to_0 add sp, 8 push word ptr [bp+0Ch] push word ptr [bp+_arglist] ; arglist push ds push offset aS ; "%s" push 23h ; '#' ; int push word_14032 ; int push word_14030 ; int call sub_E9E4 add sp, 0Eh les bx, [bp+arg_8] mov bx, es:[bx] add bx, bx lea ax, [bp+var_14] add bx, ax mov byte ptr ss:[bx], 81h les bx, [bp+arg_8] mov bx, es:[bx] add bx, bx lea ax, [bp+var_13] add bx, ax mov byte ptr ss:[bx], 51h ; 'Q' push ss lea ax, [bp+var_14] push ax ; arglist push ds push offset aS_0 ; "%s" push 3 ; int push word_14032 ; int push word_14030 ; int call sub_E9E4 add sp, 0Eh xor ax, ax jmp short $+2 loc_B0D5: pop di pop si leave retf sub_AEF6 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl __far sub_B0D9(__int32, __int32, char arglist, int, __int32) sub_B0D9 proc far arg_0 = dword ptr 6 arg_4 = dword ptr 0Ah _arglist = byte ptr 0Eh arg_A = word ptr 10h arg_C = dword ptr 12h push bp mov bp, sp cmp byte_12BA2, 1 jz short loc_B0E6 jmp loc_B18F ; --------------------------------------------------------------------------- loc_B0E6: push 0 les bx, [bp+arg_4] push word ptr es:[bx] les bx, [bp+arg_0] push word ptr es:[bx] call sub_AD86 add sp, 6 les bx, [bp+arg_4] sub word ptr es:[bx], 18h les bx, [bp+arg_4] cmp word ptr es:[bx], 0F0h jge short loc_B114 les bx, [bp+arg_4] mov word ptr es:[bx], 168h loc_B114: les bx, [bp+arg_4] cmp word ptr es:[bx], 108h jnz short loc_B130 les bx, [bp+arg_0] cmp word ptr es:[bx], 120h jl short loc_B130 les bx, [bp+arg_4] mov word ptr es:[bx], 0F0h loc_B130: les bx, [bp+arg_4] cmp word ptr es:[bx], 138h jnz short loc_B14C les bx, [bp+arg_0] cmp word ptr es:[bx], 120h jl short loc_B14C les bx, [bp+arg_4] mov word ptr es:[bx], 120h loc_B14C: les bx, [bp+arg_4] cmp word ptr es:[bx], 168h jnz short loc_B172 les bx, [bp+arg_0] cmp word ptr es:[bx], 160h jle short loc_B172 les bx, [bp+arg_0] cmp word ptr es:[bx], 200h jge short loc_B172 les bx, [bp+arg_4] mov word ptr es:[bx], 150h loc_B172: push 1 les bx, [bp+arg_4] push word ptr es:[bx] les bx, [bp+arg_0] push word ptr es:[bx] call sub_AD86 add sp, 6 mov byte_12BA2, 0 jmp loc_B408 ; --------------------------------------------------------------------------- loc_B18F: cmp byte_12BA3, 1 jz short loc_B199 jmp loc_B242 ; --------------------------------------------------------------------------- loc_B199: push 0 les bx, [bp+arg_4] push word ptr es:[bx] les bx, [bp+arg_0] push word ptr es:[bx] call sub_AD86 add sp, 6 les bx, [bp+arg_4] add word ptr es:[bx], 18h les bx, [bp+arg_4] cmp word ptr es:[bx], 168h jle short loc_B1C7 les bx, [bp+arg_4] mov word ptr es:[bx], 0F0h loc_B1C7: les bx, [bp+arg_4] cmp word ptr es:[bx], 108h jnz short loc_B1E3 les bx, [bp+arg_0] cmp word ptr es:[bx], 120h jl short loc_B1E3 les bx, [bp+arg_4] mov word ptr es:[bx], 120h loc_B1E3: les bx, [bp+arg_4] cmp word ptr es:[bx], 138h jnz short loc_B1FF les bx, [bp+arg_0] cmp word ptr es:[bx], 120h jl short loc_B1FF les bx, [bp+arg_4] mov word ptr es:[bx], 150h loc_B1FF: les bx, [bp+arg_4] cmp word ptr es:[bx], 168h jnz short loc_B225 les bx, [bp+arg_0] cmp word ptr es:[bx], 160h jle short loc_B225 les bx, [bp+arg_0] cmp word ptr es:[bx], 200h jge short loc_B225 les bx, [bp+arg_4] mov word ptr es:[bx], 0F0h loc_B225: push 1 les bx, [bp+arg_4] push word ptr es:[bx] les bx, [bp+arg_0] push word ptr es:[bx] call sub_AD86 add sp, 6 mov byte_12BA3, 0 jmp loc_B408 ; --------------------------------------------------------------------------- loc_B242: cmp byte_12B99, 2 jz short loc_B24C jmp loc_B2F4 ; --------------------------------------------------------------------------- loc_B24C: push 0 les bx, [bp+arg_4] push word ptr es:[bx] les bx, [bp+arg_0] push word ptr es:[bx] call sub_AD86 add sp, 6 les bx, [bp+arg_0] sub word ptr es:[bx], 20h ; ' ' les bx, [bp+arg_0] cmp word ptr es:[bx], 20h ; ' ' jge short loc_B279 les bx, [bp+arg_0] mov word ptr es:[bx], 240h loc_B279: les bx, [bp+arg_4] cmp word ptr es:[bx], 108h jnz short loc_B295 les bx, [bp+arg_0] cmp word ptr es:[bx], 120h jl short loc_B295 les bx, [bp+arg_0] mov word ptr es:[bx], 100h loc_B295: les bx, [bp+arg_4] cmp word ptr es:[bx], 138h jnz short loc_B2B1 les bx, [bp+arg_0] cmp word ptr es:[bx], 120h jl short loc_B2B1 les bx, [bp+arg_0] mov word ptr es:[bx], 100h loc_B2B1: les bx, [bp+arg_4] cmp word ptr es:[bx], 168h jnz short loc_B2D7 les bx, [bp+arg_0] cmp word ptr es:[bx], 160h jle short loc_B2D7 les bx, [bp+arg_0] cmp word ptr es:[bx], 200h jge short loc_B2D7 les bx, [bp+arg_0] mov word ptr es:[bx], 160h loc_B2D7: push 1 les bx, [bp+arg_4] push word ptr es:[bx] les bx, [bp+arg_0] push word ptr es:[bx] call sub_AD86 add sp, 6 mov byte_12B99, 0 jmp loc_B408 ; --------------------------------------------------------------------------- loc_B2F4: cmp byte_12B99, 1 jz short loc_B2FE jmp loc_B3A6 ; --------------------------------------------------------------------------- loc_B2FE: push 0 les bx, [bp+arg_4] push word ptr es:[bx] les bx, [bp+arg_0] push word ptr es:[bx] call sub_AD86 add sp, 6 les bx, [bp+arg_0] add word ptr es:[bx], 20h ; ' ' les bx, [bp+arg_0] cmp word ptr es:[bx], 240h jle short loc_B32C les bx, [bp+arg_0] mov word ptr es:[bx], 20h ; ' ' loc_B32C: les bx, [bp+arg_4] cmp word ptr es:[bx], 108h jnz short loc_B348 les bx, [bp+arg_0] cmp word ptr es:[bx], 120h jl short loc_B348 les bx, [bp+arg_0] mov word ptr es:[bx], 20h ; ' ' loc_B348: les bx, [bp+arg_4] cmp word ptr es:[bx], 138h jnz short loc_B364 les bx, [bp+arg_0] cmp word ptr es:[bx], 120h jl short loc_B364 les bx, [bp+arg_0] mov word ptr es:[bx], 20h ; ' ' loc_B364: les bx, [bp+arg_4] cmp word ptr es:[bx], 168h jnz short loc_B38A les bx, [bp+arg_0] cmp word ptr es:[bx], 160h jle short loc_B38A les bx, [bp+arg_0] cmp word ptr es:[bx], 200h jge short loc_B38A les bx, [bp+arg_0] mov word ptr es:[bx], 200h loc_B38A: push 1 les bx, [bp+arg_4] push word ptr es:[bx] les bx, [bp+arg_0] push word ptr es:[bx] call sub_AD86 add sp, 6 mov byte_12B99, 0 jmp short loc_B408 ; --------------------------------------------------------------------------- loc_B3A6: cmp byte_12B9C, 1 jnz short loc_B3DC push word ptr [bp+arg_C+2] push word ptr [bp+arg_C] ; __int32 push [bp+arg_A] ; int push word ptr [bp+_arglist] ; arglist les bx, [bp+arg_4] push word ptr es:[bx] ; int les bx, [bp+arg_0] push word ptr es:[bx] ; int call sub_AEF6 add sp, 0Ch or ax, ax jz short loc_B3D5 mov ax, 1 pop bp retf ; --------------------------------------------------------------------------- loc_B3D5: mov byte_12B9C, 0 jmp short loc_B408 ; --------------------------------------------------------------------------- loc_B3DC: cmp byte_12BA1, 1 jnz short loc_B403 push word ptr [bp+arg_C+2] push word ptr [bp+arg_C] ; __int32 push [bp+arg_A] ; int push word ptr [bp+_arglist] ; arglist push 168h ; int push 200h ; int call sub_AEF6 add sp, 0Ch mov byte_12BA1, 0 jmp short loc_B408 ; --------------------------------------------------------------------------- loc_B403: mov ax, 2 pop bp retf ; --------------------------------------------------------------------------- loc_B408: xor ax, ax pop bp retf sub_B0D9 endp ; --------------------------------------------------------------------------- pop bp retf ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_B40E proc far dest = byte ptr -1Ch var_C = byte ptr -0Ch stream = dword ptr -4 enter 1Ch, 0 push si lea ax, [bp+var_C] push ss push ax push ds push offset aHiscore_0 ; "HISCORE" mov cx, 8 call SCOPY@ mov al, byte_14022 mov ah, 0 mov bx, ax cmp bx, 3 ja short loc_B45C add bx, bx jmp cs:off_B533[bx] loc_B437: push ds push offset aReyhies_dat_1 ; "REYHIES.DAT" jmp short loc_B44D ; --------------------------------------------------------------------------- loc_B43D: push ds push offset aReyhino_dat_1 ; "REYHINO.DAT" jmp short loc_B44D ; --------------------------------------------------------------------------- loc_B443: push ds push offset aReyhiha_dat_1 ; "REYHIHA.DAT" jmp short loc_B44D ; --------------------------------------------------------------------------- loc_B449: push ds push offset aReyhilu_dat_1 ; "REYHILU.DAT" loc_B44D: push ss lea ax, [bp+dest] push ax ; dest call _strcpy add sp, 8 jmp short $+2 loc_B45C: push ds push offset aWb_0 ; "wb" push ss lea ax, [bp+dest] push ax ; path call _fopen add sp, 8 mov word ptr [bp+stream+2], dx mov word ptr [bp+stream], ax or ax, dx jnz short loc_B47A jmp loc_B530 ; --------------------------------------------------------------------------- loc_B47A: push 7 push ss lea ax, [bp+var_C] push ax les bx, [bp+stream] mov al, es:[bx+4] cbw push ax call _write add sp, 8 xor si, si jmp short loc_B4AF ; --------------------------------------------------------------------------- loc_B496: les bx, font add bx, si mov al, es:[bx] push ax call sub_A488 pop cx les bx, font add bx, si mov es:[bx], al inc si loc_B4AF: cmp si, 0A0h jl short loc_B496 push 0A0h push word ptr font+2 push word ptr font les bx, [bp+stream] mov al, es:[bx+4] cbw push ax call _write add sp, 8 push 28h ; '(' push word ptr off_14034+2 push word ptr off_14034 les bx, [bp+stream] mov al, es:[bx+4] cbw push ax call _write add sp, 8 push 14h push word ptr off_1402C+2 push word ptr off_1402C les bx, [bp+stream] mov al, es:[bx+4] cbw push ax call _write add sp, 8 push 14h push word ptr off_14028+2 push word ptr off_14028 les bx, [bp+stream] mov al, es:[bx+4] cbw push ax call _write add sp, 8 push word ptr [bp+stream+2] push word ptr [bp+stream] ; stream call _fclose add sp, 4 loc_B530: pop si leave retf sub_B40E endp ; --------------------------------------------------------------------------- off_B533 dw offset loc_B437 dw offset loc_B43D dw offset loc_B443 dw offset loc_B449 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_B53B proc far _arglist = byte ptr -18h var_8 = byte ptr -8 var_6 = dword ptr -6 arg_0 = word ptr 6 enter 18h, 0 push si push di mov word ptr [bp+var_6], 0 mov word ptr [bp-2], 20h ; ' ' mov word ptr [bp+var_6+2], 0F0h xor si, si jmp short loc_B559 ; --------------------------------------------------------------------------- loc_B554: mov [bp+si+_arglist], 20h ; ' ' inc si loc_B559: cmp si, 10h jl short loc_B554 mov [bp+var_8], 0 call sub_A44F loc_B566: push 0 call sub_A265 pop cx push ss lea ax, [bp+var_6] push ax ; __int32 push ss ; int lea ax, [bp+_arglist] push ax ; arglist push ss lea ax, [bp+var_6+2] push ax ; __int32 push ss lea ax, [bp-2] push ax ; __int32 call sub_B0D9 add sp, 10h mov di, ax cmp di, 1 jnz short loc_B591 jmp short loc_B5AB ; --------------------------------------------------------------------------- loc_B591: cmp byte_12BA0, 0 jz short loc_B59A jmp short loc_B5AB ; --------------------------------------------------------------------------- loc_B59A: cmp di, 2 jnz short loc_B5A1 jmp short loc_B5A9 ; --------------------------------------------------------------------------- loc_B5A1: push 4 call sub_C82D pop cx loc_B5A9: jmp short loc_B566 ; --------------------------------------------------------------------------- loc_B5AB: mov byte_12BA0, 0 xor si, si jmp short loc_B5CB ; --------------------------------------------------------------------------- loc_B5B4: mov al, [bp+si+_arglist] mov bx, [bp+arg_0] shl bx, 4 add bx, si mov es, word ptr font+2 add bx, word ptr font mov es:[bx], al inc si loc_B5CB: cmp si, 10h jl short loc_B5B4 call sub_B40E pop di pop si leave retf sub_B53B endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_B5D8 proc far var_D2 = byte ptr -0D2h var_D0 = byte ptr -0D0h var_C0 = byte ptr -0C0h var_C = word ptr -0Ch var_A = word ptr -0Ah var_8 = word ptr -8 var_6 = word ptr -6 var_4 = word ptr -4 var_2 = word ptr -2 arg_0 = word ptr 6 arg_2 = word ptr 8 arg_4 = word ptr 0Ah arg_6 = dword ptr 0Ch enter 0D0h, 0 push si push di mov di, [bp+arg_4] lea ax, [bp+var_D0] push ss push ax push ds push offset off_12C1E mov cx, 10h call SCOPY@ push 1 call _graph_accesspage_func pop cx mov al, byte_14022 mov ah, 0 shl ax, 2 lea dx, [bp+var_D0] add ax, dx mov bx, ax push word ptr ss:[bx+2] push word ptr ss:[bx] ; arglist push ds push offset aUmx ; "東方靈異伝 強者の記録 %s" push 227h ; int push 0 ; int push 0 ; int call sub_E9E4 add sp, 0Eh push 0 call _graph_accesspage_func pop cx cmp di, 1Eh jge short loc_B666 push 10h push 120h push 180h push 0 push 0 push 30h ; '0' call _graph_slow_2xscale_rect_1_to_0 add sp, 0Ch push 1 push 0 push 180h push 0 push 190h push 120h push 180h push 0 call sub_E56D add sp, 10h jmp short loc_B67B ; --------------------------------------------------------------------------- loc_B666: push 10h push 120h push 0 push 0 push 0 push 30h ; '0' call _graph_slow_2xscale_rect_1_to_0 add sp, 0Ch loc_B67B: call sub_A61C or ax, ax jz short loc_B686 jmp loc_B941 ; --------------------------------------------------------------------------- loc_B686: mov [bp+var_2], 0 mov [bp+var_4], 0 jmp short loc_B6B2 ; --------------------------------------------------------------------------- loc_B692: mov ax, [bp+var_4] imul ax, 12h lea dx, [bp+var_C0] add ax, dx push ss push ax push [bp+var_4] call sub_A7CF add sp, 6 add [bp+var_4], 1 adc [bp+var_2], 0 loc_B6B2: cmp [bp+var_2], 0 jl short loc_B692 jnz short loc_B6C0 cmp [bp+var_4], 0Ah jb short loc_B692 loc_B6C0: mov [bp+var_2], 0 mov [bp+var_4], 0 jmp short loc_B6F5 ; --------------------------------------------------------------------------- loc_B6CC: mov ax, [bp+var_4] shl ax, 2 les bx, off_14034 add bx, ax mov dx, es:[bx+2] mov ax, es:[bx] cmp dx, [bp+arg_2] jg short loc_B6ED jnz short loc_B6EB cmp ax, [bp+arg_0] ja short loc_B6ED loc_B6EB: jmp short loc_B703 ; --------------------------------------------------------------------------- loc_B6ED: add [bp+var_4], 1 adc [bp+var_2], 0 loc_B6F5: cmp [bp+var_2], 0 jl short loc_B6CC jnz short loc_B703 cmp [bp+var_4], 0Ah jb short loc_B6CC loc_B703: call sub_A44F cmp [bp+var_2], 0 jle short loc_B710 jmp loc_B8BD ; --------------------------------------------------------------------------- loc_B710: jl short loc_B71B cmp [bp+var_4], 0Ah jb short loc_B71B jmp loc_B8BD ; --------------------------------------------------------------------------- loc_B71B: mov [bp+var_6], 0 mov [bp+var_8], 9 jmp loc_B7D9 ; --------------------------------------------------------------------------- loc_B728: push ss mov ax, [bp+var_8] imul ax, 12h lea dx, [bp+var_D2] add ax, dx push ax ; src mov ax, [bp+var_8] imul ax, 12h lea dx, [bp+var_C0] add ax, dx push ss push ax ; dest call _strcpy add sp, 8 mov ax, [bp+var_8] dec ax shl ax, 2 les bx, off_14034 add bx, ax mov dx, es:[bx+2] mov ax, es:[bx] mov bx, [bp+var_8] shl bx, 2 les si, off_14034 add si, bx mov es:[si+2], dx mov es:[si], ax mov ax, [bp+var_8] dec ax add ax, ax les bx, off_1402C add bx, ax mov ax, es:[bx] mov dx, [bp+var_8] add dx, dx les bx, off_1402C add bx, dx mov es:[bx], ax mov bx, [bp+var_8] add bx, bx mov es, word ptr off_14028+2 add bx, word ptr off_14028 mov al, es:[bx-2] mov dx, [bp+var_8] add dx, dx les bx, off_14028 add bx, dx mov es:[bx], al mov bx, [bp+var_8] add bx, bx mov es, word ptr off_14028+2 add bx, word ptr off_14028 mov al, es:[bx-1] mov bx, [bp+var_8] add bx, bx mov es, word ptr off_14028+2 add bx, word ptr off_14028 mov es:[bx+1], al sub [bp+var_8], 1 sbb [bp+var_6], 0 loc_B7D9: mov dx, [bp+var_6] mov ax, [bp+var_8] cmp dx, [bp+var_2] jle short loc_B7E7 jmp loc_B728 ; --------------------------------------------------------------------------- loc_B7E7: jnz short loc_B7F1 cmp ax, [bp+var_4] jbe short loc_B7F1 jmp loc_B728 ; --------------------------------------------------------------------------- loc_B7F1: mov [bp+var_A], 0 mov [bp+var_C], 9Fh jmp short loc_B81E ; --------------------------------------------------------------------------- loc_B7FD: mov bx, [bp+var_C] mov es, word ptr font+2 add bx, word ptr font mov al, es:[bx-10h] les bx, font add bx, [bp+var_C] mov es:[bx], al sub [bp+var_C], 1 sbb [bp+var_A], 0 loc_B81E: mov dx, [bp+var_2] mov ax, [bp+var_4] mov cl, 4 call far ptr LXLSH@ add ax, 10h adc dx, 0 cmp dx, [bp+var_A] jl short loc_B7FD jg short loc_B83D cmp ax, [bp+var_C] jbe short loc_B7FD loc_B83D: push ss lea ax, [bp+var_C0] push ax push word ptr [bp+arg_6+2] push word ptr [bp+arg_6] push di push [bp+arg_2] push [bp+arg_0] push [bp+var_4] call sub_A9FF add sp, 10h call sub_A801 mov ax, [bp+var_4] shl ax, 2 les bx, off_14034 add bx, ax mov dx, [bp+arg_2] mov ax, [bp+arg_0] mov es:[bx+2], dx mov es:[bx], ax mov ax, [bp+var_4] add ax, ax les bx, off_1402C add bx, ax mov es:[bx], di mov ax, [bp+var_4] add ax, ax les bx, off_14028 add bx, ax push es les si, [bp+arg_6] mov al, es:[si] pop es mov es:[bx], al les bx, [bp+arg_6] mov al, es:[bx+1] mov bx, [bp+var_4] add bx, bx mov es, word ptr off_14028+2 add bx, word ptr off_14028 mov es:[bx+1], al push [bp+var_4] call sub_B53B pop cx jmp short loc_B8FC ; --------------------------------------------------------------------------- loc_B8BD: push ss lea ax, [bp+var_C0] push ax push word ptr [bp+arg_6+2] push word ptr [bp+arg_6] push di push [bp+arg_2] push [bp+arg_0] push 1Eh call sub_A9FF add sp, 10h mov byte_12BA0, 1 mov byte_12B9C, 1 loc_B8E3: push 0 call sub_A265 pop cx cmp byte_12BA0, 0 jz short loc_B8F8 cmp byte_12B9C, 0 jnz short loc_B8FA loc_B8F8: jmp short loc_B8FC ; --------------------------------------------------------------------------- loc_B8FA: jmp short loc_B8E3 ; --------------------------------------------------------------------------- loc_B8FC: mov ax, seg fuuin_08_TEXT mov es, ax assume es:fuuin_08_TEXT push word ptr font+2 push word ptr font ; font call @$bdla$qnv add sp, 4 push word ptr off_1402C+2 push word ptr off_1402C ; font call @$bdla$qnv add sp, 4 push word ptr off_14028+2 push word ptr off_14028 ; font call @$bdla$qnv add sp, 4 push word ptr off_14034+2 push word ptr off_14034 ; font call @$bdla$qnv add sp, 4 loc_B941: pop di pop si leave retf sub_B5D8 endp fuuin_02_TEXT ends ; =========================================================================== ; Segment type: Pure code fuuin_03_TEXT segment byte public 'CODE' use16 assume cs:fuuin_03_TEXT ;org 5 assume es:nothing, ss:nothing, ds:_DATA, fs:nothing, gs:nothing ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_B945 proc far push bp mov bp, sp push si push ds push offset aIris_mdt ; "iris.mdt" call _mdrv2_bgm_load add sp, 4 call _mdrv2_bgm_play push 0 call sub_C842 push ds push offset aEd1a_grp ; "ED1A.grp" call sub_C73A push 0 call sub_C78B pop cx push 6 call sub_C939 push 64h ; 'd' call sub_C82D pop cx push 5 call sub_C960 push 64h ; 'd' call sub_C82D pop cx push 1 call sub_C78B pop cx push 64h ; 'd' call sub_C842 push 0Dh call sub_C82D pop cx push 2 call sub_C78B pop cx push 0Dh call sub_C82D pop cx push 3 call sub_C78B pop cx push 32h ; '2' call sub_C82D pop cx push ds push offset aEd1b_grp ; "ED1B.grp" call sub_C73A push 0 call sub_C78B pop cx push 0Ah call sub_C82D pop cx push 1 call sub_C78B pop cx push 0Ah call sub_C82D pop cx push 2 call sub_C78B pop cx push 64h ; 'd' call sub_C82D pop cx push 6 call sub_C911 push 0 call _graph_accesspage_func pop cx call sub_D2D6 push 64h ; 'd' call sub_C842 push ds push offset aEd1c_grp ; "ED1C.GRP" call sub_C73A xor si, si jmp short loc_BA49 ; --------------------------------------------------------------------------- loc_BA28: push 0 call sub_C78B pop cx push 14h call sub_C82D pop cx push 1 call sub_C78B pop cx push 14h call sub_C82D pop cx inc si loc_BA49: cmp si, 6 jl short loc_BA28 push 0 call sub_C78B pop cx push 28h ; '(' call sub_C82D pop cx push 2 call sub_C78B pop cx push 28h ; '(' call sub_C82D pop cx push ds push offset aEd1d_grp ; "ED1D.GRP" call sub_C73A push 3 call sub_C78B pop cx push 46h ; 'F' call sub_C82D pop cx xor si, si jmp loc_BB16 ; --------------------------------------------------------------------------- loc_BA8C: or si, si jnz short loc_BA98 push 0 call sub_C78B pop cx loc_BA98: cmp si, 14h jnz short loc_BAA5 push 1 call sub_C78B pop cx loc_BAA5: cmp si, 18h jnz short loc_BAB2 push 2 call sub_C78B pop cx loc_BAB2: cmp si, 1Ch jnz short loc_BABF push 0 call sub_C78B pop cx loc_BABF: cmp si, 32h ; '2' jnz short loc_BACC push 1 call sub_C78B pop cx loc_BACC: cmp si, 36h ; '6' jnz short loc_BAD9 push 2 call sub_C78B pop cx loc_BAD9: cmp si, 3Ah ; ':' jnz short loc_BAE6 push 0 call sub_C78B pop cx loc_BAE6: cmp si, 5Ah ; 'Z' jnz short loc_BAF3 push 1 call sub_C78B pop cx loc_BAF3: cmp si, 5Eh ; '^' jnz short loc_BB00 push 2 call sub_C78B pop cx loc_BB00: cmp si, 62h ; 'b' jnz short loc_BB0D push 0 call sub_C78B pop cx loc_BB0D: push 2 call sub_C82D pop cx inc si loc_BB16: cmp si, 64h ; 'd' jge short loc_BB1E jmp loc_BA8C ; --------------------------------------------------------------------------- loc_BB1E: push 3 call sub_C78B pop cx push 3Ch ; '<' call sub_C82D pop cx push 0 call sub_C78B pop cx push 14h call sub_C82D pop cx push 3 call sub_C78B pop cx push 69h ; 'i' call sub_C842 push ds push offset aEd1e_grp ; "ED1E.GRP" call sub_C73A push 0 call sub_C78B pop cx xor si, si jmp short loc_BB79 ; --------------------------------------------------------------------------- loc_BB62: mov ax, si imul ax, 5 add ax, 6Eh ; 'n' push ax call sub_C842 push 10h call sub_C82D pop cx inc si loc_BB79: cmp si, 4 jl short loc_BB62 xor si, si jmp short loc_BBB1 ; --------------------------------------------------------------------------- loc_BB82: push 1 call sub_C78B pop cx push 8 call sub_C82D pop cx push 2 call sub_C78B pop cx push 8 call sub_C82D pop cx mov ax, si imul ax, 5 add ax, 82h push ax call sub_C842 inc si loc_BBB1: cmp si, 0Fh jl short loc_BB82 mov ax, word ptr _continues_total or ax, word ptr _continues_total+2 jnz short loc_BBC7 call sub_BDBD call sub_C03D jmp short loc_BBF1 ; --------------------------------------------------------------------------- loc_BBC7: call sub_BC7C call _mdrv2_bgm_fade_out_nonblock push 0Ah call sub_C911 call sub_D2D6 call _mdrv2_bgm_stop push ds push offset aSt1_mdt ; "st1.mdt" call _mdrv2_bgm_load add sp, 4 call _mdrv2_bgm_play loc_BBF1: nopcall sub_C446 pop si pop bp retf sub_B945 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_BBF9 proc near arg_0 = word ptr 4 arg_2 = word ptr 6 push bp mov bp, sp push si xor si, si jmp short loc_BC35 ; --------------------------------------------------------------------------- loc_BC01: test si, 3 jnz short loc_BC0B push 8 jmp short loc_BC0D ; --------------------------------------------------------------------------- loc_BC0B: push 0 loc_BC0D: call graph_scrollup push 1 call sub_C78B pop cx push 1 call sub_C82D pop cx test si, 1 jz short loc_BC2D push 0AAh ; 'ェ' jmp short loc_BC2F ; --------------------------------------------------------------------------- loc_BC2D: push 64h ; 'd' loc_BC2F: call sub_C842 inc si loc_BC35: cmp si, [bp+arg_2] jle short loc_BC01 xor si, si jmp short loc_BC72 ; --------------------------------------------------------------------------- loc_BC3E: test si, 3 jnz short loc_BC48 push 8 jmp short loc_BC4A ; --------------------------------------------------------------------------- loc_BC48: push 0 loc_BC4A: call graph_scrollup push 1 call sub_C78B pop cx push 2 call sub_C82D pop cx test si, 1 jz short loc_BC69 push 2 jmp short loc_BC6B ; --------------------------------------------------------------------------- loc_BC69: push 1 loc_BC6B: call sub_C78B pop cx inc si loc_BC72: cmp si, [bp+arg_0] jle short loc_BC3E pop si pop bp retn 4 sub_BBF9 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_BC7C proc near push bp mov bp, sp push si push ds push offset aEd2a_grp ; "ed2a.grp" call sub_C73A push 0C8h ; 'ネ' call sub_C842 push 0 call sub_C78B pop cx push 5 call sub_C988 push 78h ; 'x' call sub_C82D pop cx cmp byte_14021, 2 jnz short loc_BCFC push 40h push 10h call sub_BBF9 push 20h ; ' ' push 20h ; ' ' call sub_BBF9 push 0 call graph_scrollup push 32h ; '2' call sub_C82D pop cx push 3 call sub_C78B pop cx push 64h ; 'd' call sub_C82D pop cx push 0E8h push 13Ch push 16h push ds push offset aTryToNoContinu ; "Try to 'No continue'!!" call sub_C9B0 push 0E8h push 15Ch push 16h push ds push offset aBadEnding2 ; " Bad Ending2 " jmp loc_BDAC ; --------------------------------------------------------------------------- loc_BCFC: push ds push offset aEd4a_grp ; "ed4a.grp" call sub_C73A xor si, si jmp short loc_BD2A ; --------------------------------------------------------------------------- loc_BD09: push 0 call sub_C78B pop cx push 3 call sub_C82D pop cx push 1 call sub_C78B pop cx push 3 call sub_C82D pop cx inc si loc_BD2A: cmp si, 14h jl short loc_BD09 xor si, si jmp short loc_BD62 ; --------------------------------------------------------------------------- loc_BD33: push 0 call sub_C78B pop cx push 3 call sub_C82D pop cx push 1 call sub_C78B pop cx push 3 call sub_C82D pop cx mov ax, si imul ax, 5 add ax, 64h ; 'd' push ax call sub_C842 inc si loc_BD62: cmp si, 14h jl short loc_BD33 push 2 call sub_C78B pop cx push 5 call sub_C988 push 0C8h ; 'ネ' call sub_C82D pop cx push 3 call sub_C78B pop cx push 64h ; 'd' call sub_C82D pop cx push 0E8h push 13Ch push 16h push ds push offset aTryToNoConti_0 ; "Try to 'No continue'!!" call sub_C9B0 push 0E8h push 15Ch push 16h push ds push offset aBadEnding1 ; " Bad Ending1 " loc_BDAC: call sub_C9B0 push 12Ch call sub_C82D pop cx pop si pop bp retn sub_BC7C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_BDBD proc near push bp mov bp, sp push si push ds push offset aEd3a_grp ; "ed3a.grp" call sub_C73A push 0C8h ; 'ネ' call sub_C842 xor si, si jmp short loc_BE07 ; --------------------------------------------------------------------------- loc_BDD6: push 0 call sub_C78B pop cx push 8 call sub_C82D pop cx push 1 call sub_C78B pop cx push 8 call sub_C82D pop cx mov ax, si imul ax, 5 mov dx, 0C8h ; 'ネ' sub dx, ax push dx call sub_C842 inc si loc_BE07: cmp si, 14h jl short loc_BDD6 push 64h ; 'd' call sub_C842 xor si, si jmp short loc_BE38 ; --------------------------------------------------------------------------- loc_BE17: push 0 call sub_C78B pop cx push 8 call sub_C82D pop cx push 1 call sub_C78B pop cx push 8 call sub_C82D pop cx inc si loc_BE38: cmp si, 0Ah jl short loc_BE17 xor si, si jmp short loc_BE64 ; --------------------------------------------------------------------------- loc_BE41: mov ax, si and ax, 1 push ax call sub_C78B pop cx push 8 call sub_C82D pop cx mov ax, si imul ax, 0Ah add ax, 64h ; 'd' push ax call sub_C842 inc si loc_BE64: cmp si, 0Ah jl short loc_BE41 push 0C8h ; 'ネ' call sub_C842 cmp byte_14021, 1 jnz short loc_BE7D call sub_BF07 jmp short loc_BE80 ; --------------------------------------------------------------------------- loc_BE7D: call sub_BE83 loc_BE80: pop si pop bp retn sub_BDBD endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_BE83 proc near push bp mov bp, sp push ds push offset aEd3b_grp ; "ed3b.grp" call sub_C73A push 0 call sub_C78B pop cx push 4 call sub_C988 push 0FAh call sub_C82D pop cx push 1 call sub_C78B pop cx push 0C8h ; 'ネ' call sub_C82D pop cx push 2 call sub_C78B pop cx push 96h call sub_C82D pop cx push 3 call sub_C78B pop cx push 96h call sub_C82D pop cx push 100h push 13Ch push 10h push ds push offset aCongratulation ; "Congratulations!" call sub_C9B0 push 0E8h push 15Ch push 16h push ds push offset aGoodEnding2 ; " Good Ending2 " call sub_C9B0 push 12Ch call sub_C82D pop cx pop bp retn sub_BE83 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_BF07 proc near push bp mov bp, sp push si push ds push offset aEd5a_grp ; "ed5a.grp" call sub_C73A push 0 call sub_C78B pop cx push 4 call sub_C988 push 12Ch call sub_C82D pop cx xor si, si jmp short loc_BF51 ; --------------------------------------------------------------------------- loc_BF30: push 1 call sub_C78B pop cx push 8 call sub_C82D pop cx push 2 call sub_C78B pop cx push 8 call sub_C82D pop cx inc si loc_BF51: cmp si, 0Fh jl short loc_BF30 push ds push offset aEd5b_grp ; "ed5b.grp" call sub_C73A push 0 call sub_C78B pop cx push 96h call sub_C82D pop cx push 1 call sub_C78B pop cx push 64h ; 'd' call sub_C82D pop cx push 2 call sub_C78B pop cx push 64h ; 'd' call sub_C82D pop cx push 3 call sub_C78B pop cx push 64h ; 'd' call sub_C82D pop cx push ds push offset aEd5c_grp ; "ed5c.grp" call sub_C73A push 0 call sub_C78B pop cx push 64h ; 'd' call sub_C82D pop cx push 1 call sub_C78B pop cx push 96h call sub_C82D pop cx push 2 call sub_C78B pop cx push 96h call sub_C82D pop cx push 100h push 13Ch push 10h push ds push offset aCongratulati_0 ; "Congratulations!" call sub_C9B0 push 0E8h push 15Ch push 16h push ds push offset aGoodEnding1 ; " Good Ending1 " call sub_C9B0 push 12Ch call sub_C82D pop cx pop si pop bp retn sub_BF07 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_C009 proc near arg_0 = word ptr 4 push bp mov bp, sp push 96h call sub_C82D pop cx push 5 call sub_C911 call sub_D2D6 push [bp+arg_0] call sub_C78B pop cx push 5 call sub_C939 push 32h ; '2' call sub_C82D pop cx pop bp retn 2 sub_C009 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_C03D proc near push bp mov bp, sp call _mdrv2_bgm_fade_out_nonblock push 0Ah call sub_C911 call sub_D2D6 call _mdrv2_bgm_stop push ds push offset aSt1_mdt_0 ; "st1.mdt" call _mdrv2_bgm_load add sp, 4 call _mdrv2_bgm_play cmp byte_14021, 1 jnz short loc_C074 push ds push offset aEndb_a_grp ; "endb_a.grp" jmp short loc_C078 ; --------------------------------------------------------------------------- loc_C074: push ds push offset aEndb_b_grp ; "endb_b.grp" loc_C078: call sub_C73A push 0 call sub_C78B pop cx push 64h ; 'd' call sub_C842 push 32h ; '2' call sub_C82D pop cx push 110h push 13Ch push 0Dh push ds push offset aStage5Boss ; "STAGE 5 BOSS" call sub_C9B0 push 0E8h push 15Ch push 16h push ds push offset aGatekeeperSing ; "Gatekeeper 'SinGyoku'" call sub_C9B0 push 1 call sub_C009 cmp byte_14021, 1 jnz short loc_C0E1 push 110h push 13Ch push 0Dh push ds push offset aStage10Boss ; "STAGE 10 BOSS" call sub_C9B0 push 0E8h push 15Ch push 16h push ds push offset aEvileyesYuugen ; "EvilEyes 'YuugenMagan'" jmp short loc_C0FE ; --------------------------------------------------------------------------- loc_C0E1: push 110h push 13Ch push 0Dh push ds push offset aStage10Boss_0 ; "STAGE 10 BOSS" call sub_C9B0 push 0E8h push 15Ch push 17h push ds push offset aRevengefulGhos ; "Revengeful Ghost 'Mima'" loc_C0FE: call sub_C9B0 push 2 call sub_C009 cmp byte_14021, 1 jnz short loc_C12E push 110h push 13Ch push 0Dh push ds push offset aStage15Boss ; "STAGE 15 BOSS" call sub_C9B0 push 0E8h push 15Ch push 16h push ds push offset aInnocenceDevil ; "Innocence Devil 'Elis'" jmp short loc_C14B ; --------------------------------------------------------------------------- loc_C12E: push 110h push 13Ch push 0Dh push ds push offset aStage15Boss_0 ; "STAGE 15 BOSS" call sub_C9B0 push 100h push 15Ch push 11h push ds push offset aHellmoonKikuri ; "HellMoon 'Kikuri'" loc_C14B: call sub_C9B0 push 3 call sub_C009 cmp byte_14021, 1 jnz short loc_C17B push 110h push 13Ch push 0Dh push ds push offset aStage20Boss ; "STAGE 20 BOSS" call sub_C9B0 push 0E8h push 15Ch push 16h push ds push offset aAngelOfDeathSa ; "Angel of Death'Sariel'" jmp short loc_C198 ; --------------------------------------------------------------------------- loc_C17B: push 110h push 13Ch push 0Dh push ds push offset aStage20Boss_0 ; "STAGE 20 BOSS" call sub_C9B0 push 0E0h push 15Ch push 18h push ds push offset aAstralKnightKo ; "Astral Knight 'Konngara'" loc_C198: call sub_C9B0 push 96h call sub_C82D pop cx pop bp retn sub_C03D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_C1A8 proc far var_2 = word ptr -2 enter 2, 0 push si push di xor si, si cmp word ptr _score+2, 26h ; '&' jl short loc_C1C6 jnz short loc_C1C1 cmp word ptr _score, 25A0h jb short loc_C1C6 loc_C1C1: add si, 0Ah jmp short loc_C21C ; --------------------------------------------------------------------------- loc_C1C6: cmp word ptr _score+2, 1Eh jl short loc_C1DC jnz short loc_C1D7 cmp word ptr _score, 8480h jb short loc_C1DC loc_C1D7: add si, 8 jmp short loc_C21C ; --------------------------------------------------------------------------- loc_C1DC: cmp word ptr _score+2, 16h jl short loc_C1F2 jnz short loc_C1ED cmp word ptr _score, 0E360h jb short loc_C1F2 loc_C1ED: add si, 6 jmp short loc_C21C ; --------------------------------------------------------------------------- loc_C1F2: cmp word ptr _score+2, 0Fh jl short loc_C208 jnz short loc_C203 cmp word ptr _score, 4240h jb short loc_C208 loc_C203: add si, 4 jmp short loc_C21C ; --------------------------------------------------------------------------- loc_C208: cmp word ptr _score+2, 7 jl short loc_C21C jnz short loc_C219 cmp word ptr _score, 0A120h jb short loc_C21C loc_C219: add si, 2 loc_C21C: cmp word ptr _score_highest+2, 2Dh ; '-' jl short loc_C232 jnz short loc_C22D cmp word ptr _score_highest, 0C6C0h jb short loc_C232 loc_C22D: add si, 0Ah jmp short loc_C288 ; --------------------------------------------------------------------------- loc_C232: cmp word ptr _score_highest+2, 27h ; ''' jl short loc_C248 jnz short loc_C243 cmp word ptr _score_highest, 0AC40h jb short loc_C248 loc_C243: add si, 8 jmp short loc_C288 ; --------------------------------------------------------------------------- loc_C248: cmp word ptr _score_highest+2, 21h ; '!' jl short loc_C25E jnz short loc_C259 cmp word ptr _score_highest, 91C0h jb short loc_C25E loc_C259: add si, 6 jmp short loc_C288 ; --------------------------------------------------------------------------- loc_C25E: cmp word ptr _score_highest+2, 1Bh jl short loc_C274 jnz short loc_C26F cmp word ptr _score_highest, 7740h jb short loc_C274 loc_C26F: add si, 4 jmp short loc_C288 ; --------------------------------------------------------------------------- loc_C274: cmp word ptr _score_highest+2, 15h jl short loc_C288 jnz short loc_C285 cmp word ptr _score_highest, 5CC0h jb short loc_C288 loc_C285: add si, 2 loc_C288: mov ax, word ptr _continues_total or ax, word ptr _continues_total+2 jnz short loc_C297 add si, 1Eh jmp loc_C36C ; --------------------------------------------------------------------------- loc_C297: cmp word ptr _continues_total+2, 0 jg short loc_C2AD jnz short loc_C2A7 cmp word ptr _continues_total, 2 ja short loc_C2AD loc_C2A7: add si, 0Ah jmp loc_C36C ; --------------------------------------------------------------------------- loc_C2AD: cmp word ptr _continues_total+2, 0 jg short loc_C2C3 jnz short loc_C2BD cmp word ptr _continues_total, 4 ja short loc_C2C3 loc_C2BD: add si, 8 jmp loc_C36C ; --------------------------------------------------------------------------- loc_C2C3: cmp word ptr _continues_total+2, 0 jg short loc_C2D9 jnz short loc_C2D3 cmp word ptr _continues_total, 6 ja short loc_C2D9 loc_C2D3: add si, 6 jmp loc_C36C ; --------------------------------------------------------------------------- loc_C2D9: cmp word ptr _continues_total+2, 0 jg short loc_C2EE jnz short loc_C2E9 cmp word ptr _continues_total, 8 ja short loc_C2EE loc_C2E9: add si, 4 jmp short loc_C36C ; --------------------------------------------------------------------------- loc_C2EE: cmp word ptr _continues_total+2, 0 jg short loc_C303 jnz short loc_C2FE cmp word ptr _continues_total, 0Ah ja short loc_C303 loc_C2FE: add si, 2 jmp short loc_C36C ; --------------------------------------------------------------------------- loc_C303: cmp word ptr _continues_total+2, 0 jg short loc_C315 jnz short loc_C313 cmp word ptr _continues_total, 0Ch ja short loc_C315 loc_C313: jmp short loc_C36C ; --------------------------------------------------------------------------- loc_C315: cmp word ptr _continues_total+2, 0 jg short loc_C32A jnz short loc_C325 cmp word ptr _continues_total, 0Eh ja short loc_C32A loc_C325: sub si, 2 jmp short loc_C36C ; --------------------------------------------------------------------------- loc_C32A: cmp word ptr _continues_total+2, 0 jg short loc_C33F jnz short loc_C33A cmp word ptr _continues_total, 10h ja short loc_C33F loc_C33A: sub si, 4 jmp short loc_C36C ; --------------------------------------------------------------------------- loc_C33F: cmp word ptr _continues_total+2, 0 jg short loc_C354 jnz short loc_C34F cmp word ptr _continues_total, 12h ja short loc_C354 loc_C34F: sub si, 6 jmp short loc_C36C ; --------------------------------------------------------------------------- loc_C354: cmp word ptr _continues_total+2, 0 jg short loc_C369 jnz short loc_C364 cmp word ptr _continues_total, 14h ja short loc_C369 loc_C364: sub si, 8 jmp short loc_C36C ; --------------------------------------------------------------------------- loc_C369: sub si, 0Ah loc_C36C: cmp byte_14022, 3 jnz short loc_C378 add si, 32h ; '2' jmp short loc_C39A ; --------------------------------------------------------------------------- loc_C378: cmp byte_14022, 2 jnz short loc_C384 add si, 1Eh jmp short loc_C39A ; --------------------------------------------------------------------------- loc_C384: cmp byte_14022, 1 jnz short loc_C390 add si, 0Ah jmp short loc_C39A ; --------------------------------------------------------------------------- loc_C390: cmp byte_14022, 0 jnz short loc_C39A sub si, 0Ah loc_C39A: cmp byte_14021, 2 jnz short loc_C3A4 add si, 5 loc_C3A4: mov al, byte_14020 cbw cmp ax, 4 jnz short loc_C3B2 sub si, 0Ah jmp short loc_C3D8 ; --------------------------------------------------------------------------- loc_C3B2: mov al, byte_14020 cbw cmp ax, 3 jnz short loc_C3C0 sub si, 5 jmp short loc_C3D8 ; --------------------------------------------------------------------------- loc_C3C0: mov al, byte_14020 cbw cmp ax, 1 jnz short loc_C3CE add si, 5 jmp short loc_C3D8 ; --------------------------------------------------------------------------- loc_C3CE: cmp byte_14020, 0 jnz short loc_C3D8 add si, 0Ah loc_C3D8: call IRand mov bx, 3 cwd idiv bx mov [bp+var_2], dx cmp si, 50h ; 'P' jl short loc_C3F0 mov di, 5 jmp short loc_C419 ; --------------------------------------------------------------------------- loc_C3F0: cmp si, 3Ch ; '<' jl short loc_C3FA mov di, 4 jmp short loc_C419 ; --------------------------------------------------------------------------- loc_C3FA: cmp si, 28h ; '(' jl short loc_C404 mov di, 3 jmp short loc_C419 ; --------------------------------------------------------------------------- loc_C404: cmp si, 14h jl short loc_C40E mov di, 2 jmp short loc_C419 ; --------------------------------------------------------------------------- loc_C40E: or si, si jl short loc_C417 mov di, 1 jmp short loc_C419 ; --------------------------------------------------------------------------- loc_C417: xor di, di loc_C419: mov bx, [bp+var_2] imul bx, 18h mov ax, di shl ax, 2 add bx, ax push word ptr [bx+3DAh] push word ptr [bx+3D8h] ; arglist push ds push offset aS_1 ; "%s" push 12h ; int push 180h ; int push 1E8h ; int call sub_E9E4 add sp, 0Eh pop di pop si leave retf sub_C1A8 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_C446 proc far var_10 = byte ptr -10h enter 10h, 0 push si lea ax, [bp+var_10] push ss push ax push ds push offset off_12EC0 mov cx, 10h call SCOPY@ push 0Ah call sub_C911 push 1 call _graph_accesspage_func pop cx push ds push offset aEndm_a_grp ; "endm_a.grp" call sub_EB39 add sp, 4 call sub_D349 push 0 call _graph_accesspage_func pop cx push 8 call sub_C939 push 190h push 20h ; ' ' push 5 push ds push offset aUmx_1 ; "東方靈異伝" call sub_C9EE push 1F0h push 20h ; ' ' push 3 push ds push offset aVer ; "ver" call sub_C9B0 push 210h push 20h ; ' ' push 4 push ds push offset a1_10 ; "1.10" call sub_C9B0 push 1Eh call sub_C82D pop cx mov al, byte_14022 mov ah, 0 shl ax, 2 lea dx, [bp+var_10] add ax, dx mov bx, ax push word ptr ss:[bx+2] push word ptr ss:[bx] ; arglist push ds push offset aUqiUxb@b@b@b@b ; "難易度           %s" push 0Fh ; int push 40h ; int push 128h ; int call sub_E9E4 add sp, 0Eh push 1Eh call sub_C82D pop cx push word ptr _score_highest+2 push word ptr _score_highest ; arglist push ds push offset aNbi ; "今回の最高得点       %7lu" push 0Fh ; int push 60h ; int push 128h ; int call sub_E9E4 add sp, 0Eh push 1Eh call sub_C82D pop cx push word ptr _score+2 push word ptr _score ; arglist push ds push offset aNPiuU_b@b@b@b@ ; "最終得点          %7lu" push 0Fh ; int push 80h ; int push 128h ; int call sub_E9E4 add sp, 0Eh push 1Eh call sub_C82D pop cx push ds push offset aGrgugegbgjgebI ; "コンティニュー回数" push 0Fh ; int push 0A0h ; int push 128h ; int call sub_E9E4 add sp, 0Ah push 1Eh call sub_C82D pop cx push word_13EDE push word_13EDC ; arglist push ds push offset aB@r_oB@b@b@b@b ; " 神社    (1面〜5面)   %3lu" push 0Fh ; int push 0C0h ;int push 128h ; int call sub_E9E4 add sp, 0Eh push 1Eh call sub_C82D pop cx cmp byte_14021, 1 jnz short loc_C590 push word_13EE2 push word_13EE0 push ds push offset aB@gqbGgb@b@b@b ; " ゲート   (6面〜10面) %3lu" jmp short loc_C59C ; --------------------------------------------------------------------------- loc_C590: push word_13EE2 push word_13EE0 ; arglist push ds push offset aB@tkb@b@b@b@b@ ; " 祠     (6面〜10面) %3lu" loc_C59C: push 0Fh ; int push 0E0h ; int push 128h ; int call sub_E9E4 add sp, 0Eh push 1Eh call sub_C82D pop cx cmp byte_14021, 1 jnz short loc_C5C9 push word_13EE6 push word_13EE4 push ds push offset aGfgbgivFpBivpv ; " ヴィナの廃墟(11面〜15面)%3lu" jmp short loc_C5D5 ; --------------------------------------------------------------------------- loc_C5C9: push word_13EE6 push word_13EE4 ; arglist push ds push offset aB@ikvXekeb@b@b ; " 炎の腐界  (11面〜15面)%3lu" loc_C5D5: push 0Fh ; int push 100h ; int push 128h ; int call sub_E9E4 add sp, 0Eh push 1Eh call sub_C82D pop cx cmp byte_14021, 1 jnz short loc_C602 push word_13EEA push word_13EE8 push ds push offset aSVVVsr_uabivpv ; " 堕ちたる神殿(15面〜20面)%3lu" jmp short loc_C60E ; --------------------------------------------------------------------------- loc_C602: push word_13EEA push word_13EE8 ; arglist push ds push offset aB@rVivVsr_uabi ; " 静かなる神殿(15面〜20面)%3lu" loc_C60E: push 0Fh ; int push 120h ; int push 128h ; int call sub_E9E4 add sp, 0Eh push 1Eh call sub_C82D pop cx cmp byte_14021, 1 jnz short loc_C63B push word ptr _continues_total+2 push word ptr _continues_total push ds push offset aCvkeglbGgsnnzb ; " 魔界ルート総合       %5lu" jmp short loc_C647 ; --------------------------------------------------------------------------- loc_C63B: push word ptr _continues_total+2 push word ptr _continues_total ; arglist push ds push offset aB@tnncglbGgsnn ; " 地獄ルート総合       %5lu" loc_C647: push 0Fh ; int push 140h ; int push 128h ; int call sub_E9E4 add sp, 0Eh push 1Eh call sub_C82D pop cx push 128h push 160h push 1Dh push ds push offset aThankYouForPla ; " Thank you for Playing !! " call sub_C9B0 push ds push offset aBBBVavVVPNjbBB ; "★★★あなたの称号★★★" push 12h ; int push 180h ; int push 108h ; int call sub_E9E4 add sp, 0Ah push 32h ; '2' call sub_C82D pop cx call sub_C1A8 xor si, si push 64h ; 'd' call sub_C82D pop cx call sub_A44F jmp short loc_C6B1 ; --------------------------------------------------------------------------- loc_C6A1: push 0 call sub_A265 pop cx push 1 call sub_C82D pop cx loc_C6B1: mov ax, si inc si cmp ax, 7D0h jge short loc_C6C7 cmp byte_12BA0, 0 jnz short loc_C6C7 cmp byte_12B9C, 0 jz short loc_C6A1 loc_C6C7: push 1 call _graph_accesspage_func pop cx call sub_D349 push 0 call _graph_accesspage_func pop cx push 32h ; '2' call sub_C842 mov byte_134C3, 7 mov byte_134C4, 0Fh mov byte_134C5, 7 mov byte_134CF, 0Fh mov byte_134D0, 0Fh mov byte_134D1, 0Fh push ds push offset unk_134BA call sub_D1D9 add sp, 4 cmp byte_14021, 1 jnz short loc_C71C push ds push offset aKo ; "完" push 32h ; '2' jmp short loc_C722 ; --------------------------------------------------------------------------- loc_C71C: push ds push offset aKo_0 ; "完" push 3Ch ; '<' loc_C722: push word ptr _score+2 push word ptr _score call sub_B5D8 add sp, 0Ah call sub_A076 pop si leave retf sub_C446 endp fuuin_03_TEXT ends ; =========================================================================== ; Segment type: Pure code fuuin_04_TEXT segment byte public 'CODE' use16 assume cs:fuuin_04_TEXT ;org 0Ah assume es:nothing, ss:nothing, ds:_DATA, fs:nothing, gs:nothing ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_C73A proc far arg_0 = word ptr 6 arg_2 = word ptr 8 push bp mov bp, sp push 1 call _graph_accesspage_func pop cx push [bp+arg_2] push [bp+arg_0] call sub_EB39 add sp, 4 pop bp retf 4 sub_C73A endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_C757 proc far push bp mov bp, sp call egc_on mov ax, 0FFF0h mov dx, 4A0h out dx, ax mov ax, 0FFh mov dx, 4A2h out dx, ax mov ax, 3100h mov dx, 4A4h out dx, ax mov ax, 0FFFFh mov dx, 4A8h out dx, ax mov ax, 0 mov dx, 4ACh out dx, ax mov ax, 0Fh mov dx, 4AEh out dx, ax pop bp retf sub_C757 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_C78B proc far var_A = word ptr -0Ah var_8 = word ptr -8 var_6 = word ptr -6 var_4 = word ptr -4 var_2 = word ptr -2 arg_0 = word ptr 6 enter 0Ah, 0 push si push di call sub_C757 mov ax, [bp+arg_0] mov bx, 2 cwd idiv bx imul dx, 140h mov [bp+var_2], dx mov ax, [bp+arg_0] cwd sub ax, dx sar ax, 1 imul ax, 0C8h mov [bp+var_4], ax mov ax, [bp+var_2] sar ax, 3 mov dx, [bp+var_4] shl dx, 6 add ax, dx mov dx, [bp+var_4] shl dx, 4 add ax, dx mov si, ax mov di, 1F54h mov [bp+var_8], 0 jmp short loc_C81D ; --------------------------------------------------------------------------- loc_C7D6: mov [bp+var_6], 0 jmp short loc_C80E ; --------------------------------------------------------------------------- loc_C7DD: push 1 call _graph_accesspage_func pop cx les bx, _VRAM_PLANE_B add bx, si mov ax, es:[bx] mov [bp+var_A], ax push 0 call _graph_accesspage_func pop cx les bx, _VRAM_PLANE_B add bx, di mov ax, [bp+var_A] mov es:[bx], ax add si, 2 add di, 2 inc [bp+var_6] loc_C80E: cmp [bp+var_6], 14h jl short loc_C7DD add si, 28h ; '(' add di, 28h ; '(' inc [bp+var_8] loc_C81D: cmp [bp+var_8], 0C8h ; 'ネ' jl short loc_C7D6 call egc_off pop di pop si leave retf sub_C78B endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_C82D proc far arg_0 = word ptr 6 push bp mov bp, sp mov _vsync_frame, 0 loc_C836: mov ax, _vsync_frame cmp ax, [bp+arg_0] jnb short loc_C840 jmp short loc_C836 ; --------------------------------------------------------------------------- loc_C840: pop bp retf sub_C82D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_C842 proc far var_2 = word ptr -2 arg_0 = word ptr 6 enter 2, 0 push si push di cmp [bp+arg_0], 0 jge short loc_C855 mov [bp+arg_0], 0 jmp short loc_C861 ; --------------------------------------------------------------------------- loc_C855: cmp [bp+arg_0], 0C8h ; 'ネ' jle short loc_C861 mov [bp+arg_0], 0C8h ; 'ネ' loc_C861: mov si, 1 jmp loc_C8F1 ; --------------------------------------------------------------------------- loc_C867: xor di, di jmp short loc_C8E8 ; --------------------------------------------------------------------------- loc_C86B: cmp [bp+arg_0], 64h ; 'd' jle short loc_C8A9 mov bx, si imul bx, 3 mov al, [bx+di+170Ah] cbw mov dx, 0Fh sub dx, ax mov [bp+var_2], dx mov ax, [bp+arg_0] add ax, 0FF9Ch imul [bp+var_2] mov [bp+var_2], ax mov bx, 64h ; 'd' mov ax, [bp+var_2] cwd idiv bx mov [bp+var_2], ax mov bx, si imul bx, 3 mov al, [bx+di+170Ah] add al, byte ptr [bp+var_2] jmp short loc_C8DE ; --------------------------------------------------------------------------- loc_C8A9: mov bx, si imul bx, 3 mov al, [bx+di+170Ah] cbw mov [bp+var_2], ax mov ax, 64h ; 'd' sub ax, [bp+arg_0] imul [bp+var_2] mov [bp+var_2], ax mov bx, 64h ; 'd' mov ax, [bp+var_2] cwd idiv bx mov [bp+var_2], ax mov bx, si imul bx, 3 mov al, [bx+di+170Ah] mov dl, byte ptr [bp+var_2] neg dl add al, dl loc_C8DE: mov bx, si imul bx, 3 mov [bx+di+0A1Ah], al inc di loc_C8E8: cmp di, 3 jge short loc_C8F0 jmp loc_C86B ; --------------------------------------------------------------------------- loc_C8F0: inc si loc_C8F1: cmp si, 10h jge short loc_C8F9 jmp loc_C867 ; --------------------------------------------------------------------------- loc_C8F9: mov ax, [bp+arg_0] mov word_13507, ax push ds push offset unk_134BA call sub_D1D9 add sp, 4 pop di pop si leave retf 2 sub_C842 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_C911 proc far arg_0 = word ptr 6 push bp mov bp, sp push si push di mov di, 64h ; 'd' xor si, si jmp short loc_C92E ; --------------------------------------------------------------------------- loc_C91D: sub di, 5 push di call sub_C842 push [bp+arg_0] call sub_C82D pop cx inc si loc_C92E: cmp si, 14h jl short loc_C91D pop di pop si pop bp retf 2 sub_C911 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_C939 proc far arg_0 = word ptr 6 push bp mov bp, sp push si push di xor di, di xor si, si jmp short loc_C955 ; --------------------------------------------------------------------------- loc_C944: add di, 5 push di call sub_C842 push [bp+arg_0] call sub_C82D pop cx inc si loc_C955: cmp si, 14h jl short loc_C944 pop di pop si pop bp retf 2 sub_C939 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_C960 proc far arg_0 = word ptr 6 push bp mov bp, sp push si push di mov di, 64h ; 'd' xor si, si jmp short loc_C97D ; --------------------------------------------------------------------------- loc_C96C: add di, 5 push di call sub_C842 push [bp+arg_0] call sub_C82D pop cx inc si loc_C97D: cmp si, 14h jl short loc_C96C pop di pop si pop bp retf 2 sub_C960 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_C988 proc far arg_0 = word ptr 6 push bp mov bp, sp push si push di mov di, 0C8h ; 'ネ' xor si, si jmp short loc_C9A5 ; --------------------------------------------------------------------------- loc_C994: sub di, 5 push di call sub_C842 push [bp+arg_0] call sub_C82D pop cx inc si loc_C9A5: cmp si, 14h jl short loc_C994 pop di pop si pop bp retf 2 sub_C988 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_C9B0 proc far arg_0 = dword ptr 6 arg_4 = word ptr 0Ah arg_6 = word ptr 0Ch arg_8 = word ptr 0Eh push bp mov bp, sp push si xor si, si jmp short loc_C9E4 ; --------------------------------------------------------------------------- loc_C9B8: les bx, [bp+arg_0] add bx, si mov al, es:[bx] cbw push ax ; arglist push ds push offset aC ; "%c" push 0Fh ; int push [bp+arg_6] ; int mov ax, si shl ax, 3 add ax, [bp+arg_8] push ax ; int call sub_E9E4 add sp, 0Ch push 3 call sub_C82D pop cx inc si loc_C9E4: cmp si, [bp+arg_4] jl short loc_C9B8 pop si pop bp retf 0Ah sub_C9B0 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_C9EE proc far arg_0 = dword ptr 6 arg_4 = word ptr 0Ah arg_6 = word ptr 0Ch arg_8 = word ptr 0Eh push bp mov bp, sp push si xor si, si jmp short loc_CA36 ; --------------------------------------------------------------------------- loc_C9F6: mov bx, si add bx, bx mov es, word ptr [bp+arg_0+2] add bx, word ptr [bp+arg_0] mov al, es:[bx+1] cbw push ax mov ax, si add ax, ax les bx, [bp+arg_0] add bx, ax mov al, es:[bx] cbw push ax ; arglist push ds push offset aCC_5 ; "%c%c" push 0Fh ; int push [bp+arg_6] ; int mov ax, si shl ax, 4 add ax, [bp+arg_8] push ax ; int call sub_E9E4 add sp, 0Eh push 3 call sub_C82D pop cx inc si loc_CA36: cmp si, [bp+arg_4] jl short loc_C9F6 pop si pop bp retf 0Ah sub_C9EE endp fuuin_04_TEXT ends ; =========================================================================== ; Segment type: Pure code fuuin_05_TEXT segment byte public 'CODE' use16 extern _vsync_init:proc extern _vsync_exit:proc extern _z_vsync_wait:proc fuuin_05_TEXT ends ; =========================================================================== fuuin_06_TEXT segment byte public 'CODE' use16 extern _z_text_init:proc extern _z_text_25line:proc extern _z_text_setcursor:proc extern _z_text_clear:proc extern _z_text_show:proc extern _z_text_print:proc fuuin_06_TEXT ends ; =========================================================================== ; Segment type: Pure code fuuin_07_TEXT segment byte public 'CODE' use16 assume cs:fuuin_07_TEXT ;org 7 assume es:nothing, ss:nothing, ds:_DATA, fs:nothing, gs:nothing ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; void __interrupt sub_CE87() sub_CE87 proc far push eax push ebx push ecx push edx push es push ds push esi push edi push bp mov bp, seg _DATA mov ds, bp mov bp, sp pop bp pop edi pop esi pop ds pop es pop edx pop ecx pop ebx pop eax iret sub_CE87 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_CEAD proc far push bp mov bp, sp cmp byte_134B8, 0 jnz short loc_CEFE mov byte_134B8, 1 push 6 ; interruptno call _getvect pop cx mov word ptr off_14150+2, dx mov word ptr off_14150, ax push seg fuuin_07_TEXT push offset sub_CF87 ; isr push 6 ; interruptno call _setvect add sp, 6 call _vsync_init call _z_text_init call egc_start call graph_start call respal_create call sub_E984 call vram_planes_set loc_CEFE: pop bp retf sub_CEAD endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_CF00 proc far push bp mov bp, sp cmp byte_134B8, 1 jnz short loc_CF19 mov byte_134B8, 0 nopcall sub_CF48 call respal_free loc_CF19: pop bp retf sub_CF00 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_CF1B proc far push bp mov bp, sp cmp byte_134B8, 1 jnz short loc_CF46 nopcall sub_CF48 call _z_text_25line push 0 call _z_text_setcursor pop cx call _z_text_clear call _z_text_show mov byte_134B8, 0 loc_CF46: pop bp retf sub_CF1B endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_CF48 proc far push bp mov bp, sp mov byte_134B8, 0 push seg fuuin_07_TEXT push offset sub_CE87 ; isr push 6 ; interruptno call _setvect call _vsync_exit call _z_text_clear call sub_D4FE call sub_D094 call egc_start pushd [off_14150] ; isr push 6 ; interruptno call _setvect add sp, 0Ch pop bp retf sub_CF48 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: noreturn bp-based frame ; void __interrupt sub_CF87() sub_CF87 proc far push eax push ebx push ecx push edx push es push ds push esi push edi push bp mov bp, seg _DATA mov ds, bp mov bp, sp call sub_CF00 push 0 ; status call _exit ; --------------------------------------------------------------------------- pop cx pop bp pop edi pop esi pop ds pop es pop edx pop ecx pop ebx pop eax iret sub_CF87 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: noreturn bp-based frame sub_CFB9 proc far @@buffer = byte ptr -104h var_4 = word ptr -4 var_2 = word ptr -2 _format = dword ptr 6 _arglist = byte ptr 0Ah enter 104h, 0 lea ax, [bp+_arglist] mov [bp+var_2], ss mov [bp+var_4], ax push [bp+var_2] push ax ; arglist pushd [bp+_format] ; format push ss lea ax, [bp+@@buffer] push ax ; buffer call _vsprintf call sub_CF00 push ss lea ax, [bp+@@buffer] push ax call _z_text_print push 1 ; status call _exit ; --------------------------------------------------------------------------- add sp, 12h leave retf sub_CFB9 endp fuuin_07_TEXT ends ; =========================================================================== ; Segment type: Pure code fuuin_08_TEXT segment byte public 'CODE' use16 assume cs:fuuin_08_TEXT ;org 4 assume es:nothing, ss:nothing, ds:_DATA, fs:nothing, gs:nothing ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_CFF4 proc far inregs = REGS ptr -10h enter 10h, 0 nopcall sub_D0E0 mov byte ptr [bp+inregs+1], 42h ; 'B' mov byte ptr [bp+inregs+5], 0C0h ; 'タ' push ss lea ax, [bp+inregs] push ax ; outregs push ss push ax ; inregs push 18h ; intno call _int86 mov dx, 6Ah ; 'j' mov al, 1 out dx, al ; PC-98 GDC (6a): ; push ds push offset unk_134BA nopcall sub_D1D9 push 0 nopcall _graph_accesspage_func push 0 nopcall _graph_showpage_func add sp, 12h nopcall sub_D300 mov dx, 68h ; 'h' mov al, 0Ah out dx, al mov dx, 7Ch mov al, GC_OFF out dx, al nopcall sub_D0C5 leave retf sub_CFF4 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_D04B proc far inregs = REGS ptr -10h enter 10h, 0 nopcall sub_D0E0 mov byte ptr [bp+inregs+1], 42h ; 'B' mov byte ptr [bp+inregs+5], 0C0h ; 'タ' push ss lea ax, [bp+inregs] push ax ; outregs push ss push ax ; inregs push 18h ; intno call _int86 mov dx, 6Ah ; 'j' mov al, 1 out dx, al ; PC-98 GDC (6a): ; push 0 nopcall _graph_accesspage_func push 0 nopcall _graph_showpage_func add sp, 0Eh mov dx, 68h ; 'h' mov al, 0Ah out dx, al mov dx, 7Ch mov al, GC_OFF out dx, al nopcall sub_D0C5 leave retf sub_D04B endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_D094 proc far push bp mov bp, sp nopcall sub_D431 nopcall sub_D300 push 0 nopcall _graph_accesspage_func push 0 nopcall _graph_showpage_func add sp, 4 nopcall sub_D0C5 mov dx, 68h ; 'h' mov al, 0Ah out dx, al mov dx, 7Ch mov al, GC_OFF out dx, al pop bp retf sub_D094 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_D0C5 proc far inregs = REGS ptr -10h enter 10h, 0 mov byte ptr [bp+inregs+1], 40h push ss lea ax, [bp+inregs] push ax ; outregs push ss push ax ; inregs push 18h ; intno call _int86 add sp, 0Ah leave retf sub_D0C5 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_D0E0 proc far inregs = REGS ptr -10h enter 10h, 0 mov byte ptr [bp+inregs+1], 41h ; 'A' push ss lea ax, [bp+inregs] push ax ; outregs push ss push ax ; inregs push 18h ; intno call _int86 add sp, 0Ah leave retf sub_D0E0 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame _graph_showpage_func proc far arg_0 = byte ptr 6 push bp mov bp, sp mov dx, 0A4h ; '、' mov al, [bp+arg_0] out dx, al pop bp retf _graph_showpage_func endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame public _graph_accesspage_func _graph_accesspage_func proc far arg_0 = word ptr 6 push bp mov bp, sp mov bx, [bp+arg_0] mov _graph_page, bl mov dx, 0A6h ; 'ヲ' mov al, bl out dx, al pop bp retf _graph_accesspage_func endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_D119 proc far arg_0 = byte ptr 6 arg_2 = byte ptr 8 arg_4 = byte ptr 0Ah arg_6 = byte ptr 0Ch push bp mov bp, sp mov dx, 0A8h ; 'ィ' mov al, [bp+arg_0] out dx, al mov dx, 0AAh ; 'ェ' mov al, [bp+arg_4] out dx, al mov dx, 0ACh ; 'ャ' mov al, [bp+arg_2] out dx, al mov dx, 0AEh ; 'ョ' mov al, [bp+arg_6] out dx, al pop bp retf sub_D119 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame public _grcg_setcolor_rmw _grcg_setcolor_rmw proc far arg_0 = word ptr 6 push bp mov bp, sp mov bx, [bp+arg_0] mov dx, 7Ch mov al, GC_RMW out dx, al test bl, 1 jz short loc_D14F mov al, 0FFh jmp short loc_D151 ; --------------------------------------------------------------------------- loc_D14F: mov al, 0 loc_D151: mov dx, 7Eh ; '~' out dx, al test bl, 2 jz short loc_D15E mov al, 0FFh jmp short loc_D160 ; --------------------------------------------------------------------------- loc_D15E: mov al, 0 loc_D160: mov dx, 7Eh ; '~' out dx, al test bl, 4 jz short loc_D16D mov al, 0FFh jmp short loc_D16F ; --------------------------------------------------------------------------- loc_D16D: mov al, 0 loc_D16F: mov dx, 7Eh ; '~' out dx, al test bl, 8 jz short loc_D17C mov al, 0FFh jmp short loc_D17E ; --------------------------------------------------------------------------- loc_D17C: mov al, 0 loc_D17E: mov dx, 7Eh ; '~' out dx, al pop bp retf _grcg_setcolor_rmw endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_D184 proc far arg_0 = word ptr 6 push bp mov bp, sp mov bx, [bp+arg_0] mov dx, 7Ch mov al, GC_TDW out dx, al test bl, 1 jz short loc_D199 mov al, 0FFh jmp short loc_D19B ; --------------------------------------------------------------------------- loc_D199: mov al, 0 loc_D19B: mov dx, 7Eh ; '~' out dx, al test bl, 2 jz short loc_D1A8 mov al, 0FFh jmp short loc_D1AA ; --------------------------------------------------------------------------- loc_D1A8: mov al, 0 loc_D1AA: mov dx, 7Eh ; '~' out dx, al test bl, 4 jz short loc_D1B7 mov al, 0FFh jmp short loc_D1B9 ; --------------------------------------------------------------------------- loc_D1B7: mov al, 0 loc_D1B9: mov dx, 7Eh ; '~' out dx, al test bl, 8 jz short loc_D1C6 mov al, 0FFh jmp short loc_D1C8 ; --------------------------------------------------------------------------- loc_D1C6: mov al, 0 loc_D1C8: mov dx, 7Eh ; '~' out dx, al pop bp retf sub_D184 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame public _grcg_off_func _grcg_off_func proc far push bp mov bp, sp mov dx, 7Ch mov al, GC_OFF out dx, al pop bp retf _grcg_off_func endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_D1D9 proc far arg_0 = dword ptr 6 push bp mov bp, sp push si xor si, si jmp short loc_D21A ; --------------------------------------------------------------------------- loc_D1E1: mov ax, si imul ax, 3 les bx, [bp+arg_0] add bx, ax mov al, es:[bx+2] cbw push ax mov ax, si imul ax, 3 mov bx, word ptr [bp+arg_0] add bx, ax mov al, es:[bx+1] cbw push ax mov ax, si imul ax, 3 mov bx, word ptr [bp+arg_0] add bx, ax mov al, es:[bx] cbw push ax push si nopcall sub_D222 add sp, 8 inc si loc_D21A: cmp si, 10h jl short loc_D1E1 pop si pop bp retf sub_D1D9 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_D222 proc far arg_0 = word ptr 6 arg_2 = word ptr 8 arg_4 = word ptr 0Ah arg_6 = word ptr 0Ch push bp mov bp, sp push si mov si, [bp+arg_0] cmp [bp+arg_2], 0Fh jge short loc_D234 mov ax, [bp+arg_2] jmp short loc_D237 ; --------------------------------------------------------------------------- loc_D234: mov ax, 0Fh loc_D237: or ax, ax jle short loc_D24B cmp [bp+arg_2], 0Fh jge short loc_D246 mov ax, [bp+arg_2] jmp short loc_D249 ; --------------------------------------------------------------------------- loc_D246: mov ax, 0Fh loc_D249: jmp short loc_D24D ; --------------------------------------------------------------------------- loc_D24B: xor ax, ax loc_D24D: mov [bp+arg_2], ax cmp [bp+arg_4], 0Fh jge short loc_D25B mov ax, [bp+arg_4] jmp short loc_D25E ; --------------------------------------------------------------------------- loc_D25B: mov ax, 0Fh loc_D25E: or ax, ax jle short loc_D272 cmp [bp+arg_4], 0Fh jge short loc_D26D mov ax, [bp+arg_4] jmp short loc_D270 ; --------------------------------------------------------------------------- loc_D26D: mov ax, 0Fh loc_D270: jmp short loc_D274 ; --------------------------------------------------------------------------- loc_D272: xor ax, ax loc_D274: mov [bp+arg_4], ax cmp [bp+arg_6], 0Fh jge short loc_D282 mov ax, [bp+arg_6] jmp short loc_D285 ; --------------------------------------------------------------------------- loc_D282: mov ax, 0Fh loc_D285: or ax, ax jle short loc_D299 cmp [bp+arg_6], 0Fh jge short loc_D294 mov ax, [bp+arg_6] jmp short loc_D297 ; --------------------------------------------------------------------------- loc_D294: mov ax, 0Fh loc_D297: jmp short loc_D29B ; --------------------------------------------------------------------------- loc_D299: xor ax, ax loc_D29B: mov [bp+arg_6], ax mov bx, si imul bx, 3 mov al, byte ptr [bp+arg_2] mov [bx+0A1Ah], al mov bx, si imul bx, 3 mov al, byte ptr [bp+arg_4] mov [bx+0A1Bh], al mov bx, si imul bx, 3 mov al, byte ptr [bp+arg_6] mov [bx+0A1Ch], al push [bp+arg_6] push [bp+arg_4] push [bp+arg_2] push si call sub_D119 add sp, 8 pop si pop bp retf sub_D222 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_D2D6 proc far _s = dword ptr -4 enter 4, 0 mov [bp+_s], 0A8000000h push 0 call _grcg_setcolor_rmw push 7D0000FFh ; c pushd [bp+_s] ; s call _memset add sp, 0Ah call _grcg_off_func leave retf sub_D2D6 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_D300 proc far push bp mov bp, sp push 2 call _graph_accesspage_func call sub_D2D6 push 2 call _graph_accesspage_func add sp, 4 call sub_D2D6 pop bp retf sub_D300 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_D31C proc far _s = dword ptr -4 arg_0 = byte ptr 6 enter 4, 0 mov [bp+_s], 0A8000000h mov al, [bp+arg_0] cbw push ax call _grcg_setcolor_rmw push 7D0000FFh ; c pushd [bp+_s] ; s call _memset add sp, 0Ah call _grcg_off_func leave retf sub_D31C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_D349 proc far var_152 = byte ptr -152h var_102 = byte ptr -102h var_B2 = byte ptr -0B2h dest = byte ptr -62h var_11 = byte ptr -11h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 _src = dword ptr -4 enter 152h, 0 push si mov [bp+_src], 0A8000000h mov [bp+var_8], 0B0000000h mov [bp+var_C], 0B8000000h mov [bp+var_10], 0E0000000h mov al, _graph_page xor al, 1 mov [bp+var_11], al xor si, si jmp loc_D426 ; --------------------------------------------------------------------------- loc_D37B: push 50h ; 'P' ; n pushd [bp+_src] ; src push ss lea ax, [bp+dest] push ax ; dest call _memcpy push 50h ; 'P' ; n pushd [bp+var_8] ; src push ss lea ax, [bp+var_B2] push ax ; dest call _memcpy push 50h ; 'P' ; n pushd [bp+var_C] ; src push ss lea ax, [bp+var_102] push ax ; dest call _memcpy push 50h ; 'P' ; n pushd [bp+var_10] ; src push ss lea ax, [bp+var_152] push ax ; dest call _memcpy mov dx, 0A6h ; 'ヲ' mov al, [bp+var_11] out dx, al push 50h ; 'P' ; n push ss lea ax, [bp+dest] push ax ; src pushd [bp+_src] ; dest call _memcpy add sp, 32h push 50h ; 'P' ; n push ss lea ax, [bp+var_B2] push ax ; src pushd [bp+var_8] ; dest call _memcpy push 50h ; 'P' ; n push ss lea ax, [bp+var_102] push ax ; src pushd [bp+var_C] ; dest call _memcpy push 50h ; 'P' ; n push ss lea ax, [bp+var_152] push ax ; src pushd [bp+var_10] ; dest call _memcpy add sp, 1Eh mov dx, 0A6h ; 'ヲ' mov al, _graph_page out dx, al add word ptr [bp+_src], 50h ; 'P' add word ptr [bp+var_8], 50h ; 'P' add word ptr [bp+var_C], 50h ; 'P' add word ptr [bp+var_10], 50h ; 'P' inc si loc_D426: cmp si, 190h jl loc_D37B pop si leave retf sub_D349 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_D431 proc far push bp mov bp, sp push si xor si, si jmp short loc_D447 ; --------------------------------------------------------------------------- loc_D439: pushd 0 push 0 push si call sub_D119 add sp, 8 inc si loc_D447: cmp si, 10h jl short loc_D439 pop si pop bp retf sub_D431 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_D44F proc far _s = byte ptr -32h var_31 = byte ptr -31h var_30 = byte ptr -30h var_2 = word ptr -2 enter 32h, 0 push si push di push 300000h ; c push ss lea ax, [bp+_s] push ax ; s call _memset add sp, 8 mov [bp+var_2], 0 jmp loc_D4F2 ; --------------------------------------------------------------------------- loc_D470: call _z_vsync_wait xor si, si jmp short loc_D4E2 ; --------------------------------------------------------------------------- loc_D479: xor di, di jmp short loc_D4A7 ; --------------------------------------------------------------------------- loc_D47D: mov bx, si imul bx, 3 add bx, di lea ax, [bp+_s] add bx, ax mov al, ss:[bx] mov bx, si imul bx, 3 cmp al, [bx+di+0A1Ah] jge short loc_D4A6 mov bx, si imul bx, 3 add bx, di lea ax, [bp+_s] add bx, ax inc byte ptr ss:[bx] loc_D4A6: inc di loc_D4A7: cmp di, 3 jl short loc_D47D mov bx, si imul bx, 3 lea ax, [bp+var_30] add bx, ax mov al, ss:[bx] cbw push ax mov bx, si imul bx, 3 lea ax, [bp+var_31] add bx, ax mov al, ss:[bx] cbw push ax mov bx, si imul bx, 3 lea ax, [bp+_s] add bx, ax mov al, ss:[bx] cbw push ax push si call sub_D119 add sp, 8 inc si loc_D4E2: cmp si, 10h jl short loc_D479 push 0Ah call _delay pop cx inc [bp+var_2] loc_D4F2: cmp [bp+var_2], 10h jl loc_D470 pop di pop si leave retf sub_D44F endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_D4FE proc far dest = byte ptr -32h var_31 = byte ptr -31h var_30 = byte ptr -30h var_2 = word ptr -2 enter 32h, 0 push si push di push 30h ; '0' ; n push ds push offset unk_134BA ; src push ss lea ax, [bp+dest] push ax ; dest call _memcpy add sp, 0Ah mov [bp+var_2], 0 jmp short loc_D595 ; --------------------------------------------------------------------------- loc_D51E: call _z_vsync_wait xor si, si jmp short loc_D585 ; --------------------------------------------------------------------------- loc_D527: xor di, di jmp short loc_D54A ; --------------------------------------------------------------------------- loc_D52B: mov bx, si imul bx, 3 add bx, di lea ax, [bp+dest] add bx, ax cmp byte ptr ss:[bx], 0 jle short loc_D549 mov bx, si imul bx, 3 add bx, di add bx, ax dec byte ptr ss:[bx] loc_D549: inc di loc_D54A: cmp di, 3 jl short loc_D52B mov bx, si imul bx, 3 lea ax, [bp+var_30] add bx, ax mov al, ss:[bx] cbw push ax mov bx, si imul bx, 3 lea ax, [bp+var_31] add bx, ax mov al, ss:[bx] cbw push ax mov bx, si imul bx, 3 lea ax, [bp+dest] add bx, ax mov al, ss:[bx] cbw push ax push si call sub_D119 add sp, 8 inc si loc_D585: cmp si, 10h jl short loc_D527 push 0Ah call _delay pop cx inc [bp+var_2] loc_D595: cmp [bp+var_2], 10h jl short loc_D51E pop di pop si leave retf sub_D4FE endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_D59F proc far push bp mov bp, sp push si xor si, si jmp short loc_D5B8 ; --------------------------------------------------------------------------- loc_D5A7: push 0F000Fh push 0Fh push si call sub_D119 add sp, 8 inc si loc_D5B8: cmp si, 10h jl short loc_D5A7 pop si pop bp retf sub_D59F endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_D5C0 proc far _s = byte ptr -32h var_31 = byte ptr -31h var_30 = byte ptr -30h var_2 = word ptr -2 enter 32h, 0 push si push di push 30000Fh ; c push ss lea ax, [bp+_s] push ax ; s call _memset add sp, 8 mov [bp+var_2], 0 jmp loc_D663 ; --------------------------------------------------------------------------- loc_D5E1: call _z_vsync_wait xor si, si jmp short loc_D653 ; --------------------------------------------------------------------------- loc_D5EA: xor di, di jmp short loc_D618 ; --------------------------------------------------------------------------- loc_D5EE: mov bx, si imul bx, 3 add bx, di lea ax, [bp+_s] add bx, ax mov al, ss:[bx] mov bx, si imul bx, 3 cmp al, [bx+di+0A1Ah] jle short loc_D617 mov bx, si imul bx, 3 add bx, di lea ax, [bp+_s] add bx, ax dec byte ptr ss:[bx] loc_D617: inc di loc_D618: cmp di, 3 jl short loc_D5EE mov bx, si imul bx, 3 lea ax, [bp+var_30] add bx, ax mov al, ss:[bx] cbw push ax mov bx, si imul bx, 3 lea ax, [bp+var_31] add bx, ax mov al, ss:[bx] cbw push ax mov bx, si imul bx, 3 lea ax, [bp+_s] add bx, ax mov al, ss:[bx] cbw push ax push si call sub_D119 add sp, 8 inc si loc_D653: cmp si, 10h jl short loc_D5EA push 0Ah call _delay pop cx inc [bp+var_2] loc_D663: cmp [bp+var_2], 10h jl loc_D5E1 pop di pop si leave retf sub_D5C0 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_D66F proc far dest = byte ptr -32h var_31 = byte ptr -31h var_30 = byte ptr -30h var_2 = word ptr -2 enter 32h, 0 push si push di push 30h ; '0' ; n push ds push offset unk_134BA ; src push ss lea ax, [bp+dest] push ax ; dest call _memcpy add sp, 0Ah mov [bp+var_2], 0 jmp short loc_D706 ; --------------------------------------------------------------------------- loc_D68F: call _z_vsync_wait xor si, si jmp short loc_D6F6 ; --------------------------------------------------------------------------- loc_D698: xor di, di jmp short loc_D6BB ; --------------------------------------------------------------------------- loc_D69C: mov bx, si imul bx, 3 add bx, di lea ax, [bp+dest] add bx, ax cmp byte ptr ss:[bx], 0Fh jge short loc_D6BA mov bx, si imul bx, 3 add bx, di add bx, ax inc byte ptr ss:[bx] loc_D6BA: inc di loc_D6BB: cmp di, 3 jl short loc_D69C mov bx, si imul bx, 3 lea ax, [bp+var_30] add bx, ax mov al, ss:[bx] cbw push ax mov bx, si imul bx, 3 lea ax, [bp+var_31] add bx, ax mov al, ss:[bx] cbw push ax mov bx, si imul bx, 3 lea ax, [bp+dest] add bx, ax mov al, ss:[bx] cbw push ax push si call sub_D119 add sp, 8 inc si loc_D6F6: cmp si, 10h jl short loc_D698 push 0Ah call _delay pop cx inc [bp+var_2] loc_D706: cmp [bp+var_2], 10h jl short loc_D68F pop di pop si leave retf sub_D66F endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_D710 proc far push bp mov bp, sp push si xor si, si jmp short loc_D742 ; --------------------------------------------------------------------------- loc_D718: mov bx, si imul bx, 3 mov al, [bx+0A1Ch] cbw push ax mov bx, si imul bx, 3 mov al, [bx+0A1Bh] cbw push ax mov bx, si imul bx, 3 mov al, [bx+0A1Ah] cbw push ax push si call sub_D119 add sp, 8 inc si loc_D742: cmp si, 10h jl short loc_D718 pop si pop bp retf sub_D710 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_D74A proc far arg_0 = word ptr 6 arg_2 = word ptr 8 arg_4 = word ptr 0Ah push bp mov bp, sp push [bp+arg_4] call _grcg_setcolor_rmw pop cx mov bx, [bp+arg_2] imul bx, 50h mov ax, [bp+arg_0] sar ax, 3 add bx, ax mov ax, 0A800h mov cl, byte ptr [bp+arg_0] and cl, 7 mov dx, 80h sar dx, cl mov es, ax assume es:nothing mov es:[bx], dl call _grcg_off_func pop bp retf sub_D74A endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_D77C proc far var_2 = word ptr -2 arg_0 = word ptr 6 arg_2 = word ptr 8 enter 2, 0 push si push di mov ax, [bp+arg_2] imul ax, 50h mov dx, [bp+arg_0] sar dx, 3 add ax, dx mov di, ax mov cl, byte ptr [bp+arg_0] and cl, 7 mov ax, 80h sar ax, cl mov [bp+var_2], ax xor si, si mov ax, 0A800h mov es, ax mov al, es:[di] cbw test [bp+var_2], ax jz short loc_D7B3 or si, 1 loc_D7B3: mov ax, 0B000h mov es, ax assume es:nothing mov al, es:[di] cbw test [bp+var_2], ax jz short loc_D7C4 or si, 2 loc_D7C4: mov ax, 0B800h mov es, ax assume es:nothing mov al, es:[di] cbw test [bp+var_2], ax jz short loc_D7D5 or si, 4 loc_D7D5: mov ax, 0E000h mov es, ax assume es:nothing mov al, es:[di] cbw test [bp+var_2], ax jz short loc_D7E6 or si, 8 loc_D7E6: mov ax, si pop di pop si leave retf sub_D77C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_D7EC proc far var_A = dword ptr -0Ah var_6 = byte ptr -6 var_5 = byte ptr -5 var_4 = word ptr -4 var_2 = word ptr -2 arg_0 = word ptr 6 arg_2 = word ptr 8 arg_4 = word ptr 0Ah arg_6 = word ptr 0Ch enter 0Ah, 0 push si push di mov di, [bp+arg_4] mov ax, [bp+arg_0] cmp ax, [bp+arg_2] jle short loc_D80C mov [bp+var_4], ax mov ax, [bp+arg_2] mov [bp+arg_0], ax mov ax, [bp+var_4] mov [bp+arg_2], ax loc_D80C: cmp [bp+arg_0], 0 jge short loc_D81F cmp [bp+arg_2], 0 jl loc_D8FB mov [bp+arg_0], 0 loc_D81F: cmp [bp+arg_2], 27Fh jle short loc_D834 cmp [bp+arg_0], 27Fh jg loc_D8FB mov [bp+arg_2], 27Fh loc_D834: mov ax, [bp+arg_2] mov word_14154, ax mov word_14156, di mov ax, di imul ax, 50h push ax mov ax, [bp+arg_0] mov bx, 8 cwd idiv bx pop dx add dx, ax mov word ptr [bp+var_A+2], 0A800h mov word ptr [bp+var_A], dx mov ax, [bp+arg_2] cwd idiv bx push ax mov ax, [bp+arg_0] cwd idiv bx pop dx sub dx, ax mov [bp+var_2], dx mov cl, byte ptr [bp+arg_0] and cl, 7 mov ax, 0FFh sar ax, cl mov [bp+var_5], al mov al, byte ptr [bp+arg_2] and al, 7 mov cl, 7 sub cl, al mov al, 0FFh shl al, cl mov [bp+var_6], al cmp byte_134EA, 0 jnz short loc_D898 push [bp+arg_6] call _grcg_setcolor_rmw pop cx loc_D898: cmp byte_134EA, 0 jz short loc_D8B6 push 1 mov ax, 280h sub ax, [bp+arg_0] push ax push di push [bp+arg_0] call _egc_copy_rect_1_to_0 add sp, 8 jmp short loc_D8F0 ; --------------------------------------------------------------------------- loc_D8B6: cmp [bp+var_2], 0 jnz short loc_D8C7 mov al, [bp+var_5] and al, [bp+var_6] les bx, [bp+var_A] assume es:nothing jmp short loc_D8ED ; --------------------------------------------------------------------------- loc_D8C7: les bx, [bp+var_A] mov al, [bp+var_5] mov es:[bx], al mov si, 1 jmp short loc_D8DF ; --------------------------------------------------------------------------- loc_D8D5: les bx, [bp+var_A] add bx, si mov byte ptr es:[bx], 0FFh inc si loc_D8DF: cmp si, [bp+var_2] jl short loc_D8D5 les bx, [bp+var_A] add bx, [bp+var_2] mov al, [bp+var_6] loc_D8ED: mov es:[bx], al loc_D8F0: cmp byte_134EA, 0 jnz short loc_D8FB call _grcg_off_func loc_D8FB: pop di pop si leave retf sub_D7EC endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_D8FF proc far var_8 = word ptr -8 var_6 = word ptr -6 var_4 = word ptr -4 var_2 = word ptr -2 arg_0 = word ptr 6 arg_2 = word ptr 8 arg_4 = word ptr 0Ah arg_6 = word ptr 0Ch enter 8, 0 push si push di mov si, [bp+arg_2] mov di, [bp+arg_4] cmp si, di jle short loc_D917 mov [bp+var_4], si mov si, di mov di, [bp+var_4] loc_D917: or si, si jge short loc_D923 or di, di jl loc_D9BA xor si, si loc_D923: cmp di, 18Fh jle short loc_D934 cmp si, 18Fh jg loc_D9BA mov di, 18Fh loc_D934: mov ax, [bp+arg_0] mov word_14154, ax mov word_14156, di cmp byte_134EA, 0 jz short loc_D95A mov ax, di sub ax, si push ax push 10h push si push [bp+arg_0] call _egc_copy_rect_1_to_0 add sp, 8 jmp short loc_D9BA ; --------------------------------------------------------------------------- loc_D95A: mov ax, [bp+arg_0] sar ax, 3 mov dx, si shl dx, 6 add ax, dx mov dx, si shl dx, 4 add ax, dx mov [bp+var_8], ax mov cl, byte ptr [bp+arg_0] and cl, 7 mov ax, word_134EB shr ax, cl mov [bp+var_6], ax mov al, byte ptr [bp+arg_0] and al, 7 mov cl, 10h sub cl, al mov ax, word_134EB shl ax, cl or [bp+var_6], ax push [bp+arg_6] call _grcg_setcolor_rmw pop cx mov [bp+var_2], si jmp short loc_D9B1 ; --------------------------------------------------------------------------- loc_D99D: les bx, _VRAM_PLANE_B add bx, [bp+var_8] mov ax, [bp+var_6] mov es:[bx], ax add [bp+var_8], 50h ; 'P' inc [bp+var_2] loc_D9B1: cmp [bp+var_2], di jle short loc_D99D call _grcg_off_func loc_D9BA: pop di pop si leave retf sub_D8FF endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_D9BE proc far arg_0 = word ptr 6 arg_2 = word ptr 8 arg_4 = word ptr 0Ah arg_6 = word ptr 0Ch push bp mov bp, sp mov byte_134EA, 1 push 7 push [bp+arg_6] push [bp+arg_4] push [bp+arg_2] push [bp+arg_0] nopcall sub_DA0B add sp, 0Ah mov byte_134EA, 0 pop bp retf sub_D9BE endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_D9E3 proc far arg_0 = word ptr 6 arg_2 = word ptr 8 arg_4 = word ptr 0Ah arg_6 = word ptr 0Ch arg_8 = word ptr 0Eh arg_A = word ptr 10h push bp mov bp, sp mov ax, [bp+arg_A] mov word_134EB, ax push [bp+arg_8] push [bp+arg_6] push [bp+arg_4] push [bp+arg_2] push [bp+arg_0] nopcall sub_DA0B add sp, 0Ah mov word_134EB, 80h pop bp retf sub_D9E3 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_DA0B proc far var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = word ptr -18h var_16 = word ptr -16h var_14 = word ptr -14h var_12 = word ptr -12h var_10 = word ptr -10h var_E = word ptr -0Eh var_C = word ptr -0Ch var_A = word ptr -0Ah var_8 = word ptr -8 var_6 = word ptr -6 var_4 = word ptr -4 var_2 = word ptr -2 arg_0 = word ptr 6 arg_2 = word ptr 8 arg_4 = word ptr 0Ah arg_6 = word ptr 0Ch arg_8 = word ptr 0Eh enter 28h, 0 push si push di mov di, [bp+arg_2] cmp byte_134EA, 0 jnz short loc_DA31 mov ax, [bp+arg_0] cmp ax, [bp+arg_4] jnz short loc_DA31 push [bp+arg_8] push [bp+arg_6] push di push ax call sub_D8FF jmp short loc_DA4B ; --------------------------------------------------------------------------- loc_DA31: cmp byte_134EA, 0 jnz short loc_DA51 cmp di, [bp+arg_6] jnz short loc_DA51 push [bp+arg_8] push di push [bp+arg_4] push [bp+arg_0] call sub_D7EC loc_DA4B: add sp, 8 jmp loc_DF36 ; --------------------------------------------------------------------------- loc_DA51: mov ax, [bp+arg_0] cmp ax, [bp+arg_4] jle short loc_DA74 mov [bp+var_10], ax mov ax, [bp+arg_4] mov [bp+arg_0], ax mov ax, [bp+var_10] mov [bp+arg_4], ax mov [bp+var_10], di mov di, [bp+arg_6] mov ax, [bp+var_10] mov [bp+arg_6], ax loc_DA74: cmp [bp+arg_0], 0 jge short loc_DAB2 cmp [bp+arg_4], 0 jl loc_DF36 mov ax, [bp+arg_6] sub ax, di mov bx, [bp+arg_4] sub bx, [bp+arg_0] cwd idiv bx mov [bp+var_18], ax fild [bp+var_18] xor ax, ax sub ax, [bp+arg_0] mov [bp+var_18], ax fild [bp+var_18] fmulp st(1), st call ftol@ add di, ax mov [bp+arg_0], 0 loc_DAB2: cmp [bp+arg_4], 27Fh jle short loc_DAF4 cmp [bp+arg_0], 27Fh jg loc_DF36 mov ax, [bp+arg_6] sub ax, di mov bx, [bp+arg_4] sub bx, [bp+arg_0] cwd idiv bx mov [bp+var_18], ax fild [bp+var_18] mov ax, [bp+arg_4] add ax, 0FD81h mov [bp+var_18], ax fild [bp+var_18] fmulp st(1), st call ftol@ sub [bp+arg_6], ax mov [bp+arg_4], 27Fh loc_DAF4: or di, di jge short loc_DB2D cmp [bp+arg_6], 0 jl loc_DF36 mov ax, [bp+arg_4] sub ax, [bp+arg_0] mov bx, [bp+arg_6] sub bx, di cwd idiv bx mov [bp+var_18], ax fild [bp+var_18] xor ax, ax sub ax, di mov [bp+var_18], ax fild [bp+var_18] fmulp st(1), st call ftol@ add [bp+arg_0], ax xor di, di loc_DB2D: cmp [bp+arg_6], 18Fh jle short loc_DB6E cmp di, 18Fh jg loc_DF36 mov ax, [bp+arg_4] sub ax, [bp+arg_0] mov bx, [bp+arg_6] sub bx, di cwd idiv bx mov [bp+var_18], ax fild [bp+var_18] mov ax, [bp+arg_6] add ax, 0FE71h mov [bp+var_18], ax fild [bp+var_18] fmulp st(1), st call ftol@ sub [bp+arg_4], ax mov [bp+arg_6], 18Fh loc_DB6E: cmp [bp+arg_6], 0 jge short loc_DBA5 mov ax, [bp+arg_4] sub ax, [bp+arg_0] mov bx, [bp+arg_6] sub bx, di cwd idiv bx mov [bp+var_18], ax fild [bp+var_18] xor ax, ax sub ax, [bp+arg_6] mov [bp+var_18], ax fild [bp+var_18] fmulp st(1), st call ftol@ add [bp+arg_4], ax mov [bp+arg_6], 0 loc_DBA5: cmp di, 18Fh jle short loc_DBD9 mov ax, [bp+arg_4] sub ax, [bp+arg_0] mov bx, [bp+arg_6] sub bx, di cwd idiv bx mov [bp+var_18], ax fild [bp+var_18] lea ax, [di-18Fh] mov [bp+var_18], ax fild [bp+var_18] fmulp st(1), st call ftol@ sub [bp+arg_0], ax mov di, 18Fh loc_DBD9: mov ax, [bp+arg_4] mov word_14154, ax mov ax, [bp+arg_6] mov word_14156, ax mov ax, [bp+arg_0] mov [bp+var_4], ax mov [bp+var_6], di cmp di, [bp+arg_6] jge short loc_DBF8 mov ax, 1 jmp short loc_DBFB ; --------------------------------------------------------------------------- loc_DBF8: mov ax, 0FFFFh loc_DBFB: mov [bp+var_E], ax mov ax, [bp+arg_4] sub ax, [bp+arg_0] mov [bp+var_8], ax mov ax, [bp+arg_6] sub ax, di imul [bp+var_E] mov [bp+var_A], ax mov [bp+var_16], 0 mov ax, [bp+var_4] sar ax, 3 mov [bp+var_12], ax mov ax, [bp+var_6] mov [bp+var_14], ax cmp byte_134EA, 0 jnz short loc_DC35 push [bp+arg_8] call _grcg_setcolor_rmw pop cx loc_DC35: mov ax, [bp+var_8] cmp ax, [bp+var_A] jle loc_DD69 sar ax, 1 mov [bp+var_C], ax mov [bp+var_2], 0 jmp loc_DD53 ; --------------------------------------------------------------------------- loc_DC4C: mov ax, [bp+var_4] sar ax, 3 cmp ax, [bp+var_12] jnz short loc_DC61 mov ax, [bp+var_14] cmp ax, [bp+var_6] jz loc_DD16 loc_DC61: mov ax, [bp+var_14] imul ax, 50h add ax, [bp+var_12] mov si, ax cmp byte_134EA, 0 jnz short loc_DC87 les bx, _VRAM_PLANE_B add bx, si mov ax, [bp+var_16] mov es:[bx], ax mov [bp+var_16], 0 jmp loc_DD07 ; --------------------------------------------------------------------------- loc_DC87: dec si push 1 call _graph_accesspage_func les bx, _VRAM_PLANE_B add bx, si mov eax, es:[bx] mov [bp+var_28], eax les bx, _VRAM_PLANE_R add bx, si mov eax, es:[bx] mov [bp+var_24], eax les bx, _VRAM_PLANE_G add bx, si mov eax, es:[bx] mov [bp+var_20], eax les bx, _VRAM_PLANE_E add bx, si mov eax, es:[bx] mov [bp+var_1C], eax push 0 call _graph_accesspage_func add sp, 4 les bx, _VRAM_PLANE_B add bx, si mov eax, [bp+var_28] mov es:[bx], eax les bx, _VRAM_PLANE_R add bx, si mov eax, [bp+var_24] mov es:[bx], eax les bx, _VRAM_PLANE_G add bx, si mov eax, [bp+var_20] mov es:[bx], eax les bx, _VRAM_PLANE_E add bx, si mov eax, [bp+var_1C] mov es:[bx], eax loc_DD07: mov ax, [bp+var_6] mov [bp+var_14], ax mov ax, [bp+var_4] sar ax, 3 mov [bp+var_12], ax loc_DD16: mov cl, byte ptr [bp+var_4] and cl, 7 mov ax, word_134EB shr ax, cl or [bp+var_16], ax mov al, byte ptr [bp+var_4] and al, 7 mov cl, 10h sub cl, al mov ax, word_134EB shl ax, cl or [bp+var_16], ax mov ax, [bp+var_A] sub [bp+var_C], ax inc [bp+var_4] cmp [bp+var_C], 0 jge short loc_DD50 mov ax, [bp+var_8] add [bp+var_C], ax mov ax, [bp+var_E] add [bp+var_6], ax loc_DD50: inc [bp+var_2] loc_DD53: mov ax, [bp+var_2] cmp ax, [bp+var_8] jle loc_DC4C cmp byte_134EA, 0 jz loc_DF2B jmp loc_DE93 ; --------------------------------------------------------------------------- loc_DD69: mov ax, [bp+var_A] sar ax, 1 mov [bp+var_C], ax mov [bp+var_2], 0 jmp loc_DE80 ; --------------------------------------------------------------------------- loc_DD79: mov ax, [bp+var_4] sar ax, 3 cmp ax, [bp+var_12] jnz short loc_DD8E mov ax, [bp+var_14] cmp ax, [bp+var_6] jz loc_DE43 loc_DD8E: mov ax, [bp+var_14] imul ax, 50h add ax, [bp+var_12] mov si, ax cmp byte_134EA, 0 jnz short loc_DDB4 les bx, _VRAM_PLANE_B add bx, si mov ax, [bp+var_16] mov es:[bx], ax mov [bp+var_16], 0 jmp loc_DE34 ; --------------------------------------------------------------------------- loc_DDB4: dec si push 1 call _graph_accesspage_func les bx, _VRAM_PLANE_B add bx, si mov eax, es:[bx] mov [bp+var_28], eax les bx, _VRAM_PLANE_R add bx, si mov eax, es:[bx] mov [bp+var_24], eax les bx, _VRAM_PLANE_G add bx, si mov eax, es:[bx] mov [bp+var_20], eax les bx, _VRAM_PLANE_E add bx, si mov eax, es:[bx] mov [bp+var_1C], eax push 0 call _graph_accesspage_func add sp, 4 les bx, _VRAM_PLANE_B add bx, si mov eax, [bp+var_28] mov es:[bx], eax les bx, _VRAM_PLANE_R add bx, si mov eax, [bp+var_24] mov es:[bx], eax les bx, _VRAM_PLANE_G add bx, si mov eax, [bp+var_20] mov es:[bx], eax les bx, _VRAM_PLANE_E add bx, si mov eax, [bp+var_1C] mov es:[bx], eax loc_DE34: mov ax, [bp+var_6] mov [bp+var_14], ax mov ax, [bp+var_4] sar ax, 3 mov [bp+var_12], ax loc_DE43: mov cl, byte ptr [bp+var_4] and cl, 7 mov ax, word_134EB shr ax, cl or [bp+var_16], ax mov al, byte ptr [bp+var_4] and al, 7 mov cl, 10h sub cl, al mov ax, word_134EB shl ax, cl or [bp+var_16], ax mov ax, [bp+var_8] sub [bp+var_C], ax mov ax, [bp+var_E] add [bp+var_6], ax cmp [bp+var_C], 0 jge short loc_DE7D mov ax, [bp+var_A] add [bp+var_C], ax inc [bp+var_4] loc_DE7D: inc [bp+var_2] loc_DE80: mov ax, [bp+var_2] cmp ax, [bp+var_A] jle loc_DD79 cmp byte_134EA, 0 jz loc_DF2B loc_DE93: mov ax, [bp+var_4] sar ax, 3 mov dx, [bp+var_6] shl dx, 6 add ax, dx mov dx, [bp+var_6] shl dx, 4 add ax, dx dec ax mov si, ax push 1 call _graph_accesspage_func les bx, _VRAM_PLANE_B add bx, si mov eax, es:[bx] mov [bp+var_28], eax les bx, _VRAM_PLANE_R add bx, si mov eax, es:[bx] mov [bp+var_24], eax les bx, _VRAM_PLANE_G add bx, si mov eax, es:[bx] mov [bp+var_20], eax les bx, _VRAM_PLANE_E add bx, si mov eax, es:[bx] mov [bp+var_1C], eax push 0 call _graph_accesspage_func add sp, 4 les bx, _VRAM_PLANE_B add bx, si mov eax, [bp+var_28] mov es:[bx], eax les bx, _VRAM_PLANE_R add bx, si mov eax, [bp+var_24] mov es:[bx], eax les bx, _VRAM_PLANE_G add bx, si mov eax, [bp+var_20] mov es:[bx], eax les bx, _VRAM_PLANE_E add bx, si mov eax, [bp+var_1C] mov es:[bx], eax loc_DF2B: cmp byte_134EA, 0 jnz short loc_DF36 call _grcg_off_func loc_DF36: pop di pop si leave retf sub_DA0B endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_DF3A proc far var_E = dword ptr -0Eh var_A = byte ptr -0Ah var_9 = byte ptr -9 var_8 = word ptr -8 var_6 = word ptr -6 var_4 = word ptr -4 var_2 = word ptr -2 arg_0 = word ptr 6 arg_2 = word ptr 8 arg_4 = word ptr 0Ah arg_6 = word ptr 0Ch arg_8 = word ptr 0Eh enter 0Eh, 0 push si push di mov si, [bp+arg_2] mov di, [bp+arg_6] mov ax, [bp+arg_0] cmp ax, [bp+arg_4] jle short loc_DF5D mov [bp+var_8], ax mov ax, [bp+arg_4] mov [bp+arg_0], ax mov ax, [bp+var_8] mov [bp+arg_4], ax loc_DF5D: cmp si, di jle short loc_DF69 mov [bp+var_8], si mov si, di mov di, [bp+var_8] loc_DF69: cmp [bp+arg_0], 0 jge short loc_DF7C cmp [bp+arg_4], 0 jl loc_E051 mov [bp+arg_0], 0 loc_DF7C: cmp [bp+arg_4], 27Fh jle short loc_DF91 cmp [bp+arg_0], 27Fh jg loc_E051 mov [bp+arg_4], 27Fh loc_DF91: or si, si jge short loc_DF9D or di, di jl loc_E051 xor si, si loc_DF9D: cmp di, 18Fh jle short loc_DFAE cmp si, 18Fh jg loc_E051 mov di, 18Fh loc_DFAE: push [bp+arg_8] call _grcg_setcolor_rmw pop cx mov ax, si imul ax, 50h mov dx, [bp+arg_0] sar dx, 3 add ax, dx mov word ptr [bp+var_E+2], 0A800h mov word ptr [bp+var_E], ax mov [bp+var_4], si jmp short loc_E048 ; --------------------------------------------------------------------------- loc_DFD0: mov ax, [bp+arg_4] sar ax, 3 mov dx, [bp+arg_0] sar dx, 3 sub ax, dx mov [bp+var_6], ax mov cl, byte ptr [bp+arg_0] and cl, 7 mov ax, 0FFh sar ax, cl mov [bp+var_9], al mov al, byte ptr [bp+arg_4] and al, 7 mov cl, 7 sub cl, al mov al, 0FFh shl al, cl mov [bp+var_A], al cmp [bp+var_6], 0 jnz short loc_E010 mov al, [bp+var_9] and al, [bp+var_A] les bx, [bp+var_E] jmp short loc_E03E ; --------------------------------------------------------------------------- loc_E010: les bx, [bp+var_E] mov al, [bp+var_9] mov es:[bx], al mov [bp+var_2], 1 jmp short loc_E02D ; --------------------------------------------------------------------------- loc_E020: les bx, [bp+var_E] add bx, [bp+var_2] mov byte ptr es:[bx], 0FFh inc [bp+var_2] loc_E02D: mov ax, [bp+var_2] cmp ax, [bp+var_6] jl short loc_E020 les bx, [bp+var_E] add bx, [bp+var_6] mov al, [bp+var_A] loc_E03E: mov es:[bx], al add word ptr [bp+var_E], 50h ; 'P' inc [bp+var_4] loc_E048: cmp [bp+var_4], di jle short loc_DFD0 call _grcg_off_func loc_E051: pop di pop si leave retf sub_DF3A endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_E055 proc far arg_0 = word ptr 6 arg_2 = word ptr 8 arg_4 = word ptr 0Ah arg_6 = word ptr 0Ch arg_8 = word ptr 0Eh push bp mov bp, sp push si push di mov di, [bp+arg_0] mov si, [bp+arg_8] push si push [bp+arg_2] push [bp+arg_4] push di call sub_D7EC push si push [bp+arg_6] push [bp+arg_2] push di call sub_D8FF push si push [bp+arg_6] push [bp+arg_2] push [bp+arg_4] call sub_D8FF push si push [bp+arg_6] push [bp+arg_4] push di call sub_D7EC add sp, 20h pop di pop si pop bp retf sub_E055 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_E099 proc far arg_0 = word ptr 6 arg_2 = dword ptr 8 push bp mov bp, sp push si push di xor cx, cx mov ax, [bp+arg_0] mov bx, 40h cwd idiv bx mov bx, 8 cwd idiv bx mov si, dx jmp short loc_E0FB ; --------------------------------------------------------------------------- loc_E0B3: les bx, [bp+arg_2] mov al, es:[bx] mov ah, 0 mov bx, ax test __mbctype+1[bx], 4 jz short loc_E0F3 mov bx, word ptr [bp+arg_2] mov al, es:[bx] cbw shl ax, 8 mov dl, es:[bx] mov dh, 0 add ax, dx mov di, ax inc word ptr [bp+arg_2] inc word ptr [bp+arg_2] cmp di, 8540h jb short loc_E0E9 cmp di, 869Eh jbe short loc_E0EE loc_E0E9: add cx, 10h jmp short loc_E0F9 ; --------------------------------------------------------------------------- loc_E0EE: add cx, 8 jmp short loc_E0F9 ; --------------------------------------------------------------------------- loc_E0F3: add cx, 8 inc word ptr [bp+arg_2] loc_E0F9: add cx, si loc_E0FB: les bx, [bp+arg_2] cmp byte ptr es:[bx], 0 jnz short loc_E0B3 mov ax, cx sub ax, si pop di pop si pop bp retf sub_E099 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_E10C proc far var_3A = byte ptr -3Ah var_1A = word ptr -1Ah var_18 = word ptr -18h var_16 = word ptr -16h var_14 = word ptr -14h var_12 = word ptr -12h var_10 = word ptr -10h var_E = word ptr -0Eh var_C = word ptr -0Ch var_A = word ptr -0Ah var_8 = dword ptr -8 var_4 = word ptr -4 var_2 = word ptr -2 arg_0 = word ptr 6 arg_2 = word ptr 8 arg_4 = word ptr 0Ah arg_6 = dword ptr 0Ch enter 3Ah, 0 push si push di mov si, [bp+arg_0] mov ax, [bp+arg_4] mov bx, 10h cwd idiv bx mov bx, 4 cwd idiv bx mov [bp+var_E], dx mov ax, [bp+arg_4] mov bx, 40h cwd idiv bx mov bx, 8 cwd idiv bx mov [bp+var_10], dx mov ax, [bp+arg_4] and ax, 200h mov [bp+var_12], ax mov ax, [bp+arg_4] and ax, 400h mov [bp+var_14], ax mov ax, [bp+arg_4] and ax, 800h mov [bp+var_16], ax cmp [bp+var_12], 0 jz short loc_E1AB pushd [bp+arg_6] push [bp+arg_4] call sub_E099 add sp, 6 mov [bp+var_18], ax cmp [bp+var_14], 0 jz short loc_E18E push 0 mov ax, [bp+arg_2] add ax, 11h push ax mov ax, si add ax, [bp+var_18] dec ax push ax push [bp+arg_2] push si call sub_DF3A add sp, 0Ah jmp short loc_E1C2 ; --------------------------------------------------------------------------- loc_E18E: push 0 mov ax, [bp+arg_2] add ax, 0Fh push ax mov ax, si add ax, [bp+var_18] dec ax push ax push [bp+arg_2] push si call sub_DF3A add sp, 0Ah jmp short loc_E1DA ; --------------------------------------------------------------------------- loc_E1AB: cmp [bp+var_14], 0 jz short loc_E1DA pushd [bp+arg_6] push [bp+arg_4] call sub_E099 add sp, 6 mov [bp+var_18], ax loc_E1C2: push 7 mov ax, [bp+arg_2] add ax, 11h push ax mov ax, si add ax, [bp+var_18] dec ax push ax push si call sub_D7EC add sp, 8 loc_E1DA: push [bp+arg_4] call _grcg_setcolor_rmw pop cx mov dx, 68h ; 'h' mov al, 0Bh out dx, al jmp loc_E412 ; --------------------------------------------------------------------------- loc_E1EB: mov ax, [bp+arg_2] imul ax, 50h push ax mov ax, si mov bx, 8 cwd idiv bx pop dx add dx, ax mov word ptr [bp+var_8+2], 0A800h mov word ptr [bp+var_8], dx mov ax, si cwd idiv bx mov [bp+var_C], dx les bx, [bp+arg_6] mov al, es:[bx] mov ah, 0 mov bx, ax test __mbctype+1[bx], 4 jz short loc_E240 mov bx, word ptr [bp+arg_6] mov al, es:[bx] cbw shl ax, 8 mov dl, es:[bx+1] mov dh, 0 add ax, dx push ax call __mbcjmstojis pop cx mov [bp+var_2], ax add word ptr [bp+arg_6], 2 jmp short loc_E286 ; --------------------------------------------------------------------------- loc_E240: les bx, [bp+arg_6] mov al, es:[bx] mov ah, 0 mov bx, ax test __mbctype+1[bx], 3 jz short loc_E25E mov bx, word ptr [bp+arg_6] mov al, es:[bx] mov ah, 0 add ax, 2980h jmp short loc_E279 ; --------------------------------------------------------------------------- loc_E25E: les bx, [bp+arg_6] mov al, es:[bx] cbw mov bx, ax test byte ptr [bx+0EEBh], 5Eh jz short loc_E27E mov bx, word ptr [bp+arg_6] mov al, es:[bx] mov ah, 0 add ax, 2900h loc_E279: mov [bp+var_2], ax jmp short loc_E283 ; --------------------------------------------------------------------------- loc_E27E: mov [bp+var_2], 2B21h loc_E283: inc word ptr [bp+arg_6] loc_E286: mov al, byte ptr [bp+var_2] and al, 0FFh mov dx, 0A1h ; '。' out dx, al mov ax, [bp+var_2] shr ax, 8 sub al, 20h ; ' ' mov dx, 0A3h ; '」' out dx, al cmp [bp+var_2], 2921h jb short loc_E2E7 cmp [bp+var_2], 2B7Eh ja short loc_E2E7 cmp si, 278h jg loc_E41D mov [bp+var_1A], 0 jmp short loc_E2DA ; --------------------------------------------------------------------------- loc_E2B8: mov al, byte ptr [bp+var_1A] or al, 20h mov dx, 0A5h ; '・' out dx, al mov dx, 0A9h ; 'ゥ' in al, dx mov ah, 0 shl ax, 8 mov bx, [bp+var_1A] add bx, bx lea dx, [bp+var_3A] add bx, dx mov ss:[bx], ax inc [bp+var_1A] loc_E2DA: cmp [bp+var_1A], 10h jl short loc_E2B8 mov [bp+var_A], 0 jmp short loc_E33D ; --------------------------------------------------------------------------- loc_E2E7: cmp si, 270h jg loc_E41D mov [bp+var_1A], 0 jmp short loc_E332 ; --------------------------------------------------------------------------- loc_E2F6: mov al, byte ptr [bp+var_1A] or al, 20h mov dx, 0A5h ; '・' out dx, al mov dx, 0A9h ; 'ゥ' in al, dx mov ah, 0 shl ax, 8 mov bx, [bp+var_1A] add bx, bx lea dx, [bp+var_3A] add bx, dx mov ss:[bx], ax mov dx, 0A5h ; '・' mov al, byte ptr [bp+var_1A] out dx, al mov dx, 0A9h ; 'ゥ' in al, dx mov ah, 0 mov bx, [bp+var_1A] add bx, bx lea dx, [bp+var_3A] add bx, dx add ss:[bx], ax inc [bp+var_1A] loc_E332: cmp [bp+var_1A], 10h jl short loc_E2F6 mov [bp+var_A], 1 loc_E33D: mov [bp+var_1A], 0 jmp loc_E3F9 ; --------------------------------------------------------------------------- loc_E345: mov bx, [bp+var_1A] add bx, bx lea ax, [bp+var_3A] add bx, ax mov ax, ss:[bx] mov [bp+var_4], ax mov ax, [bp+var_E] cmp ax, 1 jz short loc_E369 cmp ax, 2 jz short loc_E37F cmp ax, 3 jz short loc_E375 jmp short loc_E395 ; --------------------------------------------------------------------------- loc_E369: mov di, [bp+var_4] mov ax, di add ax, ax or [bp+var_4], ax jmp short loc_E395 ; --------------------------------------------------------------------------- loc_E375: mov di, [bp+var_4] mov ax, di add ax, ax or [bp+var_4], ax loc_E37F: mov di, [bp+var_4] mov ax, di add ax, ax or [bp+var_4], ax xor di, [bp+var_4] mov ax, di add ax, ax not ax and [bp+var_4], ax loc_E395: cmp [bp+var_16], 0 jz short loc_E3AC cmp [bp+var_A], 0 jz short loc_E3A7 xor [bp+var_4], 0FFFFh jmp short loc_E3AC ; --------------------------------------------------------------------------- loc_E3A7: xor [bp+var_4], 0FF00h loc_E3AC: cmp [bp+var_C], 0 jz short loc_E3DF mov cl, byte ptr [bp+var_C] add cl, 8 mov ax, [bp+var_4] shr ax, cl les bx, [bp+var_8] mov es:[bx], al mov ax, [bp+var_4] mov cl, byte ptr [bp+var_C] shr ax, cl mov es:[bx+1], al mov cl, 8 sub cl, byte ptr [bp+var_C] mov al, byte ptr [bp+var_4] shl al, cl mov es:[bx+2], al jmp short loc_E3F2 ; --------------------------------------------------------------------------- loc_E3DF: mov ax, [bp+var_4] shr ax, 8 les bx, [bp+var_8] mov es:[bx], al mov al, byte ptr [bp+var_4] mov es:[bx+1], al loc_E3F2: add word ptr [bp+var_8], 50h ; 'P' inc [bp+var_1A] loc_E3F9: cmp [bp+var_1A], 10h jl loc_E345 cmp [bp+var_A], 0 jz short loc_E40A add si, 8 loc_E40A: mov ax, [bp+var_10] add ax, 8 add si, ax loc_E412: les bx, [bp+arg_6] cmp byte ptr es:[bx], 0 jnz loc_E1EB loc_E41D: mov dx, 68h ; 'h' mov al, 0Ah out dx, al call _grcg_off_func pop di pop si leave retf sub_E10C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_E42B proc far var_156 = byte ptr -156h var_106 = byte ptr -106h var_B6 = byte ptr -0B6h dest = byte ptr -66h var_16 = word ptr -16h var_13 = byte ptr -13h var_12 = dword ptr -12h var_E = dword ptr -0Eh var_A = dword ptr -0Ah _src = dword ptr -6 var_2 = word ptr -2 arg_0 = word ptr 6 arg_2 = word ptr 8 arg_4 = word ptr 0Ah arg_6 = word ptr 0Ch enter 156h, 0 push si push di mov di, [bp+arg_0] mov ax, [bp+arg_4] sub ax, di mov bx, 8 cwd idiv bx mov si, ax mov ax, [bp+arg_6] sub ax, [bp+arg_2] mov [bp+var_2], ax mov [bp+_src], 0A8000000h mov [bp+var_A], 0B0000000h mov [bp+var_E], 0B8000000h mov [bp+var_12], 0E0000000h mov al, _graph_page xor al, 1 mov [bp+var_13], al mov ax, di cwd idiv bx mov dx, [bp+arg_2] imul dx, 50h add ax, dx add word ptr [bp+_src], ax mov ax, di cwd idiv bx mov dx, [bp+arg_2] imul dx, 50h add ax, dx add word ptr [bp+var_A], ax mov ax, di cwd idiv bx mov dx, [bp+arg_2] imul dx, 50h add ax, dx add word ptr [bp+var_E], ax mov ax, di cwd idiv bx mov dx, [bp+arg_2] imul dx, 50h add ax, dx add word ptr [bp+var_12], ax mov [bp+var_16], 0 jmp loc_E55F ; --------------------------------------------------------------------------- loc_E4BA: push si ; n pushd [bp+_src] ; src push ss lea ax, [bp+dest] push ax ; dest call _memcpy push si ; n pushd [bp+var_A] ; src push ss lea ax, [bp+var_B6] push ax ; dest call _memcpy push si ; n pushd [bp+var_E] ; src push ss lea ax, [bp+var_106] push ax ; dest call _memcpy push si ; n pushd [bp+var_12] ; src push ss lea ax, [bp+var_156] push ax ; dest call _memcpy mov dx, 0A6h ; 'ヲ' mov al, [bp+var_13] out dx, al push si ; n push ss lea ax, [bp+dest] push ax ; src pushd [bp+_src] ; dest call _memcpy add sp, 32h push si ; n push ss lea ax, [bp+var_B6] push ax ; src pushd [bp+var_A] ; dest call _memcpy push si ; n push ss lea ax, [bp+var_106] push ax ; src pushd [bp+var_E] ; dest call _memcpy push si ; n push ss lea ax, [bp+var_156] push ax ; src pushd [bp+var_12] ; dest call _memcpy add sp, 1Eh mov dx, 0A6h ; 'ヲ' mov al, _graph_page out dx, al add word ptr [bp+_src], 50h ; 'P' add word ptr [bp+var_A], 50h ; 'P' add word ptr [bp+var_E], 50h ; 'P' add word ptr [bp+var_12], 50h ; 'P' inc [bp+var_16] loc_E55F: mov ax, [bp+var_16] cmp ax, [bp+var_2] jl loc_E4BA pop di pop si leave retf sub_E42B endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_E56D proc far var_164 = byte ptr -164h var_114 = byte ptr -114h var_C4 = byte ptr -0C4h dest = byte ptr -74h var_24 = word ptr -24h var_22 = dword ptr -22h var_1E = dword ptr -1Eh var_1A = dword ptr -1Ah var_16 = dword ptr -16h var_12 = dword ptr -12h var_E = dword ptr -0Eh var_A = dword ptr -0Ah _src = dword ptr -6 var_2 = word ptr -2 arg_0 = word ptr 6 arg_2 = word ptr 8 arg_4 = word ptr 0Ah arg_6 = word ptr 0Ch arg_8 = word ptr 0Eh arg_A = word ptr 10h arg_C = byte ptr 12h arg_E = byte ptr 14h enter 164h, 0 push si push di mov di, [bp+arg_0] mov ax, [bp+arg_4] sub ax, di mov bx, 8 cwd idiv bx mov si, ax mov ax, [bp+arg_6] sub ax, [bp+arg_2] mov [bp+var_2], ax mov [bp+_src], 0A8000000h mov [bp+var_A], 0B0000000h mov [bp+var_E], 0B8000000h mov [bp+var_12], 0E0000000h mov [bp+var_16], 0A8000000h mov [bp+var_1A], 0B0000000h mov [bp+var_1E], 0B8000000h mov [bp+var_22], 0E0000000h mov ax, di cwd idiv bx mov dx, [bp+arg_2] imul dx, 50h add ax, dx add word ptr [bp+_src], ax mov ax, di cwd idiv bx mov dx, [bp+arg_2] imul dx, 50h add ax, dx add word ptr [bp+var_A], ax mov ax, di cwd idiv bx mov dx, [bp+arg_2] imul dx, 50h add ax, dx add word ptr [bp+var_E], ax mov ax, di cwd idiv bx mov dx, [bp+arg_2] imul dx, 50h add ax, dx add word ptr [bp+var_12], ax mov ax, [bp+arg_8] cwd idiv bx mov dx, [bp+arg_A] imul dx, 50h add ax, dx add word ptr [bp+var_16], ax mov ax, [bp+arg_8] cwd idiv bx mov dx, [bp+arg_A] imul dx, 50h add ax, dx add word ptr [bp+var_1A], ax mov ax, [bp+arg_8] cwd idiv bx mov dx, [bp+arg_A] imul dx, 50h add ax, dx add word ptr [bp+var_1E], ax mov ax, [bp+arg_8] cwd idiv bx mov dx, [bp+arg_A] imul dx, 50h add ax, dx add word ptr [bp+var_22], ax mov [bp+var_24], 0 jmp loc_E70D ; --------------------------------------------------------------------------- loc_E658: push si ; n pushd [bp+_src] ; src push ss lea ax, [bp+dest] push ax ; dest call _memcpy push si ; n pushd [bp+var_A] ; src push ss lea ax, [bp+var_C4] push ax ; dest call _memcpy push si ; n pushd [bp+var_E] ; src push ss lea ax, [bp+var_114] push ax ; dest call _memcpy push si ; n pushd [bp+var_12] ; src push ss lea ax, [bp+var_164] push ax ; dest call _memcpy mov dx, 0A6h ; 'ヲ' mov al, [bp+arg_E] out dx, al push si ; n push ss lea ax, [bp+dest] push ax ; src pushd [bp+var_16] ; dest call _memcpy add sp, 32h push si ; n push ss lea ax, [bp+var_C4] push ax ; src pushd [bp+var_1A] ; dest call _memcpy push si ; n push ss lea ax, [bp+var_114] push ax ; src pushd [bp+var_1E] ; dest call _memcpy push si ; n push ss lea ax, [bp+var_164] push ax ; src pushd [bp+var_22] ; dest call _memcpy add sp, 1Eh mov dx, 0A6h ; 'ヲ' mov al, [bp+arg_C] out dx, al add word ptr [bp+_src], 50h ; 'P' add word ptr [bp+var_A], 50h ; 'P' add word ptr [bp+var_E], 50h ; 'P' add word ptr [bp+var_12], 50h ; 'P' add word ptr [bp+var_16], 50h ; 'P' add word ptr [bp+var_1A], 50h ; 'P' add word ptr [bp+var_1E], 50h ; 'P' add word ptr [bp+var_22], 50h ; 'P' inc [bp+var_24] loc_E70D: mov ax, [bp+var_24] cmp ax, [bp+var_2] jl loc_E658 mov dx, 0A6h ; 'ヲ' mov al, _graph_page out dx, al pop di pop si leave retf sub_E56D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_E722 proc far _s = byte ptr -34h var_33 = byte ptr -33h var_32 = byte ptr -32h var_4 = word ptr -4 var_2 = word ptr -2 arg_0 = byte ptr 6 arg_2 = byte ptr 8 arg_4 = byte ptr 0Ah arg_6 = dword ptr 0Ch arg_A = word ptr 10h enter 34h, 0 push si push di push 300000h ; c push ss lea ax, [bp+_s] push ax ; s call _memset add sp, 8 xor di, di jmp loc_E7C1 ; --------------------------------------------------------------------------- loc_E740: mov ax, di add ax, ax les bx, [bp+arg_6] add bx, ax cmp word ptr es:[bx], 0 jnz short loc_E77E mov bx, di imul bx, 3 lea ax, [bp+_s] add bx, ax mov al, [bp+arg_0] mov ss:[bx], al mov bx, di imul bx, 3 lea ax, [bp+var_33] add bx, ax mov al, [bp+arg_2] mov ss:[bx], al mov bx, di imul bx, 3 lea ax, [bp+var_32] add bx, ax mov al, [bp+arg_4] jmp short loc_E7BD ; --------------------------------------------------------------------------- loc_E77E: mov bx, di imul bx, 3 lea ax, [bp+_s] add bx, ax mov si, di imul si, 3 mov al, [si+0A1Ah] mov ss:[bx], al mov bx, di imul bx, 3 lea ax, [bp+var_33] add bx, ax mov si, di imul si, 3 mov al, [si+0A1Bh] mov ss:[bx], al mov bx, di imul bx, 3 lea ax, [bp+var_32] add bx, ax mov si, di imul si, 3 mov al, [si+0A1Ch] loc_E7BD: mov ss:[bx], al inc di loc_E7C1: cmp di, 10h jl loc_E740 xor di, di jmp loc_E89E ; --------------------------------------------------------------------------- loc_E7CD: call _z_vsync_wait mov [bp+var_2], 0 jmp loc_E88C ; --------------------------------------------------------------------------- loc_E7DA: mov [bp+var_4], 0 jmp short loc_E849 ; --------------------------------------------------------------------------- loc_E7E1: mov bx, [bp+var_2] imul bx, 3 add bx, [bp+var_4] lea ax, [bp+_s] add bx, ax mov al, ss:[bx] mov bx, [bp+var_2] imul bx, 3 add bx, [bp+var_4] cmp al, [bx+0A1Ah] jz short loc_E846 mov bx, [bp+var_2] imul bx, 3 add bx, [bp+var_4] lea ax, [bp+_s] add bx, ax mov al, ss:[bx] mov bx, [bp+var_2] imul bx, 3 add bx, [bp+var_4] cmp al, [bx+0A1Ah] jge short loc_E825 mov al, 1 jmp short loc_E827 ; --------------------------------------------------------------------------- loc_E825: mov al, 0FFh loc_E827: mov bx, [bp+var_2] imul bx, 3 add bx, [bp+var_4] lea dx, [bp+_s] add bx, dx add al, ss:[bx] mov bx, [bp+var_2] imul bx, 3 add bx, [bp+var_4] add bx, dx mov ss:[bx], al loc_E846: inc [bp+var_4] loc_E849: cmp [bp+var_4], 3 jl short loc_E7E1 mov bx, [bp+var_2] imul bx, 3 lea ax, [bp+var_32] add bx, ax mov al, ss:[bx] cbw push ax mov bx, [bp+var_2] imul bx, 3 lea ax, [bp+var_33] add bx, ax mov al, ss:[bx] cbw push ax mov bx, [bp+var_2] imul bx, 3 lea ax, [bp+_s] add bx, ax mov al, ss:[bx] cbw push ax push [bp+var_2] call sub_D119 add sp, 8 inc [bp+var_2] loc_E88C: cmp [bp+var_2], 10h jl loc_E7DA push [bp+arg_A] call _delay pop cx inc di loc_E89E: cmp di, 10h jl loc_E7CD pop di pop si leave retf sub_E722 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_E8A9 proc far inregs = REGS ptr -22h var_12 = byte ptr -12h segp = SREGS ptr -8 enter 22h, 0 push si push di lea ax, [bp+var_12] push ss push ax push ds push offset aPal98Grb ; "pal98 grb" mov cx, 0Ah call SCOPY@ push ss lea ax, [bp+segp] push ax ; segp call _segread add sp, 4 mov byte ptr [bp+inregs+1], 52h ; 'R' push ss lea ax, [bp+segp] push ax ; segregs push ss lea ax, [bp+inregs] push ax ; outregs push ss push ax ; inregs call _intdosx add sp, 0Ch mov bx, word ptr [bp+inregs+2] sub bx, 2 mov es, [bp+segp+SREGS._es] mov si, es:[bx] loc_E8F1: mov es, si cmp word ptr es:1, 0 jz short loc_E91A xor di, di jmp short loc_E90B ; --------------------------------------------------------------------------- loc_E8FF: mov es, si mov al, es:[di+10h] cmp al, [bp+di+var_12] jnz short loc_E910 inc di loc_E90B: cmp di, 0Ah jl short loc_E8FF loc_E910: cmp di, 0Ah jnz short loc_E91A lea ax, [si+1] jmp short loc_E933 ; --------------------------------------------------------------------------- loc_E91A: mov es, si cmp byte ptr es:0, 4Dh ; 'M' jz short loc_E928 xor ax, ax jmp short loc_E933 ; --------------------------------------------------------------------------- loc_E928: mov es, si mov ax, es:3 inc ax add si, ax jmp short loc_E8F1 ; --------------------------------------------------------------------------- loc_E933: pop di pop si leave retf sub_E8A9 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_E937 proc far var_4 = dword ptr -4 enter 4, 0 push si push di call sub_E8A9 mov di, ax or di, di jz short loc_E97D mov word ptr [bp+var_4+2], di mov word ptr [bp+var_4], 10h xor si, si jmp short loc_E974 ; --------------------------------------------------------------------------- loc_E953: les bx, [bp+var_4] mov al, es:[bx+2] cbw push ax mov al, es:[bx] cbw push ax mov al, es:[bx+1] cbw push ax push si call sub_D222 add sp, 8 add word ptr [bp+var_4], 3 inc si loc_E974: cmp si, 10h jl short loc_E953 xor ax, ax jmp short loc_E980 ; --------------------------------------------------------------------------- loc_E97D: mov ax, 1 loc_E980: pop di pop si leave retf sub_E937 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_E984 proc far var_4 = dword ptr -4 enter 4, 0 push si push di call sub_E8A9 mov di, ax or di, di jz short loc_E9DD mov word ptr [bp+var_4+2], di mov word ptr [bp+var_4], 10h xor si, si jmp short loc_E9D4 ; --------------------------------------------------------------------------- loc_E9A0: mov bx, si imul bx, 3 mov al, [bx+0A1Bh] les bx, [bp+var_4] mov es:[bx], al mov bx, si imul bx, 3 mov al, [bx+0A1Ah] mov bx, word ptr [bp+var_4] mov es:[bx+1], al mov bx, si imul bx, 3 mov al, [bx+0A1Ch] mov bx, word ptr [bp+var_4] mov es:[bx+2], al add word ptr [bp+var_4], 3 inc si loc_E9D4: cmp si, 10h jl short loc_E9A0 xor ax, ax jmp short loc_E9E0 ; --------------------------------------------------------------------------- loc_E9DD: mov ax, 1 loc_E9E0: pop di pop si leave retf sub_E984 endp fuuin_08_TEXT ends ; =========================================================================== ; Segment type: Pure code fuuin_09_TEXT segment byte public 'CODE' use16 assume cs:fuuin_09_TEXT ;org 4 assume es:nothing, ss:nothing, ds:_DATA, fs:nothing, gs:nothing ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl __far sub_E9E4(int, int, int, char *format, char arglist) sub_E9E4 proc far @@buffer = byte ptr -104h var_4 = word ptr -4 var_2 = word ptr -2 arg_0 = word ptr 6 arg_2 = word ptr 8 arg_4 = word ptr 0Ah _format = dword ptr 0Ch _arglist = byte ptr 10h enter 104h, 0 lea ax, [bp+_arglist] mov [bp+var_2], ss mov [bp+var_4], ax push [bp+var_2] push ax ; arglist pushd [bp+_format] ; format push ss lea ax, [bp+@@buffer] push ax ; buffer call _vsprintf push ss lea ax, [bp+@@buffer] push ax push [bp+arg_4] push [bp+arg_2] push [bp+arg_0] call sub_E10C add sp, 16h leave retf sub_E9E4 endp fuuin_09_TEXT ends ; =========================================================================== ; Segment type: Pure code fuuin_10_TEXT segment byte public 'CODE' use16 assume cs:fuuin_10_TEXT ;org 0Dh assume es:nothing, ss:nothing, ds:_DATA, fs:nothing, gs:nothing ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_EA1D proc far arg_0 = word ptr 6 arg_2 = word ptr 8 push bp mov bp, sp push [bp+arg_2] push [bp+arg_0] call file_ropen or ax, ax jnz short loc_EA34 mov ax, 1 pop bp retf ; --------------------------------------------------------------------------- loc_EA34: push 0 push 12h push 0 call file_seek push ds push offset unk_141AA push 30h ; '0' call file_read push word_13507 call sub_C842 call file_close xor ax, ax pop bp retf sub_EA1D endp ; --------------------------------------------------------------------------- pop bp retf ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_EA5E proc far arg_0 = word ptr 6 arg_2 = word ptr 8 push bp mov bp, sp push [bp+arg_2] push [bp+arg_0] call file_ropen or ax, ax jnz short loc_EA75 mov ax, 1 pop bp retf ; --------------------------------------------------------------------------- loc_EA75: push 0 push 12h push 0 call file_seek push ds push offset unk_141AA push 30h ; '0' call file_read call file_close xor ax, ax pop bp retf sub_EA5E endp ; --------------------------------------------------------------------------- pop bp retf ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_EA96 proc far stream = dword ptr 6 push bp mov bp, sp push si push di les bx, [bp+stream] dec word ptr es:[bx] jl short loc_EABB les bx, [bp+stream] mov dx, es:[bx+0Eh] mov si, es:[bx+0Ch] inc word ptr es:[bx+0Ch] mov es, dx mov al, es:[si] mov ah, 0 jmp short loc_EAC9 ; --------------------------------------------------------------------------- loc_EABB: push word ptr [bp+stream+2] push word ptr [bp+stream] ; stream call __fgetc add sp, 4 loc_EAC9: mov di, ax les bx, [bp+stream] dec word ptr es:[bx] jl short loc_EAEB les bx, [bp+stream] mov dx, es:[bx+0Eh] mov si, es:[bx+0Ch] inc word ptr es:[bx+0Ch] mov es, dx mov al, es:[si] mov ah, 0 jmp short loc_EAF9 ; --------------------------------------------------------------------------- loc_EAEB: push word ptr [bp+stream+2] push word ptr [bp+stream] ; stream call __fgetc add sp, 4 loc_EAF9: shl ax, 8 add di, ax mov ax, di jmp short $+2 pop di pop si pop bp retf sub_EA96 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_EB06 proc far arg_0 = dword ptr 6 push bp mov bp, sp xor dx, dx jmp short loc_EB32 ; --------------------------------------------------------------------------- loc_EB0D: xor cx, cx jmp short loc_EB2C ; --------------------------------------------------------------------------- loc_EB11: mov ax, dx imul ax, 3 les bx, [bp+arg_0] add bx, ax add bx, cx mov al, es:[bx] mov bx, dx imul bx, 3 add bx, cx mov [bx+170Ah], al inc cx loc_EB2C: cmp cx, 3 jl short loc_EB11 inc dx loc_EB32: cmp dx, 10h jl short loc_EB0D pop bp retf sub_EB06 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_EB39 proc far var_1 = byte ptr -1 arg_0 = word ptr 6 arg_2 = word ptr 8 enter 2, 0 push si xor si, si push 4000h call @$bnwa$qui pop cx mov word_1464C, dx mov off_1464A, ax cmp word_134F8, 1 jnz short loc_EB5A or si, 2 loc_EB5A: cmp byte_13509, 1 jnz short loc_EB64 mov si, 0F40h loc_EB64: cmp word_134FA, 1 jnz short loc_EB8E push si push 64h ; 'd' push 0 push 0 push 4000h push word_1464C push off_1464A push [bp+arg_2] push [bp+arg_0] call _PiLoadL add sp, 12h mov [bp+var_1], al loc_EB8E: cmp word_134F8, 1 jnz short loc_EBA1 push [bp+arg_2] push [bp+arg_0] call sub_EA1D jmp short loc_EBAB ; --------------------------------------------------------------------------- loc_EBA1: push [bp+arg_2] push [bp+arg_0] call sub_EA5E loc_EBAB: add sp, 4 push word_1464C push off_1464A ; font call @$bdla$qnv add sp, 4 mov al, [bp+var_1] cbw jmp short $+2 pop si leave retf sub_EB39 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_EBC7 proc far var_2 = word ptr -2 arg_0 = word ptr 6 arg_2 = word ptr 8 enter 2, 0 mov word_134F8, 0 push [bp+arg_2] push [bp+arg_0] call sub_EB39 add sp, 4 mov [bp+var_2], ax mov word_134F8, 1 mov ax, [bp+var_2] leave retf sub_EBC7 endp ; --------------------------------------------------------------------------- leave retf ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_EBEE proc far var_2 = word ptr -2 arg_0 = word ptr 6 arg_2 = word ptr 8 enter 2, 0 mov word_134FA, 0 push [bp+arg_2] push [bp+arg_0] call sub_EB39 add sp, 4 mov [bp+var_2], ax mov word_134FA, 1 mov ax, [bp+var_2] leave retf sub_EBEE endp ; --------------------------------------------------------------------------- leave retf ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_EC15 proc far var_2 = word ptr -2 arg_0 = word ptr 6 arg_2 = word ptr 8 enter 2, 0 mov byte_13509, 1 mov word_134F8, 0 push [bp+arg_2] push [bp+arg_0] call sub_EB39 add sp, 4 mov [bp+var_2], ax mov word_134F8, 1 mov byte_13509, 0 mov ax, [bp+var_2] leave retf sub_EC15 endp fuuin_10_TEXT ends ; --------------------------------------------------------------------------- ; =========================================================================== fuuin_11_TEXT segment byte public 'CODE' use16 leave retf extern VRAM_PLANES_SET:proc extern _egc_copy_rect_1_to_0:proc fuuin_11_TEXT ends ; =========================================================================== ; Segment type: Pure code fuuin_12_TEXT segment byte public 'CODE' use16 extern _graph_slow_2xscale_rect_1_to_0:proc fuuin_12_TEXT ends ; =========================================================================== ; Segment type: Pure code fuuin_13_TEXT segment byte public 'CODE' use16 assume cs:fuuin_13_TEXT assume es:nothing, ss:nothing, ds:_DATA, fs:nothing, gs:nothing ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_EF80 proc far s2 = byte ptr -1Ch s1 = byte ptr -10h var_4 = dword ptr -4 enter 1Ch, 0 push si lea ax, [bp+s2] push ss push ax push ds push offset aMdrv2system ; "Mdrv2System" mov cx, 0Ch call SCOPY@ xor ax, ax mov es, ax movsx eax, word ptr es:[03CAh] shl eax, 10h add eax, 102h shld edx, eax, 10h mov word ptr [bp+var_4+2], dx mov word ptr [bp+var_4], ax xor si, si jmp short loc_EFC6 ; --------------------------------------------------------------------------- loc_EFBA: les bx, [bp+var_4] assume es:nothing add bx, si mov al, es:[bx] mov [bp+si+s1], al inc si loc_EFC6: cmp si, 0Ch jl short loc_EFBA push ss lea ax, [bp+s2] push ax ; s2 push ss lea ax, [bp+s1] push ax ; s1 call _strcmp add sp, 8 or ax, ax jz short loc_EFE5 xor ax, ax jmp short loc_EFE8 ; --------------------------------------------------------------------------- loc_EFE5: mov ax, 1 loc_EFE8: pop si leave retf sub_EF80 endp extern _mdrv2_bgm_load:proc extern _mdrv2_se_load:proc extern _mdrv2_bgm_play:proc extern _mdrv2_bgm_stop:proc extern _mdrv2_bgm_fade_out_nonblock:proc extern _mdrv2_check_board:proc extern _mdrv2_se_play:proc fuuin_13_TEXT ends .data _score dd 100000 _score_highest dd 100000 aReiidenconfig db 'ReiidenConfig',0 aErrorEnd_flagI db 'ERROR : end_flag is not ture !!',0 ; char s[] s db 'ERROR : cfg_id is not alloc!!',0 aReiidenconfi_0 db 'ReiidenConfig',0 ; char path[] path db 'op',0 ; char arg0[3] arg0 db 'op',0 db 0 byte_12B99 db 0 byte_12B9A db 0 byte_12B9B db 0 byte_12B9C db 0 byte_12B9D db 0 db 0 byte_12B9F db 0 byte_12BA0 db 0 byte_12BA1 db 0 byte_12BA2 db 0 byte_12BA3 db 0 dd 0 db 49h ; I db 81h db 48h ; H db 81h db 94h db 81h db 95h db 81h db 96h db 81h db 98h db 81h db 99h db 81h db 9Fh db 81h db 87h db 81h db 88h db 81h db 89h db 81h db 8Ah db 81h db 63h ; c db 81h db 67h ; g db 81h db 68h ; h db 81h db 5Eh ; ^ db 81h db 44h ; D db 81h db 45h ; E db 81h FULLWIDTH_NUMBERS dd aFW_0, aFW_1, aFW_2, aFW_3, aFW_4 dd aFW_5, aFW_6, aFW_7, aFW_8, aFW_9 aBqbqbqbqbqbqbq db '________',0 aB@b@b@b@b@b@b@ db '        ',0 aHiscore_0 db 'HISCORE',0 off_12C1E dd aB@gcbGwbB@ ; " イージー " dd aB@gmbGGlb@ ; " ノーマル " dd aB@gnbGhb@b@ ; " ハード  " dd aGlgigegbgbgn ; "ルナティック" aFW_0 db '0',0 aFW_1 db '1',0 aFW_2 db '2',0 aFW_3 db '3',0 aFW_4 db '4',0 aFW_5 db '5',0 aFW_6 db '6',0 aFW_7 db '7',0 aFW_8 db '8',0 aFW_9 db '9',0 aC_0 db '無',0 aUmx_0 db '東方★靈異伝  ',0 aHiscore_1 db 'HISCORE',0 aReyhies_dat db 'REYHIES.DAT',0 aReyhino_dat db 'REYHINO.DAT',0 aReyhiha_dat db 'REYHIHA.DAT',0 ; char src[] src db 'REYHILU.DAT',0 aWB db 'wb',0 aReyhies_dat_0 db 'REYHIES.DAT',0 aReyhino_dat_0 db 'REYHINO.DAT',0 aReyhiha_dat_0 db 'REYHIHA.DAT',0 ; char aReyhilu_dat_0[] aReyhilu_dat_0 db 'REYHILU.DAT',0 ; char aRb[] aRb db 'rb',0 aGtg@gcglvkvVVi db 'ファイルがみつかんない',0 aHiscore db 'HISCORE',0 ; char format[] format db 'ファイルが違う!',0 ; char aCC[] aCC db '%c%c',0 aVb db 'a',0 ; char aCC_0[] aCC_0 db '%c%c',0 ; char aCC_1[] aCC_1 db '%c%c',0 ; char aCC_2[] aCC_2 db '%c%c',0 ; char aSp[] aSp db 'SP',0 ; char aBi[] aBi db '←',0 ; char aBi_0[] aBi_0 db '→',0 ; char aPi[] aPi db '終',0 aB@cB@iB@ db ' 霊 位 ',0 aB@b@cB@b@sob@b db '  名  前  ',0 aB@b@uB@b@u_b@b db '  得  点  ',0 aGxgebGwbeglbGg db 'ステージ・ルート',0 aB@sB@r_b@ db ' 靈 神 ',0 aSMRgcId db '太元帥明王',0 aB@uvb@rxb@ db ' 天 仙 ',0 aB@r_b@rxb@ db ' 神 仙 ',0 aB@tnb@rxb@ db ' 地 仙 ',0 aB@rlb@rxb@ db ' 人 仙 ',0 aB@rxb@pcb@ db ' 仙 女 ',0 aIab@czb@ot db '陰 陽 師',0 aSB@fB@ot db '靈 媒 師',0 aPcb@lB@o db '修 業 者',0 aCvke db '魔界',0 aTnnc db '地獄',0 aB db '−',0 ; char aCC_3[] aCC_3 db '%c%c',0 ; char aSp_0[] aSp_0 db 'SP',0 ; char aBi_1[] aBi_1 db '←',0 ; char aBi_2[] aBi_2 db '→',0 ; char aPi_0[] aPi_0 db '終',0 ; char aCC_4[] aCC_4 db '%c%c',0 ; char aS[] aS db '%s',0 ; char aS_0[] aS_0 db '%s',0 aReyhies_dat_1 db 'REYHIES.DAT',0 aReyhino_dat_1 db 'REYHINO.DAT',0 aReyhiha_dat_1 db 'REYHIHA.DAT',0 ; char aReyhilu_dat_1[] aReyhilu_dat_1 db 'REYHILU.DAT',0 ; char aWb_0[] aWb_0 db 'wb',0 aB@gcbGwbB@ db ' イージー ',0 aB@gmbGGlb@ db ' ノーマル ',0 aB@gnbGhb@b@ db ' ハード  ',0 aGlgigegbgbgn db 'ルナティック',0 ; char aUmx[3] aUmx db '東方靈異伝 強者の記録 %s',0 dd aB@gvguglbB@ ; " モンキー " dd aB@cRlio ; " 類人猿" dd aGzgvgtgsgggugx ; "ホモサピエンス" dd aB@tRl ; " 超人" dd aB@sR_b@ ; " 靈神 " dd aB@r_v ; " 神を超越" dd aVioqclgqbGB ; "お子様ゲーマー" dd aOcf ; "似非スコアラー" dd aGGhglgxgrgagib ; "ミドルスコアラー" dd aGngcgxgrgagib ; "ハイスコアラー" dd aGxbGpbGqbGB ; "スーパーゲーマー" dd aGqbGBV ; "ゲーマーを超越" dd aXevVVViv ; "腐ったみかん" dd aGugbgnbGavO ; "ザックームの実" dd aLTfvCMc ; "禁断の林檎" dd aRvkeo ; "世界樹の葉" dd aIitsluucr_tomo ; "黄帝九鼎神丹経" dd aB@gagagkg ; " アムリタ" off_12EC0 dd aEasy ; " EASY " dd aNormal ; "NORMAL" dd aHard ; " HARD " dd aLunatic ; "LUNATIC" aB@gvguglbB@ db ' モンキー ',0 aB@cRlio db ' 類人猿',0 aGzgvgtgsgggugx db 'ホモサピエンス',0 aB@tRl db ' 超人',0 aB@sR_b@ db ' 靈神 ',0 aB@r_v db ' 神を超越',0 aVioqclgqbGB db 'お子様ゲーマー',0 aOcf db '似非スコアラー',0 aGGhglgxgrgagib db 'ミドルスコアラー',0 aGngcgxgrgagib db 'ハイスコアラー',0 aGxbGpbGqbGB db 'スーパーゲーマー',0 aGqbGBV db 'ゲーマーを超越',0 aXevVVViv db '腐ったみかん',0 aGugbgnbGavO db 'ザックームの実',0 aLTfvCMc db '禁断の林檎',0 aRvkeo db '世界樹の葉',0 aIitsluucr_tomo db '黄帝九鼎神丹経',0 aB@gagagkg db ' アムリタ',0 ; char aIris_mdt[] aIris_mdt db 'iris.mdt',0 aEd1a_grp db 'ED1A.grp',0 aEd1b_grp db 'ED1B.grp',0 aEd1c_grp db 'ED1C.GRP',0 aEd1d_grp db 'ED1D.GRP',0 aEd1e_grp db 'ED1E.GRP',0 ; char aSt1_mdt[] aSt1_mdt db 'st1.mdt',0 aEd2a_grp db 'ed2a.grp',0 aTryToNoContinu db 'Try to ',27h,'No continue',27h,'!!',0 aBadEnding2 db ' Bad Ending2 ',0 aEd4a_grp db 'ed4a.grp',0 aTryToNoConti_0 db 'Try to ',27h,'No continue',27h,'!!',0 aBadEnding1 db ' Bad Ending1 ',0 aEd3a_grp db 'ed3a.grp',0 aEd3b_grp db 'ed3b.grp',0 aCongratulation db 'Congratulations!',0 aGoodEnding2 db ' Good Ending2 ',0 aEd5a_grp db 'ed5a.grp',0 aEd5b_grp db 'ed5b.grp',0 aEd5c_grp db 'ed5c.grp',0 aCongratulati_0 db 'Congratulations!',0 aGoodEnding1 db ' Good Ending1 ',0 ; char aSt1_mdt_0[] aSt1_mdt_0 db 'st1.mdt',0 aEndb_a_grp db 'endb_a.grp',0 aEndb_b_grp db 'endb_b.grp',0 aStage5Boss db 'STAGE 5 BOSS',0 aGatekeeperSing db 'Gatekeeper ',27h,'SinGyoku',27h,0 aStage10Boss db 'STAGE 10 BOSS',0 aEvileyesYuugen db 'EvilEyes ',27h,'YuugenMagan',27h,0 aStage10Boss_0 db 'STAGE 10 BOSS',0 aRevengefulGhos db 'Revengeful Ghost ',27h,'Mima',27h,0 aStage15Boss db 'STAGE 15 BOSS',0 aInnocenceDevil db 'Innocence Devil ',27h,'Elis',27h,0 aStage15Boss_0 db 'STAGE 15 BOSS',0 aHellmoonKikuri db 'HellMoon ',27h,'Kikuri',27h,0 aStage20Boss db 'STAGE 20 BOSS',0 aAngelOfDeathSa db 'Angel of Death',27h,'Sariel',27h,0 aStage20Boss_0 db 'STAGE 20 BOSS',0 aAstralKnightKo db 'Astral Knight ',27h,'Konngara',27h,0 ; char aS_1[] aS_1 db '%s',0 aEasy db ' EASY ',0 aNormal db 'NORMAL',0 aHard db ' HARD ',0 aLunatic db 'LUNATIC',0 aEndm_a_grp db 'endm_a.grp',0 aUmx_1 db '東方靈異伝',0 aVer db 'ver',0 a1_10 db '1.10',0 ; char aUqiUxb[] aUqiUxb@b@b@b@b db '難易度           %s',0 ; char aNbi[3] aNbi db '今回の最高得点       %7lu',0 ; char aNPiuU_b[] aNPiuU_b@b@b@b@ db '最終得点          %7lu',0 ; char aGrgugegbgjgebI[15] aGrgugegbgjgebI db 'コンティニュー回数',0 ; char aB[] aB@r_oB@b@b@b@b db ' 神社    (1面〜5面)   %3lu',0 aB@gqbGgb@b@b@b db ' ゲート   (6面〜10面) %3lu',0 ; char aB[] aB@tkb@b@b@b@b@ db ' 祠     (6面〜10面) %3lu',0 aGfgbgivFpBivpv db ' ヴィナの廃墟(11面〜15面)%3lu',0 ; char aB[] aB@ikvXekeb@b@b db ' 炎の腐界  (11面〜15面)%3lu',0 aSVVVsr_uabivpv db ' 堕ちたる神殿(15面〜20面)%3lu',0 ; char aB[] aB@rVivVsr_uabi db ' 静かなる神殿(15面〜20面)%3lu',0 aCvkeglbGgsnnzb db ' 魔界ルート総合       %5lu',0 ; char aB[] aB@tnncglbGgsnn db ' 地獄ルート総合       %5lu',0 aThankYouForPla db ' Thank you for Playing !! ',0 ; char aBBBVavVVPNjbBB[] aBBBVavVVPNjbBB db '★★★あなたの称号★★★',0 aKo db '完',0 aKo_0 db '完',0 db 0 ; char aC[] aC db '%c',0 ; char aCC_5[] aCC_5 db '%c%c',0 include th01/hardware/vsync[data].asm include th01/ztext[data].asm byte_134B8 db 0 db 0 unk_134BA db 0 dd 0 db 0Fh db 0 db 0Fh db 0 byte_134C3 db 0 byte_134C4 db 0Fh byte_134C5 db 0Fh db 0Fh db 0 db 0 db 0Fh db 0 db 0Fh db 0Fh db 0Fh db 0 byte_134CF db 0Fh byte_134D0 db 0Fh byte_134D1 db 0Fh db 8 db 8 db 8 db 0 db 0 db 0Ah db 0 db 0Ah db 0 db 0 db 0Ah db 0Ah db 0Ah db 0 db 0 db 0Ah db 0 db 0Ah db 0Ah db 0Ah db 0 db 0Ch db 0Ch db 0Ch byte_134EA db 0 word_134EB dw 80h aPal98Grb db 'pal98 grb',0 db 0 word_134F8 dw 1 word_134FA dw 1 dd 0 dd 0 db 0 db 0 db 0 word_13507 dw 64h byte_13509 db 0 public _mdrv2_have_board _mdrv2_have_board db 0 db 0 aMdrv2system db 'Mdrv2System',0 include libs/master.lib/version[data].asm include libs/master.lib/grp[data].asm include libs/master.lib/pal[data].asm include libs/master.lib/respal_exist[data].asm include libs/master.lib/resdata[data].asm include libs/master.lib/fil[data].asm include libs/master.lib/dos_ropen[data].asm include libs/master.lib/clip[data].asm include libs/master.lib/rand[data].asm .data? ; TODO: Missing clip[bss].asm (16 bytes) somewhere in there... _continues_total dd ? ; char word_13EDC[] word_13EDC dw ? word_13EDE dw ? ; char word_13EE0[] word_13EE0 dw ? word_13EE2 dw ? ; char word_13EE4[] word_13EE4 dw ? word_13EE6 dw ? ; char word_13EE8[] word_13EE8 dw ? word_13EEA dw ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? byte_14020 db ? byte_14021 db ? byte_14022 db ? db ? ; void (*font)(void) font dd ? ; void (*off_14028)(void) off_14028 dd ? ; void (*off_1402C)(void) off_1402C dd ? ; int word_14030 word_14030 dw ? ; int word_14032 word_14032 dw ? ; void (*off_14034)(void) off_14034 dd ? db ? ; byte_14039 db ? byte_1403A db ? byte_1403B db ? byte_1403C db ? byte_1403D db ? byte_1403E db ? byte_1403F db ? byte_14040 db ? byte_14041 db ? byte_14042 db ? db ? include th01/hardware/vsync[bss].asm dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? ; void (__interrupt far *off_14150)() off_14150 dd ? word_14154 dw ? word_14156 dw ? db ? ; _graph_page db ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? unk_141AA db ? ; dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? dd ? db ? ; db ? ; db ? ; ; void (*off_1464A)(void) off_1464A dw ? word_1464C dw ? include th01/hardware/vram_planes[bss].asm include libs/master.lib/pal[bss].asm include libs/master.lib/fil[bss].asm dd ? dd ? dd ? dd ? end