ReC98/th03_op.asm

3943 lines
79 KiB
NASM
Raw Blame History

This file contains invisible Unicode characters

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

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

;
; +-------------------------------------------------------------------------+
; | This file has been generated by The Interactive Disassembler (IDA) |
; | Copyright (c) 2009 by Hex-Rays, <support@hex-rays.com> |
; +-------------------------------------------------------------------------+
;
; Input MD5 : 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
.286 ; Force the .model directive to create 16-bit default segments...
.model large
.386 ; ... then switch to what we actually need.
; And yes, we can't move this to an include file for some reason.
include ReC98.inc
include th03/th03.inc
include th02/music/music.inc
extern SCOPY@:proc
extern __mbcjmstojis:proc
extern __mbctype:byte
extern __ctype:byte
extern _execl:proc
extern _getch:proc
extern _memcpy:proc
; ===========================================================================
; Segment type: Pure code
_TEXT segment word public 'CODE' use16
assume cs:_TEXT
assume es:nothing, ds:_DATA, fs:nothing, gs:nothing
include libs/master.lib/bfnt_entry_pat.asm
include libs/master.lib/bfnt_extend_header_skip.asm
include libs/master.lib/bfnt_header_read.asm
include libs/master.lib/bfnt_header_analysis.asm
include libs/master.lib/bcloser.asm
include libs/master.lib/bfill.asm
include libs/master.lib/bfnt_palette_set.asm
include libs/master.lib/bgetc.asm
include libs/master.lib/palette_black_out.asm
include libs/master.lib/bopenr.asm
include libs/master.lib/bread.asm
include libs/master.lib/bseek.asm
include libs/master.lib/bseek_.asm
include libs/master.lib/dos_axdx.asm
include libs/master.lib/dos_keyclear.asm
include libs/master.lib/dos_puts2.asm
include libs/master.lib/dos_setvect.asm
include libs/master.lib/egc.asm
include libs/master.lib/egc_shift_left_all.asm
include libs/master.lib/file_append.asm
include libs/master.lib/file_close.asm
include libs/master.lib/file_create.asm
include libs/master.lib/file_exist.asm
include libs/master.lib/file_read.asm
include libs/master.lib/file_ropen.asm
include libs/master.lib/file_seek.asm
include libs/master.lib/file_write.asm
include libs/master.lib/dos_close.asm
include libs/master.lib/dos_ropen.asm
include libs/master.lib/grcg_boxfill.asm
include libs/master.lib/grcg_byteboxfill_x.asm
include libs/master.lib/grcg_polygon_c.asm
include libs/master.lib/grcg_pset.asm
include libs/master.lib/grcg_setcolor.asm
include libs/master.lib/gaiji_backup.asm
include libs/master.lib/gaiji_entry_bfnt.asm
include libs/master.lib/gaiji_putsa.asm
include libs/master.lib/gaiji_read.asm
include libs/master.lib/gaiji_write.asm
include libs/master.lib/graph_400line.asm
include libs/master.lib/graph_clear.asm
include libs/master.lib/graph_copy_page.asm
include libs/master.lib/graph_extmode.asm
include libs/master.lib/graph_gaiji_puts.asm
include libs/master.lib/graph_pi_free.asm
include libs/master.lib/graph_pi_load_pack.asm
include libs/master.lib/graph_pack_put_8.asm
include libs/master.lib/graph_show.asm
include libs/master.lib/graph_start.asm
include libs/master.lib/js_end.asm
include libs/master.lib/keybeep.asm
include libs/master.lib/make_linework.asm
include libs/master.lib/palette_init.asm
include libs/master.lib/palette_show.asm
include libs/master.lib/pfclose.asm
include libs/master.lib/pfgetc.asm
include libs/master.lib/pfread.asm
include libs/master.lib/pfrewind.asm
include libs/master.lib/pfseek.asm
include libs/master.lib/random.asm
include libs/master.lib/palette_entry_rgb.asm
include libs/master.lib/rottbl.asm
include libs/master.lib/smem_release.asm
include libs/master.lib/smem_wget.asm
include libs/master.lib/soundio.asm
include libs/master.lib/text_clear.asm
include libs/master.lib/txesc.asm
include libs/master.lib/text_putsa.asm
include libs/master.lib/vsync.asm
include libs/master.lib/vsync_wait.asm
include libs/master.lib/palette_white_in.asm
include libs/master.lib/hmem_lallocate.asm
include libs/master.lib/mem_assign_dos.asm
include libs/master.lib/mem_assign.asm
include libs/master.lib/memheap.asm
include libs/master.lib/mem_unassign.asm
include libs/master.lib/super_free.asm
include libs/master.lib/super_entry_pat.asm
include libs/master.lib/super_entry_at.asm
include libs/master.lib/super_entry_bfnt.asm
include libs/master.lib/super_cancel_pat.asm
include libs/master.lib/super_put.asm
include libs/master.lib/respal_exist.asm
include libs/master.lib/respal_free.asm
include libs/master.lib/pfint21.asm
db 0
include libs/master.lib/js_start.asm
include libs/master.lib/js_sense.asm
db 0
include libs/master.lib/draw_trapezoid.asm
include th03/formats/pfopen.asm
include libs/master.lib/pf_str_ieq.asm
_TEXT ends
; ===========================================================================
; Segment type: Pure code
op_01_TEXT segment byte public 'CODE' use16
assume cs:op_01_TEXT
;org 8
assume es:nothing, ss:nothing, ds:_DATA, fs:nothing, gs:nothing
include th03/formats/cfg.asm
; =============== 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
call gaiji_restore
kajacall KAJA_SONG_STOP
call game_exit
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
push 1
call frame_delay
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
call gaiji_restore
kajacall KAJA_SONG_STOP
call game_exit
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:
push 1
call frame_delay
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 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
call gaiji_restore
kajacall KAJA_SONG_STOP
call super_free
call game_exit
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
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 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
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]
push 1
call frame_delay
loc_A4FE:
cmp _quit, 0
jz short loc_A4D2
call cfg_save_exit
call gaiji_restore
call text_clear
call game_exit_to_dos
call respal_free
pop bp
retf
_main endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
public DRAW_TRACK
draw_track proc near
var_1 = byte ptr -1
@@color = byte ptr 4
@@sel = byte ptr 6
enter 2, 0
mov al, 1
sub al, _music_page
mov [bp+var_1], al
graph_accesspage al
push 16
mov al, [bp+@@sel]
mov ah, 0
shl ax, 4
add ax, 40
push ax
mov al, [bp+@@color]
mov ah, 0
or ax, 20h
push ax
mov al, [bp+@@sel]
mov ah, 0
shl ax, 2
mov bx, ax
pushd _MUSIC_TITLES[bx]
call graph_putsa_fx
graph_accesspage _music_page
push 16
mov al, [bp+@@sel]
mov ah, 0
shl ax, 4
add ax, 40
push ax
mov al, [bp+@@color]
mov ah, 0
or ax, 20h
push ax
mov al, [bp+@@sel]
mov ah, 0
shl ax, 2
mov bx, ax
pushd _MUSIC_TITLES[bx]
call graph_putsa_fx
leave
retn 4
draw_track endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
public DRAW_TRACKS
draw_tracks proc near
@@sel = byte ptr 4
push bp
mov bp, sp
push si
xor si, si
jmp short loc_A5AD
; ---------------------------------------------------------------------------
loc_A598:
push si
mov al, [bp+@@sel]
mov ah, 0
cmp ax, si
jnz short loc_A5A6
mov al, 0Fh
jmp short loc_A5A8
; ---------------------------------------------------------------------------
loc_A5A6:
mov al, 3
loc_A5A8:
push ax
call draw_track
inc si
loc_A5AD:
cmp si, 15h
jl short loc_A598
pop si
pop bp
retn 2
draw_tracks endp
include th02/music/music.asm
include th03/music/cmt_back_snap.asm
include th02/music/music_cmt_load.asm
include th03/music/cmt_back_free_put.asm
include th03/music/draw_cmt.asm
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
public MUSICROOM
musicroom proc far
push bp
mov bp, sp
push si
xor si, si
jmp short loc_AC15
; ---------------------------------------------------------------------------
loc_AC0E:
call cdg_free pascal, si
inc si
loc_AC15:
cmp si, CDG_SLOT_COUNT
jl short loc_AC0E
call super_free
call text_clear
mov _music_page, 1
mov PaletteTone, 0
call far ptr palette_show
graph_showpage 0
graph_accesspage al
call graph_clear
graph_accesspage 1
call pi_slot_load pascal, 0, ds, offset aOp3_pi
call pi_slot_palette_apply pascal, 0
call pi_slot_put pascal, large 0, 0
freePISlotLarge 0
mov al, music_track_playing
mov _music_sel, al
call draw_tracks pascal, word ptr _music_sel
call graph_copy_page pascal, 0
graph_accesspage 1
graph_showpage 0
call screen_back_B_snap
call cmt_back_snap
graph_accesspage 1
mov al, music_track_playing
mov ah, 0
call draw_cmt pascal, ax
graph_accesspage 0
mov al, music_track_playing
mov ah, 0
call draw_cmt pascal, ax
mov PaletteTone, 100
call far ptr palette_show
loc_ACC2:
call input_mode_interface
cmp _input_sp, INPUT_NONE
jz short loc_ACD3
call music_flip
jmp short loc_ACC2
; ---------------------------------------------------------------------------
loc_ACD3:
call input_mode_interface
test _input_sp.lo, low INPUT_UP
jz short loc_AD0E
call draw_track pascal, word ptr _music_sel, 3
cmp _music_sel, 0
jbe short loc_ACF5
dec _music_sel
jmp short loc_ACFA
; ---------------------------------------------------------------------------
loc_ACF5:
mov _music_sel, 14h
loc_ACFA:
cmp _music_sel, 13h
jnz short loc_AD05
dec _music_sel
loc_AD05:
call draw_track pascal, word ptr _music_sel, 15
loc_AD0E:
test _input_sp.lo, low INPUT_DOWN
jz short loc_AD44
call draw_track pascal, word ptr _music_sel, 3
cmp _music_sel, 14h
jnb short loc_AD2B
inc _music_sel
jmp short loc_AD30
; ---------------------------------------------------------------------------
loc_AD2B:
mov _music_sel, 0
loc_AD30:
cmp _music_sel, 13h
jnz short loc_AD3B
inc _music_sel
loc_AD3B:
call draw_track pascal, word ptr _music_sel, 15
loc_AD44:
test _input_sp.lo, low INPUT_SHOT
jnz short loc_AD52
test _input_sp.hi, high INPUT_OK
jz short loc_AD9A
loc_AD52:
cmp _music_sel, 14h
jz short loc_ADB0
kajacall KAJA_SONG_STOP
push SND_LOAD_SONG
mov al, _music_sel
mov ah, 0
shl ax, 2
mov bx, ax
pushd _MUSIC_FILES[bx]
call snd_load
add sp, 6
kajacall KAJA_SONG_PLAY
mov al, _music_sel
mov music_track_playing, al
mov ah, 0
call draw_cmt pascal, ax
call music_flip
mov al, _music_sel
mov ah, 0
call draw_cmt pascal, ax
loc_AD9A:
test _input_sp.hi, high INPUT_CANCEL
jnz short loc_ADB0
cmp _input_sp, INPUT_NONE
jnz loc_ACC2
call music_flip
jmp loc_ACD3
; ---------------------------------------------------------------------------
loc_ADB0:
call input_mode_interface
cmp _input_sp, INPUT_NONE
jz short loc_ADC1
call music_flip
jmp short loc_ADB0
; ---------------------------------------------------------------------------
loc_ADC1:
call screen_back_B_free
call cmt_back_free
graph_showpage 0
graph_accesspage al
call graph_clear
graph_accesspage 1
mov al, 0
out dx, al
pop si
pop bp
retf
musicroom endp
; =============== 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_slot_load pascal, 0, ds, offset aTl01_pi
mov PaletteTone, 0
call far ptr palette_show
graph_accesspage 1
call pi_slot_put pascal, large 0, 0
graph_accesspage 0
call pi_slot_palette_apply pascal, 0
call pi_slot_put pascal, large 0, 0
call egc_shift_left_all pascal, 2
mov Palettes+45, 0
mov Palettes+46, 0
mov Palettes+47, 0
call far ptr palette_show
mov Palettes+33, 0
mov Palettes+34, 0
mov Palettes+35, 0
call far ptr palette_show
freePISlotLarge 0
call pi_slot_load pascal, 0, ds, offset aTl02_pi
graph_showpage 1
mov si, 0A0h
jmp short loc_AF02
; ---------------------------------------------------------------------------
loc_AEA0:
push 1
call frame_delay
mov al, byte ptr [bp+var_2]
mov Palettes+45, al
mov Palettes+46, al
mov Palettes+47, al
call far ptr palette_show
cmp [bp+var_2], 80h
jg short loc_AECB
mov al, byte ptr [bp+var_2]
mov Palettes+33, al
mov Palettes+34, al
mov Palettes+35, 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+45, al
mov Palettes+46, al
mov Palettes+47, al
call far ptr palette_show
add [bp+var_2], 2
push 1
call frame_delay
loc_AF25:
cmp [bp+var_2], 0FFh
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
push 1
call frame_delay
mov PaletteTone, 100
call far ptr palette_show
push 1
call frame_delay
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_slot_palette_apply pascal, 0
call pi_slot_put pascal, large 0, 0
push 1
call frame_delay
mov PaletteTone, 100
call far ptr palette_show
push 1
call frame_delay
xor si, si
jmp short loc_AFD9
; ---------------------------------------------------------------------------
loc_AFB4:
mov PaletteTone, 200
call far ptr palette_show
push 1
call frame_delay
mov PaletteTone, 100
call far ptr palette_show
push 1
call frame_delay
inc si
loc_AFD9:
cmp si, 8
jl short loc_AFB4
graph_accesspage 1
call pi_slot_put 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_slot_load pascal, 0, ds, offset aTl02_pi
graph_showpage 0
call sub_B3EF
graph_accesspage 1
call pi_slot_put pascal, large 0, 0
graph_accesspage 0
call pi_slot_palette_apply pascal, 0
call pi_slot_put 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
push 1
call frame_delay
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 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 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
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_B168 proc near
var_4 = word ptr -4
var_1 = byte ptr -1
arg_0 = word ptr 4
enter 4, 0
push si
push di
mov [bp+var_4], 0
call IRand
mov byte_FC50, al
call IRand
mov byte_FC51, al
call IRand
mov byte_FBD7, al
mov si, 2396h
xor di, di
jmp short loc_B19B
; ---------------------------------------------------------------------------
loc_B192:
mov al, [si]
mov ah, 0
add [bp+var_4], ax
inc di
inc si
loc_B19B:
cmp di, 0CCh
jl short loc_B192
mov ax, [bp+var_4]
mov word_FB84, ax
mov si, 2460h
dec si
mov al, byte_FC51
mov [bp+var_1], al
mov di, 0CBh ; '<27>'
jmp short loc_B1D4
; ---------------------------------------------------------------------------
loc_B1B6:
mov al, [si]
mov dl, byte_FC50
add dl, [bp+var_1]
sub al, dl
mov [si], al
mov al, [si]
mov [bp+var_1], al
mov al, byte_FC51
ror [bp+var_1], 3
xor [bp+var_1], al
dec di
dec si
loc_B1D4:
or di, di
jge short loc_B1B6
push ds
push word_E1F2
call file_append
mov ax, [bp+arg_0]
imul ax, 0CEh
movzx eax, ax
push eax
push 0
call file_seek
push ds
push offset word_FB84
push 0CEh
call file_write
call file_close
pop di
pop si
leave
retn 2
sub_B168 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_B20D proc near
var_1 = byte ptr -1
enter 2, 0
push si
mov si, 2394h
xor dx, dx
jmp short loc_B235
; ---------------------------------------------------------------------------
loc_B219:
mov al, [si+1]
mov [bp+var_1], al
mov al, byte_FC51
ror [bp+var_1], 3
xor [bp+var_1], al
mov al, byte_FC50
add al, [bp+var_1]
add al, [si]
mov [si], al
inc dx
inc si
loc_B235:
cmp dx, 0CBh ; '<27>'
jl short loc_B219
mov al, byte_FC50
add al, byte_FC51
add al, [si]
mov [si], al
pop si
leave
retn
sub_B20D endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_B249 proc near
var_1 = byte ptr -1
enter 2, 0
push si
push di
mov [bp+var_1], 29h ; ')'
xor si, si
jmp short loc_B28A
; ---------------------------------------------------------------------------
loc_B257:
xor di, di
jmp short loc_B266
; ---------------------------------------------------------------------------
loc_B25B:
mov bx, si
shl bx, 3
mov byte ptr [bx+di+2396h], 2Ah ; '*'
inc di
loc_B266:
cmp di, 8
jl short loc_B25B
xor di, di
jmp short loc_B27A
; ---------------------------------------------------------------------------
loc_B26F:
mov bx, si
imul bx, 0Ah
mov byte ptr [bx+di+23E8h], 20h ; ' '
inc di
loc_B27A:
cmp di, 0Ah
jl short loc_B26F
mov byte ptr [si+244Ch], 0
mov byte ptr [si+2456h], 21h ; '!'
inc si
loc_B28A:
cmp si, 0Ah
jl short loc_B257
mov byte_FBDC, 21h ; '!'
mov di, 1
jmp short loc_B2A9
; ---------------------------------------------------------------------------
loc_B299:
mov bx, di
imul bx, 0Ah
mov al, [bp+var_1]
mov [bx+23EBh], al
inc di
dec [bp+var_1]
loc_B2A9:
cmp di, 0Ah
jl short loc_B299
mov byte_FBD6, 12h
xor si, si
jmp short loc_B2BF
; ---------------------------------------------------------------------------
loc_B2B7:
push si
call sub_B168
call sub_B20D
inc si
loc_B2BF:
cmp si, 4
jl short loc_B2B7
pop di
pop si
leave
retn
sub_B249 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_B2C8 proc near
push bp
mov bp, sp
push si
xor cx, cx
mov si, 2396h
xor dx, dx
jmp short loc_B2DD
; ---------------------------------------------------------------------------
loc_B2D5:
mov al, [si]
mov ah, 0
add cx, ax
inc dx
inc si
loc_B2DD:
cmp dx, 0CCh
jl short loc_B2D5
cmp word_FB84, cx
jz short loc_B2ED
mov al, 1
jmp short loc_B2EF
; ---------------------------------------------------------------------------
loc_B2ED:
mov al, 0
loc_B2EF:
pop si
pop bp
retn
sub_B2C8 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_B2F2 proc near
arg_0 = word ptr 4
push bp
mov bp, sp
push ds
push word_E1F2
call file_exist
or ax, ax
jnz short loc_B314
push ds
push word_E1F2
call file_create
call file_close
jmp short loc_B34D
; ---------------------------------------------------------------------------
loc_B314:
push ds
push word_E1F2
call file_ropen
mov ax, [bp+arg_0]
imul ax, 0CEh
movzx eax, ax
push eax
push 0
call file_seek
push ds
push offset word_FB84
push 0CEh
call file_read
call file_close
call sub_B20D
call sub_B2C8
or al, al
jz short loc_B357
loc_B34D:
call sub_B249
mov ax, 1
pop bp
retn 2
; ---------------------------------------------------------------------------
loc_B357:
xor ax, ax
pop bp
retn 2
sub_B2F2 endp
; =============== 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:
push si
call sub_B2F2
or ax, ax
jz short loc_B376
mov al, 7
jmp short loc_B38A
; ---------------------------------------------------------------------------
loc_B376:
cmp byte_FBD6, 63h ; 'c'
jnz short loc_B381
mov [bp+var_1], 9
loc_B381:
inc si
loc_B382:
cmp si, 4
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_forcealpha
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_forcealpha 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_forcealpha 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_forcealpha
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_forcealpha
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
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
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
push (416 shl 16) or 96
push 1
call cdg_put
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
push (32 shl 16) or 304
push 11
call cdg_put_noalpha
les bx, _resident
cmp es:[bx+resident_t.game_mode], GM_STORY
jz short loc_B590
push (416 shl 16) or 304
push 11
call cdg_put_noalpha
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
push (160 shl 16) or 304
push 12
call cdg_put_noalpha
push (176 shl 16) or 316
mov al, _playchars[0]
cbw
add ax, 13
push ax
call cdg_put_noalpha
les bx, _resident
cmp es:[bx+resident_t.game_mode], GM_STORY
jz short loc_B6BE
push (544 shl 16) or 304
push 12
call cdg_put_noalpha
push (560 shl 16) or 316
mov al, _playchars[1]
cbw
add ax, 13
push ax
call cdg_put_noalpha
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
var_7 = 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+var_7], al
mov ah, 0
imul [bp+arg_2]
mov bx, 100h
cwd
idiv bx
mov [bp+var_7], al
mov ah, 0
add ax, ax
mov bx, ax
call vector1_at 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+var_7], al
mov ah, 0
imul [bp+arg_0]
mov bx, 100h
cwd
idiv bx
mov [bp+var_7], al
mov ah, 0
add ax, ax
mov bx, ax
call vector1_at 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_forcealpha
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_forcealpha
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:
push 10h
call frame_delay
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, 0Fh
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, 0Fh
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, 0Fh
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, 0Fh
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, 0Fh
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_01_TEXT ends
; ===========================================================================
; Segment type: Pure code
op_02_TEXT segment word public 'CODE' use16
assume cs:op_02_TEXT
;org 8
assume es:nothing, ss:nothing, ds:_DATA, fs:nothing, gs:nothing
include th02/exit_dos.asm
include th01/hardware/vram_planes_set.asm
include th02/snd/detmode.asm
include th02/snd/pmd_res.asm
include th02/snd/load.asm
include th02/exit.asm
include th03/math/vector1_at.asm
db 0
include th03/formats/cdg_put.asm
include th03/formats/cdg_put_hflip.asm
include th02/hardware/frame_delay.asm
db 0
include th03/hardware/input_sense.asm
include th02/formats/pi_slot_palette_apply.asm
include th02/formats/pi_slot_put.asm
include th02/snd/kajaint.asm
include th02/initop.asm
include th03/formats/cdg_load.asm
include th03/hardware/grppsafx.asm
include th02/formats/pi_slot_load.asm
include th03/hardware/input_modes.asm
include th03/hardware/input_wait.asm
db 0
include th03/formats/cdg_put_noalpha.asm
include th03/formats/hfliplut.asm
extern FRAME_DELAY_2:proc
op_02_TEXT ends
.data
include th03/formats/cfg[data].asm
db 0
db 0
db 0
db 0
db 0
db 0
db 0
db 1
db 0
db 0
db 2
db 0
db 3
db 5
db 4
db 6
gp1P_VS_CPU db 88h, 89h, 8Ah, 8Bh, 8Ch, 8Dh, 8Eh, 8Fh, 0
gp1P_VS_2P db 88h, 89h, 8Ah, 8Bh, 96h, 97h, 98h, 99h, 0
gpCPU_VS_CPU db 92h, 93h, 94h, 95h, 8Ch, 8Dh, 8Eh, 8Fh, 0
include th03/start[data].asm
gpSTART db 30h, 31h, 32h, 0
gpVS_START db 33h, 34h, 35h, 36h, 37h, 38h, 0
gpMUSIC_ROOM db 41h, 42h, 43h, 44h, 45h, 46h, 47h, 0
gpHISCORE db 82h, 83h, 84h, 85h, 86h, 0
gpOPTION db 3Dh, 3Eh, 3Fh, 40h, 0
gpQUIT db 48h, 49h, 4Ah, 0
gpRANK db 6Eh, 6Fh, 70h, 0
gpMUSIC db 4Bh, 4Ch, 4Dh, 4Eh, 0
gpKEYCONFIG db 5Ch, 5Dh, 5Eh, 5Fh, 60h, 61h, 0
g4SPACES db 0CFh, 0CFh, 0CFh, 0CFh, 0
gpEASY db 71h, 72h, 73h, 0
gpNORMAL db 74h, 75h, 76h, 77h, 0
gpHARD db 78h, 79h, 7Ah, 0
gpLUNATIC db 7Bh, 7Ch, 7Dh, 7Eh, 0
gpOFF db 0CFh, 0CFh, 5Ah, 5Bh, 0CFh, 0CFh, 0CFh, 0
gpFM_86 db 0CFh, 4Fh, 50h, 51h, 52h, 0CFh, 0CFh, 0
gpMIDI_SC88 db 53h, 54h, 55h, 56h, 57h, 58h, 59h, 0
gpTYPE1 db 62h, 63h, 64h, 65h, 0
gpTYPE2 db 62h, 63h, 64h, 66h, 0
gpTYPE3 db 62h, 63h, 64h, 67h, 0
gpKEY_VS_KEY db 68h, 69h, 6Ch, 6Dh, 68h, 69h, 0
gpJOY_VS_KEY db 6Ah, 6Bh, 6Ch, 6Dh, 68h, 69h, 0
gpKEY_VS_JOY db 68h, 69h, 6Ch, 6Dh, 6Ah, 6Bh, 0
_menu_sel db 0
_quit db 0
byte_D953 db 1
_main_menu_initialized db 0
_option_initialized db 0
aYume_cfg db 'YUME.CFG',0
; char path[]
path db 'mainl',0
asc_D965 db ' ',0
aVfvcvbgngngbgn db '<27>f<EFBFBD>c<EFBFBD>b<EFBFBD>N<EFBFBD><4E><EFBFBD>b<EFBFBD>N<EFBFBD><4E><EFBFBD>T<EFBFBD>l<EFBFBD>g<EFBFBD><67><EFBFBD>ɂȂ<C982><C882>Ă<EFBFBD><C482>܂<EFBFBD><DC82>B',0Ah,0
aUmx db '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͂Q<CD82>D<EFBFBD>T<EFBFBD>l<EFBFBD>g<EFBFBD><67><EFBFBD>łȂ<C582><C882>Ɛ<EFBFBD><C690><EFBFBD><EFBFBD>ɃQ<C983>[<5B><><EFBFBD><EFBFBD><EFBFBD>v<EFBFBD><76><EFBFBD>C<EFBFBD>o<EFBFBD><6F><EFBFBD>܂<EFBFBD><DC82><EFBFBD>',0Ah,0
aViosrfvVVkvqbd db 0Ah
db '<27><><EFBFBD><EFBFBD>ł<EFBFBD><C582><EFBFBD><EFBFBD>Q<EFBFBD>D<EFBFBD>T<EFBFBD>l<EFBFBD>g<EFBFBD><67><EFBFBD>ɐ؂<C990><D882>ւ<EFBFBD><D682>āA<C481><41><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>x<EFBFBD><78><EFBFBD>s<EFBFBD><73><EFBFBD>ĂˁB',0Ah,0
aCOul db '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1.dat',0
aGbgvgkxsslvVBb db 0Ah
db '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>s<EFBFBD><73><EFBFBD>ł<EFBFBD><C582>B<EFBFBD><42><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>󂫂𑝂₵<F0919D82>Ă<EFBFBD><C482><EFBFBD><EFBFBD><EFBFBD><EFBFBD>s<EFBFBD><73><EFBFBD>Ă<EFBFBD><C482><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>',0Ah,0
aMikoft_bft db 'MIKOFT.bft',0
db 0
include libs/master.lib/bfnt_id[data].asm
include libs/master.lib/clip[data].asm
include libs/master.lib/edges[data].asm
include libs/master.lib/fil[data].asm
include libs/master.lib/dos_ropen[data].asm
include libs/master.lib/gaiji_backup[data].asm
include libs/master.lib/gaiji_entry_bfnt[data].asm
include libs/master.lib/grp[data].asm
include libs/master.lib/js[data].asm
include libs/master.lib/pal[data].asm
include libs/master.lib/pf[data].asm
include libs/master.lib/rand[data].asm
include libs/master.lib/sin8[data].asm
include libs/master.lib/tx[data].asm
include libs/master.lib/vs[data].asm
include libs/master.lib/wordmask[data].asm
include libs/master.lib/mem[data].asm
include libs/master.lib/super_entry_bfnt[data].asm
include libs/master.lib/superpa[data].asm
_snd_active db 0
db 0
include libs/master.lib/respal_exist[data].asm
include libs/master.lib/draw_trapezoid[data].asm
include th02/formats/pfopen[data].asm
include th03/formats/cdg[data].asm
public _MUSIC_TITLES
_MUSIC_TITLES label dword
dd aNo_1B@cVOul ; "NO.1 <20>@<40><><EFBFBD>͎<EFBFBD><CD8E><EFBFBD><EFBFBD><EFBFBD><EFBFBD>z<EFBFBD><7A><EFBFBD><EFBFBD> "
dd aNo_2B@B@Select ; "NO.2 <20>@ <20>@ Selection "
dd aNo_3Umx ; "NO.3 <20><><EFBFBD><EFBFBD><EFBFBD>d<EFBFBD><64><EFBFBD>k "
dd aNo_4Reincarnat ; "NO.4 Reincarnation "
dd aNo_5Dim_Dream ; "NO.5 Dim. Dream "
dd aNo_6TabulaRasa ; "NO.6 Tabula rasa<73>@<40>`<60>󔒏<EFBFBD><F394928F><EFBFBD> "
dd aNo_7B@Maniacal ; "NO.7 <20>@ Maniacal Princess "
dd aNo_8CPOBLostDr ; "NO.8 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>`Lost Dream "
dd aNo_9CMCvlyBDre ; "NO.9 <20><><EFBFBD><EFBFBD><EFBFBD>V<EFBFBD>Y <20>`Dream War "
dd aNo_10Cvc@mirab ; "NO.10 <20><><EFBFBD>@<40><><EFBFBD><EFBFBD><EFBFBD>I<EFBFBD>`Fight it out!"
dd aNo_11B@SailorO ; "NO.11 <20>@ Sailor of Time "
dd aNo_12Strawberr ; "NO.12 Strawberry Crisis!! "
dd aNo_13F ; "NO.13 <20>񓝈ꖂ<F1939D88>@<40><><EFBFBD>E<EFBFBD>_ "
dd aNo_14B@cvc@pri ; "NO.14 <09>@<40><><EFBFBD>@<40><><EFBFBD><EFBFBD> "
dd aNo_15B@lviuvC ; "NO.15 <09>@<40>v<EFBFBD><76><EFBFBD>̖<EFBFBD> "
dd aNo_16Umx ; "NO.16 <09><><EFBFBD><EFBFBD><EFBFBD>̐‚<CC90><C282><EFBFBD> "
dd aNo_17IiiuvCumo ; "NO.17 <20>i<EFBFBD><69><EFBFBD>̖<EFBFBD><CC96><EFBFBD> "
dd aNo_18MapleDrea ; "NO.18 Maple Dream... "
dd aNo_19CRlvLxu ; "NO.19 <20><><EFBFBD>l<EFBFBD>̋x<CC8B><78> "
dd aB@b@ ; " <20>@<40>@ "
dd aB@b@vpvxvivf ; " <20>@<40>@<40>p<EFBFBD><70><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "
public _MUSIC_FILES
_MUSIC_FILES label dword
dd aOp_m_0 ; "op.m"
dd aSelect_m_0 ; "select.m"
dd a00mm_m ; "00mm.m"
dd a01mm_m ; "01mm.m"
dd a02mm_m ; "02mm.m"
dd a03mm_m ; "03mm.m"
dd a04mm_m ; "04mm.m"
dd a05mm_m ; "05mm.m"
dd a06mm_m ; "06mm.m"
dd aDec_m ; "dec.m"
dd a07mm_m ; "07mm.m"
dd a08mm_m ; "08mm.m"
dd aDemo1_m ; "demo1.m"
dd aDemo2_m ; "demo2.m"
dd aDemo3_m ; "demo3.m"
dd aDemo4_m ; "demo4.m"
dd aDemo5_m ; "demo5.m"
dd aEd_m ; "ed.m"
dd aScore_m ; "score.m"
include th02/music/polygons[data].asm
music_track_playing db 0
aNo_1B@cVOul db 'NO.1 <20>@<40><><EFBFBD>͎<EFBFBD><CD8E><EFBFBD><EFBFBD><EFBFBD><EFBFBD>z<EFBFBD><7A><EFBFBD><EFBFBD> ',0
aNo_2B@B@Select db 'NO.2 <20>@ <20>@ Selection ',0
aNo_3Umx db 'NO.3 <20><><EFBFBD><EFBFBD><EFBFBD>d<EFBFBD><64><EFBFBD>k ',0
aNo_4Reincarnat db 'NO.4 Reincarnation ',0
aNo_5Dim_Dream db 'NO.5 Dim. Dream ',0
aNo_6TabulaRasa db 'NO.6 Tabula rasa<73>@<40>`<60>󔒏<EFBFBD><F394928F><EFBFBD> ',0
aNo_7B@Maniacal db 'NO.7 <20>@ Maniacal Princess ',0
aNo_8CPOBLostDr db 'NO.8 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>`Lost Dream ',0
aNo_9CMCvlyBDre db 'NO.9 <20><><EFBFBD><EFBFBD><EFBFBD>V<EFBFBD>Y <20>`Dream War ',0
aNo_10Cvc@mirab db 'NO.10 <20><><EFBFBD>@<40><><EFBFBD><EFBFBD><EFBFBD>I<EFBFBD>`Fight it out!',0
aNo_11B@SailorO db 'NO.11 <20>@ Sailor of Time ',0
aNo_12Strawberr db 'NO.12 Strawberry Crisis!! ',0
aNo_13F db 'NO.13 <20>񓝈ꖂ<F1939D88>@<40><><EFBFBD>E<EFBFBD>_ ',0
aNo_14B@cvc@pri db 'NO.14 <20>@<40><><EFBFBD>@<40><><EFBFBD><EFBFBD> ',0
aNo_15B@lviuvC db 'NO.15 <20>@<40>v<EFBFBD><76><EFBFBD>̖<EFBFBD> ',0
aNo_16Umx db 'NO.16 <20><><EFBFBD><EFBFBD><EFBFBD>̐‚<CC90><C282><EFBFBD> ',0
aNo_17IiiuvCumo db 'NO.17 <20>i<EFBFBD><69><EFBFBD>̖<EFBFBD><CC96><EFBFBD> ',0
aNo_18MapleDrea db 'NO.18 Maple Dream... ',0
aNo_19CRlvLxu db 'NO.19 <20><><EFBFBD>l<EFBFBD>̋x<CC8B><78> ',0
aB@b@ db ' <20>@<40>@ ',0
aB@b@vpvxvivf db ' <20>@<40>@<40>p<EFBFBD><70><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ',0
aOp_m_0 db 'op.m',0
aSelect_m_0 db 'select.m',0
a00mm_m db '00mm.m',0
a01mm_m db '01mm.m',0
a02mm_m db '02mm.m',0
a03mm_m db '03mm.m',0
a04mm_m db '04mm.m',0
a05mm_m db '05mm.m',0
a06mm_m db '06mm.m',0
aDec_m db 'dec.m',0
a07mm_m db '07mm.m',0
a08mm_m db '08mm.m',0
aDemo1_m db 'demo1.m',0
aDemo2_m db 'demo2.m',0
aDemo3_m db 'demo3.m',0
aDemo4_m db 'demo4.m',0
aDemo5_m db 'demo5.m',0
aEd_m db 'ed.m',0
aScore_m db 'score.m',0
include th02/music/music_cmt_load[data].asm
aOp3_pi db 'op3.pi',0
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
word_E1F2 dw 0A04h
aYume_nem db 'YUME.NEM',0
db 0
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/strings/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?
_main_input_allowed db ?
_option_input_allowed db ?
_in_option db ?
db ?
_putfunc dw ?
include libs/master.lib/clip[bss].asm
include libs/master.lib/fil[bss].asm
include libs/master.lib/js[bss].asm
include libs/master.lib/pal[bss].asm
include libs/master.lib/vs[bss].asm
include libs/master.lib/vsync[bss].asm
include libs/master.lib/mem[bss].asm
include libs/master.lib/superpa[bss].asm
include th01/hardware/vram_planes[bss].asm
include th02/snd/snd[bss].asm
include th02/snd/load[bss].asm
include libs/master.lib/pfint21[bss].asm
include th03/hardware/input[bss].asm
include th03/formats/cdg[bss].asm
include th02/formats/pi_slots[bss].asm
include th03/formats/hfliplut[bss].asm
include th02/music/music[bss].asm
include th03/music/cmt_back[bss].asm
include th02/music/music_cmt[bss].asm
word_FB84 dw ?
db 80 dup(?)
byte_FBD6 db ?
byte_FBD7 db ?
db 4 dup(?)
byte_FBDC db ?
db 115 dup(?)
byte_FC50 db ?
byte_FC51 db ?
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