ReC98/th01_op.asm

8524 lines
144 KiB
NASM
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

;
; +-------------------------------------------------------------------------+
; | This file has been generated by The Interactive Disassembler (IDA) |
; | Copyright (c) 2009 by Hex-Rays, <support@hex-rays.com> |
; +-------------------------------------------------------------------------+
;
; Input MD5 : AD4E53E1F1A042FBDA82F86B9BD6728C
; File Name : th01/OP.EXE
; Format : MS-DOS executable (EXE)
; Base Address: 0h Range: 0h-14040h Loaded length: 13418h
; 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.inc
include libs/BorlandC/regs.inc
option emulator
extern @$bdla$qnv:proc
extern @$bnwa$qui:proc
extern FTOL@:proc
extern SCOPY@:proc
extern __fgetc:proc
extern __mbcjmstojis:proc
extern __mbctype:byte
extern __mscjmstojis:proc
extern __setargv__:proc ; main() needs both to be set
extern __setenvp__:proc
extern _atol:proc
extern _close:proc
extern _delay:proc
extern _execl:proc
extern _exit:proc
extern _farfree:proc
extern _farmalloc:proc
extern _fclose:proc
extern _filelength:proc
extern _fopen:proc
extern _fputc:proc
extern _fputs:proc
extern _fread: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 _segread:proc
extern _setvect:proc
extern _strcmp:proc
extern _toupper:proc
extern _vsprintf:proc
; ===========================================================================
; Segment type: Pure code
_TEXT segment word public 'CODE' use16
assume cs:_TEXT
assume es:nothing, ds:DGROUP, 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/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/dos_free.asm
include libs/master.lib/keystart.asm
include libs/master.lib/keybios.asm
include libs/master.lib/dos_ropen.asm
include libs/master.lib/egc.asm
include libs/master.lib/random.asm
_TEXT ends
; ---------------------------------------------------------------------------
; ===========================================================================
; Segment type: Pure code
op_01_TEXT segment byte public 'CODE' use16
assume cs:op_01_TEXT
;org 4
assume es:nothing, ss:nothing, ds:_DATA, fs:nothing, gs:nothing
enter 2, 0
push si
push di
xor si, si
jmp short loc_A1E5
; ---------------------------------------------------------------------------
loc_A1CE:
push 190h
call @$bnwa$qui
pop cx
mov bx, si
shl bx, 2
mov [bx+118Eh], dx
mov [bx+118Ch], ax
inc si
loc_A1E5:
cmp si, 50h ; 'P'
jl short loc_A1CE
push 4
call sub_B9C0
push 1
call _graph_accesspage_func
add sp, 4
xor si, si
jmp short loc_A22A
; ---------------------------------------------------------------------------
loc_A1FF:
xor di, di
mov [bp-2], si
jmp short loc_A223
; ---------------------------------------------------------------------------
loc_A206:
les bx, _VRAM_PLANE_B
add bx, [bp-2]
mov al, es:[bx]
mov bx, si
shl bx, 2
les bx, [bx+118Ch]
add bx, di
mov es:[bx], al
inc di
add word ptr [bp-2], 50h ; 'P'
loc_A223:
cmp di, 190h
jl short loc_A206
inc si
loc_A22A:
cmp si, 50h ; 'P'
jl short loc_A1FF
call sub_BA0A
push 0
call _graph_accesspage_func
pop cx
pop di
pop si
leave
retf
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_A240 proc far
_ptr = byte ptr -12h
var_B = byte ptr -0Bh
var_A = byte ptr -0Ah
var_9 = byte ptr -9
var_8 = byte ptr -8
stream = dword ptr -6
var_1 = byte ptr -1
enter 12h, 0
mov [bp+var_1], 0
push ds
push offset aRB ; "rb"
push ds
push offset path ; "reiiden.cfg"
call _fopen
add sp, 8
mov word ptr [bp+stream+2], dx
mov word ptr [bp+stream], ax
or ax, dx
jnz short loc_A266
loc_A262:
mov [bp+var_1], 1
loc_A266:
cmp [bp+var_1], 0
jnz short loc_A2CE
pushd [bp+stream] ; stream
push 0B0001h ; size
push ss
lea ax, [bp+_ptr]
push ax ; ptr
call _fread
add sp, 0Ch
push 7 ; n
push ds
push offset s ; "REIIDEN"
push ss
lea ax, [bp+_ptr]
push ax ; s1
call _memcmp
add sp, 0Ah
or ax, ax
jz short loc_A2A8
pushd [bp+stream] ; stream
call _fclose
add sp, 4
jmp short loc_A262
; ---------------------------------------------------------------------------
loc_A2A8:
mov al, [bp+var_B]
mov byte ptr word_12320, al
mov al, [bp+var_A]
mov byte ptr word_12320+1, al
mov al, [bp+var_9]
mov byte ptr word_12322, al
mov al, [bp+var_8]
mov byte ptr word_12322+1, al
pushd [bp+stream] ; stream
call _fclose
add sp, 4
leave
retf
; ---------------------------------------------------------------------------
loc_A2CE:
mov byte ptr word_12320, 1
mov byte ptr word_12320+1, 1
mov byte ptr word_12322, 1
mov byte ptr word_12322+1, 2
leave
retf
sub_A240 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_A2E4 proc far
stream = dword ptr -6
var_1 = byte ptr -1
enter 6, 0
mov [bp+var_1], 0
push ds
push offset aWb ; "wb"
push ds
push offset path ; "reiiden.cfg"
call _fopen
add sp, 8
mov word ptr [bp+stream+2], dx
mov word ptr [bp+stream], ax
or ax, dx
jnz short loc_A30A
mov [bp+var_1], 1
loc_A30A:
cmp [bp+var_1], 0
jnz short locret_A361
pushd [bp+stream] ; stream
push ds
push offset s ; "REIIDEN"
call _fputs
pushd [bp+stream] ; stream
mov al, byte ptr word_12320
cbw
push ax ; c
call _fputc
pushd [bp+stream] ; stream
mov al, byte ptr word_12320+1
cbw
push ax ; c
call _fputc
pushd [bp+stream] ; stream
mov al, byte ptr word_12322
cbw
push ax ; c
call _fputc
pushd [bp+stream] ; stream
mov al, byte ptr word_12322+1
cbw
push ax ; c
call _fputc
pushd [bp+stream] ; stream
call _fclose
add sp, 24h
locret_A361:
leave
retf
sub_A2E4 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_A363 proc far
var_30 = byte ptr -30h
var_2F = byte ptr -2Fh
outregs = REGS ptr -20h
inregs = REGS ptr -10h
enter 30h, 0
mov byte ptr [bp+inregs+1], 4
mov byte ptr [bp+inregs], 7
push ss
lea ax, [bp+outregs]
push ax ; outregs
push ss
lea ax, [bp+inregs]
push ax ; inregs
push 18h ; intno
call _int86
mov byte ptr [bp+inregs+1], 4
mov byte ptr [bp+inregs], 8
push ss
lea ax, [bp+var_30]
push ax ; outregs
push ss
lea ax, [bp+inregs]
push ax ; inregs
push 18h ; intno
call _int86
add sp, 14h
test byte ptr [bp+outregs+1], 4
jnz short loc_A3A8
test [bp+var_2F], 8
jz short loc_A3C9
loc_A3A8:
cmp word_12334, 0
jnz short loc_A3CF
mov al, byte_12325
dec al
mov byte_12325, al
cbw
or ax, ax
jge short loc_A3C1
mov byte_12325, 3
loc_A3C1:
mov word_12334, 1
jmp short loc_A3CF
; ---------------------------------------------------------------------------
loc_A3C9:
mov word_12334, 0
loc_A3CF:
mov byte ptr [bp+inregs+1], 4
mov byte ptr [bp+inregs], 9
push ss
lea ax, [bp+var_30]
push ax ; outregs
push ss
lea ax, [bp+inregs]
push ax ; inregs
push 18h ; intno
call _int86
add sp, 0Ah
test byte ptr [bp+outregs+1], 20h
jnz short loc_A3F7
test [bp+var_2F], 8
jz short loc_A419
loc_A3F7:
cmp word_12336, 0
jnz short loc_A41F
mov al, byte_12325
inc al
mov byte_12325, al
cbw
cmp ax, 3
jle short loc_A411
mov byte_12325, 0
loc_A411:
mov word_12336, 1
jmp short loc_A41F
; ---------------------------------------------------------------------------
loc_A419:
mov word_12336, 0
loc_A41F:
mov byte ptr [bp+inregs+1], 4
mov byte ptr [bp+inregs], 3
push ss
lea ax, [bp+outregs]
push ax ; outregs
push ss
lea ax, [bp+inregs]
push ax ; inregs
push 18h ; intno
call _int86
add sp, 0Ah
test byte ptr [bp+outregs+1], 10h
jz short loc_A448
mov byte_12327, 1
jmp short loc_A44D
; ---------------------------------------------------------------------------
loc_A448:
mov byte_12327, 0
loc_A44D:
mov byte ptr [bp+inregs+1], 4
mov byte ptr [bp+inregs], 5
push ss
lea ax, [bp+outregs]
push ax ; outregs
push ss
lea ax, [bp+inregs]
push ax ; inregs
push 18h ; intno
call _int86
add sp, 0Ah
test byte ptr [bp+outregs+1], 2
jz short loc_A476
mov byte_12328, 1
jmp short loc_A47B
; ---------------------------------------------------------------------------
loc_A476:
mov byte_12328, 0
loc_A47B:
mov byte ptr [bp+inregs+1], 4
mov byte ptr [bp+inregs], 0
push ss
lea ax, [bp+outregs]
push ax ; outregs
push ss
lea ax, [bp+inregs]
push ax ; inregs
push 18h ; intno
call _int86
add sp, 0Ah
test byte ptr [bp+outregs+1], 1
jz short loc_A4A4
mov byte_12329, 1
leave
retf
; ---------------------------------------------------------------------------
loc_A4A4:
mov byte_12329, 0
leave
retf
sub_A363 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_A4AB proc far
var_30 = byte ptr -30h
var_2F = byte ptr -2Fh
outregs = REGS ptr -20h
inregs = REGS ptr -10h
enter 30h, 0
mov byte ptr [bp+inregs+1], 4
mov byte ptr [bp+inregs], 7
push ss
lea ax, [bp+outregs]
push ax ; outregs
push ss
lea ax, [bp+inregs]
push ax ; inregs
push 18h ; intno
call _int86
mov byte ptr [bp+inregs+1], 4
mov byte ptr [bp+inregs], 8
push ss
lea ax, [bp+var_30]
push ax ; outregs
push ss
lea ax, [bp+inregs]
push ax ; inregs
push 18h ; intno
call _int86
add sp, 14h
test byte ptr [bp+outregs+1], 4
jnz short loc_A4F0
test [bp+var_2F], 8
jz short loc_A512
loc_A4F0:
cmp word_12339, 0
jnz short loc_A518
mov al, byte_12325
dec al
mov byte_12325, al
cbw
or ax, ax
jge short loc_A50A
mov al, byte_12338
mov byte_12325, al
loc_A50A:
mov word_12339, 1
jmp short loc_A518
; ---------------------------------------------------------------------------
loc_A512:
mov word_12339, 0
loc_A518:
test byte ptr [bp+outregs+1], 8
jnz short loc_A524
test [bp+var_2F], 40h
jz short loc_A52B
loc_A524:
mov byte_12326, 1
jmp short loc_A530
; ---------------------------------------------------------------------------
loc_A52B:
mov byte_12326, 0
loc_A530:
mov byte ptr [bp+inregs+1], 4
mov byte ptr [bp+inregs], 9
push ss
lea ax, [bp+var_30]
push ax ; outregs
push ss
lea ax, [bp+inregs]
push ax ; inregs
push 18h ; intno
call _int86
add sp, 0Ah
test byte ptr [bp+outregs+1], 20h
jnz short loc_A558
test [bp+var_2F], 8
jz short loc_A57F
loc_A558:
cmp word_1233B, 0
jnz short loc_A585
mov al, byte_12325
inc al
mov byte_12325, al
cbw
mov dl, byte_12338
mov dh, 0
cmp ax, dx
jle short loc_A577
mov byte_12325, 0
loc_A577:
mov word_1233B, 1
jmp short loc_A585
; ---------------------------------------------------------------------------
loc_A57F:
mov word_1233B, 0
loc_A585:
test byte ptr [bp+outregs+1], 10h
jnz short loc_A591
test [bp+var_2F], 1
jz short loc_A598
loc_A591:
mov byte_1232B, 1
jmp short loc_A59D
; ---------------------------------------------------------------------------
loc_A598:
mov byte_1232B, 0
loc_A59D:
mov byte ptr [bp+inregs+1], 4
mov byte ptr [bp+inregs], 3
push ss
lea ax, [bp+outregs]
push ax ; outregs
push ss
lea ax, [bp+inregs]
push ax ; inregs
push 18h ; intno
call _int86
add sp, 0Ah
test byte ptr [bp+outregs+1], 10h
jz short loc_A5C6
mov byte_12327, 1
jmp short loc_A5CB
; ---------------------------------------------------------------------------
loc_A5C6:
mov byte_12327, 0
loc_A5CB:
mov byte ptr [bp+inregs+1], 4
mov byte ptr [bp+inregs], 5
push ss
lea ax, [bp+outregs]
push ax ; outregs
push ss
lea ax, [bp+inregs]
push ax ; inregs
push 18h ; intno
call _int86
add sp, 0Ah
test byte ptr [bp+outregs+1], 2
jz short loc_A5F4
mov byte_12328, 1
jmp short loc_A5F9
; ---------------------------------------------------------------------------
loc_A5F4:
mov byte_12328, 0
loc_A5F9:
mov byte ptr [bp+inregs+1], 4
mov byte ptr [bp+inregs], 0
push ss
lea ax, [bp+outregs]
push ax ; outregs
push ss
lea ax, [bp+inregs]
push ax ; inregs
push 18h ; intno
call _int86
add sp, 0Ah
test byte ptr [bp+outregs+1], 1
jz short loc_A622
mov byte_12329, 1
leave
retf
; ---------------------------------------------------------------------------
loc_A622:
mov byte_12329, 0
leave
retf
sub_A4AB endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_A629 proc far
arg_0 = word ptr 6
push bp
mov bp, sp
push si
push di
mov ax, [bp+arg_0]
shl ax, 6
mov dx, [bp+arg_0]
shl dx, 4
add ax, dx
mov si, ax
push 0Fh
call sub_B976
pop cx
xor di, di
jmp short loc_A65C
; ---------------------------------------------------------------------------
loc_A64A:
les bx, _VRAM_PLANE_B
add bx, si
mov dword ptr es:[bx], 0FFFFFFFFh
inc di
add si, 4
loc_A65C:
cmp di, 14h
jl short loc_A64A
call sub_BA0A
pop di
pop si
pop bp
retf
sub_A629 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_A66A proc far
var_192 = byte ptr -192h
var_2 = word ptr -2
enter 192h, 0
push si
push di
mov [bp+var_2], 0
xor si, si
xor di, di
lea ax, [bp+var_192]
push ss
push ax
push ds
push offset unk_1233D
mov cx, 190h
call SCOPY@
jmp short loc_A6F5
; ---------------------------------------------------------------------------
loc_A68D:
push 10280h
push si
push 0
call _egc_copy_rect_1_to_0
add sp, 8
push 10280h
push di
push 0
call _egc_copy_rect_1_to_0
add sp, 8
loc_A6AF:
call IRand
mov bx, 190h
cwd
idiv bx
mov si, dx
cmp [bp+si+var_192], 0
jnz short loc_A6AF
mov [bp+si+var_192], 1
loc_A6C8:
call IRand
mov bx, 190h
cwd
idiv bx
mov di, dx
cmp [bp+di+var_192], 0
jnz short loc_A6C8
mov [bp+di+var_192], 1
push si
call sub_A629
pop cx
push di
call sub_A629
pop cx
push 1
call sub_B269
pop cx
loc_A6F5:
mov ax, [bp+var_2]
inc [bp+var_2]
cmp ax, 64h ; 'd'
jb short loc_A68D
push 1
call _graph_accesspage_func
pop cx
call sub_BB85
push 0
call _graph_accesspage_func
pop cx
pop di
pop si
leave
retf
sub_A66A endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_A719 proc far
push bp
mov bp, sp
push ds
push offset aReimu_mdt ; "reimu.mdt"
call _mdrv2_bgm_load
add sp, 4
call _mdrv2_bgm_play
push 1
call _graph_accesspage_func
pop cx
push ds
push offset aReiiden2_grp ; "REIIDEN2.grp"
call sub_DAEC
add sp, 4
call sub_BC6D
call sub_BB85
push ds
push offset aReiiden3_grp ; "REIIDEN3.grp"
call sub_DB6F
add sp, 4
push 0
call _graph_accesspage_func
pop cx
call sub_BC8B
push 64h ; 'd'
call sub_B269
pop cx
call sub_A66A
pop bp
retf
sub_A719 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_A772 proc far
push bp
mov bp, sp
push 1
call _graph_accesspage_func
pop cx
call sub_BB85
push 0
call _graph_accesspage_func
pop cx
push ds
push offset aOp_win_grp ; "op_win.grp"
call sub_DBAF
add sp, 4
call sub_BB85
pop bp
retf
sub_A772 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_A79D proc far
push bp
mov bp, sp
mov al, byte_1232F
cbw
cmp ax, 1
jnz short loc_A7AE
call _resident_free
loc_A7AE:
call key_end
pop bp
retf
sub_A79D endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_A7B5 proc far
push bp
mov bp, sp
push si
call sub_A2E4
pushd [dword_13418]
push word_12322+1
push word_12322
push word_12320+1
push word_12320
call _resident_stuff_set
add sp, 0Ch
call sub_A79D
call _mdrv2_bgm_fade_out_nonblock
call sub_B757
mov al, _mode
cbw
cmp ax, 2
jnz short loc_A7FC
les bx, _reiidenconfig
mov es:[bx+reiidenconfig_t.mode], 1
jmp short loc_A820
; ---------------------------------------------------------------------------
loc_A7FC:
mov al, _mode
cbw
cmp ax, 3
jnz short loc_A810
les bx, _reiidenconfig
mov es:[bx+reiidenconfig_t.mode], 3
jmp short loc_A820
; ---------------------------------------------------------------------------
loc_A810:
cmp _mode, 0
jnz short loc_A820
les bx, _reiidenconfig
mov es:[bx+reiidenconfig_t.mode], 0
loc_A820:
les bx, _reiidenconfig
mov es:[bx+reiidenconfig_t.route], 0
mov es:[bx+reiidenconfig_t.stage], 0
mov al, byte ptr word_12322+1
add al, 2
mov es:[bx+reiidenconfig_t.rem_lives], al
mov es:[bx+reiidenconfig_t.p_value], 0
xor si, si
jmp short loc_A867
; ---------------------------------------------------------------------------
loc_A842:
mov ax, si
add ax, ax
les bx, _reiidenconfig
add bx, ax
mov es:[bx+reiidenconfig_t.continues_per_scene], 0
mov ax, si
shl ax, 2
mov bx, word ptr _reiidenconfig
add bx, ax
mov es:[bx+reiidenconfig_t.bonus_per_stage], 0
inc si
loc_A867:
cmp si, 4
jl short loc_A842
les bx, _reiidenconfig
mov es:[bx+reiidenconfig_t.score_highest], 0
mov es:[bx+reiidenconfig_t.continues_total], 0
mov es:[bx+reiidenconfig_t.end_flag], 0
mov es:[bx+reiidenconfig_t.unused_1], 0
mov es:[bx+reiidenconfig_t.snd_need_init], 1
mov es:[bx+reiidenconfig_t.bullet_speed], -4
pushd 0
push ds
push offset aReiiden_0 ; "reiiden"
push ds
push offset aReiiden_0 ; "reiiden"
call _execl
add sp, 0Ch
pop si
pop bp
retf
sub_A7B5 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_A8AD proc far
push bp
mov bp, sp
call sub_A2E4
pushd [dword_13418]
push word_12322+1
push word_12322
push word_12320+1
push word_12320
call _resident_stuff_set
add sp, 0Ch
les bx, _reiidenconfig
cmp es:[bx+reiidenconfig_t.stage], 0
jnz short loc_A8E1
mov ax, seg op_01_TEXT
mov es, ax
assume es:op_01_TEXT
loc_A8E1:
call sub_A79D
call _mdrv2_bgm_fade_out_nonblock
call sub_B757
les bx, _reiidenconfig
assume es:nothing
mov es:[bx+reiidenconfig_t.mode], 0
mov es:[bx+reiidenconfig_t.snd_need_init], 1
mov al, byte ptr word_12322+1
add al, 2
mov es:[bx+reiidenconfig_t.rem_lives], al
mov es:[bx+reiidenconfig_t.unused_1], 0
mov es:[bx+reiidenconfig_t.bullet_speed], -4
mov es:[bx+reiidenconfig_t.p_value], 0
pushd 0
push ds
push offset s ; "REIIDEN"
push ds
push offset s ; "REIIDEN"
call _execl
add sp, 0Ch
pop bp
retf
sub_A8AD endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_A92C proc far
arg_0 = word ptr 6
push bp
mov bp, sp
mov ax, [bp+arg_0]
mov bx, 46h ; 'F'
cwd
idiv bx
cmp dx, 32h ; '2'
jge short loc_A954
push ds
push offset aVgvhvsb@vjvdvx ; " <20>g<EFBFBD>h<EFBFBD>s<EFBFBD>@<40>j<EFBFBD>d<EFBFBD>x"
push 2F0132h
push 0F4h
call sub_C948
add sp, 0Ah
pop bp
retf
; ---------------------------------------------------------------------------
loc_A954:
push 100080h
push 13200F4h
call _egc_copy_rect_1_to_0
add sp, 8
pop bp
retf
sub_A92C endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_A96A proc far
var_14 = byte ptr -14h
var_4 = word ptr -4
var_2 = word ptr -2
arg_0 = word ptr 6
arg_2 = word ptr 8
enter 14h, 0
push si
mov si, [bp+arg_0]
lea ax, [bp+var_14]
push ss
push ax
push ds
push offset off_124CD
mov cx, 10h
call SCOPY@
mov [bp+var_2], 0F4h
mov ax, si
imul ax, 14h
add ax, 114h
mov [bp+var_4], ax
mov bx, si
shl bx, 2
lea ax, [bp+var_14]
add bx, ax
pushd dword ptr ss:[bx]
mov ax, [bp+arg_2]
or ax, 30h
push ax
push [bp+var_4]
push [bp+var_2]
call sub_C948
add sp, 0Ah
pop si
leave
retf
sub_A96A endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_A9B9 proc far
var_42 = byte ptr -42h
var_2E = byte ptr -2Eh
var_1E = byte ptr -1Eh
var_A = word ptr -0Ah
var_8 = byte ptr -8
arg_0 = word ptr 6
arg_2 = word ptr 8
enter 42h, 0
push si
push di
mov si, [bp+arg_0]
lea ax, [bp+var_1E]
push ss
push ax
push ds
push offset off_124DD
mov cx, 14h
call SCOPY@
lea ax, [bp+var_2E]
push ss
push ax
push ds
push offset off_124F1
mov cx, 10h
call SCOPY@
lea ax, [bp+var_8]
push ss
push ax
push ds
push offset off_12501
mov cx, 8
call SCOPY@
lea ax, [bp+var_42]
push ss
push ax
push ds
push offset off_12509
mov cx, 14h
call SCOPY@
mov di, 0E4h
mov ax, si
imul ax, 14h
add ax, 10Ah
mov [bp+var_A], ax
push 1000B0h
push ax
push di
call _egc_copy_rect_1_to_0
add sp, 8
or si, si
jnz short loc_AA34
mov al, byte ptr word_12320
cbw
shl ax, 2
lea dx, [bp+var_2E]
jmp short loc_AA54
; ---------------------------------------------------------------------------
loc_AA34:
cmp si, 1
jnz short loc_AA45
mov al, byte ptr word_12320+1
cbw
shl ax, 2
lea dx, [bp+var_8]
jmp short loc_AA54
; ---------------------------------------------------------------------------
loc_AA45:
cmp si, 2
jnz short loc_AA83
mov al, byte ptr word_12322+1
cbw
shl ax, 2
lea dx, [bp+var_42]
loc_AA54:
add ax, dx
mov bx, ax
pushd dword ptr ss:[bx]
mov bx, si
shl bx, 2
lea ax, [bp+var_1E]
add bx, ax
pushd dword ptr ss:[bx] ; arglist
push ds
push offset aSS ; "%s%s"
mov ax, [bp+arg_2]
or ax, 30h
push ax ; int
push [bp+var_A] ; int
push di ; int
call sub_D5F8
add sp, 12h
jmp short loc_AAB2
; ---------------------------------------------------------------------------
loc_AA83:
cmp si, 3
jz short loc_AA8D
cmp si, 4
jnz short loc_AAB2
loc_AA8D:
mov bx, si
shl bx, 2
lea ax, [bp+var_1E]
add bx, ax
pushd dword ptr ss:[bx] ; arglist
push ds
push (offset aSS+2) ; format
mov ax, [bp+arg_2]
or ax, 30h
push ax ; int
push [bp+var_A] ; int
push di ; int
call sub_D5F8
add sp, 0Eh
loc_AAB2:
pop di
pop si
leave
retf
sub_A9B9 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_AAB6 proc far
var_46 = byte ptr -46h
var_A = word ptr -0Ah
var_8 = byte ptr -8
arg_0 = word ptr 6
arg_2 = word ptr 8
enter 46h, 0
push si
push di
mov si, [bp+arg_0]
lea ax, [bp+var_8]
push ss
push ax
push ds
push offset off_1251E
mov cx, 8
call SCOPY@
lea ax, [bp+var_46]
push ss
push ax
push ds
push offset off_12526
mov cx, 3Ch ; '<'
call SCOPY@
mov di, 0E4h
mov ax, si
imul ax, 28h
add ax, 11Eh
mov [bp+var_A], ax
push 1000B0h
push ax
push di
call _egc_copy_rect_1_to_0
add sp, 8
or si, si
jnz short loc_AB69
push 1000C0h
mov ax, [bp+var_A]
add ax, 14h
push ax
push di
call _egc_copy_rect_1_to_0
add sp, 8
mov al, byte_1251D
cbw
push ax
mov bx, si
shl bx, 2
lea ax, [bp+var_8]
add bx, ax
pushd dword ptr ss:[bx] ; arglist
push ds
push offset aS_2d ; "%s%.2d"
mov ax, [bp+arg_2]
or ax, 30h
push ax ; int
push [bp+var_A] ; int
push di ; int
call sub_D5F8
add sp, 10h
mov al, byte_1251D
cbw
shl ax, 2
lea dx, [bp+var_46]
add ax, dx
mov bx, ax
pushd dword ptr ss:[bx]
push ds
push (offset aSS+2)
mov ax, [bp+arg_2]
or ax, 30h
push ax
mov ax, [bp+var_A]
add ax, 14h
push ax
jmp short loc_AB8A
; ---------------------------------------------------------------------------
loc_AB69:
cmp si, 1
jnz short loc_AB93
mov bx, si
shl bx, 2
lea ax, [bp+var_8]
add bx, ax
pushd dword ptr ss:[bx] ; arglist
push ds
push (offset aSS+2) ; format
mov ax, [bp+arg_2]
or ax, 30h
push ax ; int
push [bp+var_A] ; int
loc_AB8A:
push di ; int
call sub_D5F8
add sp, 0Eh
loc_AB93:
pop di
pop si
leave
retf
sub_AAB6 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_AB97 proc far
push bp
mov bp, sp
cmp word_12564, 0
jnz short loc_AC04
push 6400B0h
push 10A00DCh
call _egc_copy_rect_1_to_0
add sp, 8
push 50000h
call sub_A96A
add sp, 4
push 50001h
call sub_A96A
add sp, 4
push 50002h
call sub_A96A
add sp, 4
push 50003h
call sub_A96A
add sp, 4
push 0Fh
mov al, byte_12325
cbw
push ax
call sub_A96A
add sp, 4
mov word_12564, 1
mov al, byte_12325
cbw
mov word_12562, ax
loc_AC04:
mov al, byte_12325
cbw
cmp ax, word_12562
jz short loc_AC30
push 5
push word_12562
call sub_A96A
add sp, 4
push 0Fh
mov al, byte_12325
cbw
push ax
call sub_A96A
add sp, 4
mov al, byte_12325
cbw
mov word_12562, ax
loc_AC30:
cmp byte_12327, 0
jnz short loc_AC3E
cmp byte_12328, 0
jz short loc_AC6E
loc_AC3E:
mov al, byte_12325
cbw
mov bx, ax
cmp bx, 3
ja short loc_AC6E
add bx, bx
jmp cs:off_AC7C[bx]
loc_AC50:
call sub_A7B5
jmp short loc_AC6E
; ---------------------------------------------------------------------------
loc_AC56:
call sub_A8AD
jmp short loc_AC6E
; ---------------------------------------------------------------------------
loc_AC5C:
mov byte_1232A, 1
mov word_12564, 0
jmp short loc_AC6E
; ---------------------------------------------------------------------------
loc_AC69:
mov byte_1232C, 1
loc_AC6E:
cmp byte_12329, 0
jz short loc_AC7A
mov byte_1232C, 1
loc_AC7A:
pop bp
retf
sub_AB97 endp
; ---------------------------------------------------------------------------
off_AC7C dw offset loc_AC50
dw offset loc_AC56
dw offset loc_AC5C
dw offset loc_AC69
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_AC84 proc far
push bp
mov bp, sp
cmp word_12566, 0
jnz short loc_ACF9
mov byte_12325, 0
mov word_12568, 0
mov word_12566, 1
mov byte_12338, 4
push 5000B0h
push 11400DCh
call _egc_copy_rect_1_to_0
add sp, 8
push 0F0000h
call sub_A9B9
add sp, 4
push 50001h
call sub_A9B9
add sp, 4
push 50002h
call sub_A9B9
add sp, 4
push 50003h
call sub_A9B9
add sp, 4
push 50004h
call sub_A9B9
add sp, 4
loc_ACF9:
mov al, byte_12325
cbw
cmp ax, word_12568
jz short loc_AD25
push 5
push word_12568
call sub_A9B9
add sp, 4
push 0Fh
mov al, byte_12325
cbw
push ax
call sub_A9B9
add sp, 4
mov al, byte_12325
cbw
mov word_12568, ax
loc_AD25:
mov al, byte_12326
cbw
cmp ax, 1
jnz short loc_AD96
cmp word_1256A, 0
jnz short loc_AD9C
mov al, byte_12325
cbw
or ax, ax
jz short loc_AD49
cmp ax, 1
jz short loc_AD5C
cmp ax, 2
jz short loc_AD6F
jmp short loc_AD80
; ---------------------------------------------------------------------------
loc_AD49:
dec byte ptr word_12320
mov al, byte ptr word_12320
cbw
or ax, ax
jge short loc_AD80
mov byte ptr word_12320, 3
jmp short loc_AD80
; ---------------------------------------------------------------------------
loc_AD5C:
dec byte ptr word_12320+1
mov al, byte ptr word_12320+1
cbw
or ax, ax
jge short loc_AD80
mov byte ptr word_12320+1, 1
jmp short loc_AD80
; ---------------------------------------------------------------------------
loc_AD6F:
dec byte ptr word_12322+1
mov al, byte ptr word_12322+1
cbw
or ax, ax
jge short loc_AD80
mov byte ptr word_12322+1, 4
loc_AD80:
push 0Fh
mov al, byte_12325
cbw
push ax
call sub_A9B9
add sp, 4
mov word_1256A, 1
jmp short loc_AD9C
; ---------------------------------------------------------------------------
loc_AD96:
mov word_1256A, 0
loc_AD9C:
mov al, byte_1232B
cbw
cmp ax, 1
jnz short loc_AE10
cmp word_1256C, 0
jnz short loc_AE16
mov al, byte_12325
cbw
or ax, ax
jz short loc_ADC0
cmp ax, 1
jz short loc_ADD4
cmp ax, 2
jz short loc_ADE8
jmp short loc_ADFA
; ---------------------------------------------------------------------------
loc_ADC0:
inc byte ptr word_12320
mov al, byte ptr word_12320
cbw
cmp ax, 3
jle short loc_ADFA
mov byte ptr word_12320, 0
jmp short loc_ADFA
; ---------------------------------------------------------------------------
loc_ADD4:
inc byte ptr word_12320+1
mov al, byte ptr word_12320+1
cbw
cmp ax, 1
jle short loc_ADFA
mov byte ptr word_12320+1, 0
jmp short loc_ADFA
; ---------------------------------------------------------------------------
loc_ADE8:
inc byte ptr word_12322+1
mov al, byte ptr word_12322+1
cbw
cmp ax, 4
jle short loc_ADFA
mov byte ptr word_12322+1, 0
loc_ADFA:
push 0Fh
mov al, byte_12325
cbw
push ax
call sub_A9B9
add sp, 4
mov word_1256C, 1
jmp short loc_AE16
; ---------------------------------------------------------------------------
loc_AE10:
mov word_1256C, 0
loc_AE16:
cmp byte_12327, 0
jnz short loc_AE24
cmp byte_12328, 0
jz short loc_AE2D
loc_AE24:
mov al, byte_12325
cbw
cmp ax, 4
jz short loc_AE34
loc_AE2D:
cmp byte_12329, 0
jz short loc_AE44
loc_AE34:
mov byte_1232A, 3
mov word_12566, 0
mov byte_12325, 2
loc_AE44:
cmp byte_12327, 0
jnz short loc_AE52
cmp byte_12328, 0
jz short loc_AE6B
loc_AE52:
mov al, byte_12325
cbw
cmp ax, 3
jnz short loc_AE6B
mov byte_1232A, 2
mov word_12566, 0
mov byte_12325, 0
loc_AE6B:
pop bp
retf
sub_AC84 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_AE6D proc far
var_3C = byte ptr -3Ch
enter 3Ch, 0
lea ax, [bp+var_3C]
push ss
push ax
push ds
push offset off_1256E
mov cx, 3Ch ; '<'
call SCOPY@
call _mdrv2_bgm_stop
mov al, byte_1251D
cbw
shl ax, 2
lea dx, [bp+var_3C]
add ax, dx
mov bx, ax
pushd dword ptr ss:[bx] ; path
call _mdrv2_bgm_load
add sp, 4
call _mdrv2_bgm_play
leave
retf
sub_AE6D endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_AEA8 proc far
push bp
mov bp, sp
cmp word_125AA, 0
jnz short loc_AF00
mov byte_12325, 0
mov word_125AC, 0
mov word_125AA, 1
mov byte_12327, 0
mov byte_12328, 0
mov byte_12338, 1
push 6400B0h
push 10A00DCh
call _egc_copy_rect_1_to_0
add sp, 8
push 0F0000h
call sub_AAB6
add sp, 4
push 50001h
call sub_AAB6
add sp, 4
loc_AF00:
mov al, byte_12325
cbw
cmp ax, word_125AC
jz short loc_AF2C
push 5
push word_125AC
call sub_AAB6
add sp, 4
push 0Fh
mov al, byte_12325
cbw
push ax
call sub_AAB6
add sp, 4
mov al, byte_12325
cbw
mov word_125AC, ax
loc_AF2C:
mov al, byte_12326
cbw
cmp ax, 1
jnz short loc_AF69
cmp word_125AE, 0
jnz short loc_AF6F
cmp byte_12325, 0
jnz short loc_AF53
dec byte_1251D
cmp byte_1251D, 0
jge short loc_AF53
mov byte_1251D, 0Eh
loc_AF53:
push 0Fh
mov al, byte_12325
cbw
push ax
call sub_AAB6
add sp, 4
mov word_125AE, 1
jmp short loc_AF6F
; ---------------------------------------------------------------------------
loc_AF69:
mov word_125AE, 0
loc_AF6F:
mov al, byte_1232B
cbw
cmp ax, 1
jnz short loc_AFAC
cmp word_125B0, 0
jnz short loc_AFB2
cmp byte_12325, 0
jnz short loc_AF96
inc byte_1251D
cmp byte_1251D, 0Fh
jl short loc_AF96
mov byte_1251D, 0
loc_AF96:
push 0Fh
mov al, byte_12325
cbw
push ax
call sub_AAB6
add sp, 4
mov word_125B0, 1
jmp short loc_AFB2
; ---------------------------------------------------------------------------
loc_AFAC:
mov word_125B0, 0
loc_AFB2:
cmp byte_12327, 0
jnz short loc_AFC0
cmp byte_12328, 0
jz short loc_AFC9
loc_AFC0:
mov al, byte_12325
cbw
cmp ax, 1
jz short loc_AFD0
loc_AFC9:
cmp byte_12329, 0
jz short loc_AFE0
loc_AFD0:
mov byte_1232A, 4
mov word_125AA, 0
mov byte_12325, 3
loc_AFE0:
cmp byte_12327, 0
jnz short loc_AFEE
cmp byte_12328, 0
jz short loc_AFF9
loc_AFEE:
cmp byte_12325, 0
jnz short loc_AFF9
call sub_AE6D
loc_AFF9:
pop bp
retf
sub_AEA8 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
outregs = REGS ptr -2Ch
inregs = REGS ptr -1Ch
var_C = word ptr -0Ch
var_9 = byte ptr -9
var_8 = dword ptr -8
var_4 = dword ptr -4
_argc = word ptr 4
_argv = dword ptr 6
_envp = dword ptr 0Ah
enter 2Ch, 0
push si
push di
xor si, si
xor di, di
call _mdrv2_resident
or ax, ax
jnz short loc_B015
push ds
push offset aGogbgGtg@gcglv ; "<22>o<EFBFBD>b<EFBFBD>`<60>t<EFBFBD>@<40>C<EFBFBD><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>N<EFBFBD><4E><EFBFBD><EFBFBD><EFBFBD>Ă<EFBFBD>"
jmp loc_B25D
; ---------------------------------------------------------------------------
loc_B015:
mov byte_1232D, 0
mov dword_12330, 0
mov byte_1232E, 0
cmp word ptr [bp+_argv], 1
jle loc_B0D6
les bx, [bp+_argv+2]
les bx, es:[bx+4]
mov al, es:[bx]
cbw
cmp ax, 73h ; 's'
jnz short loc_B045
mov _mode, 1
loc_B045:
les bx, [bp+_argv+2]
les bx, es:[bx+4]
mov al, es:[bx]
cbw
cmp ax, 74h ; 't'
jnz short loc_B05A
mov _mode, 2
loc_B05A:
les bx, [bp+_argv+2]
les bx, es:[bx+4]
mov al, es:[bx]
cbw
cmp ax, 64h ; 'd'
jnz short loc_B06F
mov _mode, 3
loc_B06F:
push 3 ; n
push ds
push offset aCon ; "CON"
les bx, [bp+_argv+2]
pushd dword ptr es:[bx+4] ; s1
call _memcmp
add sp, 0Ah
or ax, ax
jnz short loc_B0D6
les bx, [bp+_argv+2]
mov eax, es:[bx+8]
mov [bp+var_4], eax
pushd [bp+var_4]
call _atol
add sp, 4
mov byte_1232D, al
les bx, [bp+_argv+2]
pushd dword ptr es:[bx+0Ch]
call _atol
add sp, 4
mov word ptr dword_12330+2, dx
mov word ptr dword_12330, ax
les bx, [bp+_argv+2]
mov eax, es:[bx+10h]
mov [bp+var_8], eax
pushd [bp+var_8]
call _atol
add sp, 4
mov byte_1232E, al
loc_B0D6:
call _mdrv2_check_board
call sub_B6E9
call sub_A240
mov al, byte ptr word_12320+1
cbw
mov si, ax
mov byte ptr [bp+inregs+1], 3
push ss
lea ax, [bp+outregs]
push ax ; outregs
push ss
lea ax, [bp+inregs]
push ax ; inregs
push 18h ; intno
call _int86
add sp, 0Ah
call key_start
call sub_A719
xor ax, ax
mov es, ax
mov al, es:0500h
or al, 20h
mov [bp+var_9], al
xor ax, ax
mov dl, [bp+var_9]
mov es, ax
mov es:0500h, dl
jmp short loc_B135
; ---------------------------------------------------------------------------
loc_B126:
push 1
call sub_B269
pop cx
push di
call sub_A92C
pop cx
inc di
loc_B135:
call key_sense_bios
or ax, ax
jz short loc_B126
call sub_A772
mov eax, dword_13418
mov random_seed, eax
jmp loc_B21A
; ---------------------------------------------------------------------------
loc_B14D:
cmp byte_1232A, 0
jnz short loc_B15F
call sub_A363
call sub_AB97
jmp loc_B1EE
; ---------------------------------------------------------------------------
loc_B15F:
mov al, byte_1232A
cbw
cmp ax, 1
jnz short loc_B172
call sub_A4AB
call sub_AC84
jmp short loc_B1EE
; ---------------------------------------------------------------------------
loc_B172:
mov al, byte_1232A
cbw
cmp ax, 2
jnz short loc_B185
call sub_A4AB
call sub_AEA8
jmp short loc_B1EE
; ---------------------------------------------------------------------------
loc_B185:
mov al, byte_1232A
cbw
cmp ax, 3
jnz short loc_B1D8
mov al, byte ptr word_12320+1
cbw
cmp ax, si
jz short loc_B1C9
cmp byte ptr word_12320+1, 0
jnz short loc_B1A4
call _mdrv2_bgm_stop
jmp short loc_B1C3
; ---------------------------------------------------------------------------
loc_B1A4:
mov al, byte ptr word_12320+1
cbw
cmp ax, 1
jnz short loc_B1C3
call _mdrv2_bgm_stop
push ds
push offset aReimu_mdt ; "reimu.mdt"
call _mdrv2_bgm_load
add sp, 4
call _mdrv2_bgm_play
loc_B1C3:
mov al, byte ptr word_12320+1
cbw
mov si, ax
loc_B1C9:
push 0Fh
call sub_B269
pop cx
mov byte_1232A, 0
jmp short loc_B1EE
; ---------------------------------------------------------------------------
loc_B1D8:
mov al, byte_1232A
cbw
cmp ax, 4
jnz short loc_B1EE
push 0Fh
call sub_B269
pop cx
mov byte_1232A, 1
loc_B1EE:
xor ax, ax
mov es, ax
mov ax, word ptr es:[0524h]
mov [bp+var_C], ax
xor ax, ax
mov dx, [bp+var_C]
mov es, ax
mov word ptr es:[0526h], dx
mov es, ax
mov byte ptr es:[0528h], 0
inc dword_13418
push 1
call sub_B269
pop cx
loc_B21A:
cmp byte_1232C, 0
jz loc_B14D
call sub_A2E4
mov byte_1232F, 1
call _mdrv2_bgm_stop
call sub_A79D
push 1
call _graph_accesspage_func
pop cx
call sub_BB12
push 0
call _graph_accesspage_func
pop cx
call sub_BB12
call sub_B73C
call _mdrv2_bgm_stop
push ds
push offset format ; "<22><><EFBFBD>‚<EFBFBD><C282><EFBFBD>܂ł<DC82><C582><EFBFBD><EFBFBD>I<EFBFBD>I\n"
loc_B25D:
call _printf
add sp, 4
pop di
pop si
leave
retf
_main endp
op_01_TEXT ends
; ===========================================================================
; Segment type: Pure code
op_02_TEXT segment byte public 'CODE' use16
assume cs:op_02_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_B269 proc far
arg_0 = word ptr 6
push bp
mov bp, sp
loc_B26C:
mov ax, _vsync_frame
cmp ax, [bp+arg_0]
jb short loc_B26C
mov _vsync_frame, 0
pop bp
retf
sub_B269 endp
op_02_TEXT ends
; ===========================================================================
; Segment type: Pure code
op_03_TEXT segment byte public 'CODE' use16
extern _vsync_init:proc
extern _vsync_exit:proc
extern _z_vsync_wait:proc
op_03_TEXT ends
; ===========================================================================
op_04_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
op_04_TEXT ends
; ===========================================================================
; Segment type: Pure code
op_05_TEXT segment byte public 'CODE' use16
assume cs:op_05_TEXT
;org 3
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_B6C3()
sub_B6C3 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_B6C3 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_B6E9 proc far
push bp
mov bp, sp
cmp byte_12978, 0
jnz short loc_B73A
mov byte_12978, 1
push 6 ; interruptno
call _getvect
pop cx
mov word_1366A, dx
mov word_13667+1, ax
push seg op_05_TEXT
push offset sub_B7C3 ; 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_D1C0
call vram_planes_set
loc_B73A:
pop bp
retf
sub_B6E9 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_B73C proc far
push bp
mov bp, sp
cmp byte_12978, 1
jnz short loc_B755
mov byte_12978, 0
nopcall sub_B784
call respal_free
loc_B755:
pop bp
retf
sub_B73C endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_B757 proc far
push bp
mov bp, sp
cmp byte_12978, 1
jnz short loc_B782
nopcall sub_B784
call _z_text_25line
push 0
call _z_text_setcursor
pop cx
call _z_text_clear
call _z_text_show
mov byte_12978, 0
loc_B782:
pop bp
retf
sub_B757 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_B784 proc far
push bp
mov bp, sp
mov byte_12978, 0
push seg op_05_TEXT
push offset sub_B6C3 ; isr
push 6 ; interruptno
call _setvect
call _vsync_exit
call _z_text_clear
call sub_BD3A
call sub_B8D0
call egc_start
pushd [dword ptr word_13667+1] ; isr
push 6 ; interruptno
call _setvect
add sp, 0Ch
pop bp
retf
sub_B784 endp
; =============== S U B R O U T I N E =======================================
; Attributes: noreturn bp-based frame
; void __interrupt sub_B7C3()
sub_B7C3 proc near
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_B73C
push 0 ; status
call _exit
sub_B7C3 endp
; ---------------------------------------------------------------------------
pop cx
pop bp
pop edi
pop esi
pop ds
pop es
pop edx
pop ecx
pop ebx
pop eax
iret
; ---------------------------------------------------------------------------
enter 104h, 0
lea ax, [bp+0Ah]
mov word ptr [bp-2], ss
mov [bp-4], ax
push word ptr [bp-2]
push ax
pushd dword ptr [bp+6]
push ss
lea ax, [bp-104h]
push ax
call _vsprintf
call sub_B73C
push ss
lea ax, [bp-104h]
push ax
call _z_text_print
push 1
call _exit
; ---------------------------------------------------------------------------
add sp, 12h
leave
retf
op_05_TEXT ends
; ---------------------------------------------------------------------------
; ===========================================================================
; Segment type: Pure code
op_06_TEXT segment byte public 'CODE' use16
assume cs:op_06_TEXT
assume es:nothing, ss:nothing, ds:_DATA, fs:nothing, gs:nothing
enter 10h, 0
nopcall sub_B91C
mov byte ptr [bp-0Fh], 42h ; 'B'
mov byte ptr [bp-0Bh], 0C0h
push ss
lea ax, [bp-10h]
push ax
push ss
push ax
push 18h
call _int86
mov dx, 6Ah ; 'j'
mov al, 1
out dx, al ; PC-98 GDC (6a):
;
push ds
push offset unk_1297A
nopcall sub_BA15
push 0
nopcall _graph_accesspage_func
push 0
nopcall _graph_showpage_func
add sp, 12h
nopcall sub_BB3C
mov dx, 68h ; 'h'
mov al, 0Ah
out dx, al
GRCG_OFF_CLOBBERING dx
nopcall sub_B901
leave
retf
; ---------------------------------------------------------------------------
enter 10h, 0
nopcall sub_B91C
mov byte ptr [bp-0Fh], 42h ; 'B'
mov byte ptr [bp-0Bh], 0C0h
push ss
lea ax, [bp-10h]
push ax
push ss
push ax
push 18h
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
GRCG_OFF_CLOBBERING dx
nopcall sub_B901
leave
retf
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_B8D0 proc far
push bp
mov bp, sp
nopcall sub_BC6D
nopcall sub_BB3C
push 0
nopcall _graph_accesspage_func
push 0
nopcall _graph_showpage_func
add sp, 4
nopcall sub_B901
mov dx, 68h ; 'h'
mov al, 0Ah
out dx, al
GRCG_OFF_CLOBBERING dx
pop bp
retf
sub_B8D0 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_B901 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_B901 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_B91C 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_B91C endp
include th01/hardware/graph_page.asm
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_B955 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 ; '<27>'
mov al, [bp+arg_0]
out dx, al
mov dx, 0AAh ; '<27>'
mov al, [bp+arg_4]
out dx, al
mov dx, 0ACh ; '<27>'
mov al, [bp+arg_2]
out dx, al
mov dx, 0AEh
mov al, [bp+arg_6]
out dx, al
pop bp
retf
sub_B955 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_B976 proc far
arg_0 = word ptr 6
push bp
mov bp, sp
mov bx, [bp+arg_0]
GRCG_SETMODE_CLOBBERING dx, GC_RMW
test bl, 1
jz short loc_B98B
mov al, 0FFh
jmp short loc_B98D
; ---------------------------------------------------------------------------
loc_B98B:
mov al, 0
loc_B98D:
mov dx, 7Eh ; '~'
out dx, al
test bl, 2
jz short loc_B99A
mov al, 0FFh
jmp short loc_B99C
; ---------------------------------------------------------------------------
loc_B99A:
mov al, 0
loc_B99C:
mov dx, 7Eh ; '~'
out dx, al
test bl, 4
jz short loc_B9A9
mov al, 0FFh
jmp short loc_B9AB
; ---------------------------------------------------------------------------
loc_B9A9:
mov al, 0
loc_B9AB:
mov dx, 7Eh ; '~'
out dx, al
test bl, 8
jz short loc_B9B8
mov al, 0FFh
jmp short loc_B9BA
; ---------------------------------------------------------------------------
loc_B9B8:
mov al, 0
loc_B9BA:
mov dx, 7Eh ; '~'
out dx, al
pop bp
retf
sub_B976 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_B9C0 proc far
arg_0 = word ptr 6
push bp
mov bp, sp
mov bx, [bp+arg_0]
GRCG_SETMODE_CLOBBERING dx, GC_TDW
test bl, 1
jz short loc_B9D5
mov al, 0FFh
jmp short loc_B9D7
; ---------------------------------------------------------------------------
loc_B9D5:
mov al, 0
loc_B9D7:
mov dx, 7Eh ; '~'
out dx, al
test bl, 2
jz short loc_B9E4
mov al, 0FFh
jmp short loc_B9E6
; ---------------------------------------------------------------------------
loc_B9E4:
mov al, 0
loc_B9E6:
mov dx, 7Eh ; '~'
out dx, al
test bl, 4
jz short loc_B9F3
mov al, 0FFh
jmp short loc_B9F5
; ---------------------------------------------------------------------------
loc_B9F3:
mov al, 0
loc_B9F5:
mov dx, 7Eh ; '~'
out dx, al
test bl, 8
jz short loc_BA02
mov al, 0FFh
jmp short loc_BA04
; ---------------------------------------------------------------------------
loc_BA02:
mov al, 0
loc_BA04:
mov dx, 7Eh ; '~'
out dx, al
pop bp
retf
sub_B9C0 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_BA0A proc far
push bp
mov bp, sp
GRCG_OFF_CLOBBERING dx
pop bp
retf
sub_BA0A endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_BA15 proc far
arg_0 = dword ptr 6
push bp
mov bp, sp
push si
xor si, si
jmp short loc_BA56
; ---------------------------------------------------------------------------
loc_BA1D:
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_BA5E
add sp, 8
inc si
loc_BA56:
cmp si, 10h
jl short loc_BA1D
pop si
pop bp
retf
sub_BA15 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_BA5E 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_BA70
mov ax, [bp+arg_2]
jmp short loc_BA73
; ---------------------------------------------------------------------------
loc_BA70:
mov ax, 0Fh
loc_BA73:
or ax, ax
jle short loc_BA87
cmp [bp+arg_2], 0Fh
jge short loc_BA82
mov ax, [bp+arg_2]
jmp short loc_BA85
; ---------------------------------------------------------------------------
loc_BA82:
mov ax, 0Fh
loc_BA85:
jmp short loc_BA89
; ---------------------------------------------------------------------------
loc_BA87:
xor ax, ax
loc_BA89:
mov [bp+arg_2], ax
cmp [bp+arg_4], 0Fh
jge short loc_BA97
mov ax, [bp+arg_4]
jmp short loc_BA9A
; ---------------------------------------------------------------------------
loc_BA97:
mov ax, 0Fh
loc_BA9A:
or ax, ax
jle short loc_BAAE
cmp [bp+arg_4], 0Fh
jge short loc_BAA9
mov ax, [bp+arg_4]
jmp short loc_BAAC
; ---------------------------------------------------------------------------
loc_BAA9:
mov ax, 0Fh
loc_BAAC:
jmp short loc_BAB0
; ---------------------------------------------------------------------------
loc_BAAE:
xor ax, ax
loc_BAB0:
mov [bp+arg_4], ax
cmp [bp+arg_6], 0Fh
jge short loc_BABE
mov ax, [bp+arg_6]
jmp short loc_BAC1
; ---------------------------------------------------------------------------
loc_BABE:
mov ax, 0Fh
loc_BAC1:
or ax, ax
jle short loc_BAD5
cmp [bp+arg_6], 0Fh
jge short loc_BAD0
mov ax, [bp+arg_6]
jmp short loc_BAD3
; ---------------------------------------------------------------------------
loc_BAD0:
mov ax, 0Fh
loc_BAD3:
jmp short loc_BAD7
; ---------------------------------------------------------------------------
loc_BAD5:
xor ax, ax
loc_BAD7:
mov [bp+arg_6], ax
mov bx, si
imul bx, 3
mov al, byte ptr [bp+arg_2]
mov [bx+6EAh], al
mov bx, si
imul bx, 3
mov al, byte ptr [bp+arg_4]
mov [bx+6EBh], al
mov bx, si
imul bx, 3
mov al, byte ptr [bp+arg_6]
mov [bx+6ECh], al
push [bp+arg_6]
push [bp+arg_4]
push [bp+arg_2]
push si
call sub_B955
add sp, 8
pop si
pop bp
retf
sub_BA5E endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_BB12 proc far
_s = dword ptr -4
enter 4, 0
mov [bp+_s], 0A8000000h
push 0
call sub_B976
push 7D0000FFh ; c
pushd [bp+_s] ; s
call _memset
add sp, 0Ah
call sub_BA0A
leave
retf
sub_BB12 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_BB3C proc far
push bp
mov bp, sp
push 2
call _graph_accesspage_func
call sub_BB12
push 2
call _graph_accesspage_func
add sp, 4
call sub_BB12
pop bp
retf
sub_BB3C endp
; ---------------------------------------------------------------------------
enter 4, 0
mov dword ptr [bp-4], 0A8000000h
mov al, [bp+6]
cbw
push ax
call sub_B976
push 7D0000FFh
pushd dword ptr [bp-4]
call _memset
add sp, 0Ah
call sub_BA0A
leave
retf
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_BB85 proc far
var_152 = byte ptr -152h
var_102 = byte ptr -102h
var_B2 = byte ptr -0B2h
dest = byte ptr -62h
@@page_other = 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+@@page_other], al
xor si, si
jmp loc_BC62
; ---------------------------------------------------------------------------
loc_BBB7:
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
graph_accesspage [bp+@@page_other]
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
graph_accesspage _graph_page
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_BC62:
cmp si, 190h
jl loc_BBB7
pop si
leave
retf
sub_BB85 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_BC6D proc far
push bp
mov bp, sp
push si
xor si, si
jmp short loc_BC83
; ---------------------------------------------------------------------------
loc_BC75:
pushd 0
push 0
push si
call sub_B955
add sp, 8
inc si
loc_BC83:
cmp si, 10h
jl short loc_BC75
pop si
pop bp
retf
sub_BC6D endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_BC8B 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_BD2E
; ---------------------------------------------------------------------------
loc_BCAC:
call _z_vsync_wait
xor si, si
jmp short loc_BD1E
; ---------------------------------------------------------------------------
loc_BCB5:
xor di, di
jmp short loc_BCE3
; ---------------------------------------------------------------------------
loc_BCB9:
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+6EAh]
jge short loc_BCE2
mov bx, si
imul bx, 3
add bx, di
lea ax, [bp+_s]
add bx, ax
inc byte ptr ss:[bx]
loc_BCE2:
inc di
loc_BCE3:
cmp di, 3
jl short loc_BCB9
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_B955
add sp, 8
inc si
loc_BD1E:
cmp si, 10h
jl short loc_BCB5
push 0Ah
call _delay
pop cx
inc [bp+var_2]
loc_BD2E:
cmp [bp+var_2], 10h
jl loc_BCAC
pop di
pop si
leave
retf
sub_BC8B endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_BD3A 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_1297A ; src
push ss
lea ax, [bp+dest]
push ax ; dest
call _memcpy
add sp, 0Ah
mov [bp+var_2], 0
jmp short loc_BDD1
; ---------------------------------------------------------------------------
loc_BD5A:
call _z_vsync_wait
xor si, si
jmp short loc_BDC1
; ---------------------------------------------------------------------------
loc_BD63:
xor di, di
jmp short loc_BD86
; ---------------------------------------------------------------------------
loc_BD67:
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_BD85
mov bx, si
imul bx, 3
add bx, di
add bx, ax
dec byte ptr ss:[bx]
loc_BD85:
inc di
loc_BD86:
cmp di, 3
jl short loc_BD67
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_B955
add sp, 8
inc si
loc_BDC1:
cmp si, 10h
jl short loc_BD63
push 0Ah
call _delay
pop cx
inc [bp+var_2]
loc_BDD1:
cmp [bp+var_2], 10h
jl short loc_BD5A
pop di
pop si
leave
retf
sub_BD3A endp
; ---------------------------------------------------------------------------
push bp
mov bp, sp
push si
xor si, si
jmp short loc_BDF4
; ---------------------------------------------------------------------------
loc_BDE3:
push 0F000Fh
push 0Fh
push si
call sub_B955
add sp, 8
inc si
loc_BDF4:
cmp si, 10h
jl short loc_BDE3
pop si
pop bp
retf
; ---------------------------------------------------------------------------
enter 32h, 0
push si
push di
push 30000Fh
push ss
lea ax, [bp-32h]
push ax
call _memset
add sp, 8
mov word ptr [bp-2], 0
jmp loc_BE9F
; ---------------------------------------------------------------------------
loc_BE1D:
call _z_vsync_wait
xor si, si
jmp short loc_BE8F
; ---------------------------------------------------------------------------
loc_BE26:
xor di, di
jmp short loc_BE54
; ---------------------------------------------------------------------------
loc_BE2A:
mov bx, si
imul bx, 3
add bx, di
lea ax, [bp-32h]
add bx, ax
mov al, ss:[bx]
mov bx, si
imul bx, 3
cmp al, [bx+di+6EAh]
jle short loc_BE53
mov bx, si
imul bx, 3
add bx, di
lea ax, [bp-32h]
add bx, ax
dec byte ptr ss:[bx]
loc_BE53:
inc di
loc_BE54:
cmp di, 3
jl short loc_BE2A
mov bx, si
imul bx, 3
lea ax, [bp-30h]
add bx, ax
mov al, ss:[bx]
cbw
push ax
mov bx, si
imul bx, 3
lea ax, [bp-31h]
add bx, ax
mov al, ss:[bx]
cbw
push ax
mov bx, si
imul bx, 3
lea ax, [bp-32h]
add bx, ax
mov al, ss:[bx]
cbw
push ax
push si
call sub_B955
add sp, 8
inc si
loc_BE8F:
cmp si, 10h
jl short loc_BE26
push 0Ah
call _delay
pop cx
inc word ptr [bp-2]
loc_BE9F:
cmp word ptr [bp-2], 10h
jl loc_BE1D
pop di
pop si
leave
retf
; ---------------------------------------------------------------------------
enter 32h, 0
push si
push di
push 30h ; '0'
push ds
push offset unk_1297A
push ss
lea ax, [bp-32h]
push ax
call _memcpy
add sp, 0Ah
mov word ptr [bp-2], 0
jmp short loc_BF42
; ---------------------------------------------------------------------------
loc_BECB:
call _z_vsync_wait
xor si, si
jmp short loc_BF32
; ---------------------------------------------------------------------------
loc_BED4:
xor di, di
jmp short loc_BEF7
; ---------------------------------------------------------------------------
loc_BED8:
mov bx, si
imul bx, 3
add bx, di
lea ax, [bp-32h]
add bx, ax
cmp byte ptr ss:[bx], 0Fh
jge short loc_BEF6
mov bx, si
imul bx, 3
add bx, di
add bx, ax
inc byte ptr ss:[bx]
loc_BEF6:
inc di
loc_BEF7:
cmp di, 3
jl short loc_BED8
mov bx, si
imul bx, 3
lea ax, [bp-30h]
add bx, ax
mov al, ss:[bx]
cbw
push ax
mov bx, si
imul bx, 3
lea ax, [bp-31h]
add bx, ax
mov al, ss:[bx]
cbw
push ax
mov bx, si
imul bx, 3
lea ax, [bp-32h]
add bx, ax
mov al, ss:[bx]
cbw
push ax
push si
call sub_B955
add sp, 8
inc si
loc_BF32:
cmp si, 10h
jl short loc_BED4
push 0Ah
call _delay
pop cx
inc word ptr [bp-2]
loc_BF42:
cmp word ptr [bp-2], 10h
jl short loc_BECB
pop di
pop si
leave
retf
; ---------------------------------------------------------------------------
push bp
mov bp, sp
push si
xor si, si
jmp short loc_BF7E
; ---------------------------------------------------------------------------
loc_BF54:
mov bx, si
imul bx, 3
mov al, [bx+6ECh]
cbw
push ax
mov bx, si
imul bx, 3
mov al, [bx+6EBh]
cbw
push ax
mov bx, si
imul bx, 3
mov al, [bx+6EAh]
cbw
push ax
push si
call sub_B955
add sp, 8
inc si
loc_BF7E:
cmp si, 10h
jl short loc_BF54
pop si
pop bp
retf
; ---------------------------------------------------------------------------
push bp
mov bp, sp
push word ptr [bp+0Ah]
call sub_B976
pop cx
mov bx, [bp+8]
imul bx, 50h
mov ax, [bp+6]
sar ax, 3
add bx, ax
mov ax, 0A800h
mov cl, [bp+6]
and cl, 7
mov dx, 80h
sar dx, cl
mov es, ax
assume es:nothing
mov es:[bx], dl
call sub_BA0A
pop bp
retf
; ---------------------------------------------------------------------------
enter 2, 0
push si
push di
mov ax, [bp+8]
imul ax, 50h
mov dx, [bp+6]
sar dx, 3
add ax, dx
mov di, ax
mov cl, [bp+6]
and cl, 7
mov ax, 80h
sar ax, cl
mov [bp-2], ax
xor si, si
mov ax, 0A800h
mov es, ax
mov al, es:[di]
cbw
test [bp-2], ax
jz short loc_BFEF
or si, 1
loc_BFEF:
mov ax, 0B000h
mov es, ax
assume es:nothing
mov al, es:[di]
cbw
test [bp-2], ax
jz short loc_C000
or si, 2
loc_C000:
mov ax, 0B800h
mov es, ax
assume es:nothing
mov al, es:[di]
cbw
test [bp-2], ax
jz short loc_C011
or si, 4
loc_C011:
mov ax, 0E000h
mov es, ax
assume es:nothing
mov al, es:[di]
cbw
test [bp-2], ax
jz short loc_C022
or si, 8
loc_C022:
mov ax, si
pop di
pop si
leave
retf
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_C028 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_C048
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_C048:
cmp [bp+arg_0], 0
jge short loc_C05B
cmp [bp+arg_2], 0
jl loc_C137
mov [bp+arg_0], 0
loc_C05B:
cmp [bp+arg_2], 27Fh
jle short loc_C070
cmp [bp+arg_0], 27Fh
jg loc_C137
mov [bp+arg_2], 27Fh
loc_C070:
mov ax, [bp+arg_2]
mov word_1366C, ax
mov word_1366E, 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_129AA, 0
jnz short loc_C0D4
push [bp+arg_6]
call sub_B976
pop cx
loc_C0D4:
cmp byte_129AA, 0
jz short loc_C0F2
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_C12C
; ---------------------------------------------------------------------------
loc_C0F2:
cmp [bp+var_2], 0
jnz short loc_C103
mov al, [bp+var_5]
and al, [bp+var_6]
les bx, [bp+var_A]
assume es:nothing
jmp short loc_C129
; ---------------------------------------------------------------------------
loc_C103:
les bx, [bp+var_A]
mov al, [bp+var_5]
mov es:[bx], al
mov si, 1
jmp short loc_C11B
; ---------------------------------------------------------------------------
loc_C111:
les bx, [bp+var_A]
add bx, si
mov byte ptr es:[bx], 0FFh
inc si
loc_C11B:
cmp si, [bp+var_2]
jl short loc_C111
les bx, [bp+var_A]
add bx, [bp+var_2]
mov al, [bp+var_6]
loc_C129:
mov es:[bx], al
loc_C12C:
cmp byte_129AA, 0
jnz short loc_C137
call sub_BA0A
loc_C137:
pop di
pop si
leave
retf
sub_C028 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_C13B 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_C153
mov [bp+var_4], si
mov si, di
mov di, [bp+var_4]
loc_C153:
or si, si
jge short loc_C15F
or di, di
jl loc_C1F6
xor si, si
loc_C15F:
cmp di, 18Fh
jle short loc_C170
cmp si, 18Fh
jg loc_C1F6
mov di, 18Fh
loc_C170:
mov ax, [bp+arg_0]
mov word_1366C, ax
mov word_1366E, di
cmp byte_129AA, 0
jz short loc_C196
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_C1F6
; ---------------------------------------------------------------------------
loc_C196:
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_129AB
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_129AB
shl ax, cl
or [bp+var_6], ax
push [bp+arg_6]
call sub_B976
pop cx
mov [bp+var_2], si
jmp short loc_C1ED
; ---------------------------------------------------------------------------
loc_C1D9:
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_C1ED:
cmp [bp+var_2], di
jle short loc_C1D9
call sub_BA0A
loc_C1F6:
pop di
pop si
leave
retf
sub_C13B endp
; ---------------------------------------------------------------------------
push bp
mov bp, sp
mov byte_129AA, 1
push 7
push word ptr [bp+0Ch]
push word ptr [bp+0Ah]
push word ptr [bp+8]
push word ptr [bp+6]
nopcall sub_C247
add sp, 0Ah
mov byte_129AA, 0
pop bp
retf
; ---------------------------------------------------------------------------
push bp
mov bp, sp
mov ax, [bp+10h]
mov word_129AB, ax
push word ptr [bp+0Eh]
push word ptr [bp+0Ch]
push word ptr [bp+0Ah]
push word ptr [bp+8]
push word ptr [bp+6]
nopcall sub_C247
add sp, 0Ah
mov word_129AB, 80h
pop bp
retf
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_C247 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_129AA, 0
jnz short loc_C26D
mov ax, [bp+arg_0]
cmp ax, [bp+arg_4]
jnz short loc_C26D
push [bp+arg_8]
push [bp+arg_6]
push di
push ax
call sub_C13B
jmp short loc_C287
; ---------------------------------------------------------------------------
loc_C26D:
cmp byte_129AA, 0
jnz short loc_C28D
cmp di, [bp+arg_6]
jnz short loc_C28D
push [bp+arg_8]
push di
push [bp+arg_4]
push [bp+arg_0]
call sub_C028
loc_C287:
add sp, 8
jmp loc_C772
; ---------------------------------------------------------------------------
loc_C28D:
mov ax, [bp+arg_0]
cmp ax, [bp+arg_4]
jle short loc_C2B0
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_C2B0:
cmp [bp+arg_0], 0
jge short loc_C2EE
cmp [bp+arg_4], 0
jl loc_C772
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_C2EE:
cmp [bp+arg_4], 27Fh
jle short loc_C330
cmp [bp+arg_0], 27Fh
jg loc_C772
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_C330:
or di, di
jge short loc_C369
cmp [bp+arg_6], 0
jl loc_C772
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_C369:
cmp [bp+arg_6], 18Fh
jle short loc_C3AA
cmp di, 18Fh
jg loc_C772
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_C3AA:
cmp [bp+arg_6], 0
jge short loc_C3E1
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_C3E1:
cmp di, 18Fh
jle short loc_C415
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_C415:
mov ax, [bp+arg_4]
mov word_1366C, ax
mov ax, [bp+arg_6]
mov word_1366E, ax
mov ax, [bp+arg_0]
mov [bp+var_4], ax
mov [bp+var_6], di
cmp di, [bp+arg_6]
jge short loc_C434
mov ax, 1
jmp short loc_C437
; ---------------------------------------------------------------------------
loc_C434:
mov ax, 0FFFFh
loc_C437:
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_129AA, 0
jnz short loc_C471
push [bp+arg_8]
call sub_B976
pop cx
loc_C471:
mov ax, [bp+var_8]
cmp ax, [bp+var_A]
jle loc_C5A5
sar ax, 1
mov [bp+var_C], ax
mov [bp+var_2], 0
jmp loc_C58F
; ---------------------------------------------------------------------------
loc_C488:
mov ax, [bp+var_4]
sar ax, 3
cmp ax, [bp+var_12]
jnz short loc_C49D
mov ax, [bp+var_14]
cmp ax, [bp+var_6]
jz loc_C552
loc_C49D:
mov ax, [bp+var_14]
imul ax, 50h
add ax, [bp+var_12]
mov si, ax
cmp byte_129AA, 0
jnz short loc_C4C3
les bx, _VRAM_PLANE_B
add bx, si
mov ax, [bp+var_16]
mov es:[bx], ax
mov [bp+var_16], 0
jmp loc_C543
; ---------------------------------------------------------------------------
loc_C4C3:
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_C543:
mov ax, [bp+var_6]
mov [bp+var_14], ax
mov ax, [bp+var_4]
sar ax, 3
mov [bp+var_12], ax
loc_C552:
mov cl, byte ptr [bp+var_4]
and cl, 7
mov ax, word_129AB
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_129AB
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_C58C
mov ax, [bp+var_8]
add [bp+var_C], ax
mov ax, [bp+var_E]
add [bp+var_6], ax
loc_C58C:
inc [bp+var_2]
loc_C58F:
mov ax, [bp+var_2]
cmp ax, [bp+var_8]
jle loc_C488
cmp byte_129AA, 0
jz loc_C767
jmp loc_C6CF
; ---------------------------------------------------------------------------
loc_C5A5:
mov ax, [bp+var_A]
sar ax, 1
mov [bp+var_C], ax
mov [bp+var_2], 0
jmp loc_C6BC
; ---------------------------------------------------------------------------
loc_C5B5:
mov ax, [bp+var_4]
sar ax, 3
cmp ax, [bp+var_12]
jnz short loc_C5CA
mov ax, [bp+var_14]
cmp ax, [bp+var_6]
jz loc_C67F
loc_C5CA:
mov ax, [bp+var_14]
imul ax, 50h
add ax, [bp+var_12]
mov si, ax
cmp byte_129AA, 0
jnz short loc_C5F0
les bx, _VRAM_PLANE_B
add bx, si
mov ax, [bp+var_16]
mov es:[bx], ax
mov [bp+var_16], 0
jmp loc_C670
; ---------------------------------------------------------------------------
loc_C5F0:
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_C670:
mov ax, [bp+var_6]
mov [bp+var_14], ax
mov ax, [bp+var_4]
sar ax, 3
mov [bp+var_12], ax
loc_C67F:
mov cl, byte ptr [bp+var_4]
and cl, 7
mov ax, word_129AB
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_129AB
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_C6B9
mov ax, [bp+var_A]
add [bp+var_C], ax
inc [bp+var_4]
loc_C6B9:
inc [bp+var_2]
loc_C6BC:
mov ax, [bp+var_2]
cmp ax, [bp+var_A]
jle loc_C5B5
cmp byte_129AA, 0
jz loc_C767
loc_C6CF:
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_C767:
cmp byte_129AA, 0
jnz short loc_C772
call sub_BA0A
loc_C772:
pop di
pop si
leave
retf
sub_C247 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_C776 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_C799
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_C799:
cmp si, di
jle short loc_C7A5
mov [bp+var_8], si
mov si, di
mov di, [bp+var_8]
loc_C7A5:
cmp [bp+arg_0], 0
jge short loc_C7B8
cmp [bp+arg_4], 0
jl loc_C88D
mov [bp+arg_0], 0
loc_C7B8:
cmp [bp+arg_4], 27Fh
jle short loc_C7CD
cmp [bp+arg_0], 27Fh
jg loc_C88D
mov [bp+arg_4], 27Fh
loc_C7CD:
or si, si
jge short loc_C7D9
or di, di
jl loc_C88D
xor si, si
loc_C7D9:
cmp di, 18Fh
jle short loc_C7EA
cmp si, 18Fh
jg loc_C88D
mov di, 18Fh
loc_C7EA:
push [bp+arg_8]
call sub_B976
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_C884
; ---------------------------------------------------------------------------
loc_C80C:
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_C84C
mov al, [bp+var_9]
and al, [bp+var_A]
les bx, [bp+var_E]
jmp short loc_C87A
; ---------------------------------------------------------------------------
loc_C84C:
les bx, [bp+var_E]
mov al, [bp+var_9]
mov es:[bx], al
mov [bp+var_2], 1
jmp short loc_C869
; ---------------------------------------------------------------------------
loc_C85C:
les bx, [bp+var_E]
add bx, [bp+var_2]
mov byte ptr es:[bx], 0FFh
inc [bp+var_2]
loc_C869:
mov ax, [bp+var_2]
cmp ax, [bp+var_6]
jl short loc_C85C
les bx, [bp+var_E]
add bx, [bp+var_6]
mov al, [bp+var_A]
loc_C87A:
mov es:[bx], al
add word ptr [bp+var_E], 50h ; 'P'
inc [bp+var_4]
loc_C884:
cmp [bp+var_4], di
jle short loc_C80C
call sub_BA0A
loc_C88D:
pop di
pop si
leave
retf
sub_C776 endp
; ---------------------------------------------------------------------------
push bp
mov bp, sp
push si
push di
mov di, [bp+6]
mov si, [bp+0Eh]
push si
push word ptr [bp+8]
push word ptr [bp+0Ah]
push di
call sub_C028
push si
push word ptr [bp+0Ch]
push word ptr [bp+8]
push di
call sub_C13B
push si
push word ptr [bp+0Ch]
push word ptr [bp+8]
push word ptr [bp+0Ah]
call sub_C13B
push si
push word ptr [bp+0Ch]
push word ptr [bp+0Ah]
push di
call sub_C028
add sp, 20h
pop di
pop si
pop bp
retf
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_C8D5 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_C937
; ---------------------------------------------------------------------------
loc_C8EF:
les bx, [bp+arg_2]
mov al, es:[bx]
mov ah, 0
mov bx, ax
test __mbctype+1[bx], 4
jz short loc_C92F
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_C925
cmp di, 869Eh
jbe short loc_C92A
loc_C925:
add cx, 10h
jmp short loc_C935
; ---------------------------------------------------------------------------
loc_C92A:
add cx, 8
jmp short loc_C935
; ---------------------------------------------------------------------------
loc_C92F:
add cx, 8
inc word ptr [bp+arg_2]
loc_C935:
add cx, si
loc_C937:
les bx, [bp+arg_2]
cmp byte ptr es:[bx], 0
jnz short loc_C8EF
mov ax, cx
sub ax, si
pop di
pop si
pop bp
retf
sub_C8D5 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_C948 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_C9E7
pushd [bp+arg_6]
push [bp+arg_4]
call sub_C8D5
add sp, 6
mov [bp+var_18], ax
cmp [bp+var_14], 0
jz short loc_C9CA
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_C776
add sp, 0Ah
jmp short loc_C9FE
; ---------------------------------------------------------------------------
loc_C9CA:
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_C776
add sp, 0Ah
jmp short loc_CA16
; ---------------------------------------------------------------------------
loc_C9E7:
cmp [bp+var_14], 0
jz short loc_CA16
pushd [bp+arg_6]
push [bp+arg_4]
call sub_C8D5
add sp, 6
mov [bp+var_18], ax
loc_C9FE:
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_C028
add sp, 8
loc_CA16:
push [bp+arg_4]
call sub_B976
pop cx
mov dx, 68h ; 'h'
mov al, 0Bh
out dx, al
jmp loc_CC4E
; ---------------------------------------------------------------------------
loc_CA27:
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_CA7C
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_CAC2
; ---------------------------------------------------------------------------
loc_CA7C:
les bx, [bp+arg_6]
mov al, es:[bx]
mov ah, 0
mov bx, ax
test __mbctype+1[bx], 3
jz short loc_CA9A
mov bx, word ptr [bp+arg_6]
mov al, es:[bx]
mov ah, 0
add ax, 2980h
jmp short loc_CAB5
; ---------------------------------------------------------------------------
loc_CA9A:
les bx, [bp+arg_6]
mov al, es:[bx]
cbw
mov bx, ax
test byte ptr [bx+0C3Bh], 5Eh
jz short loc_CABA
mov bx, word ptr [bp+arg_6]
mov al, es:[bx]
mov ah, 0
add ax, 2900h
loc_CAB5:
mov [bp+var_2], ax
jmp short loc_CABF
; ---------------------------------------------------------------------------
loc_CABA:
mov [bp+var_2], 2B21h
loc_CABF:
inc word ptr [bp+arg_6]
loc_CAC2:
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 ; '<27>'
out dx, al
cmp [bp+var_2], 2921h
jb short loc_CB23
cmp [bp+var_2], 2B7Eh
ja short loc_CB23
cmp si, 278h
jg loc_CC59
mov [bp+var_1A], 0
jmp short loc_CB16
; ---------------------------------------------------------------------------
loc_CAF4:
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_CB16:
cmp [bp+var_1A], 10h
jl short loc_CAF4
mov [bp+var_A], 0
jmp short loc_CB79
; ---------------------------------------------------------------------------
loc_CB23:
cmp si, 270h
jg loc_CC59
mov [bp+var_1A], 0
jmp short loc_CB6E
; ---------------------------------------------------------------------------
loc_CB32:
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_CB6E:
cmp [bp+var_1A], 10h
jl short loc_CB32
mov [bp+var_A], 1
loc_CB79:
mov [bp+var_1A], 0
jmp loc_CC35
; ---------------------------------------------------------------------------
loc_CB81:
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_CBA5
cmp ax, 2
jz short loc_CBBB
cmp ax, 3
jz short loc_CBB1
jmp short loc_CBD1
; ---------------------------------------------------------------------------
loc_CBA5:
mov di, [bp+var_4]
mov ax, di
add ax, ax
or [bp+var_4], ax
jmp short loc_CBD1
; ---------------------------------------------------------------------------
loc_CBB1:
mov di, [bp+var_4]
mov ax, di
add ax, ax
or [bp+var_4], ax
loc_CBBB:
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_CBD1:
cmp [bp+var_16], 0
jz short loc_CBE8
cmp [bp+var_A], 0
jz short loc_CBE3
xor [bp+var_4], 0FFFFh
jmp short loc_CBE8
; ---------------------------------------------------------------------------
loc_CBE3:
xor [bp+var_4], 0FF00h
loc_CBE8:
cmp [bp+var_C], 0
jz short loc_CC1B
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_CC2E
; ---------------------------------------------------------------------------
loc_CC1B:
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_CC2E:
add word ptr [bp+var_8], 50h ; 'P'
inc [bp+var_1A]
loc_CC35:
cmp [bp+var_1A], 10h
jl loc_CB81
cmp [bp+var_A], 0
jz short loc_CC46
add si, 8
loc_CC46:
mov ax, [bp+var_10]
add ax, 8
add si, ax
loc_CC4E:
les bx, [bp+arg_6]
cmp byte ptr es:[bx], 0
jnz loc_CA27
loc_CC59:
mov dx, 68h ; 'h'
mov al, 0Ah
out dx, al
call sub_BA0A
pop di
pop si
leave
retf
sub_C948 endp
; ---------------------------------------------------------------------------
enter 156h, 0
push si
push di
mov di, [bp+6]
mov ax, [bp+0Ah]
sub ax, di
mov bx, 8
cwd
idiv bx
mov si, ax
mov ax, [bp+0Ch]
sub ax, [bp+8]
mov [bp-2], ax
mov dword ptr [bp-6], 0A8000000h
mov dword ptr [bp-0Ah], 0B0000000h
mov dword ptr [bp-0Eh], 0B8000000h
mov dword ptr [bp-12h], 0E0000000h
mov al, _graph_page
xor al, 1
mov [bp-13h], al
mov ax, di
cwd
idiv bx
mov dx, [bp+8]
imul dx, 50h
add ax, dx
add [bp-6], ax
mov ax, di
cwd
idiv bx
mov dx, [bp+8]
imul dx, 50h
add ax, dx
add [bp-0Ah], ax
mov ax, di
cwd
idiv bx
mov dx, [bp+8]
imul dx, 50h
add ax, dx
add [bp-0Eh], ax
mov ax, di
cwd
idiv bx
mov dx, [bp+8]
imul dx, 50h
add ax, dx
add [bp-12h], ax
mov word ptr [bp-16h], 0
jmp loc_CD9B
; ---------------------------------------------------------------------------
loc_CCF6:
push si
pushd dword ptr [bp-6]
push ss
lea ax, [bp-66h]
push ax
call _memcpy
push si
pushd dword ptr [bp-0Ah]
push ss
lea ax, [bp-0B6h]
push ax
call _memcpy
push si
pushd dword ptr [bp-0Eh]
push ss
lea ax, [bp-106h]
push ax
call _memcpy
push si
pushd dword ptr [bp-12h]
push ss
lea ax, [bp-156h]
push ax
call _memcpy
graph_accesspage [bp-13h]
push si
push ss
lea ax, [bp-66h]
push ax
pushd dword ptr [bp-6]
call _memcpy
add sp, 32h
push si
push ss
lea ax, [bp-0B6h]
push ax
pushd dword ptr [bp-0Ah]
call _memcpy
push si
push ss
lea ax, [bp-106h]
push ax
pushd dword ptr [bp-0Eh]
call _memcpy
push si
push ss
lea ax, [bp-156h]
push ax
pushd dword ptr [bp-12h]
call _memcpy
add sp, 1Eh
graph_accesspage _graph_page
add word ptr [bp-6], 50h ; 'P'
add word ptr [bp-0Ah], 50h ; 'P'
add word ptr [bp-0Eh], 50h ; 'P'
add word ptr [bp-12h], 50h ; 'P'
inc word ptr [bp-16h]
loc_CD9B:
mov ax, [bp-16h]
cmp ax, [bp-2]
jl loc_CCF6
pop di
pop si
leave
retf
; ---------------------------------------------------------------------------
enter 164h, 0
push si
push di
mov di, [bp+6]
mov ax, [bp+0Ah]
sub ax, di
mov bx, 8
cwd
idiv bx
mov si, ax
mov ax, [bp+0Ch]
sub ax, [bp+8]
mov [bp-2], ax
mov dword ptr [bp-6], 0A8000000h
mov dword ptr [bp-0Ah], 0B0000000h
mov dword ptr [bp-0Eh], 0B8000000h
mov dword ptr [bp-12h], 0E0000000h
mov dword ptr [bp-16h], 0A8000000h
mov dword ptr [bp-1Ah], 0B0000000h
mov dword ptr [bp-1Eh], 0B8000000h
mov dword ptr [bp-22h], 0E0000000h
mov ax, di
cwd
idiv bx
mov dx, [bp+8]
imul dx, 50h
add ax, dx
add [bp-6], ax
mov ax, di
cwd
idiv bx
mov dx, [bp+8]
imul dx, 50h
add ax, dx
add [bp-0Ah], ax
mov ax, di
cwd
idiv bx
mov dx, [bp+8]
imul dx, 50h
add ax, dx
add [bp-0Eh], ax
mov ax, di
cwd
idiv bx
mov dx, [bp+8]
imul dx, 50h
add ax, dx
add [bp-12h], ax
mov ax, [bp+0Eh]
cwd
idiv bx
mov dx, [bp+10h]
imul dx, 50h
add ax, dx
add [bp-16h], ax
mov ax, [bp+0Eh]
cwd
idiv bx
mov dx, [bp+10h]
imul dx, 50h
add ax, dx
add [bp-1Ah], ax
mov ax, [bp+0Eh]
cwd
idiv bx
mov dx, [bp+10h]
imul dx, 50h
add ax, dx
add [bp-1Eh], ax
mov ax, [bp+0Eh]
cwd
idiv bx
mov dx, [bp+10h]
imul dx, 50h
add ax, dx
add [bp-22h], ax
mov word ptr [bp-24h], 0
jmp loc_CF49
; ---------------------------------------------------------------------------
loc_CE94:
push si
pushd dword ptr [bp-6]
push ss
lea ax, [bp-74h]
push ax
call _memcpy
push si
pushd dword ptr [bp-0Ah]
push ss
lea ax, [bp-0C4h]
push ax
call _memcpy
push si
pushd dword ptr [bp-0Eh]
push ss
lea ax, [bp-114h]
push ax
call _memcpy
push si
pushd dword ptr [bp-12h]
push ss
lea ax, [bp-164h]
push ax
call _memcpy
graph_accesspage [bp+14h]
push si
push ss
lea ax, [bp-74h]
push ax
pushd dword ptr [bp-16h]
call _memcpy
add sp, 32h
push si
push ss
lea ax, [bp-0C4h]
push ax
pushd dword ptr [bp-1Ah]
call _memcpy
push si
push ss
lea ax, [bp-114h]
push ax
pushd dword ptr [bp-1Eh]
call _memcpy
push si
push ss
lea ax, [bp-164h]
push ax
pushd dword ptr [bp-22h]
call _memcpy
add sp, 1Eh
graph_accesspage [bp+12h]
add word ptr [bp-6], 50h ; 'P'
add word ptr [bp-0Ah], 50h ; 'P'
add word ptr [bp-0Eh], 50h ; 'P'
add word ptr [bp-12h], 50h ; 'P'
add word ptr [bp-16h], 50h ; 'P'
add word ptr [bp-1Ah], 50h ; 'P'
add word ptr [bp-1Eh], 50h ; 'P'
add word ptr [bp-22h], 50h ; 'P'
inc word ptr [bp-24h]
loc_CF49:
mov ax, [bp-24h]
cmp ax, [bp-2]
jl loc_CE94
graph_accesspage _graph_page
pop di
pop si
leave
retf
; ---------------------------------------------------------------------------
enter 34h, 0
push si
push di
push 300000h
push ss
lea ax, [bp-34h]
push ax
call _memset
add sp, 8
xor di, di
jmp loc_CFFD
; ---------------------------------------------------------------------------
loc_CF7C:
mov ax, di
add ax, ax
les bx, [bp+0Ch]
add bx, ax
cmp word ptr es:[bx], 0
jnz short loc_CFBA
mov bx, di
imul bx, 3
lea ax, [bp-34h]
add bx, ax
mov al, [bp+6]
mov ss:[bx], al
mov bx, di
imul bx, 3
lea ax, [bp-33h]
add bx, ax
mov al, [bp+8]
mov ss:[bx], al
mov bx, di
imul bx, 3
lea ax, [bp-32h]
add bx, ax
mov al, [bp+0Ah]
jmp short loc_CFF9
; ---------------------------------------------------------------------------
loc_CFBA:
mov bx, di
imul bx, 3
lea ax, [bp-34h]
add bx, ax
mov si, di
imul si, 3
mov al, [si+6EAh]
mov ss:[bx], al
mov bx, di
imul bx, 3
lea ax, [bp-33h]
add bx, ax
mov si, di
imul si, 3
mov al, [si+6EBh]
mov ss:[bx], al
mov bx, di
imul bx, 3
lea ax, [bp-32h]
add bx, ax
mov si, di
imul si, 3
mov al, [si+6ECh]
loc_CFF9:
mov ss:[bx], al
inc di
loc_CFFD:
cmp di, 10h
jl loc_CF7C
xor di, di
jmp loc_D0DA
; ---------------------------------------------------------------------------
loc_D009:
call _z_vsync_wait
mov word ptr [bp-2], 0
jmp loc_D0C8
; ---------------------------------------------------------------------------
loc_D016:
mov word ptr [bp-4], 0
jmp short palette_show5
; ---------------------------------------------------------------------------
loc_D01D:
mov bx, [bp-2]
imul bx, 3
add bx, [bp-4]
lea ax, [bp-34h]
add bx, ax
mov al, ss:[bx]
mov bx, [bp-2]
imul bx, 3
add bx, [bp-4]
cmp al, [bx+6EAh]
jz short palette_show2
mov bx, [bp-2]
imul bx, 3
add bx, [bp-4]
lea ax, [bp-34h]
add bx, ax
mov al, ss:[bx]
mov bx, [bp-2]
imul bx, 3
add bx, [bp-4]
cmp al, [bx+6EAh]
jge short loc_D061
mov al, 1
jmp short loc_D063
; ---------------------------------------------------------------------------
loc_D061:
mov al, 0FFh
loc_D063:
mov bx, [bp-2]
imul bx, 3
add bx, [bp-4]
lea dx, [bp-34h]
add bx, dx
add al, ss:[bx]
mov bx, [bp-2]
imul bx, 3
add bx, [bp-4]
add bx, dx
mov ss:[bx], al
palette_show2:
inc word ptr [bp-4]
palette_show5:
cmp word ptr [bp-4], 3
jl short loc_D01D
mov bx, [bp-2]
imul bx, 3
lea ax, [bp-32h]
add bx, ax
mov al, ss:[bx]
cbw
push ax
mov bx, [bp-2]
imul bx, 3
lea ax, [bp-33h]
add bx, ax
mov al, ss:[bx]
cbw
push ax
mov bx, [bp-2]
imul bx, 3
lea ax, [bp-34h]
add bx, ax
mov al, ss:[bx]
cbw
push ax
push word ptr [bp-2]
call sub_B955
add sp, 8
inc word ptr [bp-2]
loc_D0C8:
cmp word ptr [bp-2], 10h
jl loc_D016
push word ptr [bp+10h]
call _delay
pop cx
inc di
loc_D0DA:
cmp di, 10h
jl loc_D009
pop di
pop si
leave
retf
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_D0E5 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_D12D:
mov es, si
cmp word ptr es:1, 0
jz short loc_D156
xor di, di
jmp short loc_D147
; ---------------------------------------------------------------------------
loc_D13B:
mov es, si
mov al, es:[di+10h]
cmp al, [bp+di+var_12]
jnz short loc_D14C
inc di
loc_D147:
cmp di, 0Ah
jl short loc_D13B
loc_D14C:
cmp di, 0Ah
jnz short loc_D156
lea ax, [si+1]
jmp short loc_D16F
; ---------------------------------------------------------------------------
loc_D156:
mov es, si
cmp byte ptr es:0, 4Dh ; 'M'
jz short loc_D164
xor ax, ax
jmp short loc_D16F
; ---------------------------------------------------------------------------
loc_D164:
mov es, si
mov ax, es:3
inc ax
add si, ax
jmp short loc_D12D
; ---------------------------------------------------------------------------
loc_D16F:
pop di
pop si
leave
retf
sub_D0E5 endp
; ---------------------------------------------------------------------------
enter 4, 0
push si
push di
call sub_D0E5
mov di, ax
or di, di
jz short loc_D1B9
mov [bp-2], di
mov word ptr [bp-4], 10h
xor si, si
jmp short loc_D1B0
; ---------------------------------------------------------------------------
loc_D18F:
les bx, [bp-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_BA5E
add sp, 8
add word ptr [bp-4], 3
inc si
loc_D1B0:
cmp si, 10h
jl short loc_D18F
xor ax, ax
jmp short loc_D1BC
; ---------------------------------------------------------------------------
loc_D1B9:
mov ax, 1
loc_D1BC:
pop di
pop si
leave
retf
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_D1C0 proc far
var_4 = dword ptr -4
enter 4, 0
push si
push di
call sub_D0E5
mov di, ax
or di, di
jz short loc_D219
mov word ptr [bp+var_4+2], di
mov word ptr [bp+var_4], 10h
xor si, si
jmp short loc_D210
; ---------------------------------------------------------------------------
loc_D1DC:
mov bx, si
imul bx, 3
mov al, [bx+6EBh]
les bx, [bp+var_4]
mov es:[bx], al
mov bx, si
imul bx, 3
mov al, [bx+6EAh]
mov bx, word ptr [bp+var_4]
mov es:[bx+1], al
mov bx, si
imul bx, 3
mov al, [bx+6ECh]
mov bx, word ptr [bp+var_4]
mov es:[bx+2], al
add word ptr [bp+var_4], 3
inc si
loc_D210:
cmp si, 10h
jl short loc_D1DC
xor ax, ax
jmp short loc_D21C
; ---------------------------------------------------------------------------
loc_D219:
mov ax, 1
loc_D21C:
pop di
pop si
leave
retf
sub_D1C0 endp
op_06_TEXT ends
; ---------------------------------------------------------------------------
; ===========================================================================
; Segment type: Pure code
op_07_TEXT segment byte public 'CODE' use16
assume cs:op_07_TEXT
assume es:nothing, ss:nothing, ds:_DATA, fs:nothing, gs:nothing
enter 10h, 0
push si
push di
mov ax, [bp+6]
sar ax, 3
mov dx, [bp+8]
shl dx, 6
add ax, dx
mov dx, [bp+8]
shl dx, 4
add ax, dx
mov si, ax
xor di, di
jmp loc_D2C8
; ---------------------------------------------------------------------------
loc_D243:
push 0
call _graph_accesspage_func
les bx, _VRAM_PLANE_B
add bx, si
mov eax, es:[bx]
mov [bp-10h], eax
les bx, _VRAM_PLANE_R
add bx, si
mov eax, es:[bx]
mov [bp-0Ch], eax
les bx, _VRAM_PLANE_G
add bx, si
mov eax, es:[bx]
mov [bp-8], eax
les bx, _VRAM_PLANE_E
add bx, si
mov eax, es:[bx]
mov [bp-4], eax
push 1
call _graph_accesspage_func
add sp, 4
les bx, _VRAM_PLANE_B
add bx, si
mov eax, [bp-10h]
mov es:[bx], eax
les bx, _VRAM_PLANE_R
add bx, si
mov eax, [bp-0Ch]
mov es:[bx], eax
les bx, _VRAM_PLANE_G
add bx, si
mov eax, [bp-8]
mov es:[bx], eax
les bx, _VRAM_PLANE_E
add bx, si
mov eax, [bp-4]
mov es:[bx], eax
add si, 50h ; 'P'
inc di
loc_D2C8:
cmp di, 20h ; ' '
jl loc_D243
push 0
call _graph_accesspage_func
pop cx
pop di
pop si
leave
retf
include th01/hardware/vram_planes_set.asm
EGC_START_COPY_DEF 1, far
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
_egc_copy_rect_1_to_0 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
arg_2 = word ptr 8
arg_4 = word ptr 0Ah
arg_6 = word ptr 0Ch
enter 0Ah, 0
push si
push di
mov si, [bp+arg_0]
mov di, si
add si, [bp+arg_4]
and di, 0FFF0h
mov ax, di
sar ax, 3
mov dx, [bp+arg_2]
shl dx, 6
add ax, dx
mov dx, [bp+arg_2]
shl dx, 4
add ax, dx
mov [bp+var_6], ax
call egc_start_copy_1
mov [bp+var_2], 0
jmp short loc_D3B6
; ---------------------------------------------------------------------------
loc_D36C:
mov [bp+var_4], di
mov ax, [bp+var_6]
mov [bp+var_A], ax
jmp short loc_D3AA
; ---------------------------------------------------------------------------
loc_D377:
push 1
call _graph_accesspage_func
les bx, _VRAM_PLANE_B
add bx, [bp+var_A]
mov ax, es:[bx]
mov [bp+var_8], ax
push 0
call _graph_accesspage_func
add sp, 4
les bx, _VRAM_PLANE_B
add bx, [bp+var_A]
mov ax, [bp+var_8]
mov es:[bx], ax
add [bp+var_A], 2
add [bp+var_4], 10h
loc_D3AA:
cmp [bp+var_4], si
jl short loc_D377
add [bp+var_6], 50h ; 'P'
inc [bp+var_2]
loc_D3B6:
mov ax, [bp+var_2]
cmp ax, [bp+arg_6]
jl short loc_D36C
call egc_off
pop di
pop si
leave
retf
_egc_copy_rect_1_to_0 endp
; ---------------------------------------------------------------------------
enter 4, 0
push si
push di
mov di, [bp+0Ah]
mov ax, [bp+8]
imul ax, 50h
push ax
mov ax, [bp+6]
mov bx, 8
cwd
idiv bx
pop dx
add dx, ax
mov si, dx
mov ax, di
mov bx, 40h
cwd
idiv bx
shl ax, 2
mov bx, ax
mov ax, [bx+1474h]
mov dx, [bx+1472h]
push ax
mov ax, di
mov bx, 40h
push dx
cwd
idiv bx
imul dx, 281h
pop ax
add ax, dx
pop dx
mov [bp-2], dx
mov [bp-4], ax
xor cx, cx
jmp short loc_D481
; ---------------------------------------------------------------------------
loc_D416:
les bx, _VRAM_PLANE_B
add bx, si
mov eax, es:[bx]
mov dx, cx
shl dx, 2
les bx, [bp-4]
add bx, dx
mov es:[bx+1], eax
les bx, _VRAM_PLANE_R
add bx, si
mov eax, es:[bx]
mov dx, cx
shl dx, 2
les bx, [bp-4]
add bx, dx
mov es:[bx+81h], eax
les bx, _VRAM_PLANE_G
add bx, si
mov eax, es:[bx]
mov dx, cx
shl dx, 2
les bx, [bp-4]
add bx, dx
mov es:[bx+101h], eax
les bx, _VRAM_PLANE_E
add bx, si
mov eax, es:[bx]
mov dx, cx
shl dx, 2
les bx, [bp-4]
add bx, dx
mov es:[bx+181h], eax
add si, 50h ; 'P'
inc cx
loc_D481:
cmp cx, 20h ; ' '
jl short loc_D416
pop di
pop si
leave
retf
; ---------------------------------------------------------------------------
enter 0Eh, 0
push si
push di
mov ax, [bp+8]
imul ax, 50h
push ax
mov ax, [bp+6]
mov bx, 8
cwd
idiv bx
pop dx
add dx, ax
mov di, dx
mov ax, [bp+0Ah]
mov bx, 40h
cwd
idiv bx
shl ax, 2
mov bx, ax
mov ax, [bx+1474h]
mov dx, [bx+1472h]
push ax
mov ax, [bp+0Ah]
mov bx, 40h
push dx
cwd
idiv bx
imul dx, 281h
pop ax
add ax, dx
pop dx
mov [bp-0Ch], dx
mov [bp-0Eh], ax
test byte ptr [bp+0Ch], 2
jz short loc_D4DF
mov ax, 10h
jmp short loc_D4E1
; ---------------------------------------------------------------------------
loc_D4DF:
xor ax, ax
loc_D4E1:
mov [bp-2], ax
test byte ptr [bp+0Ch], 1
jz short loc_D4F2
mov eax, 0FFFFh
jmp short loc_D4F8
; ---------------------------------------------------------------------------
loc_D4F2:
mov eax, 0FFFF0000h
loc_D4F8:
mov [bp-6], eax
test byte ptr [bp+0Ch], 1
jz short loc_D507
mov ax, 10h
jmp short loc_D509
; ---------------------------------------------------------------------------
loc_D507:
xor ax, ax
loc_D509:
cwde
mov [bp-0Ah], eax
mov si, [bp-2]
jmp loc_D5E8
; ---------------------------------------------------------------------------
loc_D515:
mov ax, si
shl ax, 2
les bx, [bp-0Eh]
add bx, ax
mov eax, [bp-6]
and es:[bx+1], eax
les bx, _VRAM_PLANE_B
add bx, di
mov eax, es:[bx]
mov cl, [bp-0Ah]
shl eax, cl
mov edx, [bp-6]
not edx
and eax, edx
mov dx, si
shl dx, 2
les bx, [bp-0Eh]
add bx, dx
or es:[bx+1], eax
mov eax, [bp-6]
and es:[bx+81h], eax
les bx, _VRAM_PLANE_R
add bx, di
mov eax, es:[bx]
shl eax, cl
mov edx, [bp-6]
not edx
and eax, edx
mov dx, si
shl dx, 2
les bx, [bp-0Eh]
add bx, dx
or es:[bx+81h], eax
mov eax, [bp-6]
and es:[bx+101h], eax
les bx, _VRAM_PLANE_G
add bx, di
mov eax, es:[bx]
shl eax, cl
mov edx, [bp-6]
not edx
and eax, edx
mov dx, si
shl dx, 2
les bx, [bp-0Eh]
add bx, dx
or es:[bx+101h], eax
mov eax, [bp-6]
and es:[bx+181h], eax
les bx, _VRAM_PLANE_E
add bx, di
mov eax, es:[bx]
shl eax, cl
mov edx, [bp-6]
not edx
and eax, edx
mov dx, si
shl dx, 2
les bx, [bp-0Eh]
add bx, dx
or es:[bx+181h], eax
add di, 50h ; 'P'
inc si
loc_D5E8:
mov ax, [bp-2]
add ax, 10h
cmp ax, si
jg loc_D515
pop di
pop si
leave
retf
op_07_TEXT ends
; ===========================================================================
; Segment type: Pure code
op_08_TEXT segment byte public 'CODE' use16
assume cs:op_08_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
; int __cdecl __far sub_D5F8(int, int, int, char *format, char arglist)
sub_D5F8 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_C948
add sp, 16h
leave
retf
sub_D5F8 endp
op_08_TEXT ends
; ===========================================================================
; Segment type: Pure code
op_09_TEXT segment byte public 'CODE' use16
assume cs:op_09_TEXT
;org 1
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_D631 proc far
var_38 = byte ptr -38h
var_33 = byte ptr -33h
var_8 = dword ptr -8
var_4 = word ptr -4
var_2 = word ptr -2
arg_0 = word ptr 6
arg_2 = dword ptr 8
enter 38h, 0
push si
push di
mov di, [bp+arg_0]
pushd [bp+arg_2]
call @arc_file_load$qnxc
push ss
lea ax, [bp+var_38]
push ax
push 6
call @arc_file_get$qncui
mov al, [bp+var_33]
cbw
mov [bp+var_4], ax
mov bx, di
shl bx, 2
mov ax, [bx+1472h]
or ax, [bx+1474h]
jz short loc_D677
mov bx, di
shl bx, 2
pushd dword ptr [bx+1472h] ; font
call @$bdla$qnv
add sp, 4
loc_D677:
mov ax, [bp+var_4]
imul ax, 281h
push ax
call @$bnwa$qui
pop cx
mov bx, di
shl bx, 2
mov [bx+1474h], dx
mov [bx+1472h], ax
mov bx, di
shl bx, 2
mov ax, [bx+1472h]
or ax, [bx+1474h]
jnz short loc_D6A7
mov ax, 0FFFDh
jmp loc_D74E
; ---------------------------------------------------------------------------
loc_D6A7:
push ss
lea ax, [bp+var_38]
push ax
push 30h ; '0'
call @arc_file_get$qncui
cmp word_129B8, 0
jz short loc_D6C7
push ss
lea ax, [bp+var_38]
push ax
call sub_BA15
add sp, 4
loc_D6C7:
mov al, byte ptr [bp+var_4]
mov [di+72Fh], al
mov bx, di
shl bx, 2
mov ax, [bx+1474h]
mov dx, [bx+1472h]
mov word ptr [bp+var_8+2], ax
mov word ptr [bp+var_8], dx
mov [bp+var_2], 0
jmp short loc_D73F
; ---------------------------------------------------------------------------
loc_D6E8:
pushd [bp+var_8]
push 1
call @arc_file_get$qncui
mov ax, word ptr [bp+var_8]
inc ax
push word ptr [bp+var_8+2]
push ax
push 200h
call @arc_file_get$qncui
xor si, si
jmp short loc_D732
; ---------------------------------------------------------------------------
loc_D707:
mov ax, si
shl ax, 2
les bx, [bp+var_8]
add bx, ax
mov eax, es:[bx+1]
and eax, es:[bx+81h]
and eax, es:[bx+101h]
and eax, es:[bx+181h]
not eax
mov es:[bx+201h], eax
inc si
loc_D732:
cmp si, 20h ; ' '
jl short loc_D707
inc [bp+var_2]
add word ptr [bp+var_8], 281h
loc_D73F:
mov ax, [bp+var_2]
cmp ax, [bp+var_4]
jl short loc_D6E8
call @arc_file_free$qv
xor ax, ax
loc_D74E:
pop di
pop si
leave
retf
sub_D631 endp
; ---------------------------------------------------------------------------
push bp
mov bp, sp
push si
mov si, [bp+6]
cmp word ptr [bp+8], 0
jle short loc_D765
cmp word ptr [bp+8], 40h
jle short loc_D76A
loc_D765:
mov ax, 0FFF7h
jmp short loc_D7C3
; ---------------------------------------------------------------------------
loc_D76A:
mov bx, si
shl bx, 2
mov ax, [bx+1472h]
or ax, [bx+1474h]
jz short loc_D78B
mov bx, si
shl bx, 2
pushd dword ptr [bx+1472h]
call @$bdla$qnv
add sp, 4
loc_D78B:
mov al, [bp+8]
mov [si+72Fh], al
mov ax, [bp+8]
imul ax, 281h
push ax
call @$bnwa$qui
pop cx
mov bx, si
shl bx, 2
mov [bx+1474h], dx
mov [bx+1472h], ax
mov bx, si
shl bx, 2
mov ax, [bx+1472h]
or ax, [bx+1474h]
jnz short loc_D7C1
mov ax, 0FFFDh
jmp short loc_D7C3
; ---------------------------------------------------------------------------
loc_D7C1:
xor ax, ax
loc_D7C3:
pop si
pop bp
retf
; ---------------------------------------------------------------------------
enter 2, 0
mov word_129B8, 0
pushd dword ptr [bp+8]
push word ptr [bp+6]
call sub_D631
add sp, 6
mov [bp-2], ax
mov word_129B8, 1
leave
retf
; ---------------------------------------------------------------------------
push bp
mov bp, sp
push si
mov si, [bp+6]
mov bx, si
shl bx, 2
mov ax, [bx+1472h]
or ax, [bx+1474h]
jz short loc_D827
mov bx, si
shl bx, 2
pushd dword ptr [bx+1472h]
call @$bdla$qnv
add sp, 4
mov bx, si
shl bx, 2
mov word ptr [bx+1474h], 0
mov word ptr [bx+1472h], 0
mov byte ptr [si+72Fh], 0
loc_D827:
pop si
pop bp
retf
; ---------------------------------------------------------------------------
enter 4, 0
push si
push di
mov di, [bp+8]
mov ax, [bp+6]
sar ax, 3
mov dx, di
shl dx, 6
add ax, dx
mov dx, di
shl dx, 4
add ax, dx
mov si, ax
mov ax, [bp+0Ah]
mov bx, 40h
cwd
idiv bx
shl ax, 2
mov bx, ax
mov ax, [bx+1474h]
mov dx, [bx+1472h]
push ax
mov ax, [bp+0Ah]
mov bx, 40h
push dx
cwd
idiv bx
imul dx, 281h
pop ax
add ax, dx
pop dx
mov [bp-2], dx
mov [bp-4], ax
xor cx, cx
jmp short loc_D8E7
; ---------------------------------------------------------------------------
loc_D87C:
mov ax, cx
shl ax, 2
les bx, [bp-4]
add bx, ax
mov eax, es:[bx+1]
les bx, _VRAM_PLANE_B
add bx, si
mov es:[bx], eax
mov ax, cx
shl ax, 2
les bx, [bp-4]
add bx, ax
mov eax, es:[bx+81h]
les bx, _VRAM_PLANE_R
add bx, si
mov es:[bx], eax
mov ax, cx
shl ax, 2
les bx, [bp-4]
add bx, ax
mov eax, es:[bx+101h]
les bx, _VRAM_PLANE_G
add bx, si
mov es:[bx], eax
mov ax, cx
shl ax, 2
les bx, [bp-4]
add bx, ax
mov eax, es:[bx+181h]
les bx, _VRAM_PLANE_E
add bx, si
mov es:[bx], eax
add si, 50h ; 'P'
inc cx
loc_D8E7:
cmp cx, 20h ; ' '
jl short loc_D87C
pop di
pop si
leave
retf
; ---------------------------------------------------------------------------
enter 8, 0
push si
push di
mov ax, [bp+8]
imul ax, 50h
push ax
mov ax, [bp+6]
mov bx, 8
cwd
idiv bx
pop dx
add dx, ax
mov di, dx
mov ax, [bp+0Ah]
mov bx, 40h
cwd
idiv bx
shl ax, 2
mov bx, ax
mov ax, [bx+1474h]
mov dx, [bx+1472h]
push ax
mov ax, [bp+0Ah]
mov bx, 40h
push dx
cwd
idiv bx
imul dx, 281h
pop ax
add ax, dx
pop dx
mov [bp-6], dx
mov [bp-8], ax
test byte ptr [bp+0Ch], 2
jz short loc_D945
mov ax, 10h
jmp short loc_D947
; ---------------------------------------------------------------------------
loc_D945:
xor ax, ax
loc_D947:
mov [bp-2], ax
test byte ptr [bp+0Ch], 1
jz short loc_D955
mov ax, 10h
jmp short loc_D957
; ---------------------------------------------------------------------------
loc_D955:
xor ax, ax
loc_D957:
mov [bp-4], ax
mov si, [bp-2]
jmp short loc_D9D5
; ---------------------------------------------------------------------------
loc_D95F:
mov ax, si
shl ax, 2
les bx, [bp-8]
add bx, ax
mov eax, es:[bx+1]
mov cl, [bp-4]
shr eax, cl
les bx, _VRAM_PLANE_B
add bx, di
mov es:[bx], ax
mov ax, si
shl ax, 2
les bx, [bp-8]
add bx, ax
mov eax, es:[bx+81h]
shr eax, cl
les bx, _VRAM_PLANE_R
add bx, di
mov es:[bx], ax
mov ax, si
shl ax, 2
les bx, [bp-8]
add bx, ax
mov eax, es:[bx+101h]
shr eax, cl
les bx, _VRAM_PLANE_G
add bx, di
mov es:[bx], ax
mov ax, si
shl ax, 2
les bx, [bp-8]
add bx, ax
mov eax, es:[bx+181h]
shr eax, cl
les bx, _VRAM_PLANE_E
add bx, di
mov es:[bx], ax
add di, 50h ; 'P'
inc si
loc_D9D5:
mov ax, [bp-2]
add ax, 10h
cmp ax, si
jg short loc_D95F
pop di
pop si
leave
retf
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_D9E3 proc far
arg_0 = dword ptr 6
push bp
mov bp, sp
pushd [bp+arg_0]
call file_ropen
or ax, ax
jnz short loc_D9F8
mov ax, 1
pop bp
retf
; ---------------------------------------------------------------------------
loc_D9F8:
pushd 12h
push 0
call file_seek
push ds
push offset unk_136D2
push 30h ; '0'
call file_read
push ds
push offset unk_136D2
call sub_BA15
add sp, 4
call file_close
xor ax, ax
pop bp
retf
sub_D9E3 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_DA22 proc far
arg_0 = dword ptr 6
push bp
mov bp, sp
pushd [bp+arg_0]
call file_ropen
or ax, ax
jnz short loc_DA37
mov ax, 1
pop bp
retf
; ---------------------------------------------------------------------------
loc_DA37:
pushd 12h
push 0
call file_seek
push ds
push offset unk_136D2
push 30h ; '0'
call file_read
call file_close
xor ax, ax
pop bp
retf
sub_DA22 endp
; ---------------------------------------------------------------------------
push bp
mov bp, sp
push si
push di
les bx, [bp+6]
dec word ptr es:[bx]
jl short loc_DA77
mov ax, es:[bx+0Eh]
mov si, es:[bx+0Ch]
inc word ptr es:[bx+0Ch]
mov es, ax
mov al, es:[si]
mov ah, 0
jmp short loc_DA83
; ---------------------------------------------------------------------------
loc_DA77:
pushd dword ptr [bp+6]
call __fgetc
add sp, 4
loc_DA83:
mov di, ax
les bx, [bp+6]
dec word ptr es:[bx]
jl short loc_DAA2
mov ax, es:[bx+0Eh]
mov si, es:[bx+0Ch]
inc word ptr es:[bx+0Ch]
mov es, ax
mov al, es:[si]
mov ah, 0
jmp short loc_DAAE
; ---------------------------------------------------------------------------
loc_DAA2:
pushd dword ptr [bp+6]
call __fgetc
add sp, 4
loc_DAAE:
shl ax, 8
add di, ax
mov ax, di
pop di
pop si
pop bp
retf
; ---------------------------------------------------------------------------
push bp
mov bp, sp
xor dx, dx
jmp short loc_DAE5
; ---------------------------------------------------------------------------
loc_DAC0:
xor cx, cx
jmp short loc_DADF
; ---------------------------------------------------------------------------
loc_DAC4:
mov ax, dx
imul ax, 3
les bx, [bp+6]
add bx, ax
add bx, cx
mov al, es:[bx]
mov bx, dx
imul bx, 3
add bx, cx
mov [bx+1442h], al
inc cx
loc_DADF:
cmp cx, 3
jl short loc_DAC4
inc dx
loc_DAE5:
cmp dx, 10h
jl short loc_DAC0
pop bp
retf
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_DAEC proc far
var_1 = byte ptr -1
arg_0 = dword ptr 6
enter 2, 0
push si
xor si, si
push 4000h
call @$bnwa$qui
pop cx
mov word ptr font+2, dx
mov word ptr font, ax
cmp word_129B8, 1
jnz short loc_DB0D
or si, 2
loc_DB0D:
cmp byte_129C7, 1
jnz short loc_DB17
mov si, 0F40h
loc_DB17:
cmp word_129BA, 1
jnz short loc_DB3F
push si
push 640000h
pushd 4000h
pushd [font]
pushd [bp+arg_0]
call _PiLoadL
add sp, 12h
mov [bp+var_1], al
loc_DB3F:
cmp word_129B8, 1
jnz short loc_DB50
pushd [bp+arg_0]
call sub_D9E3
jmp short loc_DB58
; ---------------------------------------------------------------------------
loc_DB50:
pushd [bp+arg_0]
call sub_DA22
loc_DB58:
add sp, 4
pushd [font] ; font
call @$bdla$qnv
add sp, 4
mov al, [bp+var_1]
cbw
pop si
leave
retf
sub_DAEC endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_DB6F proc far
var_2 = word ptr -2
arg_0 = dword ptr 6
enter 2, 0
mov word_129B8, 0
pushd [bp+arg_0]
call sub_DAEC
add sp, 4
mov [bp+var_2], ax
mov word_129B8, 1
leave
retf
sub_DB6F endp
; ---------------------------------------------------------------------------
enter 2, 0
mov word_129BA, 0
pushd dword ptr [bp+6]
call sub_DAEC
add sp, 4
mov [bp-2], ax
mov word_129BA, 1
leave
retf
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_DBAF proc far
var_2 = word ptr -2
arg_0 = dword ptr 6
enter 2, 0
mov byte_129C7, 1
mov word_129B8, 0
pushd [bp+arg_0]
call sub_DAEC
add sp, 4
mov [bp+var_2], ax
mov word_129B8, 1
mov byte_129C7, 0
leave
retf
sub_DBAF endp
; ---------------------------------------------------------------------------
push bp
mov bp, sp
push si
mov si, [bp+6]
mov al, [si+18D2h]
mov ah, 0
cmp ax, [bp+8]
jle short loc_DBFD
mov al, [bp+8]
mov byte_129C8, al
push si
nopcall sub_DC1B
pop cx
mov byte_129C8, 0
loc_DBFD:
pop si
pop bp
retf
; ---------------------------------------------------------------------------
push bp
mov bp, sp
mov al, [bp+8]
inc al
mov byte_129C9, al
push word ptr [bp+6]
nopcall sub_DC1B
pop cx
mov byte_129C9, 0
pop bp
retf
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_DC1B proc far
var_2E = word ptr -2Eh
var_2C = word ptr -2Ch
var_29 = byte ptr -29h
var_28 = word ptr -28h
var_25 = byte ptr -25h
var_24 = word ptr -24h
var_21 = byte ptr -21h
var_20 = word ptr -20h
var_1D = byte ptr -1Dh
var_1C = word ptr -1Ch
var_1A = word ptr -1Ah
var_17 = byte ptr -17h
var_16 = word ptr -16h
var_13 = byte ptr -13h
var_12 = word ptr -12h
var_F = byte ptr -0Fh
var_E = word ptr -0Eh
var_B = byte ptr -0Bh
var_A = dword ptr -0Ah
var_6 = dword ptr -6
var_2 = byte ptr -2
var_1 = byte ptr -1
arg_0 = word ptr 6
enter 2Eh, 0
push si
push di
mov di, [bp+arg_0]
mov bx, di
shl bx, 2
mov ax, [bx+1494h]
mov dx, [bx+1492h]
mov word ptr [bp+var_6+2], ax
mov word ptr [bp+var_6], dx
mov bx, di
shl bx, 6
mov al, byte_129C8
cbw
shl ax, 2
add bx, ax
mov ax, [bx+14D4h]
mov dx, [bx+14D2h]
mov word ptr [bp+var_A+2], ax
mov word ptr [bp+var_A], dx
cmp byte_129C9, 0
jz short loc_DC66
mov al, byte_129C9
cbw
dec ax
push ax
call sub_B976
pop cx
loc_DC66:
xor si, si
jmp loc_DDDC
; ---------------------------------------------------------------------------
loc_DC6B:
les bx, [bp+var_6]
mov al, es:[bx]
mov [bp+var_1], al
inc word ptr [bp+var_6]
cmp [bp+var_1], 1
jnz loc_DD47
les bx, [bp+var_6]
mov al, es:[bx]
mov [bp+var_2], al
inc word ptr [bp+var_6]
cmp [bp+var_2], 0
jz loc_DD47
les bx, [bp+var_6]
mov al, es:[bx]
mov [bp+var_1], al
inc word ptr [bp+var_6]
jmp loc_DD3B
; ---------------------------------------------------------------------------
loc_DCA2:
cmp [bp+var_1], 0
jnz loc_DD3A
cmp byte_129C9, 0
jnz short loc_DD28
les bx, [bp+var_A]
mov al, es:[bx]
mov [bp+var_B], al
inc word ptr [bp+var_A]
mov [bp+var_E], si
mov ax, 0A800h
mov bx, [bp+var_E]
mov dl, [bp+var_B]
mov es, ax
assume es:nothing
mov es:[bx], dl
les bx, [bp+var_A]
assume es:nothing
mov al, es:[bx]
mov [bp+var_F], al
inc word ptr [bp+var_A]
mov [bp+var_12], si
mov ax, 0B000h
mov bx, [bp+var_12]
mov dl, [bp+var_F]
mov es, ax
assume es:nothing
mov es:[bx], dl
les bx, [bp+var_A]
assume es:nothing
mov al, es:[bx]
mov [bp+var_13], al
inc word ptr [bp+var_A]
mov [bp+var_16], si
mov ax, 0B800h
mov bx, [bp+var_16]
mov dl, [bp+var_13]
mov es, ax
assume es:nothing
mov es:[bx], dl
les bx, [bp+var_A]
assume es:nothing
mov al, es:[bx]
mov [bp+var_17], al
inc word ptr [bp+var_A]
mov [bp+var_1A], si
inc si
mov ax, 0E000h
mov bx, [bp+var_1A]
mov dl, [bp+var_17]
mov es, ax
assume es:nothing
mov es:[bx], dl
jmp short loc_DD3B
; ---------------------------------------------------------------------------
loc_DD28:
mov [bp+var_1C], si
inc si
mov ax, 0A800h
mov bx, [bp+var_1C]
mov es, ax
assume es:nothing
mov byte ptr es:[bx], 0FFh
jmp short loc_DD3B
; ---------------------------------------------------------------------------
loc_DD3A:
inc si
loc_DD3B:
mov al, [bp+var_2]
dec [bp+var_2]
or al, al
jnz loc_DCA2
loc_DD47:
cmp [bp+var_1], 0
jnz loc_DDDB
cmp byte_129C9, 0
jnz short loc_DDCC
les bx, [bp+var_A]
assume es:nothing
mov al, es:[bx]
mov [bp+var_1D], al
inc word ptr [bp+var_A]
mov [bp+var_20], si
mov ax, 0A800h
mov bx, [bp+var_20]
mov dl, [bp+var_1D]
mov es, ax
assume es:nothing
mov es:[bx], dl
les bx, [bp+var_A]
assume es:nothing
mov al, es:[bx]
mov [bp+var_21], al
inc word ptr [bp+var_A]
mov [bp+var_24], si
mov ax, 0B000h
mov bx, [bp+var_24]
mov dl, [bp+var_21]
mov es, ax
assume es:nothing
mov es:[bx], dl
les bx, [bp+var_A]
assume es:nothing
mov al, es:[bx]
mov [bp+var_25], al
inc word ptr [bp+var_A]
mov [bp+var_28], si
mov ax, 0B800h
mov bx, [bp+var_28]
mov dl, [bp+var_25]
mov es, ax
assume es:nothing
mov es:[bx], dl
les bx, [bp+var_A]
assume es:nothing
mov al, es:[bx]
mov [bp+var_29], al
inc word ptr [bp+var_A]
mov [bp+var_2C], si
mov ax, 0E000h
mov bx, [bp+var_2C]
mov dl, [bp+var_29]
mov es, ax
assume es:nothing
mov es:[bx], dl
jmp short loc_DDDB
; ---------------------------------------------------------------------------
loc_DDCC:
mov [bp+var_2E], si
mov ax, 0A800h
mov bx, [bp+var_2E]
mov es, ax
assume es:nothing
mov byte ptr es:[bx], 0FFh
loc_DDDB:
inc si
loc_DDDC:
cmp si, 7D00h
jb loc_DC6B
cmp byte_129C9, 0
jz short loc_DDF0
call sub_BA0A
loc_DDF0:
pop di
pop si
leave
retf
sub_DC1B endp
; ---------------------------------------------------------------------------
enter 0Ah, 0
push si
push di
mov di, [bp+6]
pushd dword ptr [bp+8]
call file_ropen
or ax, ax
jz loc_DEEF
push 64h ; 'd'
call @$bnwa$qui
pop cx
mov [bp-6], dx
mov [bp-8], ax
push dx
push ax
push 40h
call file_read
push 4
push ds
push offset aHgrx ; "HGRX"
pushd dword ptr [bp-8]
call _memcmp
add sp, 0Ah
or ax, ax
jz short loc_DE41
call file_close
jmp loc_DEEF
; ---------------------------------------------------------------------------
loc_DE41:
les bx, [bp-8]
assume es:nothing
cmp byte ptr es:[bx+4], 1
jnb short loc_DE53
call file_close
jmp loc_DEEF
; ---------------------------------------------------------------------------
loc_DE53:
les bx, [bp-8]
mov al, es:[bx+4]
mov [di+18D2h], al
mov ax, es:[bx+8]
mov [bp-2], ax
mov ax, es:[bx+0Ah]
mov [bp-4], ax
mov bx, di
shl bx, 2
mov ax, [bx+1492h]
or ax, [bx+1494h]
jz short loc_DE82
push di
nopcall sub_E02B
pop cx
loc_DE82:
push word ptr [bp-2]
call @$bnwa$qui
pop cx
mov bx, di
shl bx, 2
mov [bx+1494h], dx
mov [bx+1492h], ax
or ax, dx
jnz short loc_DEA3
call file_close
jmp short loc_DEEF
; ---------------------------------------------------------------------------
loc_DEA3:
mov word ptr [bp-0Ah], 0
jmp short loc_DEF7
; ---------------------------------------------------------------------------
loc_DEAA:
mov bx, di
shl bx, 6
mov ax, [bp-0Ah]
shl ax, 2
add bx, ax
mov ax, [bx+14D2h]
or ax, [bx+14D4h]
jz short loc_DEC8
push di
nopcall sub_E02B
pop cx
loc_DEC8:
push word ptr [bp-4]
call @$bnwa$qui
pop cx
mov bx, di
shl bx, 6
mov si, [bp-0Ah]
shl si, 2
add bx, si
mov [bx+14D4h], dx
mov [bx+14D2h], ax
or ax, dx
jnz short loc_DEF4
call file_close
loc_DEEF:
mov ax, 1
jmp short loc_DF5C
; ---------------------------------------------------------------------------
loc_DEF4:
inc word ptr [bp-0Ah]
loc_DEF7:
les bx, [bp-8]
mov al, es:[bx+4]
mov ah, 0
cmp ax, [bp-0Ah]
jg short loc_DEAA
mov bx, di
shl bx, 2
pushd dword ptr [bx+1492h]
push word ptr [bp-2]
call file_read
mov word ptr [bp-0Ah], 0
jmp short loc_DF3B
; ---------------------------------------------------------------------------
loc_DF1E:
mov bx, di
shl bx, 6
mov ax, [bp-0Ah]
shl ax, 2
add bx, ax
pushd dword ptr [bx+14D2h]
push word ptr [bp-4]
call file_read
inc word ptr [bp-0Ah]
loc_DF3B:
les bx, [bp-8]
mov al, es:[bx+4]
mov ah, 0
cmp ax, [bp-0Ah]
jg short loc_DF1E
push word ptr [bp-6]
push bx
call @$bdla$qnv
add sp, 4
call file_close
xor ax, ax
loc_DF5C:
pop di
pop si
leave
retf
; ---------------------------------------------------------------------------
enter 4, 0
push si
push di
mov si, [bp+6]
pushd dword ptr [bp+8]
call file_ropen
or ax, ax
jz loc_DFFF
push 64h ; 'd'
call @$bnwa$qui
pop cx
mov [bp-2], dx
mov [bp-4], ax
push dx
push ax
push 40h
call file_read
push 4
push ds
push offset aHgrx ; "HGRX"
pushd dword ptr [bp-4]
call _memcmp
add sp, 0Ah
or ax, ax
jz short loc_DFAC
call file_close
jmp short loc_DFFF
; ---------------------------------------------------------------------------
loc_DFAC:
les bx, [bp-4]
cmp byte ptr es:[bx+4], 1
jnb short loc_DFBD
call file_close
jmp short loc_DFFF
; ---------------------------------------------------------------------------
loc_DFBD:
les bx, [bp-4]
mov al, es:[bx+4]
mov [si+18D2h], al
mov di, es:[bx+8]
mov bx, si
shl bx, 2
mov ax, [bx+1492h]
or ax, [bx+1494h]
jz short loc_DFE2
push si
nopcall sub_E02B
pop cx
loc_DFE2:
push di
call @$bnwa$qui
pop cx
mov bx, si
shl bx, 2
mov [bx+1494h], dx
mov [bx+1492h], ax
or ax, dx
jnz short loc_E004
call file_close
loc_DFFF:
mov ax, 1
jmp short loc_E027
; ---------------------------------------------------------------------------
loc_E004:
mov bx, si
shl bx, 2
pushd dword ptr [bx+1492h]
push di
call file_read
pushd dword ptr [bp-4]
call @$bdla$qnv
add sp, 4
call file_close
xor ax, ax
loc_E027:
pop di
pop si
leave
retf
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_E02B proc far
arg_0 = word ptr 6
push bp
mov bp, sp
push si
push di
mov si, [bp+arg_0]
mov bx, si
shl bx, 2
mov ax, [bx+1492h]
or ax, [bx+1494h]
jz short loc_E065
mov bx, si
shl bx, 2
pushd dword ptr [bx+1492h] ; font
call @$bdla$qnv
add sp, 4
mov bx, si
shl bx, 2
mov word ptr [bx+1494h], 0
mov word ptr [bx+1492h], 0
loc_E065:
xor di, di
jmp short loc_E0B1
; ---------------------------------------------------------------------------
loc_E069:
mov bx, si
shl bx, 6
mov ax, di
shl ax, 2
add bx, ax
mov ax, [bx+14D2h]
or ax, [bx+14D4h]
jz short loc_E0B0
mov bx, si
shl bx, 6
mov ax, di
shl ax, 2
add bx, ax
pushd dword ptr [bx+14D2h] ; font
call @$bdla$qnv
add sp, 4
mov bx, si
shl bx, 6
mov ax, di
shl ax, 2
add bx, ax
mov word ptr [bx+14D4h], 0
mov word ptr [bx+14D2h], 0
loc_E0B0:
inc di
loc_E0B1:
cmp di, 10h
jl short loc_E069
pop di
pop si
pop bp
retf
sub_E02B endp
; ---------------------------------------------------------------------------
enter 0Eh, 0
push si
push di
pushd dword ptr [bp+8]
call file_ropen
or ax, ax
jz loc_E213
push 64h ; 'd'
call @$bnwa$qui
pop cx
mov [bp-6], dx
mov [bp-8], ax
push dx
push ax
push 60h
call file_read
push 4
push ds
push offset aHgrz ; "HGRZ"
pushd dword ptr [bp-8]
call _memcmp
add sp, 0Ah
or ax, ax
jz short loc_E104
call file_close
jmp loc_E213
; ---------------------------------------------------------------------------
loc_E104:
les bx, [bp-8]
mov al, es:[bx+4]
mov [bp-9], al
mov ah, 0
cmp ax, [bp+0Ch]
jle loc_E265
mov ax, [bp+0Ch]
shl ax, 2
add ax, 8
mov di, ax
add bx, di
mov eax, es:[bx]
mov [bp-0Eh], eax
push eax
push 0
call file_seek
pushd dword ptr [bp-8]
push 40h
call file_read
push 4
push ds
push offset aHgrx ; "HGRX"
pushd dword ptr [bp-8]
call _memcmp
add sp, 0Ah
or ax, ax
jz short loc_E15E
call file_close
jmp loc_E213
; ---------------------------------------------------------------------------
loc_E15E:
les bx, [bp-8]
cmp byte ptr es:[bx+4], 1
jnb short loc_E170
call file_close
jmp loc_E213
; ---------------------------------------------------------------------------
loc_E170:
les bx, [bp-8]
mov al, es:[bx+4]
mov bx, [bp+6]
mov [bx+18D2h], al
mov bx, [bp-8]
mov ax, es:[bx+8]
mov [bp-2], ax
mov ax, es:[bx+0Ah]
mov [bp-4], ax
mov bx, [bp+6]
shl bx, 2
mov ax, [bx+1492h]
or ax, [bx+1494h]
jz short loc_E1A7
push word ptr [bp+6]
call sub_E02B
pop cx
loc_E1A7:
push word ptr [bp-2]
call @$bnwa$qui
pop cx
mov bx, [bp+6]
shl bx, 2
mov [bx+1494h], dx
mov [bx+1492h], ax
or ax, dx
jnz short loc_E1C9
call file_close
jmp short loc_E213
; ---------------------------------------------------------------------------
loc_E1C9:
xor di, di
jmp short loc_E219
; ---------------------------------------------------------------------------
loc_E1CD:
mov bx, [bp+6]
shl bx, 6
mov ax, di
shl ax, 2
add bx, ax
mov ax, [bx+14D2h]
or ax, [bx+14D4h]
jz short loc_E1EC
push word ptr [bp+6]
call sub_E02B
pop cx
loc_E1EC:
push word ptr [bp-4]
call @$bnwa$qui
pop cx
mov bx, [bp+6]
shl bx, 6
mov si, di
shl si, 2
add bx, si
mov [bx+14D4h], dx
mov [bx+14D2h], ax
or ax, dx
jnz short loc_E218
call file_close
loc_E213:
mov ax, 1
jmp short loc_E278
; ---------------------------------------------------------------------------
loc_E218:
inc di
loc_E219:
les bx, [bp-8]
mov al, es:[bx+4]
mov ah, 0
cmp ax, di
jg short loc_E1CD
mov bx, [bp+6]
shl bx, 2
pushd dword ptr [bx+1492h]
push word ptr [bp-2]
call file_read
xor di, di
jmp short loc_E258
; ---------------------------------------------------------------------------
loc_E23D:
mov bx, [bp+6]
shl bx, 6
mov ax, di
shl ax, 2
add bx, ax
pushd dword ptr [bx+14D2h]
push word ptr [bp-4]
call file_read
inc di
loc_E258:
les bx, [bp-8]
mov al, es:[bx+4]
mov ah, 0
cmp ax, di
jg short loc_E23D
loc_E265:
pushd dword ptr [bp-8]
call @$bdla$qnv
add sp, 4
call file_close
xor ax, ax
loc_E278:
pop di
pop si
leave
retf
op_09_TEXT ends
; ===========================================================================
; Segment type: Pure code
op_10_TEXT segment byte public 'CODE' use16
extern _resident_stuff_set:proc
extern _resident_free:proc
op_10_TEXT ends
; ===========================================================================
; Segment type: Pure code
op_11_TEXT segment byte public 'CODE' use16
assume cs:op_11_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
_mdrv2_resident 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_E42B
; ---------------------------------------------------------------------------
loc_E41F:
les bx, [bp+var_4]
assume es:nothing
add bx, si
mov al, es:[bx]
mov [bp+si+s1], al
inc si
loc_E42B:
cmp si, 0Ch
jl short loc_E41F
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_E44A
xor ax, ax
jmp short loc_E44D
; ---------------------------------------------------------------------------
loc_E44A:
mov ax, 1
loc_E44D:
pop si
leave
retf
_mdrv2_resident endp
extern _mdrv2_bgm_load:proc
extern _mdrv2_bgm_play:proc
extern _mdrv2_bgm_stop:proc
extern _mdrv2_bgm_fade_out_nonblock:proc
extern _mdrv2_check_board:proc
op_11_TEXT ends
; ---------------------------------------------------------------------------
; ===========================================================================
op_12_TEXT segment byte public 'CODE' use16
extern @ARC_FILE_LOAD$QNXC:proc
extern @ARC_FILE_GET$QNCUI:proc
extern @ARC_FILE_FREE$QV:proc
op_12_TEXT ends
; ===========================================================================
.data
word_12320 dw 101h
word_12322 dw 201h
_mode db 0
byte_12325 db 0
byte_12326 db 0
byte_12327 db 0
byte_12328 db 0
byte_12329 db 0
byte_1232A db 0
byte_1232B db 0
byte_1232C db 0
byte_1232D db 0
byte_1232E db 0
byte_1232F db 0
dword_12330 dd 0
word_12334 dw 0
word_12336 dw 0
byte_12338 db 3
word_12339 dw 0
word_1233B dw 0
unk_1233D db 0
dd 0
dd 0
dd 0
dd 0
dd 0
dd 0
dd 0
dd 0
dd 0
dd 0
dd 0
dd 0
dd 0
dd 0
dd 0
dd 0
dd 0
dd 0
dd 0
dd 0
dd 0
dd 0
dd 0
dd 0
dd 0
dd 0
dd 0
dd 0
dd 0
dd 0
dd 0
dd 0
db 0
db 0
word_123C0 dw 0
word_123C2 dw 0
word_123C4 dw 0
word_123C6 dw 0
byte_123C8 db 0
word_123C9 dw 0
byte_123CB db 0
word_123CC dw 0
word_123CE dw 0
word_123D0 dw 0
word_123D2 dw 0
word_123D4 dw 0
word_123D6 dw 0
db 0
db 0
word_123DA dw 0
word_123DC dw 0
dd 0
dd 0
dd 0
dd 0
dd 0
dd 0
dd 0
dd 0
dd 0
dd 0
dd 0
dd 0
dd 0
dd 0
dd 0
dd 0
dd 0
dd 0
dd 0
dd 0
dd 0
dd 0
dd 0
dd 0
dd 0
dd 0
dd 0
dd 0
dd 0
dd 0
dd 0
dd 0
dd 0
dd 0
dd 0
dd 0
dd 0
dd 0
dd 0
dd 0
dd 0
dd 0
dd 0
dd 0
dd 0
dd 0
dd 0
dd 0
dd 0
dd 0
dd 0
dd 0
dd 0
dd 0
dd 0
dd 0
dd 0
dd 0
dd 0
db 0
db 0
db 0
off_124CD dd aVrvsvVqvs
; " <20>r<EFBFBD>s<EFBFBD>`<60>q<EFBFBD>s "
dd aVbvnvmvsvhvmvt ; "<22>b<EFBFBD>n<EFBFBD>m<EFBFBD>s<EFBFBD>h<EFBFBD>m<EFBFBD>t<EFBFBD>d"
dd aB@vnvovsvhvnvm ; "<22>@<40>n<EFBFBD>o<EFBFBD>s<EFBFBD>h<EFBFBD>n<EFBFBD>m<EFBFBD>@"
dd aB@b@vpvtvhvsb@ ; "<22>@<40>@<40>p<EFBFBD>t<EFBFBD>h<EFBFBD>s<EFBFBD>@<40>@"
off_124DD dd aB@vqvVmvjb@
; "<22>@<40>q<EFBFBD>`<60>m<EFBFBD>j<EFBFBD>@ "
dd aVlvtvrvhvb ; " <20>l<EFBFBD>t<EFBFBD>r<EFBFBD>h<EFBFBD>b "
dd aVovkvVxvdvq ; "<22>o<EFBFBD>k<EFBFBD>`<60>x<EFBFBD>d<EFBFBD>q "
dd aVlbdvsvdvrvs ; "<22>l<EFBFBD>D<EFBFBD>s<EFBFBD>d<EFBFBD>r<EFBFBD>s "
dd aB@vpvtvhvsb@ ; "<22>@<40>p<EFBFBD>t<EFBFBD>h<EFBFBD>s<EFBFBD>@ "
off_124F1 dd aEasy
; " EASY "
dd aNormal ; "NORMAL"
dd aHard ; " HARD "
dd aLunatic ; "LUNATIC"
off_12501 dd aOff
; " OFF "
dd aFm ; " FM "
off_12509 dd a3
; " 3 "
dd a4 ; " 4 "
dd a5 ; " 5 "
dd a6 ; " 6 "
dd a7 ; " 7 "
byte_1251D db 0
off_1251E dd aVlvtvrvhvbb@vm
; "<22>l<EFBFBD>t<EFBFBD>r<EFBFBD>h<EFBFBD>b<EFBFBD>@<40>m<EFBFBD><6D><EFBFBD>D"
dd aB@b@vpvxvivf ; "<22>@<40>@<40>p<EFBFBD><70><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "
off_12526 dd aASacretLot
; " A Sacret Lot"
dd aXcvR_o ; " <20><><EFBFBD>̐_<CC90><5F> "
dd aIiiuvIPc ; " <09>i<EFBFBD><69><EFBFBD>̛ޏ<CC9B> "
dd aHighlyResponsi ; " Highly Responsive"
dd aUmx
dd aOrientalMagici ; " Oriental Magician"
dd aB@FjoVPmsUbb@ ; "<22>@ <20>j<EFBFBD>ׂ̏<D782><CC8F><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@ "
dd aTheLegendOfKag ; " The Legend of KAGE"
dd aPositiveAndNeg ; "Positive and Negative"
dd aB@b@UvoguRrb@b ; "<22>@<40>@ <20>V<EFBFBD>g<EFBFBD>`<60><><EFBFBD>@<40>@ "
dd aB@b@b@CvlB@b@b ; "<22>@<40>@<40>@ <20><><EFBFBD><EFBFBD><EFBFBD>@<40>@<40>@ "
dd aVvvUVRVnvVOuvV ; "<22><><EFBFBD><EFBFBD><EFBFBD>|<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̎<EFBFBD><CC8E>܂<EFBFBD>"
dd aB@b@oavVVrvivV ; "<22>@<40>@<40><><EFBFBD>Ȃ΂<C882><CE82><EFBFBD><EFBFBD>Ƃ<EFBFBD><C682>@<40>@"
dd aB@b@Rpchmxom ; "<22>@<40>@ <20><><EFBFBD>H<EFBFBD><48><EFBFBD>m"
dd aB@b@b@gagcgkgx ; "<22>@<40>@<40>@<40>A<EFBFBD>C<EFBFBD><43><EFBFBD>X"
word_12562 dw 63h
word_12564 dw 0
word_12566 dw 0
word_12568 dw 0
word_1256A dw 0
word_1256C dw 0
off_1256E dd aReimu_mdt
; "reimu.mdt"
dd aZipangu_mdt ; "ZIPANGU.mdt"
dd aSt0_mdt ; "st0.mdt"
dd aSt1_mdt ; "st1.mdt"
dd aSt2_mdt ; "st2.mdt"
dd aSt3_mdt ; "st3.mdt"
dd aSt4_mdt ; "st4.mdt"
dd aSt5_mdt ; "st5.mdt"
dd aPositive_mdt ; "positive.mdt"
dd aLegend_mdt ; "legend.mdt"
dd aKami_mdt ; "kami.mdt"
dd aTensi_mdt ; "tensi.mdt"
dd aSyugen_mdt ; "syugen.mdt"
dd aAlice_mdt ; "alice.mdt"
dd aIris_mdt ; "iris.mdt"
word_125AA dw 0
word_125AC dw 0
word_125AE dw 0
word_125B0 dw 0
; char path[]
path db 'reiiden.cfg',0
aRB db 'rb',0
; char s[]
s db 'REIIDEN',0
; char aWb[]
aWb db 'wb',0
; char aReimu_mdt[]
aReimu_mdt db 'reimu.mdt',0
aReiiden2_grp db 'REIIDEN2.grp',0
aReiiden3_grp db 'REIIDEN3.grp',0
aOp_win_grp db 'op_win.grp',0
; char aReiiden_0[]
aReiiden_0 db 'reiiden',0
aVgvhvsb@vjvdvx db ' <20>g<EFBFBD>h<EFBFBD>s<EFBFBD>@<40>j<EFBFBD>d<EFBFBD>x',0
aVrvsvVqvs db ' <20>r<EFBFBD>s<EFBFBD>`<60>q<EFBFBD>s ',0
aVbvnvmvsvhvmvt db '<27>b<EFBFBD>n<EFBFBD>m<EFBFBD>s<EFBFBD>h<EFBFBD>m<EFBFBD>t<EFBFBD>d',0
aB@vnvovsvhvnvm db '<27>@<40>n<EFBFBD>o<EFBFBD>s<EFBFBD>h<EFBFBD>n<EFBFBD>m<EFBFBD>@',0
aB@b@vpvtvhvsb@ db '<27>@<40>@<40>p<EFBFBD>t<EFBFBD>h<EFBFBD>s<EFBFBD>@<40>@',0
aB@vqvVmvjb@ db '<27>@<40>q<EFBFBD>`<60>m<EFBFBD>j<EFBFBD>@ ',0
aVlvtvrvhvb db ' <20>l<EFBFBD>t<EFBFBD>r<EFBFBD>h<EFBFBD>b ',0
aVovkvVxvdvq db '<27>o<EFBFBD>k<EFBFBD>`<60>x<EFBFBD>d<EFBFBD>q ',0
aVlbdvsvdvrvs db '<27>l<EFBFBD>D<EFBFBD>s<EFBFBD>d<EFBFBD>r<EFBFBD>s ',0
aB@vpvtvhvsb@ db '<27>@<40>p<EFBFBD>t<EFBFBD>h<EFBFBD>s<EFBFBD>@ ',0
aEasy db ' EASY ',0
aNormal db 'NORMAL',0
aHard db ' HARD ',0
aLunatic db 'LUNATIC',0
aOff db ' OFF ',0
aFm db ' FM ',0
a3 db ' 3 ',0
a4 db ' 4 ',0
a5 db ' 5 ',0
a6 db ' 6 ',0
a7 db ' 7 ',0
; char aSS[]
aSS db '%s%s',0
aVlvtvrvhvbb@vm db '<27>l<EFBFBD>t<EFBFBD>r<EFBFBD>h<EFBFBD>b<EFBFBD>@<40>m<EFBFBD><6D><EFBFBD>D',0
aB@b@vpvxvivf db '<27>@<40>@<40>p<EFBFBD><70><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ',0
aASacretLot db ' A Sacret Lot',0
aXcvR_o db ' <20><><EFBFBD>̐_<CC90><5F> ',0
aIiiuvIPc db ' <20>i<EFBFBD><69><EFBFBD>̛ޏ<CC9B> ',0
aHighlyResponsi db ' Highly Responsive',0
aUmx db ' <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>k ',0
aOrientalMagici db ' Oriental Magician',0
aB@FjoVPmsUbb@ db '<27>@ <20>j<EFBFBD>ׂ̏<D782><CC8F><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@ ',0
aTheLegendOfKag db ' The Legend of KAGE',0
aPositiveAndNeg db 'Positive and Negative',0
aB@b@UvoguRrb@b db '<27>@<40>@ <20>V<EFBFBD>g<EFBFBD>`<60><><EFBFBD>@<40>@ ',0
aB@b@b@CvlB@b@b db '<27>@<40>@<40>@ <20><><EFBFBD><EFBFBD><EFBFBD>@<40>@<40>@ ',0
aVvvUVRVnvVOuvV db '<27><><EFBFBD><EFBFBD><EFBFBD>|<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̎<EFBFBD><CC8E>܂<EFBFBD>',0
aB@b@oavVVrvivV db '<27>@<40>@<40><><EFBFBD>Ȃ΂<C882><CE82><EFBFBD><EFBFBD>Ƃ<EFBFBD><C682>@<40>@',0
aB@b@Rpchmxom db '<27>@<40>@ <20><><EFBFBD>H<EFBFBD><48><EFBFBD>m',0
aB@b@b@gagcgkgx db '<27>@<40>@<40>@<40>A<EFBFBD>C<EFBFBD><43><EFBFBD>X',0
; char aS_2d[]
aS_2d db '%s%.2d',0
aZipangu_mdt db 'ZIPANGU.mdt',0
aSt0_mdt db 'st0.mdt',0
aSt1_mdt db 'st1.mdt',0
aSt2_mdt db 'st2.mdt',0
aSt3_mdt db 'st3.mdt',0
aSt4_mdt db 'st4.mdt',0
aSt5_mdt db 'st5.mdt',0
aPositive_mdt db 'positive.mdt',0
aLegend_mdt db 'legend.mdt',0
aKami_mdt db 'kami.mdt',0
aTensi_mdt db 'tensi.mdt',0
aSyugen_mdt db 'syugen.mdt',0
aAlice_mdt db 'alice.mdt',0
aIris_mdt db 'iris.mdt',0
aGogbgGtg@gcglv db '<27>o<EFBFBD>b<EFBFBD>`<60>t<EFBFBD>@<40>C<EFBFBD><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>N<EFBFBD><4E><EFBFBD><EFBFBD><EFBFBD>Ă<EFBFBD>',0
aCon db 'CON',0
; char format[]
format db '<27><><EFBFBD>‚<EFBFBD><C282><EFBFBD>܂ł<DC82><C582><EFBFBD><EFBFBD>I<EFBFBD>I',0Ah,0
include th01/hardware/vsync[data].asm
include th01/ztext[data].asm
byte_12978 db 0
db 0
unk_1297A db 0
dd 0
db 0Fh
db 0
db 0Fh
db 0
db 0
db 0Fh
db 0Fh
db 0Fh
db 0
db 0
db 0Fh
db 0
db 0Fh
db 0Fh
db 0Fh
db 0
db 0Fh
db 0Fh
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_129AA db 0
word_129AB dw 80h
aPal98Grb db 'pal98 grb',0
db 0
word_129B8 dw 1
word_129BA dw 1
dd 0
dd 0
db 0
db 0
db 0
byte_129C7 db 0
byte_129C8 db 0
byte_129C9 db 0
aHgrx db 'HGRX',0
aHgrz db 'HGRZ',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/keytable[data].asm
include libs/master.lib/keystart[data].asm
include libs/master.lib/keyback[data].asm
include libs/master.lib/dos_ropen[data].asm
include libs/master.lib/clip[data].asm
include libs/master.lib/rand[data].asm
public _res_id
_res_id db 'ReiidenConfig',0
public _mdrv2_have_board
_mdrv2_have_board db 0
db 0
aMdrv2system db 'Mdrv2System',0
.data?
; TODO: Missing clip[bss].asm (16 bytes) somewhere in there...
dword_13418 dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
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 ?
db ? ;
db ? ;
db ? ;
word_13627 dw ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
word_13665 dw ?
word_13667 dw ?
db ?
word_1366A dw ?
word_1366C dw ?
word_1366E dw ?
db ? ;
_graph_page db ?
include th01/hardware/vram_planes[bss].asm
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
unk_136D2 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 (*font)(void)
font dd ?
include libs/master.lib/pal[bss].asm
include libs/master.lib/fil[bss].asm
include libs/master.lib/keystart[bss].asm
dd ?
dd ?
dd ?
dd ?
public _reiidenconfig
_reiidenconfig dd ?
end