ReC98/th01_op.asm

1682 lines
35 KiB
NASM
Raw Normal View History

2014-08-05 19:24:06 +00:00
;
; +-------------------------------------------------------------------------+
; | 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...
2014-08-05 19:24:06 +00:00
.model large
.386 ; ... then switch to what we actually need.
; And yes, we can't move this to an include file for some reason.
2014-08-05 19:24:06 +00:00
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
2014-08-05 19:24:06 +00:00
; ===========================================================================
; Segment type: Pure code
_TEXT segment word public 'CODE' use16
assume cs:_TEXT
assume es:nothing, ds:DGROUP, fs:nothing, gs:nothing
2014-08-05 19:24:06 +00:00
2014-08-27 22:58:40 +00:00
include libs/master.lib/graph_400line.asm
2014-08-27 04:03:08 +00:00
include libs/master.lib/graph_clear.asm
include libs/master.lib/graph_show.asm
2014-08-27 23:16:54 +00:00
include libs/master.lib/graph_start.asm
2014-08-23 14:11:16 +00:00
include libs/master.lib/palette_show.asm
2014-08-23 14:18:30 +00:00
include libs/master.lib/palette_init.asm
include libs/master.lib/respal_exist.asm
2014-09-03 13:41:25 +00:00
include libs/master.lib/respal_free.asm
include libs/master.lib/resdata.asm
2014-08-30 07:00:31 +00:00
include libs/master.lib/file_read.asm
include libs/master.lib/file_close.asm
2014-08-30 07:12:17 +00:00
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
2014-08-30 10:13:04 +00:00
include libs/master.lib/random.asm
_TEXT ends
2014-08-05 19:24:06 +00:00
; ---------------------------------------------------------------------------
; ===========================================================================
; 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
2014-08-05 19:24:06 +00:00
;org 4
assume es:nothing, ss:nothing, ds:_DATA, fs:nothing, gs:nothing
2014-08-05 19:24:06 +00:00
extern _cfg_load:proc
extern _cfg_save:proc
extern _main_input_sense:proc
extern _option_input_sense:proc
extern _whitelines_animate:proc
2014-08-05 19:24:06 +00:00
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_A719 proc far
2014-08-05 19:24:06 +00:00
push bp
mov bp, sp
push ds
push offset aReimu_mdt ; "reimu.mdt"
call _mdrv2_bgm_load
2014-08-05 19:24:06 +00:00
add sp, 4
call _mdrv2_bgm_play
2014-08-05 19:24:06 +00:00
push 1
call _graph_accesspage_func
2014-08-05 19:24:06 +00:00
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"
2014-08-05 19:24:06 +00:00
push 0
call _graph_accesspage_func
2014-08-05 19:24:06 +00:00
pop cx
call _z_palette_black_in
2014-08-05 19:24:06 +00:00
push 64h ; 'd'
call _frame_delay
2014-08-05 19:24:06 +00:00
pop cx
call _whitelines_animate
2014-08-05 19:24:06 +00:00
pop bp
retf
sub_A719 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_A772 proc far
2014-08-05 19:24:06 +00:00
push bp
mov bp, sp
push 1
call _graph_accesspage_func
2014-08-05 19:24:06 +00:00
pop cx
call _graph_copy_page_back_to_front
2014-08-05 19:24:06 +00:00
push 0
call _graph_accesspage_func
2014-08-05 19:24:06 +00:00
pop cx
call _grp_put_colorkey c, offset aOp_win_grp, ds ; "op_win.grp"
call _graph_copy_page_back_to_front
2014-08-05 19:24:06 +00:00
pop bp
retf
sub_A772 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_A79D proc far
2014-08-05 19:24:06 +00:00
push bp
mov bp, sp
mov al, byte_1232F
cbw
cmp ax, 1
jnz short loc_A7AE
call _resident_free
2014-08-05 19:24:06 +00:00
loc_A7AE:
call key_end
2014-08-05 19:24:06 +00:00
pop bp
retf
sub_A79D endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_A7B5 proc far
2014-08-05 19:24:06 +00:00
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]
2014-10-07 04:32:20 +00:00
call sub_A79D
call _mdrv2_bgm_fade_out_nonblock
call _game_switch_binary
mov al, _mode
2014-08-05 19:24:06 +00:00
cbw
cmp ax, 2
jnz short loc_A7FC
les bx, _resident
mov es:[bx+reiidenconfig_t.mode], 1
2014-08-05 19:24:06 +00:00
jmp short loc_A820
; ---------------------------------------------------------------------------
loc_A7FC:
mov al, _mode
2014-08-05 19:24:06 +00:00
cbw
cmp ax, 3
jnz short loc_A810
les bx, _resident
mov es:[bx+reiidenconfig_t.mode], 3
2014-08-05 19:24:06 +00:00
jmp short loc_A820
; ---------------------------------------------------------------------------
loc_A810:
cmp _mode, 0
2014-08-05 19:24:06 +00:00
jnz short loc_A820
les bx, _resident
mov es:[bx+reiidenconfig_t.mode], 0
2014-08-05 19:24:06 +00:00
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
2014-08-05 19:24:06 +00:00
add al, 2
mov es:[bx+reiidenconfig_t.rem_lives], al
mov es:[bx+reiidenconfig_t.p_value], 0
2014-08-05 19:24:06 +00:00
xor si, si
jmp short loc_A867
; ---------------------------------------------------------------------------
loc_A842:
2014-08-05 19:24:06 +00:00
mov ax, si
add ax, ax
les bx, _resident
2014-08-05 19:24:06 +00:00
add bx, ax
mov es:[bx+reiidenconfig_t.continues_per_scene], 0
2014-08-05 19:24:06 +00:00
mov ax, si
shl ax, 2
mov bx, word ptr _resident
2014-08-05 19:24:06 +00:00
add bx, ax
mov es:[bx+reiidenconfig_t.bonus_per_stage], 0
2014-08-05 19:24:06 +00:00
inc si
loc_A867:
2014-08-05 19:24:06 +00:00
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
2014-08-05 19:24:06 +00:00
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
2014-08-05 19:24:06 +00:00
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
2014-08-05 19:24:06 +00:00
jnz short loc_A8E1
mov ax, seg op_01
2014-08-05 19:24:06 +00:00
mov es, ax
assume es:op_01
2014-08-05 19:24:06 +00:00
loc_A8E1:
2014-10-07 04:32:20 +00:00
call sub_A79D
call _mdrv2_bgm_fade_out_nonblock
call _game_switch_binary
les bx, _resident
2014-08-05 19:24:06 +00:00
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
2014-08-05 19:24:06 +00:00
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
2014-08-05 19:24:06 +00:00
pop bp
retf
sub_A8AD endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_A92C proc far
2014-08-05 19:24:06 +00:00
arg_0 = word ptr 6
push bp
mov bp, sp
mov ax, [bp+arg_0]
mov bx, 70
2014-08-05 19:24:06 +00:00
cwd
idiv bx
cmp dx, 50
2014-08-05 19:24:06 +00:00
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"
2014-08-05 19:24:06 +00:00
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
2014-08-05 19:24:06 +00:00
pop bp
retf
sub_A92C endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_A96A proc far
2014-08-05 19:24:06 +00:00
var_14 = byte ptr -14h
@@y = word ptr -4
@@x = word ptr -2
2014-08-05 19:24:06 +00:00
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
2014-08-05 19:24:06 +00:00
mov ax, si
imul ax, 14h
add ax, 276
mov [bp+@@y], ax
2014-08-05 19:24:06 +00:00
mov bx, si
shl bx, 2
lea ax, [bp+var_14]
add bx, ax
pushd dword ptr ss:[bx]
2014-08-05 19:24:06 +00:00
mov ax, [bp+arg_2]
or ax, 30h
push ax
push [bp+@@y]
push [bp+@@x]
call _graph_putsa_fx
2014-08-05 19:24:06 +00:00
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
2014-08-05 19:24:06 +00:00
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
2014-08-05 19:24:06 +00:00
mov ax, si
imul ax, 20
add ax, 266
2014-08-05 19:24:06 +00:00
mov [bp+var_A], ax
call _egc_copy_rect_1_to_0 c, di, ax, large (16 shl 16) or 176
2014-08-05 19:24:06 +00:00
or si, si
jnz short loc_AA34
mov al, _opts.O_rank
2014-08-05 19:24:06 +00:00
cbw
shl ax, 2
lea dx, [bp+var_2E]
jmp short loc_AA54
; ---------------------------------------------------------------------------
loc_AA34:
2014-08-05 19:24:06 +00:00
cmp si, 1
jnz short loc_AA45
mov al, _opts.O_bgm_mode
2014-08-05 19:24:06 +00:00
cbw
shl ax, 2
lea dx, [bp+var_8]
jmp short loc_AA54
; ---------------------------------------------------------------------------
loc_AA45:
2014-08-05 19:24:06 +00:00
cmp si, 2
jnz short loc_AA83
mov al, _opts.O_lives_extra
2014-08-05 19:24:06 +00:00
cbw
shl ax, 2
lea dx, [bp+var_42]
loc_AA54:
2014-08-05 19:24:06 +00:00
add ax, dx
mov bx, ax
pushd dword ptr ss:[bx]
2014-08-05 19:24:06 +00:00
mov bx, si
shl bx, 2
lea ax, [bp+var_1E]
add bx, ax
pushd dword ptr ss:[bx] ; arglist
2014-08-05 19:24:06 +00:00
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
2019-12-18 05:45:08 +00:00
call _graph_printf_fx
2014-08-05 19:24:06 +00:00
add sp, 12h
jmp short loc_AAB2
; ---------------------------------------------------------------------------
loc_AA83:
2014-08-05 19:24:06 +00:00
cmp si, 3
jz short loc_AA8D
cmp si, 4
jnz short loc_AAB2
loc_AA8D:
2014-08-05 19:24:06 +00:00
mov bx, si
shl bx, 2
lea ax, [bp+var_1E]
add bx, ax
pushd dword ptr ss:[bx] ; arglist
2014-08-05 19:24:06 +00:00
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
2019-12-18 05:45:08 +00:00
call _graph_printf_fx
2014-08-05 19:24:06 +00:00
add sp, 0Eh
loc_AAB2:
2014-08-05 19:24:06 +00:00
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
2014-08-05 19:24:06 +00:00
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
2014-08-05 19:24:06 +00:00
mov ax, si
imul ax, 40
add ax, 286
2014-08-05 19:24:06 +00:00
mov [bp+var_A], ax
call _egc_copy_rect_1_to_0 c, di, ax, large (16 shl 16) or 176
2014-08-05 19:24:06 +00:00
or si, si
jnz short loc_AB69
push (16 shl 16) or 192
2014-08-05 19:24:06 +00:00
mov ax, [bp+var_A]
add ax, 20
2014-08-05 19:24:06 +00:00
push ax
push di
call _egc_copy_rect_1_to_0
2014-08-05 19:24:06 +00:00
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
2014-08-05 19:24:06 +00:00
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
2019-12-18 05:45:08 +00:00
call _graph_printf_fx
2014-08-05 19:24:06 +00:00
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]
2014-08-05 19:24:06 +00:00
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:
2014-08-05 19:24:06 +00:00
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
2014-08-05 19:24:06 +00:00
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:
2014-08-05 19:24:06 +00:00
push di ; int
2019-12-18 05:45:08 +00:00
call _graph_printf_fx
2014-08-05 19:24:06 +00:00
add sp, 0Eh
loc_AB93:
2014-08-05 19:24:06 +00:00
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
2014-08-05 19:24:06 +00:00
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
2014-10-07 04:32:20 +00:00
call sub_A96A
2014-08-05 19:24:06 +00:00
add sp, 4
push 50001h
2014-10-07 04:32:20 +00:00
call sub_A96A
2014-08-05 19:24:06 +00:00
add sp, 4
push 50002h
2014-10-07 04:32:20 +00:00
call sub_A96A
2014-08-05 19:24:06 +00:00
add sp, 4
push 50003h
2014-10-07 04:32:20 +00:00
call sub_A96A
2014-08-05 19:24:06 +00:00
add sp, 4
push 0Fh
mov al, _menu_sel
2014-08-05 19:24:06 +00:00
cbw
push ax
2014-10-07 04:32:20 +00:00
call sub_A96A
2014-08-05 19:24:06 +00:00
add sp, 4
mov word_12564, 1
mov al, _menu_sel
2014-08-05 19:24:06 +00:00
cbw
mov word_12562, ax
loc_AC04:
mov al, _menu_sel
2014-08-05 19:24:06 +00:00
cbw
cmp ax, word_12562
jz short loc_AC30
push 5
push word_12562
2014-10-07 04:32:20 +00:00
call sub_A96A
2014-08-05 19:24:06 +00:00
add sp, 4
push 0Fh
mov al, _menu_sel
2014-08-05 19:24:06 +00:00
cbw
push ax
2014-10-07 04:32:20 +00:00
call sub_A96A
2014-08-05 19:24:06 +00:00
add sp, 4
mov al, _menu_sel
2014-08-05 19:24:06 +00:00
cbw
mov word_12562, ax
loc_AC30:
cmp _input_ok, 0
2014-08-05 19:24:06 +00:00
jnz short loc_AC3E
cmp _input_shot, 0
2014-08-05 19:24:06 +00:00
jz short loc_AC6E
loc_AC3E:
mov al, _menu_sel
2014-08-05 19:24:06 +00:00
cbw
mov bx, ax
cmp bx, 3
ja short loc_AC6E
add bx, bx
jmp cs:off_AC7C[bx]
loc_AC50:
2014-10-07 04:32:20 +00:00
call sub_A7B5
2014-08-05 19:24:06 +00:00
jmp short loc_AC6E
; ---------------------------------------------------------------------------
loc_AC56:
2014-10-07 04:32:20 +00:00
call sub_A8AD
2014-08-05 19:24:06 +00:00
jmp short loc_AC6E
; ---------------------------------------------------------------------------
loc_AC5C:
2014-08-05 19:24:06 +00:00
mov byte_1232A, 1
mov word_12564, 0
jmp short loc_AC6E
; ---------------------------------------------------------------------------
loc_AC69:
2014-08-05 19:24:06 +00:00
mov byte_1232C, 1
loc_AC6E:
cmp _input_cancel, 0
2014-08-05 19:24:06 +00:00
jz short loc_AC7A
mov byte_1232C, 1
loc_AC7A:
2014-08-05 19:24:06 +00:00
pop bp
retf
sub_AB97 endp
; ---------------------------------------------------------------------------
off_AC7C dw offset loc_AC50
2014-08-05 19:24:06 +00:00
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
2014-08-05 19:24:06 +00:00
push bp
mov bp, sp
cmp word_12566, 0
jnz short loc_ACF9
mov _menu_sel, 0
2014-08-05 19:24:06 +00:00
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
2014-10-07 04:32:20 +00:00
call sub_A9B9
2014-08-05 19:24:06 +00:00
add sp, 4
push 50001h
2014-10-07 04:32:20 +00:00
call sub_A9B9
2014-08-05 19:24:06 +00:00
add sp, 4
push 50002h
2014-10-07 04:32:20 +00:00
call sub_A9B9
2014-08-05 19:24:06 +00:00
add sp, 4
push 50003h
2014-10-07 04:32:20 +00:00
call sub_A9B9
2014-08-05 19:24:06 +00:00
add sp, 4
push 50004h
2014-10-07 04:32:20 +00:00
call sub_A9B9
2014-08-05 19:24:06 +00:00
add sp, 4
loc_ACF9:
mov al, _menu_sel
2014-08-05 19:24:06 +00:00
cbw
cmp ax, word_12568
jz short loc_AD25
push 5
push word_12568
2014-10-07 04:32:20 +00:00
call sub_A9B9
2014-08-05 19:24:06 +00:00
add sp, 4
push 0Fh
mov al, _menu_sel
2014-08-05 19:24:06 +00:00
cbw
push ax
2014-10-07 04:32:20 +00:00
call sub_A9B9
2014-08-05 19:24:06 +00:00
add sp, 4
mov al, _menu_sel
2014-08-05 19:24:06 +00:00
cbw
mov word_12568, ax
loc_AD25:
mov al, _input_left
2014-08-05 19:24:06 +00:00
cbw
cmp ax, 1
jnz short loc_AD96
cmp word_1256A, 0
jnz short loc_AD9C
mov al, _menu_sel
2014-08-05 19:24:06 +00:00
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
2014-08-05 19:24:06 +00:00
cbw
or ax, ax
jge short loc_AD80
mov _opts.O_rank, RANK_LUNATIC
2014-08-05 19:24:06 +00:00
jmp short loc_AD80
; ---------------------------------------------------------------------------
loc_AD5C:
dec _opts.O_bgm_mode
mov al, _opts.O_bgm_mode
2014-08-05 19:24:06 +00:00
cbw
or ax, ax
jge short loc_AD80
mov _opts.O_bgm_mode, 1
2014-08-05 19:24:06 +00:00
jmp short loc_AD80
; ---------------------------------------------------------------------------
loc_AD6F:
dec _opts.O_lives_extra
mov al, _opts.O_lives_extra
2014-08-05 19:24:06 +00:00
cbw
or ax, ax
jge short loc_AD80
mov _opts.O_lives_extra, CFG_LIVES_EXTRA_MAX
2014-08-05 19:24:06 +00:00
loc_AD80:
2014-08-05 19:24:06 +00:00
push 0Fh
mov al, _menu_sel
2014-08-05 19:24:06 +00:00
cbw
push ax
2014-10-07 04:32:20 +00:00
call sub_A9B9
2014-08-05 19:24:06 +00:00
add sp, 4
mov word_1256A, 1
jmp short loc_AD9C
; ---------------------------------------------------------------------------
loc_AD96:
2014-08-05 19:24:06 +00:00
mov word_1256A, 0
loc_AD9C:
mov al, _input_right
2014-08-05 19:24:06 +00:00
cbw
cmp ax, 1
jnz short loc_AE10
cmp word_1256C, 0
jnz short loc_AE16
mov al, _menu_sel
2014-08-05 19:24:06 +00:00
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
2014-08-05 19:24:06 +00:00
cbw
cmp ax, RANK_LUNATIC
2014-08-05 19:24:06 +00:00
jle short loc_ADFA
mov _opts.O_rank, RANK_EASY
2014-08-05 19:24:06 +00:00
jmp short loc_ADFA
; ---------------------------------------------------------------------------
loc_ADD4:
inc _opts.O_bgm_mode
mov al, _opts.O_bgm_mode
2014-08-05 19:24:06 +00:00
cbw
cmp ax, 1
jle short loc_ADFA
mov _opts.O_bgm_mode, 0
2014-08-05 19:24:06 +00:00
jmp short loc_ADFA
; ---------------------------------------------------------------------------
loc_ADE8:
inc _opts.O_lives_extra
mov al, _opts.O_lives_extra
2014-08-05 19:24:06 +00:00
cbw
cmp ax, CFG_LIVES_EXTRA_MAX
2014-08-05 19:24:06 +00:00
jle short loc_ADFA
mov _opts.O_lives_extra, 0
2014-08-05 19:24:06 +00:00
loc_ADFA:
2014-08-05 19:24:06 +00:00
push 0Fh
mov al, _menu_sel
2014-08-05 19:24:06 +00:00
cbw
push ax
2014-10-07 04:32:20 +00:00
call sub_A9B9
2014-08-05 19:24:06 +00:00
add sp, 4
mov word_1256C, 1
jmp short loc_AE16
; ---------------------------------------------------------------------------
loc_AE10:
2014-08-05 19:24:06 +00:00
mov word_1256C, 0
loc_AE16:
cmp _input_ok, 0
2014-08-05 19:24:06 +00:00
jnz short loc_AE24
cmp _input_shot, 0
2014-08-05 19:24:06 +00:00
jz short loc_AE2D
loc_AE24:
mov al, _menu_sel
2014-08-05 19:24:06 +00:00
cbw
cmp ax, 4
jz short loc_AE34
loc_AE2D:
cmp _input_cancel, 0
2014-08-05 19:24:06 +00:00
jz short loc_AE44
loc_AE34:
2014-08-05 19:24:06 +00:00
mov byte_1232A, 3
mov word_12566, 0
mov _menu_sel, 2
2014-08-05 19:24:06 +00:00
loc_AE44:
cmp _input_ok, 0
2014-08-05 19:24:06 +00:00
jnz short loc_AE52
cmp _input_shot, 0
2014-08-05 19:24:06 +00:00
jz short loc_AE6B
loc_AE52:
mov al, _menu_sel
2014-08-05 19:24:06 +00:00
cbw
cmp ax, 3
jnz short loc_AE6B
mov byte_1232A, 2
mov word_12566, 0
mov _menu_sel, 0
2014-08-05 19:24:06 +00:00
loc_AE6B:
2014-08-05 19:24:06 +00:00
pop bp
retf
sub_AC84 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_AE6D proc far
2014-08-05 19:24:06 +00:00
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
2014-08-05 19:24:06 +00:00
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
2014-08-05 19:24:06 +00:00
add sp, 4
call _mdrv2_bgm_play
2014-08-05 19:24:06 +00:00
leave
retf
sub_AE6D endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_AEA8 proc far
2014-08-05 19:24:06 +00:00
push bp
mov bp, sp
cmp word_125AA, 0
jnz short loc_AF00
mov _menu_sel, 0
2014-08-05 19:24:06 +00:00
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
2014-10-07 04:32:20 +00:00
call sub_AAB6
2014-08-05 19:24:06 +00:00
add sp, 4
push 50001h
2014-10-07 04:32:20 +00:00
call sub_AAB6
2014-08-05 19:24:06 +00:00
add sp, 4
loc_AF00:
mov al, _menu_sel
2014-08-05 19:24:06 +00:00
cbw
cmp ax, word_125AC
jz short loc_AF2C
push 5
push word_125AC
2014-10-07 04:32:20 +00:00
call sub_AAB6
2014-08-05 19:24:06 +00:00
add sp, 4
push 0Fh
mov al, _menu_sel
2014-08-05 19:24:06 +00:00
cbw
push ax
2014-10-07 04:32:20 +00:00
call sub_AAB6
2014-08-05 19:24:06 +00:00
add sp, 4
mov al, _menu_sel
2014-08-05 19:24:06 +00:00
cbw
mov word_125AC, ax
loc_AF2C:
mov al, _input_left
2014-08-05 19:24:06 +00:00
cbw
cmp ax, 1
jnz short loc_AF69
cmp word_125AE, 0
jnz short loc_AF6F
cmp _menu_sel, 0
2014-08-05 19:24:06 +00:00
jnz short loc_AF53
dec byte_1251D
cmp byte_1251D, 0
jge short loc_AF53
mov byte_1251D, 0Eh
loc_AF53:
2014-08-05 19:24:06 +00:00
push 0Fh
mov al, _menu_sel
2014-08-05 19:24:06 +00:00
cbw
push ax
2014-10-07 04:32:20 +00:00
call sub_AAB6
2014-08-05 19:24:06 +00:00
add sp, 4
mov word_125AE, 1
jmp short loc_AF6F
; ---------------------------------------------------------------------------
loc_AF69:
2014-08-05 19:24:06 +00:00
mov word_125AE, 0
loc_AF6F:
mov al, _input_right
2014-08-05 19:24:06 +00:00
cbw
cmp ax, 1
jnz short loc_AFAC
cmp word_125B0, 0
jnz short loc_AFB2
cmp _menu_sel, 0
2014-08-05 19:24:06 +00:00
jnz short loc_AF96
inc byte_1251D
cmp byte_1251D, 0Fh
jl short loc_AF96
mov byte_1251D, 0
loc_AF96:
2014-08-05 19:24:06 +00:00
push 0Fh
mov al, _menu_sel
2014-08-05 19:24:06 +00:00
cbw
push ax
2014-10-07 04:32:20 +00:00
call sub_AAB6
2014-08-05 19:24:06 +00:00
add sp, 4
mov word_125B0, 1
jmp short loc_AFB2
; ---------------------------------------------------------------------------
loc_AFAC:
2014-08-05 19:24:06 +00:00
mov word_125B0, 0
loc_AFB2:
cmp _input_ok, 0
2014-08-05 19:24:06 +00:00
jnz short loc_AFC0
cmp _input_shot, 0
2014-08-05 19:24:06 +00:00
jz short loc_AFC9
loc_AFC0:
mov al, _menu_sel
2014-08-05 19:24:06 +00:00
cbw
cmp ax, 1
jz short loc_AFD0
loc_AFC9:
cmp _input_cancel, 0
2014-08-05 19:24:06 +00:00
jz short loc_AFE0
loc_AFD0:
2014-08-05 19:24:06 +00:00
mov byte_1232A, 4
mov word_125AA, 0
mov _menu_sel, 3
2014-08-05 19:24:06 +00:00
loc_AFE0:
cmp _input_ok, 0
2014-08-05 19:24:06 +00:00
jnz short loc_AFEE
cmp _input_shot, 0
2014-08-05 19:24:06 +00:00
jz short loc_AFF9
loc_AFEE:
cmp _menu_sel, 0
2014-08-05 19:24:06 +00:00
jnz short loc_AFF9
2014-10-07 04:32:20 +00:00
call sub_AE6D
2014-08-05 19:24:06 +00:00
loc_AFF9:
2014-08-05 19:24:06 +00:00
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
2014-08-05 19:24:06 +00:00
outregs = REGS ptr -2Ch
inregs = REGS ptr -1Ch
@@kb_buf = word ptr -0Ch
2014-08-05 19:24:06 +00:00
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
2014-08-05 19:24:06 +00:00
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:
2014-08-05 19:24:06 +00:00
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
2014-08-05 19:24:06 +00:00
loc_B045:
2014-08-05 19:24:06 +00:00
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
2014-08-05 19:24:06 +00:00
loc_B05A:
2014-08-05 19:24:06 +00:00
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
2014-08-05 19:24:06 +00:00
loc_B06F:
2014-08-05 19:24:06 +00:00
push 3 ; n
push ds
push offset aCon ; "CON"
les bx, [bp+_argv+2]
pushd dword ptr es:[bx+4] ; s1
2014-08-05 19:24:06 +00:00
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]
2014-09-28 03:04:24 +00:00
call _atol
2014-08-05 19:24:06 +00:00
add sp, 4
mov byte_1232D, al
les bx, [bp+_argv+2]
pushd dword ptr es:[bx+0Ch]
2014-09-28 03:04:24 +00:00
call _atol
2014-08-05 19:24:06 +00:00
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]
2014-09-28 03:04:24 +00:00
call _atol
2014-08-05 19:24:06 +00:00
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
2014-08-05 19:24:06 +00:00
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
2014-10-07 04:32:20 +00:00
call sub_A719
2014-08-05 19:24:06 +00:00
xor ax, ax
mov es, ax
mov al, es:((50h shl 4) + 00h) ; BIOS_FLAG
or al, 20h ; Do not beep when key buffer overflows
2014-08-05 19:24:06 +00:00
mov [bp+var_9], al
xor ax, ax
mov dl, [bp+var_9]
mov es, ax
mov es:((50h shl 4) + 00h), dl ; BIOS_FLAG
2014-08-05 19:24:06 +00:00
jmp short loc_B135
; ---------------------------------------------------------------------------
loc_B126:
2014-08-05 19:24:06 +00:00
push 1
call _frame_delay
2014-08-05 19:24:06 +00:00
pop cx
push di
2014-10-07 04:32:20 +00:00
call sub_A92C
2014-08-05 19:24:06 +00:00
pop cx
inc di
loc_B135:
call key_sense_bios
2014-08-05 19:24:06 +00:00
or ax, ax
jz short loc_B126
2014-10-07 04:32:20 +00:00
call sub_A772
mov eax, _rand
2014-08-30 10:13:04 +00:00
mov random_seed, eax
2014-08-05 19:24:06 +00:00
jmp loc_B21A
; ---------------------------------------------------------------------------
loc_B14D:
2014-08-05 19:24:06 +00:00
cmp byte_1232A, 0
jnz short loc_B15F
call _main_input_sense
2014-10-07 04:32:20 +00:00
call sub_AB97
2014-08-05 19:24:06 +00:00
jmp loc_B1EE
; ---------------------------------------------------------------------------
loc_B15F:
2014-08-05 19:24:06 +00:00
mov al, byte_1232A
cbw
cmp ax, 1
jnz short loc_B172
call _option_input_sense
2014-10-07 04:32:20 +00:00
call sub_AC84
2014-08-05 19:24:06 +00:00
jmp short loc_B1EE
; ---------------------------------------------------------------------------
loc_B172:
2014-08-05 19:24:06 +00:00
mov al, byte_1232A
cbw
cmp ax, 2
jnz short loc_B185
call _option_input_sense
2014-10-07 04:32:20 +00:00
call sub_AEA8
2014-08-05 19:24:06 +00:00
jmp short loc_B1EE
; ---------------------------------------------------------------------------
loc_B185:
2014-08-05 19:24:06 +00:00
mov al, byte_1232A
cbw
cmp ax, 3
jnz short loc_B1D8
mov al, _opts.O_bgm_mode
2014-08-05 19:24:06 +00:00
cbw
cmp ax, si
jz short loc_B1C9
cmp _opts.O_bgm_mode, 0
2014-08-05 19:24:06 +00:00
jnz short loc_B1A4
call _mdrv2_bgm_stop
2014-08-05 19:24:06 +00:00
jmp short loc_B1C3
; ---------------------------------------------------------------------------
loc_B1A4:
mov al, _opts.O_bgm_mode
2014-08-05 19:24:06 +00:00
cbw
cmp ax, 1
jnz short loc_B1C3
call _mdrv2_bgm_stop
2014-08-05 19:24:06 +00:00
push ds
push offset aReimu_mdt ; "reimu.mdt"
call _mdrv2_bgm_load
2014-08-05 19:24:06 +00:00
add sp, 4
call _mdrv2_bgm_play
2014-08-05 19:24:06 +00:00
loc_B1C3:
mov al, _opts.O_bgm_mode
2014-08-05 19:24:06 +00:00
cbw
mov si, ax
loc_B1C9:
2014-08-05 19:24:06 +00:00
push 0Fh
call _frame_delay
2014-08-05 19:24:06 +00:00
pop cx
mov byte_1232A, 0
jmp short loc_B1EE
; ---------------------------------------------------------------------------
loc_B1D8:
2014-08-05 19:24:06 +00:00
mov al, byte_1232A
cbw
cmp ax, 4
jnz short loc_B1EE
push 0Fh
call _frame_delay
2014-08-05 19:24:06 +00:00
pop cx
mov byte_1232A, 1
loc_B1EE:
2014-08-05 19:24:06 +00:00
xor ax, ax
mov es, ax
mov ax, word ptr es:[((50h shl 4) + 24h)] ; KB_BUF_HEAD
mov [bp+@@kb_buf], ax
2014-08-05 19:24:06 +00:00
xor ax, ax
mov dx, [bp+@@kb_buf]
2014-08-05 19:24:06 +00:00
mov es, ax
mov word ptr es:[((50h shl 4) + 26h)], dx ; KB_BUF_TAIL
2014-08-05 19:24:06 +00:00
mov es, ax
mov byte ptr es:[((50h shl 4) + 28h)], 0 ; KB_COUNT
inc _rand
2014-08-05 19:24:06 +00:00
push 1
call _frame_delay
2014-08-05 19:24:06 +00:00
pop cx
loc_B21A:
2014-08-05 19:24:06 +00:00
cmp byte_1232C, 0
jz loc_B14D
call _cfg_save
2014-08-05 19:24:06 +00:00
mov byte_1232F, 1
call _mdrv2_bgm_stop
2014-10-07 04:32:20 +00:00
call sub_A79D
2014-08-05 19:24:06 +00:00
push 1
call _graph_accesspage_func
2014-08-05 19:24:06 +00:00
pop cx
call _z_graph_clear
2014-08-05 19:24:06 +00:00
push 0
call _graph_accesspage_func
2014-08-05 19:24:06 +00:00
pop cx
call _z_graph_clear
call _game_exit
call _mdrv2_bgm_stop
2014-08-05 19:24:06 +00:00
push ds
push offset format ; "<22><><EFBFBD>‚<EFBFBD><C282><EFBFBD>܂ł<DC82><C582><EFBFBD><EFBFBD>I<EFBFBD>I\n"
loc_B25D:
2014-08-05 19:24:06 +00:00
call _printf
add sp, 4
pop di
pop si
leave
retf
_main endp
op_01__TEXT ends
2014-08-05 19:24:06 +00:00
; ===========================================================================
; Segment type: Pure code
op_02_TEXT segment byte public 'CODE' use16
extern _frame_delay:proc
op_02_TEXT ends
2014-08-05 19:24:06 +00:00
; ===========================================================================
; 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
2014-08-05 19:24:06 +00:00
; ===========================================================================
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
2014-08-05 19:24:06 +00:00
; ===========================================================================
; 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
2014-08-05 19:24:06 +00:00
; ---------------------------------------------------------------------------
; ===========================================================================
; 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
2014-08-05 19:24:06 +00:00
; ---------------------------------------------------------------------------
; ===========================================================================
; Segment type: Pure code
op_07_TEXT segment byte public 'CODE' use16
extern _egc_copy_rect_1_to_0:proc
op_07_TEXT ends
2014-08-05 19:24:06 +00:00
; ===========================================================================
; Segment type: Pure code
op_08_TEXT segment byte public 'CODE' use16
2019-12-18 05:45:08 +00:00
extern _graph_printf_fx:proc
op_08_TEXT ends
2014-08-05 19:24:06 +00:00
; ===========================================================================
; 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
2014-08-05 19:24:06 +00:00
; ===========================================================================
2014-08-05 19:24:06 +00:00
; 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
2014-08-05 19:24:06 +00:00
; ===========================================================================
2014-08-05 19:24:06 +00:00
; 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
2014-08-05 19:24:06 +00:00
; ===========================================================================
2014-08-05 19:24:06 +00:00
op_12_TEXT segment byte public 'CODE' use16
op_12_TEXT ends
2014-08-05 19:24:06 +00:00
; ===========================================================================
2014-08-05 19:24:06 +00:00
.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)
public _WHITELINES_DRAWN_AT
_WHITELINES_DRAWN_AT db RES_Y dup(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/snd/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
2014-08-23 13:47:05 +00:00
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