mirror of https://github.com/nmlgc/ReC98.git
1912 lines
38 KiB
NASM
1912 lines
38 KiB
NASM
;
|
||
; +-------------------------------------------------------------------------+
|
||
; | 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
|
||
.386 ; ... then switch to what we actually need.
|
||
; And yes, we can't move this to an include file for some reason.
|
||
|
||
BINARY = 'O'
|
||
|
||
include ReC98.inc
|
||
include th01/th01.inc
|
||
include th01/formats/cfg.inc
|
||
|
||
option emulator
|
||
|
||
extern @$bdla$qnv:proc
|
||
extern @$bnwa$qui:proc
|
||
extern FTOL@:proc
|
||
extern SCOPY@:proc
|
||
extern __mbcjmstojis:proc
|
||
extern __mscjmstojis:proc
|
||
extern __setargv__:proc ; main() needs both to be set
|
||
extern __setenvp__:proc
|
||
extern _atol:proc
|
||
extern _close:proc
|
||
extern _execl:proc
|
||
extern _exit:proc
|
||
extern _farfree:proc
|
||
extern _farmalloc:proc
|
||
extern _filelength:proc
|
||
extern _int86:proc
|
||
extern _intdosx:proc
|
||
extern _memcmp:proc
|
||
extern _open:proc
|
||
extern _printf:proc
|
||
extern _segread:proc
|
||
extern _strcmp:proc
|
||
extern _toupper:proc
|
||
extern _vsprintf:proc
|
||
|
||
op_01 group op_01_TEXT, op_01__TEXT
|
||
|
||
; ===========================================================================
|
||
|
||
; Segment type: Pure code
|
||
_TEXT segment word public 'CODE' use16
|
||
assume cs:_TEXT
|
||
assume es:nothing, ds:DGROUP, fs:nothing, gs:nothing
|
||
|
||
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
|
||
op_01_TEXT ends
|
||
|
||
op_01__TEXT segment byte public 'CODE' use16
|
||
assume cs:op_01
|
||
;org 4
|
||
assume es:nothing, ss:nothing, ds:_DATA, fs:nothing, gs:nothing
|
||
|
||
extern _cfg_load:proc
|
||
extern _cfg_save:proc
|
||
extern _main_input_sense:proc
|
||
extern _option_input_sense:proc
|
||
|
||
; =============== 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
|
||
call _grcg_setcolor_rmw stdcall, 15
|
||
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 _grcg_off_func
|
||
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:
|
||
call _egc_copy_rect_1_to_0 c, 0, si, large (1 shl 16) or RES_X
|
||
call _egc_copy_rect_1_to_0 c, 0, di, large (1 shl 16) or RES_X
|
||
|
||
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 _frame_delay
|
||
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 _graph_copy_page_back_to_front
|
||
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
|
||
call _grp_put_palette_show c, offset aReiiden2_grp, ds ; "REIIDEN2.grp"
|
||
call _z_palette_black
|
||
call _graph_copy_page_back_to_front
|
||
call _grp_put c, offset aReiiden3_grp, ds ; "REIIDEN3.grp"
|
||
push 0
|
||
call _graph_accesspage_func
|
||
pop cx
|
||
call _z_palette_black_in
|
||
push 64h ; 'd'
|
||
call _frame_delay
|
||
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 _graph_copy_page_back_to_front
|
||
push 0
|
||
call _graph_accesspage_func
|
||
pop cx
|
||
call _grp_put_colorkey c, offset aOp_win_grp, ds ; "op_win.grp"
|
||
call _graph_copy_page_back_to_front
|
||
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 _cfg_save
|
||
call _resident_stuff_set c, word ptr _opts.O_rank, word ptr _opts.O_bgm_mode, word ptr _opts.O_bombs, word ptr _opts.O_lives_extra, large [_rand]
|
||
call sub_A79D
|
||
call _mdrv2_bgm_fade_out_nonblock
|
||
call _game_switch_binary
|
||
mov al, _mode
|
||
cbw
|
||
cmp ax, 2
|
||
jnz short loc_A7FC
|
||
les bx, _resident
|
||
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, _resident
|
||
mov es:[bx+reiidenconfig_t.mode], 3
|
||
jmp short loc_A820
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_A810:
|
||
cmp _mode, 0
|
||
jnz short loc_A820
|
||
les bx, _resident
|
||
mov es:[bx+reiidenconfig_t.mode], 0
|
||
|
||
loc_A820:
|
||
les bx, _resident
|
||
mov es:[bx+reiidenconfig_t.route], 0
|
||
mov es:[bx+reiidenconfig_t.stage], 0
|
||
mov al, _opts.O_lives_extra
|
||
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, _resident
|
||
add bx, ax
|
||
mov es:[bx+reiidenconfig_t.continues_per_scene], 0
|
||
mov ax, si
|
||
shl ax, 2
|
||
mov bx, word ptr _resident
|
||
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, _resident
|
||
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 _cfg_save
|
||
call _resident_stuff_set c, word ptr _opts.O_rank, word ptr _opts.O_bgm_mode, word ptr _opts.O_bombs, word ptr _opts.O_lives_extra, large [_rand]
|
||
les bx, _resident
|
||
cmp es:[bx+reiidenconfig_t.stage], 0
|
||
jnz short loc_A8E1
|
||
mov ax, seg op_01
|
||
mov es, ax
|
||
assume es:op_01
|
||
|
||
loc_A8E1:
|
||
call sub_A79D
|
||
call _mdrv2_bgm_fade_out_nonblock
|
||
call _game_switch_binary
|
||
les bx, _resident
|
||
assume es:nothing
|
||
mov es:[bx+reiidenconfig_t.mode], 0
|
||
mov es:[bx+reiidenconfig_t.snd_need_init], 1
|
||
mov al, _opts.O_lives_extra
|
||
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
|
||
call _execl c, offset _REIIDEN, ds, offset _REIIDEN, ds, large 0
|
||
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, 70
|
||
cwd
|
||
idiv bx
|
||
cmp dx, 50
|
||
jge short loc_A954
|
||
call _graph_putsa_fx c, 244, (2Fh shl 16) or 306, offset aVgvhvsb@vjvdvx, ds ; " <20>g<EFBFBD>h<EFBFBD>s<EFBFBD>@<40>j<EFBFBD>d<EFBFBD>x"
|
||
pop bp
|
||
retf
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_A954:
|
||
call _egc_copy_rect_1_to_0 c, large (306 shl 16) or 244, large (16 shl 16) or 128
|
||
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
|
||
@@y = word ptr -4
|
||
@@x = 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+@@x], 244
|
||
mov ax, si
|
||
imul ax, 14h
|
||
add ax, 276
|
||
mov [bp+@@y], 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+@@y]
|
||
push [bp+@@x]
|
||
call _graph_putsa_fx
|
||
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, 228
|
||
mov ax, si
|
||
imul ax, 20
|
||
add ax, 266
|
||
mov [bp+var_A], ax
|
||
call _egc_copy_rect_1_to_0 c, di, ax, large (16 shl 16) or 176
|
||
or si, si
|
||
jnz short loc_AA34
|
||
mov al, _opts.O_rank
|
||
cbw
|
||
shl ax, 2
|
||
lea dx, [bp+var_2E]
|
||
jmp short loc_AA54
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_AA34:
|
||
cmp si, 1
|
||
jnz short loc_AA45
|
||
mov al, _opts.O_bgm_mode
|
||
cbw
|
||
shl ax, 2
|
||
lea dx, [bp+var_8]
|
||
jmp short loc_AA54
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_AA45:
|
||
cmp si, 2
|
||
jnz short loc_AA83
|
||
mov al, _opts.O_lives_extra
|
||
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 _graph_printf_fx
|
||
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 _graph_printf_fx
|
||
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, 228
|
||
mov ax, si
|
||
imul ax, 40
|
||
add ax, 286
|
||
mov [bp+var_A], ax
|
||
call _egc_copy_rect_1_to_0 c, di, ax, large (16 shl 16) or 176
|
||
or si, si
|
||
jnz short loc_AB69
|
||
push (16 shl 16) or 192
|
||
mov ax, [bp+var_A]
|
||
add ax, 20
|
||
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 _graph_printf_fx
|
||
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 _graph_printf_fx
|
||
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
|
||
call _egc_copy_rect_1_to_0 c, large (266 shl 16) or 220, large (100 shl 16) or 176
|
||
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, _menu_sel
|
||
cbw
|
||
push ax
|
||
call sub_A96A
|
||
add sp, 4
|
||
mov word_12564, 1
|
||
mov al, _menu_sel
|
||
cbw
|
||
mov word_12562, ax
|
||
|
||
loc_AC04:
|
||
mov al, _menu_sel
|
||
cbw
|
||
cmp ax, word_12562
|
||
jz short loc_AC30
|
||
push 5
|
||
push word_12562
|
||
call sub_A96A
|
||
add sp, 4
|
||
push 0Fh
|
||
mov al, _menu_sel
|
||
cbw
|
||
push ax
|
||
call sub_A96A
|
||
add sp, 4
|
||
mov al, _menu_sel
|
||
cbw
|
||
mov word_12562, ax
|
||
|
||
loc_AC30:
|
||
cmp _input_ok, 0
|
||
jnz short loc_AC3E
|
||
cmp _input_shot, 0
|
||
jz short loc_AC6E
|
||
|
||
loc_AC3E:
|
||
mov al, _menu_sel
|
||
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 _input_cancel, 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 _menu_sel, 0
|
||
mov word_12568, 0
|
||
mov word_12566, 1
|
||
mov _option_rows, 4
|
||
call _egc_copy_rect_1_to_0 c, large (276 shl 16) or 220, large (80 shl 16) or 176
|
||
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, _menu_sel
|
||
cbw
|
||
cmp ax, word_12568
|
||
jz short loc_AD25
|
||
push 5
|
||
push word_12568
|
||
call sub_A9B9
|
||
add sp, 4
|
||
push 0Fh
|
||
mov al, _menu_sel
|
||
cbw
|
||
push ax
|
||
call sub_A9B9
|
||
add sp, 4
|
||
mov al, _menu_sel
|
||
cbw
|
||
mov word_12568, ax
|
||
|
||
loc_AD25:
|
||
mov al, _input_left
|
||
cbw
|
||
cmp ax, 1
|
||
jnz short loc_AD96
|
||
cmp word_1256A, 0
|
||
jnz short loc_AD9C
|
||
mov al, _menu_sel
|
||
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 _opts.O_rank
|
||
mov al, _opts.O_rank
|
||
cbw
|
||
or ax, ax
|
||
jge short loc_AD80
|
||
mov _opts.O_rank, RANK_LUNATIC
|
||
jmp short loc_AD80
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_AD5C:
|
||
dec _opts.O_bgm_mode
|
||
mov al, _opts.O_bgm_mode
|
||
cbw
|
||
or ax, ax
|
||
jge short loc_AD80
|
||
mov _opts.O_bgm_mode, 1
|
||
jmp short loc_AD80
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_AD6F:
|
||
dec _opts.O_lives_extra
|
||
mov al, _opts.O_lives_extra
|
||
cbw
|
||
or ax, ax
|
||
jge short loc_AD80
|
||
mov _opts.O_lives_extra, CFG_LIVES_EXTRA_MAX
|
||
|
||
loc_AD80:
|
||
push 0Fh
|
||
mov al, _menu_sel
|
||
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, _input_right
|
||
cbw
|
||
cmp ax, 1
|
||
jnz short loc_AE10
|
||
cmp word_1256C, 0
|
||
jnz short loc_AE16
|
||
mov al, _menu_sel
|
||
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 _opts.O_rank
|
||
mov al, _opts.O_rank
|
||
cbw
|
||
cmp ax, RANK_LUNATIC
|
||
jle short loc_ADFA
|
||
mov _opts.O_rank, RANK_EASY
|
||
jmp short loc_ADFA
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_ADD4:
|
||
inc _opts.O_bgm_mode
|
||
mov al, _opts.O_bgm_mode
|
||
cbw
|
||
cmp ax, 1
|
||
jle short loc_ADFA
|
||
mov _opts.O_bgm_mode, 0
|
||
jmp short loc_ADFA
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_ADE8:
|
||
inc _opts.O_lives_extra
|
||
mov al, _opts.O_lives_extra
|
||
cbw
|
||
cmp ax, CFG_LIVES_EXTRA_MAX
|
||
jle short loc_ADFA
|
||
mov _opts.O_lives_extra, 0
|
||
|
||
loc_ADFA:
|
||
push 0Fh
|
||
mov al, _menu_sel
|
||
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 _input_ok, 0
|
||
jnz short loc_AE24
|
||
cmp _input_shot, 0
|
||
jz short loc_AE2D
|
||
|
||
loc_AE24:
|
||
mov al, _menu_sel
|
||
cbw
|
||
cmp ax, 4
|
||
jz short loc_AE34
|
||
|
||
loc_AE2D:
|
||
cmp _input_cancel, 0
|
||
jz short loc_AE44
|
||
|
||
loc_AE34:
|
||
mov byte_1232A, 3
|
||
mov word_12566, 0
|
||
mov _menu_sel, 2
|
||
|
||
loc_AE44:
|
||
cmp _input_ok, 0
|
||
jnz short loc_AE52
|
||
cmp _input_shot, 0
|
||
jz short loc_AE6B
|
||
|
||
loc_AE52:
|
||
mov al, _menu_sel
|
||
cbw
|
||
cmp ax, 3
|
||
jnz short loc_AE6B
|
||
mov byte_1232A, 2
|
||
mov word_12566, 0
|
||
mov _menu_sel, 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 _menu_sel, 0
|
||
mov word_125AC, 0
|
||
mov word_125AA, 1
|
||
mov _input_ok, 0
|
||
mov _input_shot, 0
|
||
mov _option_rows, 1
|
||
call _egc_copy_rect_1_to_0 c, large (266 shl 16) or 220, large (100 shl 16) or 176
|
||
push 0F0000h
|
||
call sub_AAB6
|
||
add sp, 4
|
||
push 50001h
|
||
call sub_AAB6
|
||
add sp, 4
|
||
|
||
loc_AF00:
|
||
mov al, _menu_sel
|
||
cbw
|
||
cmp ax, word_125AC
|
||
jz short loc_AF2C
|
||
push 5
|
||
push word_125AC
|
||
call sub_AAB6
|
||
add sp, 4
|
||
push 0Fh
|
||
mov al, _menu_sel
|
||
cbw
|
||
push ax
|
||
call sub_AAB6
|
||
add sp, 4
|
||
mov al, _menu_sel
|
||
cbw
|
||
mov word_125AC, ax
|
||
|
||
loc_AF2C:
|
||
mov al, _input_left
|
||
cbw
|
||
cmp ax, 1
|
||
jnz short loc_AF69
|
||
cmp word_125AE, 0
|
||
jnz short loc_AF6F
|
||
cmp _menu_sel, 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, _menu_sel
|
||
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, _input_right
|
||
cbw
|
||
cmp ax, 1
|
||
jnz short loc_AFAC
|
||
cmp word_125B0, 0
|
||
jnz short loc_AFB2
|
||
cmp _menu_sel, 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, _menu_sel
|
||
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 _input_ok, 0
|
||
jnz short loc_AFC0
|
||
cmp _input_shot, 0
|
||
jz short loc_AFC9
|
||
|
||
loc_AFC0:
|
||
mov al, _menu_sel
|
||
cbw
|
||
cmp ax, 1
|
||
jz short loc_AFD0
|
||
|
||
loc_AFC9:
|
||
cmp _input_cancel, 0
|
||
jz short loc_AFE0
|
||
|
||
loc_AFD0:
|
||
mov byte_1232A, 4
|
||
mov word_125AA, 0
|
||
mov _menu_sel, 3
|
||
|
||
loc_AFE0:
|
||
cmp _input_ok, 0
|
||
jnz short loc_AFEE
|
||
cmp _input_shot, 0
|
||
jz short loc_AFF9
|
||
|
||
loc_AFEE:
|
||
cmp _menu_sel, 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 _game_init
|
||
call _cfg_load
|
||
mov al, _opts.O_bgm_mode
|
||
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 _frame_delay
|
||
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, _rand
|
||
mov random_seed, eax
|
||
jmp loc_B21A
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_B14D:
|
||
cmp byte_1232A, 0
|
||
jnz short loc_B15F
|
||
call _main_input_sense
|
||
call sub_AB97
|
||
jmp loc_B1EE
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_B15F:
|
||
mov al, byte_1232A
|
||
cbw
|
||
cmp ax, 1
|
||
jnz short loc_B172
|
||
call _option_input_sense
|
||
call sub_AC84
|
||
jmp short loc_B1EE
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_B172:
|
||
mov al, byte_1232A
|
||
cbw
|
||
cmp ax, 2
|
||
jnz short loc_B185
|
||
call _option_input_sense
|
||
call sub_AEA8
|
||
jmp short loc_B1EE
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_B185:
|
||
mov al, byte_1232A
|
||
cbw
|
||
cmp ax, 3
|
||
jnz short loc_B1D8
|
||
mov al, _opts.O_bgm_mode
|
||
cbw
|
||
cmp ax, si
|
||
jz short loc_B1C9
|
||
cmp _opts.O_bgm_mode, 0
|
||
jnz short loc_B1A4
|
||
call _mdrv2_bgm_stop
|
||
jmp short loc_B1C3
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_B1A4:
|
||
mov al, _opts.O_bgm_mode
|
||
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, _opts.O_bgm_mode
|
||
cbw
|
||
mov si, ax
|
||
|
||
loc_B1C9:
|
||
push 0Fh
|
||
call _frame_delay
|
||
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 _frame_delay
|
||
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 _rand
|
||
push 1
|
||
call _frame_delay
|
||
pop cx
|
||
|
||
loc_B21A:
|
||
cmp byte_1232C, 0
|
||
jz loc_B14D
|
||
call _cfg_save
|
||
mov byte_1232F, 1
|
||
call _mdrv2_bgm_stop
|
||
call sub_A79D
|
||
push 1
|
||
call _graph_accesspage_func
|
||
pop cx
|
||
call _z_graph_clear
|
||
push 0
|
||
call _graph_accesspage_func
|
||
pop cx
|
||
call _z_graph_clear
|
||
call _game_exit
|
||
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
|
||
extern _frame_delay:proc
|
||
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
|
||
extern _game_init:proc
|
||
extern _game_exit:proc
|
||
extern _game_switch_binary:proc
|
||
op_05_TEXT ends
|
||
|
||
; ---------------------------------------------------------------------------
|
||
; ===========================================================================
|
||
|
||
; Segment type: Pure code
|
||
op_06_TEXT segment byte public 'CODE' use16
|
||
extern _z_graph_exit:proc
|
||
extern _graph_showpage_func:proc
|
||
extern _graph_accesspage_func:proc
|
||
extern _grcg_setcolor_rmw:proc
|
||
extern _grcg_setcolor_tdw:proc
|
||
extern _grcg_off_func:proc
|
||
extern _z_palette_set_all_show:proc
|
||
extern _z_palette_set_show:proc
|
||
extern _z_graph_clear:proc
|
||
extern _z_graph_clear_0:proc
|
||
extern _graph_copy_page_back_to_front:proc
|
||
extern _z_palette_black:proc
|
||
extern _z_palette_black_in:proc
|
||
extern _z_palette_black_out:proc
|
||
extern _graph_putsa_fx:proc
|
||
extern _z_respal_set:proc
|
||
op_06_TEXT ends
|
||
|
||
; ---------------------------------------------------------------------------
|
||
; ===========================================================================
|
||
|
||
; Segment type: Pure code
|
||
op_07_TEXT segment byte public 'CODE' use16
|
||
extern _egc_copy_rect_1_to_0:proc
|
||
op_07_TEXT ends
|
||
|
||
; ===========================================================================
|
||
|
||
; Segment type: Pure code
|
||
op_08_TEXT segment byte public 'CODE' use16
|
||
extern _graph_printf_fx:proc
|
||
op_08_TEXT ends
|
||
|
||
; ===========================================================================
|
||
|
||
; Segment type: Pure code
|
||
op_09_TEXT segment byte public 'CODE' use16
|
||
extern _grp_put_palette_show:proc
|
||
extern _grp_put:proc
|
||
extern _grp_put_colorkey:proc
|
||
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
|
||
extern _mdrv2_resident:proc
|
||
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
|
||
op_12_TEXT ends
|
||
|
||
; ===========================================================================
|
||
|
||
.data
|
||
|
||
public _opts
|
||
_opts cfg_options_t <CFG_RANK_DEFAULT, CFG_BGM_MODE_DEFAULT, CFG_BOMBS_DEFAULT, CFG_LIVES_EXTRA_DEFAULT>
|
||
_mode db 0
|
||
public _menu_sel, _option_rows
|
||
public _input_left, _input_right, _input_ok, _input_shot, _input_cancel
|
||
public _main_input_prev, _option_input_prev
|
||
_menu_sel db 0
|
||
_input_left db 0
|
||
_input_ok db 0
|
||
_input_shot db 0
|
||
_input_cancel db 0
|
||
byte_1232A db 0
|
||
_input_right db 0
|
||
byte_1232C db 0
|
||
byte_1232D db 0
|
||
byte_1232E db 0
|
||
byte_1232F db 0
|
||
dword_12330 dd 0
|
||
_main_input_prev dw 2 dup (0)
|
||
_option_rows db 3
|
||
_option_input_prev dw 2 dup (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
|
||
include th01/formats/cfg[data].asm
|
||
; 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/hardware/ztext[data].asm
|
||
include th01/core/initexit[data].asm
|
||
include th01/hardware/palette[data].asm
|
||
include th01/hardware/graph_r[data].asm
|
||
include th01/hardware/respal[data].asm
|
||
include th01/formats/grp_ptn[data].asm
|
||
include th01/formats/grz[data].asm
|
||
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
|
||
include th01/mdrv2[data].asm
|
||
.data?
|
||
|
||
; TODO: Missing clip[bss].asm (16 bytes) somewhere in there...
|
||
public _rand
|
||
_rand dd ?
|
||
public _columns
|
||
_columns dd ROW_SIZE dup (?)
|
||
include th01/hardware/vsync[bss].asm
|
||
db 191 dup (?)
|
||
word_13627 dw ?
|
||
db 60 dup (?)
|
||
word_13665 dw ?
|
||
db ?
|
||
include th01/core/initexit[bss].asm
|
||
include th01/hardware/graph[bss].asm
|
||
include th01/hardware/vram_planes[bss].asm
|
||
db 80 dup(?)
|
||
include th01/formats/grp_palette[bss].asm
|
||
include th01/formats/ptn_grz[bss].asm
|
||
include th01/formats/grp_buf[bss].asm
|
||
include libs/master.lib/pal[bss].asm
|
||
include libs/master.lib/fil[bss].asm
|
||
include libs/master.lib/keystart[bss].asm
|
||
db 16 dup(?)
|
||
public _resident
|
||
_resident dd ?
|
||
|
||
end
|