ReC98/th03_op.asm

3161 lines
61 KiB
NASM
Raw Blame History

;
; +-------------------------------------------------------------------------+
; | This file has been generated by The Interactive Disassembler (IDA) |
; | Copyright (c) 2009 by Hex-Rays, <support@hex-rays.com> |
; +-------------------------------------------------------------------------+
;
; Input MD5 : 661F4F8FFAF1F3274F503D154133DEF0
; File Name : th03/OP.EXE
; Format : MS-DOS executable (EXE)
; Base Address: 0h Range: 0h-FD80h Loaded length: E97Ah
; Entry Point : 0:0
; OS type : MS DOS
; Application type: Executable 16bit
.386
.model use16 large _TEXT
include ReC98.inc
include th03/th03.inc
include th03/sprites/regi.inc
include th03/formats/scoredat.inc
extern _execl:proc
extern _getch:proc
group_01 group op_01_TEXT, OP_MUSIC_TEXT, op_02_TEXT, SCOREDAT_TEXT, op_03_TEXT
; ===========================================================================
_TEXT segment word public 'CODE' use16
extern PALETTE_BLACK_OUT:proc
extern DOS_PUTS2:proc
extern EGC_SHIFT_LEFT_ALL:proc
extern GRCG_BOXFILL:proc
extern GRCG_BYTEBOXFILL_X:proc
extern GRCG_PSET:proc
extern GRCG_SETCOLOR:proc
extern GRCG_OFF:proc
extern GAIJI_BACKUP:proc
extern GAIJI_RESTORE:proc
extern GAIJI_ENTRY_BFNT:proc
extern GAIJI_PUTSA:proc
extern GRAPH_400LINE:proc
extern GRAPH_CLEAR:proc
extern GRAPH_COPY_PAGE:proc
extern GRAPH_GAIJI_PUTS:proc
extern GRAPH_PI_FREE:proc
extern PALETTE_SHOW:proc
extern IRAND:proc
extern PALETTE_ENTRY_RGB:proc
extern TEXT_CLEAR:proc
extern TEXT_PUTSA:proc
extern PALETTE_WHITE_IN:proc
extern HMEM_FREE:proc
extern SUPER_FREE:proc
extern SUPER_ENTRY_BFNT:proc
extern SUPER_PUT:proc
extern RESPAL_CREATE:proc
extern RESPAL_FREE:proc
_TEXT ends
; ===========================================================================
; Segment type: Pure code
op_01_TEXT segment byte public 'CODE' use16
assume cs:group_01
;org 8
assume es:nothing, ss:nothing, ds:_DATA, fs:nothing, gs:nothing
@cfg_load$qv procdesc near
@cfg_save$qv procdesc near
@cfg_save_exit$qv procdesc near
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
public START_GAME
start_game proc near
var_4 = word ptr -4
var_2 = word ptr -2
enter 4, 0
push si
les bx, _resident
mov es:[bx+resident_t.demo_num], 0
mov es:[bx+resident_t.pid_winner], 0
mov es:[bx+resident_t.story_stage], 0
mov es:[bx+resident_t.RESIDENT_is_cpu][0], 0
mov es:[bx+resident_t.RESIDENT_is_cpu][1], 1
mov es:[bx+resident_t.game_mode], GM_STORY
mov es:[bx+resident_t.story_lives], CREDIT_LIVES
mov es:[bx+resident_t.show_score_menu], 0
mov es:[bx+resident_t.RESIDENT_playchar_paletted][1], -1
call sub_BD9A
or al, al
jz short loc_9A59
mov al, 1
jmp loc_9B9A
; ---------------------------------------------------------------------------
loc_9A59:
les bx, _resident
mov al, es:[bx+resident_t.RESIDENT_playchar_paletted][0]
mov ah, 0
dec ax
cwd
sub ax, dx
mov bx, ax
sar bx, 1
mov al, [bx+0A0h]
mov ah, 0
mov [bp+var_4], ax
mov bx, word ptr _resident
mov eax, es:[bx+resident_t.rand]
mov random_seed, eax
xor si, si
jmp short loc_9ADB
; ---------------------------------------------------------------------------
loc_9A85:
call IRand
mov bx, 7
cwd
idiv bx
mov [bp+var_2], dx
mov bx, [bp+var_2]
cmp byte ptr [bx+99h], 0
jnz short loc_9A85
mov ax, [bp+var_4]
cmp ax, [bp+var_2]
jz short loc_9A85
mov byte ptr [bx+99h], 1
mov ax, [bp+var_2]
add ax, ax
inc ax
mov [bp+var_2], ax
les bx, _resident
add bx, si
mov al, byte ptr [bp+var_2]
mov es:[bx+resident_t.story_opponents], al
mov bx, word ptr _resident
mov al, es:[bx+resident_t.RESIDENT_playchar_paletted][0]
mov ah, 0
cmp ax, [bp+var_2]
jnz short loc_9ADA
add bx, si
mov al, byte ptr [bp+var_2]
inc al
mov es:[bx+resident_t.story_opponents], al
loc_9ADA:
inc si
loc_9ADB:
cmp si, 6
jl short loc_9A85
les bx, _resident
mov al, es:[bx+resident_t.story_opponents]
mov es:[bx+resident_t.RESIDENT_playchar_paletted][1], al
mov al, byte ptr [bp+var_4]
add al, al
inc al
mov es:[bx+resident_t.story_opponents][6], al
mov es:[bx+resident_t.story_opponents][7], (1 + (PLAYCHAR_CHIYURI * 2))
cmp es:[bx+resident_t.RESIDENT_playchar_paletted][0], (1 + (PLAYCHAR_CHIYURI * 2))
jnz short loc_9B07
inc es:[bx+resident_t.story_opponents][7]
loc_9B07:
les bx, _resident
mov es:[bx+resident_t.story_opponents][8], (1 + (PLAYCHAR_YUMEMI * 2))
cmp es:[bx+resident_t.RESIDENT_playchar_paletted][0], (1 + (PLAYCHAR_YUMEMI * 2))
jnz short loc_9B1B
inc es:[bx+resident_t.story_opponents][8]
loc_9B1B:
xor si, si
jmp short loc_9B39
; ---------------------------------------------------------------------------
loc_9B1F:
les bx, _resident
add bx, si
mov al, es:[bx+resident_t.story_opponents]
mov ah, 0
dec ax
cwd
sub ax, dx
sar ax, 1
cmp ax, 9
jge loc_9A59
inc si
loc_9B39:
cmp si, STAGE_COUNT
jl short loc_9B1F
xor si, si
jmp short loc_9B4E
; ---------------------------------------------------------------------------
loc_9B42:
les bx, _resident
add bx, si
mov es:[bx+resident_t.score_last], 0
inc si
loc_9B4E:
cmp si, (PLAYER_COUNT * SCORE_DIGITS)
jl short loc_9B42
les bx, _resident
mov es:[bx+resident_t.rem_credits], 3
mov es:[bx+resident_t.op_skip_animation], 0
mov al, es:[bx+resident_t.rank]
mov ah, 0
imul ax, 25
add al, 70
mov es:[bx+resident_t.skill], al
call @cfg_save$qv
call gaiji_restore
kajacall KAJA_SONG_STOP
call @game_exit$qv
pushd 0
push ds
push offset path ; "mainl"
push ds
push offset path ; "mainl"
call _execl
add sp, 0Ch
mov al, 0
loc_9B9A:
pop si
leave
retn
start_game endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_9B9D proc near
arg_0 = word ptr 4
arg_2 = word ptr 6
push bp
mov bp, sp
push si
push di
mov di, [bp+arg_2]
mov si, [bp+arg_0]
or di, di
jnz short loc_9BB8
push 1B0012h
push ds
push offset gp1P_VS_CPU
jmp short loc_9BD3
; ---------------------------------------------------------------------------
loc_9BB8:
cmp di, 1
jnz short loc_9BC9
push 1B0013h
push ds
push offset gp1P_VS_2P
jmp short loc_9BD3
; ---------------------------------------------------------------------------
loc_9BC9:
push 1B0014h
push ds
push offset gpCPU_VS_CPU
loc_9BD3:
push si
call gaiji_putsa
pop di
pop si
pop bp
retn 4
sub_9B9D endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
public START_VS
start_vs proc near
var_2 = word ptr -2
enter 2, 0
push si
xor si, si
les bx, _resident
cmp es:[bx+resident_t.game_mode], GM_VS
jnb loc_9C8B
call text_clear
call sub_B0AF
mov [bp+var_2], 0
pushd 0E1h
call sub_9B9D
push 10001h
call sub_9B9D
push 20001h
call sub_9B9D
loc_9C1B:
call input_mode_interface
or si, si
jnz short loc_9C7E
test _input_sp.lo, low INPUT_UP
jz short loc_9C4A
push [bp+var_2]
push 1
call sub_9B9D
dec [bp+var_2]
cmp [bp+var_2], 0
jge short loc_9C41
mov [bp+var_2], 2
loc_9C41:
push [bp+var_2]
push 0E1h
call sub_9B9D
loc_9C4A:
test _input_sp.lo, low INPUT_DOWN
jz short loc_9C70
push [bp+var_2]
push 1
call sub_9B9D
inc [bp+var_2]
cmp [bp+var_2], 2
jle short loc_9C67
mov [bp+var_2], 0
loc_9C67:
push [bp+var_2]
push 0E1h
call sub_9B9D
loc_9C70:
test _input_sp.lo, low INPUT_SHOT
jnz short loc_9C9B
test _input_sp.hi, high INPUT_OK
jnz short loc_9C9B
loc_9C7E:
mov si, _input_sp
call @frame_delay$qi pascal, 1
jmp short loc_9C1B
; ---------------------------------------------------------------------------
loc_9C8B:
les bx, _resident
mov al, es:[bx+resident_t.game_mode]
mov ah, 0
add ax, -GM_VS
mov [bp+var_2], ax
loc_9C9B:
cmp [bp+var_2], VS_CPU_CPU
jnz short loc_9CA5
mov al, 1
jmp short loc_9CA7
; ---------------------------------------------------------------------------
loc_9CA5:
mov al, 0
loc_9CA7:
les bx, _resident
mov es:[bx+resident_t.RESIDENT_is_cpu][0], al
cmp [bp+var_2], VS_1P_2P
jz short loc_9CB9
mov al, 1
jmp short loc_9CBB
; ---------------------------------------------------------------------------
loc_9CB9:
mov al, 0
loc_9CBB:
les bx, _resident
mov es:[bx+resident_t.RESIDENT_is_cpu][1], al
mov es:[bx+resident_t.demo_num], 0
mov es:[bx+resident_t.pid_winner], 0
mov es:[bx+resident_t.story_stage], 0
mov al, byte ptr [bp+var_2]
add al, GM_VS
mov es:[bx+resident_t.game_mode], al
mov es:[bx+resident_t.show_score_menu], 0
cmp [bp+var_2], 1
jnz short loc_9CEF
call sub_BA88
or al, al
jz short loc_9D03
jmp short loc_9CF6
; ---------------------------------------------------------------------------
loc_9CEF:
call sub_BC1F
or al, al
jz short loc_9D03
loc_9CF6:
les bx, _resident
mov es:[bx+resident_t.game_mode], GM_NONE
mov al, 1
jmp short loc_9D49
; ---------------------------------------------------------------------------
loc_9D03:
mov [bp+var_2], 0
jmp short loc_9D19
; ---------------------------------------------------------------------------
loc_9D0A:
les bx, _resident
add bx, [bp+var_2]
mov es:[bx+resident_t.score_last], 0
inc [bp+var_2]
loc_9D19:
cmp [bp+var_2], (PLAYER_COUNT * SCORE_DIGITS)
jl short loc_9D0A
call @cfg_save$qv
call gaiji_restore
kajacall KAJA_SONG_STOP
call @game_exit$qv
pushd 0
push ds
push offset path ; "mainl"
push ds
push offset path ; "mainl"
call _execl
add sp, 0Ch
mov al, 0
loc_9D49:
pop si
leave
retn
start_vs endp
include th03/start.asm
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_9E16 proc near
push bp
mov bp, sp
push si
mov _input_sp, INPUT_NONE
xor si, si
jmp short loc_9E43
; ---------------------------------------------------------------------------
loc_9E24:
call input_mode_interface
les bx, _resident
inc es:[bx+resident_t.rand]
inc si
cmp si, 208h
jle short loc_9E3C
call start_demo
loc_9E3C:
call @frame_delay$qi pascal, 1
loc_9E43:
cmp _input_sp, INPUT_NONE
jz short loc_9E24
call super_put pascal, large (160 shl 16) or 256, 0
mov si, 176
jmp short loc_9E76
; ---------------------------------------------------------------------------
loc_9E5C:
push si
call sub_B10A
call super_put pascal, si, large (256 shl 16) or 2
call @frame_delay$qi pascal, 1
add si, 8
loc_9E76:
cmp si, 288
jl short loc_9E5C
pop si
pop bp
retn
sub_9E16 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
public SCORE_MENU
score_menu proc near
push bp
mov bp, sp
push si
les bx, _resident
mov es:[bx+resident_t.story_stage], STAGE_NONE
mov es:[bx+resident_t.show_score_menu], 1
mov es:[bx+resident_t.game_mode], GM_NONE
xor si, si
jmp short loc_9EA6
; ---------------------------------------------------------------------------
loc_9E9A:
les bx, _resident
add bx, si
mov es:[bx+resident_t.score_last], 0
inc si
loc_9EA6:
cmp si, (PLAYER_COUNT * SCORE_DIGITS)
jl short loc_9E9A
call @cfg_save$qv
call gaiji_restore
kajacall KAJA_SONG_STOP
call super_free
call @game_exit$qv
pushd 0
push ds
push offset path ; "mainl"
push ds
push offset path ; "mainl"
call _execl
add sp, 0Ch
mov al, 0
pop si
pop bp
retn
score_menu endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
public MAIN_PUT
main_put proc near
arg_0 = word ptr 4
arg_2 = word ptr 6
push bp
mov bp, sp
push si
push di
mov si, [bp+arg_2]
mov di, [bp+arg_0]
or si, si
jnz short loc_9EF8
push (25 shl 16) + 17
push ds
push offset gpSTART
jmp short loc_9F4B
; ---------------------------------------------------------------------------
loc_9EF8:
cmp si, 1
jnz short loc_9F09
push (23 shl 16) + 18
push ds
push offset gpVS_START
jmp short loc_9F4B
; ---------------------------------------------------------------------------
loc_9F09:
cmp si, 2
jnz short loc_9F1A
push (22 shl 16) + 19
push ds
push offset gpMUSIC_ROOM
jmp short loc_9F4B
; ---------------------------------------------------------------------------
loc_9F1A:
cmp si, 3
jnz short loc_9F2B
push (24 shl 16) + 20
push ds
push offset gpHISCORE
jmp short loc_9F4B
; ---------------------------------------------------------------------------
loc_9F2B:
cmp si, 4
jnz short loc_9F3C
push (25 shl 16) + 21
push ds
push offset gpOPTION
jmp short loc_9F4B
; ---------------------------------------------------------------------------
loc_9F3C:
cmp si, 5
jnz short loc_9F51
push (26 shl 16) + 22
push ds
push offset gpQUIT
loc_9F4B:
push di
call gaiji_putsa
loc_9F51:
pop di
pop si
pop bp
retn 4
main_put endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
public OPTION_PUT
option_put proc near
arg_0 = word ptr 4
arg_2 = word ptr 6
push bp
mov bp, sp
push si
push di
mov di, [bp+arg_2]
mov si, [bp+arg_0]
or di, di
jnz short loc_9FD6
call gaiji_putsa pascal, (25 shl 16) + 17, ds offset gpRANK, si
call text_putsa pascal, (37 shl 16) + 17, ds, offset asc_D965, TX_WHITE
les bx, _resident
mov al, es:[bx+resident_t.rank]
mov ah, 0
mov bx, ax
cmp bx, RANK_LUNATIC
ja loc_A092
add bx, bx
jmp cs:off_A099[bx]
@@easy:
push (38 shl 16) + 17
push ds
push offset gpEASY
jmp loc_A08C
; ---------------------------------------------------------------------------
@@normal:
push (37 shl 16) + 17
push ds
push offset gpNORMAL
jmp loc_A08C
; ---------------------------------------------------------------------------
@@hard:
push (38 shl 16) + 17
push ds
push offset gpHARD
jmp loc_A08C
; ---------------------------------------------------------------------------
@@lunatic:
push (37 shl 16) + 17
push ds
push offset gpLUNATIC
jmp loc_A08C
; ---------------------------------------------------------------------------
loc_9FD6:
cmp di, 1
jnz short loc_A02A
call gaiji_putsa pascal, (25 shl 16) + 19, ds, offset gpMUSIC, si
les bx, _resident
mov al, es:[bx+resident_t.bgm_mode]
mov ah, 0
or ax, ax
jz short loc_A006
cmp ax, SND_BGM_FM
jz short @@fm
cmp ax, SND_BGM_MIDI
jz short @@midi
jmp loc_A092
; ---------------------------------------------------------------------------
loc_A006:
push (35 shl 16) + 19
push ds
push offset gpOFF
jmp short loc_A08C
; ---------------------------------------------------------------------------
@@fm:
push (35 shl 16) + 19
push ds
push offset gpFM_86
jmp short loc_A08C
; ---------------------------------------------------------------------------
@@midi:
push (35 shl 16) + 19
push ds
push offset gpMIDI_SC88
jmp short loc_A08C
; ---------------------------------------------------------------------------
loc_A02A:
cmp di, 2
jnz short loc_A07D
call gaiji_putsa pascal, (23 shl 16) + 21, ds, offset gpKEYCONFIG, si
les bx, _resident
mov al, es:[bx+resident_t.key_mode]
mov ah, 0
or ax, ax
jz short @@key_vs_key
cmp ax, KM_JOY_KEY
jz short @@joy_vs_key
cmp ax, KM_KEY_JOY
jz short @@key_vs_joy
jmp short loc_A092
; ---------------------------------------------------------------------------
@@key_vs_key:
push (37 shl 16) + 21
push ds
push offset gpKEY_VS_KEY
jmp short loc_A08C
; ---------------------------------------------------------------------------
@@joy_vs_key:
push (37 shl 16) + 21
push ds
push offset gpJOY_VS_KEY
jmp short loc_A08C
; ---------------------------------------------------------------------------
@@key_vs_joy:
push (37 shl 16) + 21
push ds
push offset gpKEY_VS_JOY
jmp short loc_A08C
; ---------------------------------------------------------------------------
loc_A07D:
cmp di, 3
jnz short loc_A092
push (32 shl 16) + 22
push ds
push offset gpQUIT
loc_A08C:
push si
call gaiji_putsa
loc_A092:
pop di
pop si
pop bp
retn 4
; ---------------------------------------------------------------------------
db 0
off_A099 dw offset @@easy
dw offset @@normal
dw offset @@hard
dw offset @@lunatic
option_put endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
public MENU_SEL_MOVE
menu_sel_move proc near
arg_0 = byte ptr 4
arg_2 = byte ptr 6
push bp
mov bp, sp
mov al, _menu_sel
cbw
push ax
push 1
call _putfunc
mov al, [bp+arg_0]
add _menu_sel, al
cmp _menu_sel, 0
jge short loc_A0C3
mov al, [bp+arg_2]
mov _menu_sel, al
loc_A0C3:
mov al, _menu_sel
cmp al, [bp+arg_2]
jle short loc_A0D0
mov _menu_sel, 0
loc_A0D0:
mov al, _menu_sel
cbw
push ax
push 0E1h
call _putfunc
pop bp
retn 4
menu_sel_move endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
public MAIN_UPDATE_AND_RENDER
main_update_and_render proc near
push bp
mov bp, sp
push si
cmp _main_menu_initialized, 0
jnz short @@main_initialized
call text_clear
cmp byte_D953, 0
jnz short loc_A0FA
call sub_B0DB
loc_A0FA:
mov byte_D953, 0
mov _main_input_allowed, 0
xor si, si
jmp short loc_A11E
; ---------------------------------------------------------------------------
loc_A108:
push si
mov al, _menu_sel
cbw
cmp ax, si
jnz short loc_A116
mov ax, 0E1h
jmp short loc_A119
; ---------------------------------------------------------------------------
loc_A116:
mov ax, 1
loc_A119:
push ax
call main_put
inc si
loc_A11E:
cmp si, 6
jl short loc_A108
mov _putfunc, offset main_put
mov _main_menu_initialized, 1
mov _main_input_allowed, 0
@@main_initialized:
cmp _input_sp, INPUT_NONE
jnz short loc_A13F
mov _main_input_allowed, 1
loc_A13F:
cmp _main_input_allowed, 0
jz @@no_main_input_allowed
test _input_sp.lo, low INPUT_UP
jz short loc_A156
call menu_sel_move pascal, 5, -1
loc_A156:
test _input_sp.lo, low INPUT_DOWN
jz short loc_A164
call menu_sel_move pascal, 5, 1
loc_A164:
test _input_sp.hi, high INPUT_OK
jnz short loc_A172
test _input_sp.lo, low INPUT_SHOT
jz short loc_A1DB
loc_A172:
mov al, _menu_sel
cbw
mov bx, ax
cmp bx, 5
ja short loc_A1DB
add bx, bx
jmp cs:off_A1F7[bx]
menu_sel_start:
call start_game
jmp short loc_A19A
; ---------------------------------------------------------------------------
menu_sel_vs_start:
les bx, _resident
mov es:[bx+resident_t.RESIDENT_playchar_paletted][0], (1 + (PLAYCHAR_REIMU * 2))
mov es:[bx+resident_t.RESIDENT_playchar_paletted][1], (1 + (PLAYCHAR_REIMU * 2))
call start_vs
loc_A19A:
call sub_B008
call sub_9E16
call sub_B3C3
mov _main_menu_initialized, 0
mov _main_input_allowed, 0
mov byte_D953, 1
jmp short @@no_main_input_allowed
; ---------------------------------------------------------------------------
menu_sel_musicroom:
nopcall @musicroom_menu$qv
jmp short loc_A19A
; ---------------------------------------------------------------------------
menu_sel_hiscore:
call score_menu
jmp short loc_A1DB
; ---------------------------------------------------------------------------
menu_sel_option:
mov _main_menu_initialized, 0
mov _in_option, 1
mov _menu_sel, 0
jmp short loc_A1DB
; ---------------------------------------------------------------------------
menu_sel_quit:
mov _main_menu_initialized, 0
mov _quit, 1
loc_A1DB:
test _input_sp.hi, high INPUT_CANCEL
jz short loc_A1E7
mov _quit, 1
loc_A1E7:
cmp _input_sp, INPUT_NONE
jz short @@no_main_input_allowed
mov _main_input_allowed, 0
@@no_main_input_allowed:
pop si
pop bp
retn
main_update_and_render endp
; ---------------------------------------------------------------------------
db 0
off_A1F7 dw offset menu_sel_start
dw offset menu_sel_vs_start
dw offset menu_sel_musicroom
dw offset menu_sel_hiscore
dw offset menu_sel_option
dw offset menu_sel_quit
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
public OPTION_UPDATE_AND_RENDER
option_update_and_render proc near
push bp
mov bp, sp
push si
cmp _option_initialized, 0
jnz short loc_A24A
call text_clear
call sub_B0AF
mov _option_input_allowed, 0
xor si, si
jmp short loc_A235
; ---------------------------------------------------------------------------
loc_A21F:
push si
mov al, _menu_sel
cbw
cmp ax, si
jnz short loc_A22D
mov ax, TX_WHITE
jmp short loc_A230
; ---------------------------------------------------------------------------
loc_A22D:
mov ax, TX_BLACK
loc_A230:
push ax
call option_put
inc si
loc_A235:
cmp si, 4
jl short loc_A21F
mov _putfunc, offset option_put
mov _option_initialized, 1
mov _option_input_allowed, 0
loc_A24A:
cmp _input_sp, INPUT_NONE
jnz short loc_A256
mov _option_input_allowed, 1
loc_A256:
cmp _option_input_allowed, 0
jz loc_A414
test _input_sp.lo, low INPUT_UP
jz short loc_A26D
call menu_sel_move pascal, 3, -1
loc_A26D:
test _input_sp.lo, low INPUT_DOWN
jz short loc_A27B
call menu_sel_move pascal, 3, 1
loc_A27B:
test _input_sp.lo, low INPUT_RIGHT
jz loc_A31D
mov al, _menu_sel
cbw
or ax, ax
jz short loc_A298
cmp ax, 1
jz short loc_A2AE
cmp ax, 2
jz short loc_A2FE
jmp short loc_A312
; ---------------------------------------------------------------------------
loc_A298:
les bx, _resident
inc es:[bx+resident_t.rank]
cmp es:[bx+resident_t.rank], RANK_LUNATIC
jbe short loc_A312
mov es:[bx+resident_t.rank], RANK_EASY
jmp short loc_A312
; ---------------------------------------------------------------------------
loc_A2AE:
cmp _snd_sel_disabled, 0
jnz short loc_A312
les bx, _resident
cmp es:[bx+resident_t.bgm_mode], SND_BGM_OFF
jnz short loc_A2DB
mov es:[bx+resident_t.bgm_mode], SND_BGM_FM
kajacall KAJA_SONG_STOP
call _snd_determine_mode
kajacall KAJA_SONG_PLAY
jmp short loc_A2F1
; ---------------------------------------------------------------------------
loc_A2DB:
les bx, _resident
mov es:[bx+resident_t.bgm_mode], SND_BGM_OFF
kajacall KAJA_SONG_STOP
mov _snd_active, 0
loc_A2F1:
mov al, _menu_sel
cbw
push ax
push 0E1h
call option_put
jmp short loc_A312
; ---------------------------------------------------------------------------
loc_A2FE:
les bx, _resident
inc es:[bx+resident_t.key_mode]
cmp es:[bx+resident_t.key_mode], KM_KEY_JOY
jbe short loc_A312
mov es:[bx+resident_t.key_mode], KM_KEY_KEY
loc_A312:
mov al, _menu_sel
cbw
push ax
push 0E1h
call option_put
loc_A31D:
test _input_sp.lo, low INPUT_LEFT
jz loc_A3CC
mov al, _menu_sel
cbw
or ax, ax
jz short loc_A33B
cmp ax, 1
jz short loc_A357
cmp ax, 2
jz short loc_A3A7
jmp loc_A3C1
; ---------------------------------------------------------------------------
loc_A33B:
les bx, _resident
cmp es:[bx+resident_t.rank], RANK_EASY
jnz short loc_A34D
mov es:[bx+resident_t.rank], RANK_LUNATIC
jmp short loc_A3C1
; ---------------------------------------------------------------------------
loc_A34D:
les bx, _resident
dec es:[bx+resident_t.rank]
jmp short loc_A3C1
; ---------------------------------------------------------------------------
loc_A357:
cmp _snd_sel_disabled, 0
jnz short loc_A3C1
les bx, _resident
cmp es:[bx+resident_t.bgm_mode], SND_BGM_OFF
jnz short loc_A384
mov es:[bx+resident_t.bgm_mode], SND_BGM_FM
kajacall KAJA_SONG_STOP
call _snd_determine_mode
kajacall KAJA_SONG_PLAY
jmp short loc_A39A
; ---------------------------------------------------------------------------
loc_A384:
les bx, _resident
mov es:[bx+resident_t.bgm_mode], SND_BGM_OFF
kajacall KAJA_SONG_STOP
mov _snd_active, 0
loc_A39A:
mov al, _menu_sel
cbw
push ax
push 0E1h
call option_put
jmp short loc_A3C1
; ---------------------------------------------------------------------------
loc_A3A7:
les bx, _resident
cmp es:[bx+resident_t.key_mode], KM_KEY_KEY
jnz short loc_A3B9
mov es:[bx+resident_t.key_mode], KM_KEY_JOY
jmp short loc_A3C1
; ---------------------------------------------------------------------------
loc_A3B9:
les bx, _resident
dec es:[bx+resident_t.key_mode]
loc_A3C1:
mov al, _menu_sel
cbw
push ax
push 0E1h
call option_put
loc_A3CC:
test _input_sp.hi, high INPUT_OK
jnz short loc_A3DA
test _input_sp.lo, low INPUT_SHOT
jz short loc_A3F2
loc_A3DA:
mov al, _menu_sel
cbw
cmp ax, 3
jnz short loc_A3F2
mov _option_initialized, 0
mov _menu_sel, 4
mov _in_option, 0
loc_A3F2:
test _input_sp.hi, high INPUT_CANCEL
jz short loc_A408
mov _option_initialized, 0
mov _menu_sel, 4
mov _in_option, 0
loc_A408:
cmp _input_sp, INPUT_NONE
jz short loc_A414
mov _option_input_allowed, 0
loc_A414:
pop si
pop bp
retn
option_update_and_render endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
; int __cdecl main(int argc, const char **argv, const char **envp)
public _main
_main proc far
_argc = word ptr 6
_argv = dword ptr 8
_envp = dword ptr 0Ch
push bp
mov bp, sp
call graph_400line
call text_clear
call respal_create
cmp graph_VramZoom, 0
jz short loc_A452
push ds
push offset aVfvcvbgngngbgn
call dos_puts2
push ds
push offset aUmx
call dos_puts2
push ds
push offset aViosrfvVVkvqbd
loc_A446:
call dos_puts2
call _getch
pop bp
retf
; ---------------------------------------------------------------------------
loc_A452:
call @game_init_op$qnxuc c, offset aCOul, ds
or ax, ax
jz short loc_A468
push ds
push offset aGbgvgkxsslvVBb ; "\n<><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>s<EFBFBD><73><EFBFBD>ł<EFBFBD><C582>B<EFBFBD><42><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>󂫂𑝂₵<F0919D82>Ă<EFBFBD>"...
jmp short loc_A446
; ---------------------------------------------------------------------------
loc_A468:
call gaiji_backup
push ds
push offset aMikoft_bft ; "MIKOFT.bft"
call gaiji_entry_bfnt
call @cfg_load$qv
les bx, _resident
cmp es:[bx+resident_t.game_mode], GM_VS
jb short loc_A497
cmp es:[bx+resident_t.demo_num], 0
jnz short loc_A497
call sub_B38D
call sub_B3EF
call sub_B3C3
call start_vs
loc_A497:
les bx, _resident
cmp es:[bx+resident_t.op_skip_animation], 0
jnz short loc_A4B0
call sub_ADE2
les bx, _resident
mov es:[bx+resident_t.op_skip_animation], 1
jmp short loc_A4BC
; ---------------------------------------------------------------------------
loc_A4B0:
les bx, _resident
mov es:[bx+resident_t.op_skip_animation], 0
call sub_B008
loc_A4BC:
call sub_9E16
mov _in_option, 0
mov _input_sp, INPUT_NONE
call main_update_and_render
call sub_B3C3
jmp short loc_A4FE
; ---------------------------------------------------------------------------
loc_A4D2:
call input_mode_interface
mov al, _in_option
cbw
or ax, ax
jz short @@not_in_option
cmp ax, 1
jz short @@in_option
jmp short loc_A4EE
; ---------------------------------------------------------------------------
@@not_in_option:
call main_update_and_render
jmp short loc_A4EE
; ---------------------------------------------------------------------------
@@in_option:
call option_update_and_render
loc_A4EE:
les bx, _resident
inc es:[bx+resident_t.rand]
call @frame_delay$qi pascal, 1
loc_A4FE:
cmp _quit, 0
jz short loc_A4D2
call @cfg_save_exit$qv
call gaiji_restore
call text_clear
call @game_exit_to_dos$qv
call respal_free
pop bp
retf
_main endp
op_01_TEXT ends
OP_MUSIC_TEXT segment byte public 'CODE' use16
extern @musicroom_menu$qv:proc
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_ADE2 proc near
@@page = byte ptr -3
var_2 = word ptr -2
enter 4, 0
push si
mov [bp+var_2], 0
mov [bp+@@page], 0
call super_entry_bfnt pascal, ds, offset aOpwin_bft ; "opwin.bft"
kajacall KAJA_SONG_STOP
call _snd_load c, offset aOp_m, ds, SND_LOAD_SONG
call pi_load pascal, 0, ds, offset aTl01_pi
mov PaletteTone, 0
call far ptr palette_show
graph_accesspage 1
call pi_put_8 pascal, large 0, 0
graph_accesspage 0
call pi_palette_apply pascal, 0
call pi_put_8 pascal, large 0, 0
call egc_shift_left_all pascal, 2
mov Palettes[15 * size rgb_t].r, 0
mov Palettes[15 * size rgb_t].g, 0
mov Palettes[15 * size rgb_t].b, 0
call far ptr palette_show
mov Palettes[11 * size rgb_t].r, 0
mov Palettes[11 * size rgb_t].g, 0
mov Palettes[11 * size rgb_t].b, 0
call far ptr palette_show
freePISlotLarge 0
call pi_load pascal, 0, ds, offset aTl02_pi
graph_showpage 1
mov si, 0A0h
jmp short loc_AF02
; ---------------------------------------------------------------------------
loc_AEA0:
call @frame_delay$qi pascal, 1
mov al, byte ptr [bp+var_2]
mov Palettes[15 * size rgb_t].r, al
mov Palettes[15 * size rgb_t].g, al
mov Palettes[15 * size rgb_t].b, al
call far ptr palette_show
cmp [bp+var_2], 128
jg short loc_AECB
mov al, byte ptr [bp+var_2]
mov Palettes[11 * size rgb_t].r, al
mov Palettes[11 * size rgb_t].g, al
mov Palettes[11 * size rgb_t].b, al
loc_AECB:
call far ptr palette_show
cmp [bp+var_2], 100
jg short loc_AEE1
mov ax, [bp+var_2]
mov PaletteTone, ax
call far ptr palette_show
loc_AEE1:
add [bp+var_2], 2
graph_showpage [bp+@@page]
mov al, 1
sub al, [bp+@@page]
mov [bp+@@page], al
graph_accesspage al
call egc_shift_left_all pascal, 4
sub si, 2
loc_AF02:
cmp si, 11h
jg short loc_AEA0
jmp short loc_AF25
; ---------------------------------------------------------------------------
loc_AF09:
mov al, byte ptr [bp+var_2]
mov Palettes[15 * size rgb_t].r, al
mov Palettes[15 * size rgb_t].g, al
mov Palettes[15 * size rgb_t].b, al
call far ptr palette_show
add [bp+var_2], 2
call @frame_delay$qi pascal, 1
loc_AF25:
cmp [bp+var_2], 255
jl short loc_AF09
mov vsync_Count1, 0
call sub_B3EF
loc_AF35:
cmp vsync_Count1, 10h
jb short loc_AF35
xor si, si
jmp short loc_AF65
; ---------------------------------------------------------------------------
loc_AF40:
mov PaletteTone, 200
call far ptr palette_show
call @frame_delay$qi pascal, 1
mov PaletteTone, 100
call far ptr palette_show
call @frame_delay$qi pascal, 1
inc si
loc_AF65:
cmp si, 8
jl short loc_AF40
mov PaletteTone, 200
call far ptr palette_show
kajacall KAJA_SONG_PLAY
graph_showpage 0
graph_accesspage al
call pi_palette_apply pascal, 0
call pi_put_8 pascal, large 0, 0
call @frame_delay$qi pascal, 1
mov PaletteTone, 100
call far ptr palette_show
call @frame_delay$qi pascal, 1
xor si, si
jmp short loc_AFD9
; ---------------------------------------------------------------------------
loc_AFB4:
mov PaletteTone, 200
call far ptr palette_show
call @frame_delay$qi pascal, 1
mov PaletteTone, 100
call far ptr palette_show
call @frame_delay$qi pascal, 1
inc si
loc_AFD9:
cmp si, 8
jl short loc_AFB4
graph_accesspage 1
call pi_put_8 pascal, large 0, 0
graph_accesspage 0
freePISlotLarge 0
call sub_B38D
pop si
leave
retn
sub_ADE2 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_B008 proc near
push bp
mov bp, sp
push si
call super_entry_bfnt pascal, ds, offset aOpwin_bft ; "opwin.bft"
kajacall KAJA_SONG_STOP
call _snd_load c, offset aOp_m, ds, SND_LOAD_SONG
mov PaletteTone, 0
call far ptr palette_show
call pi_load pascal, 0, ds, offset aTl02_pi
graph_showpage 0
call sub_B3EF
graph_accesspage 1
call pi_put_8 pascal, large 0, 0
graph_accesspage 0
call pi_palette_apply pascal, 0
call pi_put_8 pascal, large 0, 0
graph_accesspage 0
freePISlotLarge 0
call sub_B38D
kajacall KAJA_SONG_PLAY
xor si, si
jmp short loc_B0A7
; ---------------------------------------------------------------------------
loc_B094:
mov PaletteTone, si
call far ptr palette_show
call @frame_delay$qi pascal, 1
add si, 4
loc_B0A7:
cmp si, 100
jle short loc_B094
pop si
pop bp
retn
sub_B008 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_B0AF proc near
push bp
mov bp, sp
push si
mov si, 288
jmp short loc_B0D2
; ---------------------------------------------------------------------------
loc_B0B8:
push si
call sub_B10A
call super_put pascal, si, large (256 shl 16) or 2
call @frame_delay$qi pascal, 1
add si, 8
loc_B0D2:
cmp si, 392
jl short loc_B0B8
pop si
pop bp
retn
sub_B0AF endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_B0DB proc near
push bp
mov bp, sp
push si
mov si, 384
jmp short loc_B101
; ---------------------------------------------------------------------------
loc_B0E4:
lea ax, [si+8]
push ax
call sub_B10A
call super_put pascal, si, large (256 shl 16) or 2
call @frame_delay$qi pascal, 1
sub si, 8
loc_B101:
cmp si, 280
jge short loc_B0E4
pop si
pop bp
retn
sub_B0DB endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_B10A proc near
arg_0 = word ptr 4
push bp
mov bp, sp
push si
push di
mov ax, [bp+arg_0]
shr ax, 3
mov di, 77B0h
add di, ax
mov ax, 0AD00h
mov es, ax
assume es:nothing
loc_B11F:
mov al, 1
out 0A6h, al
mov dx, es:[di]
mov ax, 0B500h
mov es, ax
assume es:nothing
mov cx, es:[di]
mov ax, 0BD00h
mov es, ax
assume es:nothing
mov bx, es:[di]
mov ax, 0E500h
mov es, ax
assume es:nothing
mov si, es:[di]
xor al, al
out 0A6h, al
mov es:[di], si
mov ax, 0BD00h
mov es, ax
assume es:nothing
mov es:[di], bx
mov ax, 0B500h
mov es, ax
assume es:nothing
mov es:[di], cx
mov ax, 0AD00h
mov es, ax
assume es:nothing
mov es:[di], dx
sub di, 50h ; 'P'
jnb short loc_B11F
pop di
pop si
pop bp
retn 2
sub_B10A endp
OP_MUSIC_TEXT ends
op_02_TEXT segment byte public 'CODE' use16
op_02_TEXT ends
SCOREDAT_TEXT segment byte public 'CODE' use16
SCOREDAT_TEXT ends
op_03_TEXT segment byte public 'CODE' use16
@SCOREDAT_LOAD_AND_DECODE$Q6RANK_T procdesc pascal near \
rank:word
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_B35D proc near
var_1 = byte ptr -1
enter 2, 0
push si
mov [bp+var_1], 7
xor si, si
jmp short loc_B382
; ---------------------------------------------------------------------------
loc_B36A:
call @scoredat_load_and_decode$q6rank_t pascal, si
or ax, ax
jz short loc_B376
mov al, 7
jmp short loc_B38A
; ---------------------------------------------------------------------------
loc_B376:
cmp _hi.SDS_score.SD_cleared, SCOREDAT_CLEARED
jnz short loc_B381
mov [bp+var_1], 9
loc_B381:
inc si
loc_B382:
cmp si, (RANK_LUNATIC + 1)
jl short loc_B36A
mov al, [bp+var_1]
loc_B38A:
pop si
leave
retn
sub_B35D endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_B38D proc near
push bp
mov bp, sp
push si
call _hflip_lut_generate
xor si, si
jmp short loc_B3B0
; ---------------------------------------------------------------------------
loc_B39A:
lea ax, [si+2]
push ax
mov bx, si
shl bx, 2
pushd dword ptr [bx+0A0Eh]
push 0
call cdg_load_single
inc si
loc_B3B0:
cmp si, 3
jl short loc_B39A
call cdg_load_all_noalpha pascal, 13, ds, offset aSlex_cd2
pop si
pop bp
retn
sub_B38D endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_B3C3 proc near
push bp
mov bp, sp
call cdg_load_single pascal, 1, ds, offset a99sl_cdg, 0
call cdg_load_single_noalpha pascal, 11, ds, offset aSlwin_cdg , 0
call cdg_load_single_noalpha pascal, 12, ds, offset aSlex_cdg, 0
pop bp
retn
sub_B3C3 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_B3EF proc near
push bp
mov bp, sp
push si
call cdg_load_single pascal, 0, [off_E1FE], 0
mov si, 3
jmp short loc_B41C
; ---------------------------------------------------------------------------
loc_B406:
lea ax, [si+2]
push ax
mov bx, si
shl bx, 2
pushd dword ptr [bx+0A0Eh]
push 0
call cdg_load_single
inc si
loc_B41C:
cmp si, 6
jl short loc_B406
pop si
pop bp
retn
sub_B3EF endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_B424 proc near
push bp
mov bp, sp
push si
mov vsync_Count1, 0
kajacall KAJA_SONG_STOP
call _snd_load c, offset aSelect_m, ds, SND_LOAD_SONG
kajacall KAJA_SONG_PLAY
mov word_FC64, 0C8h ; '<27>'
les bx, _resident
assume es:nothing
mov eax, es:[bx+resident_t.rand]
mov random_seed, eax
call text_clear
call super_free
call super_entry_bfnt pascal, ds, offset aChname_bft ; "chname.bft"
graph_accesspage 0
call graph_clear
graph_accesspage 1
call graph_clear
graph_showpage 0
mov byte_FC5C, 0
push ds
push offset aTlsl_rgb ; "TLSL.RGB"
call palette_entry_rgb
call far ptr palette_show
mov si, 6
jmp short loc_B4BC
; ---------------------------------------------------------------------------
loc_B4A6:
lea ax, [si+2]
push ax
mov bx, si
shl bx, 2
pushd dword ptr [bx+0A0Eh]
push 0
call cdg_load_single
inc si
loc_B4BC:
cmp si, 9
jl short loc_B4A6
loc_B4C1:
cmp vsync_Count1, 1Eh
jb short loc_B4C1
mov word_FC66, 8
call sub_B35D
mov byte_FC68, al
pop si
pop bp
retn
sub_B424 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_B4D7 proc near
push bp
mov bp, sp
push si
xor si, si
jmp short loc_B4E6
; ---------------------------------------------------------------------------
loc_B4DF:
call cdg_free pascal, si
inc si
loc_B4E6:
cmp si, 22
jl short loc_B4DF
call super_free
pop si
pop bp
retn
sub_B4D7 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_B4F3 proc near
push bp
mov bp, sp
push (32 shl 16) or 96
cmp byte_FC5A, 0
jnz short loc_B50C
mov al, _playchars[0]
cbw
add ax, 2
jmp short loc_B50E
; ---------------------------------------------------------------------------
loc_B50C:
xor ax, ax
loc_B50E:
push ax
call cdg_put_8
push (416 shl 16) or 96
cmp byte_FC5B, 0
jnz short loc_B52A
mov al, _playchars[1]
cbw
add ax, 2
jmp short loc_B52D
; ---------------------------------------------------------------------------
loc_B52A:
mov ax, 1
loc_B52D:
push ax
call cdg_put_hflip_8
pop bp
retn
sub_B4F3 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_B535 proc near
push bp
mov bp, sp
push (32 shl 16) or 96
cmp byte_FC5A, 0
jnz short loc_B54E
mov al, _playchars[0]
cbw
add ax, 2
jmp short loc_B550
; ---------------------------------------------------------------------------
loc_B54E:
xor ax, ax
loc_B550:
push ax
call cdg_put_8
call cdg_put_8 pascal, large (416 shl 16) or 96, 1
pop bp
retn
sub_B535 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_B565 proc near
var_4 = word ptr -4
var_2 = word ptr -2
enter 4, 0
push si
push di
call cdg_put_noalpha_8 pascal, large (32 shl 16) or 304, 11
les bx, _resident
cmp es:[bx+resident_t.game_mode], GM_STORY
jz short loc_B590
call cdg_put_noalpha_8 pascal, large (416 shl 16) or 304, 11
loc_B590:
call grcg_setcolor pascal, (GC_RMW shl 16) + 14
mov [bp+var_2], 0
mov [bp+var_4], 13Bh
jmp short loc_B625
; ---------------------------------------------------------------------------
loc_B5A7:
mov di, 5
mov si, 8Ch ; '<27>E
jmp short loc_B5C7
; ---------------------------------------------------------------------------
loc_B5AF:
push si
push [bp+var_4]
lea ax, [si+8]
push ax
mov ax, [bp+var_4]
add ax, 15
push ax
call grcg_boxfill
dec di
sub si, 0Bh
loc_B5C7:
mov al, _playchars[0]
cbw
imul ax, 3
add ax, [bp+var_2]
mov bx, ax
mov al, [bx+0A32h]
mov ah, 0
cmp ax, di
jl short loc_B5AF
les bx, _resident
cmp es:[bx+resident_t.game_mode], GM_STORY
jz short loc_B61E
mov di, 5
mov si, 20Ch
jmp short loc_B608
; ---------------------------------------------------------------------------
loc_B5F0:
push si
push [bp+var_4]
lea ax, [si+8]
push ax
mov ax, [bp+var_4]
add ax, 15
push ax
call grcg_boxfill
dec di
sub si, 0Bh
loc_B608:
mov al, _playchars[1]
cbw
imul ax, 3
add ax, [bp+var_2]
mov bx, ax
mov al, [bx+0A32h]
mov ah, 0
cmp ax, di
jl short loc_B5F0
loc_B61E:
inc [bp+var_2]
add [bp+var_4], 10h
loc_B625:
cmp [bp+var_2], 3
jl loc_B5A7
call grcg_off
pop di
pop si
leave
retn
sub_B565 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_B636 proc near
push bp
mov bp, sp
push si
push di
mov di, 136
xor si, si
jmp short loc_B663
; ---------------------------------------------------------------------------
loc_B642:
push 256
push di
mov ax, si
add ax, ax
push ax
call super_put
push 320
push di
mov ax, si
add ax, ax
inc ax
push ax
call super_put
inc si
add di, 20
loc_B663:
mov al, byte_FC68
mov ah, 0
cmp ax, si
jg short loc_B642
pop di
pop si
pop bp
retn
sub_B636 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_B670 proc near
push bp
mov bp, sp
call cdg_put_noalpha_8 pascal, large (160 shl 16) or 304, 12
push (176 shl 16) or 316
mov al, _playchars[0]
cbw
add ax, 13
push ax
call cdg_put_noalpha_8
les bx, _resident
cmp es:[bx+resident_t.game_mode], GM_STORY
jz short loc_B6BE
call cdg_put_noalpha_8 pascal, large (544 shl 16) or 304, 12
push (560 shl 16) or 316
mov al, _playchars[1]
cbw
add ax, 13
push ax
call cdg_put_noalpha_8
loc_B6BE:
pop bp
retn
sub_B670 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_B6C0 proc near
@@angle = byte ptr -7
var_6 = word ptr -6
var_4 = word ptr -4
var_2 = word ptr -2
arg_0 = word ptr 4
arg_2 = word ptr 6
arg_4 = word ptr 8
arg_6 = byte ptr 0Ah
arg_8 = byte ptr 0Ch
enter 8, 0
push si
mov si, [bp+arg_4]
mov [bp+var_6], 0
jmp short loc_B73B
; ---------------------------------------------------------------------------
loc_B6CF:
mov al, byte ptr [bp+var_6]
add al, [bp+arg_8]
mov [bp+@@angle], al
mov ah, 0
imul [bp+arg_2]
mov bx, 256
cwd
idiv bx
mov [bp+@@angle], al
mov ah, 0
add ax, ax
mov bx, ax
call @polar$qiii c, (RES_X / 2), si, _CosTable8[bx]
mov [bp+var_2], ax
mov al, byte ptr [bp+var_6]
add al, [bp+arg_6]
mov [bp+@@angle], al
mov ah, 0
imul [bp+arg_0]
mov bx, 256
cwd
idiv bx
mov [bp+@@angle], al
mov ah, 0
add ax, ax
mov bx, ax
call @polar$qiii c, (RES_Y / 2), si, _SinTable8[bx]
mov [bp+var_4], ax
push [bp+var_2]
push ax
call grcg_pset
inc [bp+var_6]
loc_B73B:
cmp [bp+var_6], 100h
jb short loc_B6CF
pop si
leave
retn 0Ah
sub_B6C0 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_B747 proc near
var_6 = word ptr -6
var_4 = word ptr -4
var_2 = word ptr -2
enter 6, 0
push si
push di
mov al, byte ptr word_FC52
mov ah, 0
mov si, ax
cmp si, 80h
jl short loc_B761
mov ax, 100h
sub ax, si
mov si, ax
loc_B761:
mov ax, si
add ax, si
add ax, 100h
mov [bp+var_4], ax
add si, 100h
mov ax, si
add ax, si
mov [bp+var_2], ax
call grcg_setcolor pascal, (GC_RMW shl 16) + 6
push word_FC52
mov al, byte ptr word_FC52
add al, al
push ax
push 0DCh ; '<27>'
push si
push [bp+var_2]
call sub_B6C0
mov al, 0
sub al, byte ptr word_FC52
push ax
mov al, byte ptr word_FC52
mov ah, 0
cwd
sub ax, dx
sar ax, 1
push ax
push 78h ; 'x'
push [bp+var_4]
push si
call sub_B6C0
call grcg_setcolor pascal, (GC_RMW shl 16) + 5
mov ax, word_FC66
cwd
sub ax, dx
sar ax, 1
mov di, ax
test byte ptr word_FC66, 1
jz short loc_B7CD
inc di
loc_B7CD:
mov [bp+var_6], 1
jmp short loc_B824
; ---------------------------------------------------------------------------
loc_B7D4:
mov al, byte ptr [bp+var_6]
add al, al
mov dl, byte ptr word_FC52
sub dl, al
push dx
mov al, byte ptr word_FC52
add al, al
mov dl, byte ptr [bp+var_6]
shl dl, 2
sub al, dl
push ax
push 0DCh ; '<27>'
push si
push [bp+var_2]
call sub_B6C0
mov al, 0
sub al, byte ptr word_FC52
mov dl, byte ptr [bp+var_6]
add dl, dl
add al, dl
push ax
mov al, byte ptr word_FC52
mov ah, 0
mov dx, [bp+var_6]
add dx, dx
sub ax, dx
cwd
sub ax, dx
sar ax, 1
push ax
push 78h ; 'x'
push [bp+var_4]
push si
call sub_B6C0
inc [bp+var_6]
loc_B824:
cmp [bp+var_6], di
jle short loc_B7D4
call grcg_setcolor pascal, (GC_RMW shl 16) + 1
lea ax, [di+1]
mov [bp+var_6], ax
jmp short loc_B88C
; ---------------------------------------------------------------------------
loc_B83C:
mov al, byte ptr [bp+var_6]
add al, al
mov dl, byte ptr word_FC52
sub dl, al
push dx
mov al, byte ptr word_FC52
add al, al
mov dl, byte ptr [bp+var_6]
shl dl, 2
sub al, dl
push ax
push 0DCh ; '<27>'
push si
push [bp+var_2]
call sub_B6C0
mov al, 0
sub al, byte ptr word_FC52
mov dl, byte ptr [bp+var_6]
add dl, dl
add al, dl
push ax
mov al, byte ptr word_FC52
mov ah, 0
mov dx, [bp+var_6]
add dx, dx
sub ax, dx
cwd
sub ax, dx
sar ax, 1
push ax
push 78h ; 'x'
push [bp+var_4]
push si
call sub_B6C0
inc [bp+var_6]
loc_B88C:
mov ax, [bp+var_6]
cmp ax, word_FC66
jle short loc_B83C
call grcg_off
mov al, byte ptr word_FC52
add al, 2
mov byte ptr word_FC52, al
pop di
pop si
leave
retn
sub_B747 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
public P_CURSOR_PUT
p_cursor_put proc near
@@y = word ptr -2
@@col = byte ptr 4
arg_2 = word ptr 6
enter 2, 0
push si
push di
mov si, [bp+arg_2]
mov ax, si
shl ax, 4
shl ax, 3
add ax, 240
mov di, ax
mov al, [si+2468h]
cbw
imul ax, 20
add ax, 128
mov [bp+@@y], ax
push di
push ax
push GAIJI_W
push ds
mov ax, si
imul ax, (gc_GAIJI_W + 1)
add ax, offset _P_CURSOR_TOP
push ax
mov al, [bp+@@col]
mov ah, 0
push ax
call graph_gaiji_puts
push di
mov ax, [bp+@@y]
add ax, GLYPH_H
push ax
push GAIJI_W
push ds
mov ax, si
imul ax, (gc_GAIJI_W + 1)
add ax, offset _P_CURSOR_BOTTOM
push ax
mov al, [bp+@@col]
mov ah, 0
push ax
call graph_gaiji_puts
pop di
pop si
leave
retn 4
p_cursor_put endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_B908 proc near
var_2 = word ptr -2
arg_0 = word ptr 4
arg_2 = word ptr 6
enter 2, 0
push si
push di
mov di, [bp+arg_2]
mov si, [bp+arg_0]
cmp byte ptr [si+246Ah], 0
jnz loc_BA82
cmp byte ptr [si+0A59h], 0
jz short loc_B932
or di, di
jnz loc_BA82
mov byte ptr [si+0A59h], 0
jmp loc_BA82
; ---------------------------------------------------------------------------
loc_B932:
test di, 1
jz short loc_B951
dec byte ptr [si+2468h]
cmp byte ptr [si+2468h], 0
jge short loc_B94C
mov al, byte_FC68
dec al
mov [si+2468h], al
loc_B94C:
mov byte ptr [si+0A59h], 1
loc_B951:
test di, 2
jz short loc_B974
inc byte ptr [si+2468h]
mov al, [si+2468h]
cbw
mov dl, byte_FC68
mov dh, 0
cmp ax, dx
jl short loc_B96F
mov byte ptr [si+2468h], 0
loc_B96F:
mov byte ptr [si+0A59h], 1
loc_B974:
test di, 20h
; Hack
db 00fh
db 084h
db 07fh
db 000h
mov al, [si+2468h]
cbw
mov [bp+var_2], ax
les bx, _resident
add bx, si
mov al, byte ptr [bp+var_2]
add al, al
inc al
mov es:[bx+resident_t.RESIDENT_playchar_paletted], al
push 1
call palette_white_in
mov bx, 1
sub bx, si
cmp byte ptr [bx+246Ah], 0
jz short loc_B9CC
les bx, _resident
mov al, es:[bx+resident_t.RESIDENT_playchar_paletted][0]
cmp al, es:[bx+resident_t.RESIDENT_playchar_paletted][1]
jnz short loc_B9CC
add bx, si
inc es:[bx+resident_t.RESIDENT_playchar_paletted]
push si
mov bx, [bp+var_2]
shl bx, 2
pushd dword ptr [bx+0A0Eh]
push 1
jmp short loc_B9DA
; ---------------------------------------------------------------------------
loc_B9CC:
push si
mov bx, [bp+var_2]
shl bx, 2
pushd dword ptr [bx+0A0Eh]
push 0
loc_B9DA:
call cdg_load_single
mov bx, 1
sub bx, si
cmp byte ptr [bx+246Ah], 0
jz short loc_B9F1
mov word_FC62, 0
loc_B9F1:
mov byte ptr [si+246Ah], 1
mov byte ptr [si+0A59h], 1
loc_B9FB:
test di, 10h
; Hack
db 00fh
db 084h
db 07fh
db 000h
mov al, [si+2468h]
cbw
mov [bp+var_2], ax
les bx, _resident
add bx, si
mov al, byte ptr [bp+var_2]
add al, al
add al, 2
mov es:[bx+resident_t.RESIDENT_playchar_paletted], al
push 1
call palette_white_in
mov bx, 1
sub bx, si
cmp byte ptr [bx+246Ah], 0
jz short loc_BA53
les bx, _resident
mov al, es:[bx+resident_t.RESIDENT_playchar_paletted][0]
cmp al, es:[bx+resident_t.RESIDENT_playchar_paletted][1]
jnz short loc_BA53
add bx, si
dec es:[bx+resident_t.RESIDENT_playchar_paletted]
push si
mov bx, [bp+var_2]
shl bx, 2
pushd dword ptr [bx+0A0Eh]
push 0
jmp short loc_BA61
; ---------------------------------------------------------------------------
loc_BA53:
push si
mov bx, [bp+var_2]
shl bx, 2
pushd dword ptr [bx+0A0Eh]
push 1
loc_BA61:
call cdg_load_single
mov bx, 1
sub bx, si
cmp byte ptr [bx+246Ah], 0
jz short loc_BA78
mov word_FC62, 0
loc_BA78:
mov byte ptr [si+246Ah], 1
mov byte ptr [si+0A59h], 1
loc_BA82:
pop di
pop si
leave
retn 4
sub_B908 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_BA88 proc near
push bp
mov bp, sp
call sub_B424
call text_clear
les bx, _resident
mov al, es:[bx+resident_t.RESIDENT_playchar_paletted][0]
mov ah, 0
dec ax
cwd
sub ax, dx
sar ax, 1
mov _playchars[0], al
mov al, es:[bx+resident_t.RESIDENT_playchar_paletted][1]
mov ah, 0
dec ax
cwd
sub ax, dx
sar ax, 1
mov _playchars[1], al
mov byte_FC5A, 0
mov byte_FC5B, 0
cmp es:[bx+resident_t.key_mode], KM_KEY_KEY
jnz short loc_BAD4
setfarfp _input_mode, input_mode_key_vs_key
jmp short loc_BAF9
; ---------------------------------------------------------------------------
loc_BAD4:
les bx, _resident
cmp es:[bx+resident_t.key_mode], KM_JOY_KEY
jnz short loc_BAED
setfarfp _input_mode, input_mode_joy_vs_key
jmp short loc_BAF9
; ---------------------------------------------------------------------------
loc_BAED:
setfarfp _input_mode, input_mode_key_vs_joy
loc_BAF9:
call @frame_delay$qi pascal, 16
mov word_FC62, 0
loc_BB06:
call sub_B747
call sub_B4F3
call sub_B565
call sub_B636
call sub_B670
push 0
cmp byte_FC5A, 0
jz short loc_BB22
mov al, V_WHITE
jmp short loc_BB24
; ---------------------------------------------------------------------------
loc_BB22:
mov al, 8
loc_BB24:
push ax
call p_cursor_put
push 1
cmp byte_FC5B, 0
jz short loc_BB35
mov al, V_WHITE
jmp short loc_BB37
; ---------------------------------------------------------------------------
loc_BB35:
mov al, 0Ah
loc_BB37:
push ax
call p_cursor_put
call _input_reset_sense_key_held
call _input_mode
push _input_mp_p1
push 0
call sub_B908
push _input_mp_p2
push 1
call sub_B908
test _input_sp.hi, high INPUT_CANCEL
jz short loc_BB82
graph_accesspage 0
call graph_clear
graph_showpage 0
call text_clear
call sub_B4D7
kajacall KAJA_SONG_STOP
mov al, 1
pop bp
retn
; ---------------------------------------------------------------------------
loc_BB82:
cmp byte_FC5A, 0
jz short loc_BBB7
cmp byte_FC5B, 0
jz short loc_BBB7
call text_clear
cmp word_FC62, 10h
jb short loc_BBB0
mov ax, word_FC62
imul ax, 6
mov dx, 200
sub dx, ax
mov PaletteTone, dx
call far ptr palette_show
loc_BBB0:
cmp word_FC62, 20h ; ' '
ja short loc_BC18
loc_BBB7:
cmp vsync_Count1, 3
jb short loc_BBB7
cmp vsync_Count1, 4
jbe short loc_BBD0
cmp word_FC66, 1
jle short loc_BBD0
dec word_FC66
loc_BBD0:
mov vsync_Count1, 0
graph_accesspage byte_FC5C
mov al, 1
sub al, byte_FC5C
mov byte_FC5C, al
graph_showpage al
call grcg_setcolor pascal, (GC_RMW shl 16) + 0
call grcg_byteboxfill_x pascal, large 0, (((RES_X - 1) / 8) shl 16) or (RES_Y - 1)
call grcg_off
inc word_FC62
les bx, _resident
inc es:[bx+resident_t.rand]
jmp loc_BB06
; ---------------------------------------------------------------------------
loc_BC18:
call sub_B4D7
mov al, 0
pop bp
retn
sub_BA88 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_BC1F proc near
push bp
mov bp, sp
push si
call sub_B424
les bx, _resident
mov al, es:[bx+resident_t.RESIDENT_playchar_paletted][0]
mov ah, 0
dec ax
cwd
sub ax, dx
sar ax, 1
mov _playchars[0], al
mov al, es:[bx+resident_t.RESIDENT_playchar_paletted][1]
mov ah, 0
dec ax
cwd
sub ax, dx
sar ax, 1
mov _playchars[1], al
mov byte_FC5A, 0
mov byte_FC5B, 0
setfarfp _input_mode, input_mode_interface
xor si, si
jmp loc_BD8B
; ---------------------------------------------------------------------------
loc_BC63:
mov word_FC62, 0
loc_BC69:
call sub_B747
call sub_B4F3
call sub_B565
call sub_B636
call sub_B670
call _input_reset_sense_key_held
call _input_mode
push 0
cmp byte_FC5A, 0
jz short loc_BC8E
mov al, V_WHITE
jmp short loc_BC90
; ---------------------------------------------------------------------------
loc_BC8E:
mov al, 8
loc_BC90:
push ax
call p_cursor_put
cmp byte_FC5A, 0
jz short loc_BCAE
push 1
cmp byte_FC5B, 0
jz short loc_BCA8
mov al, V_WHITE
jmp short loc_BCAA
; ---------------------------------------------------------------------------
loc_BCA8:
mov al, 0Ah
loc_BCAA:
push ax
call p_cursor_put
loc_BCAE:
push _input_sp
push si
call sub_B908
test _input_sp.hi, high INPUT_CANCEL
jz short loc_BCE3
graph_accesspage 0
call graph_clear
graph_showpage 0
call text_clear
call sub_B4D7
kajacall KAJA_SONG_STOP
mov al, 1
jmp loc_BD97
; ---------------------------------------------------------------------------
loc_BCE3:
or si, si
jnz short loc_BCF7
cmp byte_FC5A, 0
jz short loc_BCF7
cmp word_FC62, 0Ch
ja loc_BD8A
loc_BCF7:
or si, si
jz short loc_BD29
cmp byte_FC5B, 0
jz short loc_BD29
call text_clear
cmp word_FC62, 10h
jb short loc_BD22
mov ax, word_FC62
imul ax, 6
mov dx, 200
sub dx, ax
mov PaletteTone, dx
call far ptr palette_show
loc_BD22:
cmp word_FC62, 20h ; ' '
ja short loc_BD8A
loc_BD29:
cmp vsync_Count1, 3
jb short loc_BD29
cmp vsync_Count1, 4
jbe short loc_BD42
cmp word_FC66, 1
jle short loc_BD42
dec word_FC66
loc_BD42:
mov vsync_Count1, 0
graph_accesspage byte_FC5C
mov al, 1
sub al, byte_FC5C
mov byte_FC5C, al
graph_showpage al
call grcg_setcolor pascal, (GC_RMW shl 16) + 0
call grcg_byteboxfill_x pascal, large 0, (((RES_X - 1) / 8) shl 16) or (RES_Y - 1)
call grcg_off
inc word_FC62
les bx, _resident
inc es:[bx+resident_t.rand]
jmp loc_BC69
; ---------------------------------------------------------------------------
loc_BD8A:
inc si
loc_BD8B:
cmp si, 2
jl loc_BC63
call sub_B4D7
mov al, 0
loc_BD97:
pop si
pop bp
retn
sub_BC1F endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_BD9A proc near
push bp
mov bp, sp
call sub_B424
mov _playchars[0], 0
mov byte_FC5A, 0
mov byte_FC5B, 1
setfarfp _input_mode, input_mode_interface
mov word_FC62, 0
loc_BDC1:
call sub_B747
call sub_B535
call sub_B565
call sub_B636
call sub_B670
push 0
cmp byte_FC5A, 0
jz short loc_BDDD
mov al, V_WHITE
jmp short loc_BDDF
; ---------------------------------------------------------------------------
loc_BDDD:
mov al, 8
loc_BDDF:
push ax
call p_cursor_put
call _input_reset_sense_key_held
call _input_mode
push _input_sp
push 0
call sub_B908
test _input_sp.hi, high INPUT_CANCEL
jz short loc_BE21
graph_accesspage 0
call graph_clear
graph_showpage 0
call text_clear
call sub_B4D7
kajacall KAJA_SONG_STOP
mov al, 1
pop bp
retn
; ---------------------------------------------------------------------------
loc_BE21:
cmp byte_FC5A, 0
jz short loc_BE4F
call text_clear
cmp word_FC62, 10h
jb short loc_BE48
mov ax, word_FC62
imul ax, 6
mov dx, 200
sub dx, ax
mov PaletteTone, dx
call far ptr palette_show
loc_BE48:
cmp word_FC62, 20h ; ' '
ja short loc_BEB0
loc_BE4F:
cmp vsync_Count1, 3
jb short loc_BE4F
cmp vsync_Count1, 4
jbe short loc_BE68
cmp word_FC66, 1
jle short loc_BE68
dec word_FC66
loc_BE68:
mov vsync_Count1, 0
graph_accesspage byte_FC5C
mov al, 1
sub al, byte_FC5C
mov byte_FC5C, al
graph_showpage al
call grcg_setcolor pascal, (GC_RMW shl 16) + 0
call grcg_byteboxfill_x pascal, large 0, (((RES_X - 1) / 8) shl 16) or (RES_Y - 1)
call grcg_off
inc word_FC62
les bx, _resident
inc es:[bx+resident_t.rand]
jmp loc_BDC1
; ---------------------------------------------------------------------------
loc_BEB0:
call sub_B4D7
mov al, 0
pop bp
retn
sub_BD9A endp
db 0
op_03_TEXT ends
; ===========================================================================
SHARED segment word public 'CODE' use16
include th02/snd/snd.inc
extern @game_exit_to_dos$qv:proc
extern _snd_determine_mode:proc
extern _snd_load:proc
extern @game_exit$qv:proc
extern @polar$qiii:proc
extern CDG_PUT_8:proc
extern CDG_PUT_HFLIP_8:proc
extern @FRAME_DELAY$QI:proc
extern _input_reset_sense_key_held:proc
extern PI_PALETTE_APPLY:proc
extern PI_PUT_8:proc
extern SND_KAJA_INTERRUPT:proc
extern @game_init_op$qnxuc:proc
extern CDG_LOAD_SINGLE:proc
extern CDG_LOAD_SINGLE_NOALPHA:proc
extern CDG_LOAD_ALL_NOALPHA:proc
extern CDG_FREE:proc
extern PI_LOAD:proc
extern INPUT_MODE_INTERFACE:proc
extern INPUT_MODE_KEY_VS_KEY:proc
extern INPUT_MODE_JOY_VS_KEY:proc
extern INPUT_MODE_KEY_VS_JOY:proc
extern CDG_PUT_NOALPHA_8:proc
extern _hflip_lut_generate:proc
SHARED ends
.data
extern _snd_sel_disabled:byte
extern gp1P_VS_CPU:byte
extern gp1P_VS_2P:byte
extern gpCPU_VS_CPU:byte
extern _demo_chars:byte
extern _demo_rand:dword
extern gpSTART:byte
extern gpVS_START:byte
extern gpMUSIC_ROOM:byte
extern gpHISCORE:byte
extern gpOPTION:byte
extern gpQUIT:byte
extern gpRANK:byte
extern gpMUSIC:byte
extern gpKEYCONFIG:byte
extern gpEASY:byte
extern gpNORMAL:byte
extern gpHARD:byte
extern gpLUNATIC:byte
extern gpOFF:byte
extern gpFM_86:byte
extern gpMIDI_SC88:byte
extern gpOFF:byte
extern gpFM_86:byte
extern gpMIDI_SC88:byte
extern gpKEY_VS_KEY:byte
extern gpJOY_VS_KEY:byte
extern gpKEY_VS_JOY:byte
extern _menu_sel:byte
extern _quit:byte
extern byte_D953:byte
extern _main_menu_initialized:byte
extern _option_initialized:byte
extern path:byte
extern asc_D965:byte
extern aVfvcvbgngngbgn:byte
extern aUmx:byte
extern aViosrfvVVkvqbd:byte
extern aCOul:byte
extern aGbgvgkxsslvVBb:byte
extern aMikoft_bft:byte
; libs/master.lib/grp[data].asm
extern graph_VramZoom:word
; libs/master.lib/pal[data].asm
extern PaletteTone:word
; libs/master.lib/rand[data].asm
extern random_seed:dword
; libs/master.lib/sin8[data].asm
extern _SinTable8:word:256
extern _CosTable8:word:256
aOpwin_bft db 'opwin.bft',0
aOp_m db 'op.m',0
aTl01_pi db 'TL01.PI',0
aTl02_pi db 'TL02.PI',0
db 0
public _SCOREDAT_FN
_SCOREDAT_FN dw offset aYume_nem
aYume_nem db 'YUME.NEM',0
evendata
off_E1FE dd a00sl_cd2
; "00SL.CD2"
dd a02sl_cd2 ; "02SL.CD2"
dd a04sl_cd2 ; "04SL.CD2"
dd a06sl_cd2 ; "06SL.CD2"
dd a08sl_cd2 ; "08SL.CD2"
dd a10sl_cd2 ; "10SL.CD2"
dd a12sl_cd2 ; "12SL.CD2"
dd a14sl_cd2 ; "14SL.CD2"
dd a16sl_cd2 ; "16SL.CD2"
db 3
db 1
db 5
db 4
db 4
db 2
db 3
db 4
db 3
db 2
db 3
db 1
db 4
db 1
db 4
db 2
db 2
db 5
db 4
db 5
db 1
db 5
db 2
db 4
db 5
db 5
db 3
include th03/gaiji/p_cursor[data].asm
db 0
db 0
a00sl_cd2 db '00SL.CD2',0
a02sl_cd2 db '02SL.CD2',0
a04sl_cd2 db '04SL.CD2',0
a06sl_cd2 db '06SL.CD2',0
a08sl_cd2 db '08SL.CD2',0
a10sl_cd2 db '10SL.CD2',0
a12sl_cd2 db '12SL.CD2',0
a14sl_cd2 db '14SL.CD2',0
a16sl_cd2 db '16SL.CD2',0
aSlex_cd2 db 'slex.cd2',0
a99sl_cdg db '99sl.cdg',0
aSlwin_cdg db 'slwin.cdg',0
aSlex_cdg db 'slex.cdg',0
aSelect_m db 'select.m',0
aChname_bft db 'chname.bft',0
aTlsl_rgb db 'TLSL.RGB',0
db 041h, 0C1h, 0E1h, 0
.data?
extern _main_input_allowed:byte
extern _option_input_allowed:byte
extern _in_option:byte
extern _putfunc:word
; libs/master.lib/pal[bss].asm
extern Palettes:byte:48
; libs/master.lib/vs[bss].asm
extern vsync_Count1:word
extern _snd_active:byte
extern _input_sp:word
extern _input_mp_p1:word
extern _input_mp_p2:word
extern _pi_buffers:dword
extern _pi_headers:PiHeader
public _hi
_hi scoredat_section_t <?>
word_FC52 dw ?
public _resident
_resident dd ?
public _playchars
_playchars db PLAYER_COUNT dup (?)
byte_FC5A db ?
byte_FC5B db ?
byte_FC5C db ?
db ?
include th03/hardware/input_modes[bss].asm
word_FC62 dw ?
word_FC64 dw ?
word_FC66 dw ?
byte_FC68 db ?
db ? ;
end