ReC98/th04_op.asm

2241 lines
53 KiB
NASM
Raw Blame History

This file contains ambiguous Unicode characters

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 : 492DA6ACEE8714C252630BCE0D3C12FD
; File Name : th04/OP.EXE
; Format : MS-DOS executable (EXE)
; Base Address: 0h Range: 0h-133E0h Loaded length: 11A40h
; Entry Point : 0:0
; OS type : MS DOS
; Application type: Executable 16bit
.386
.model use16 large _TEXT
BINARY = 'O'
include ReC98.inc
include th04/th04.inc
include th04/hardware/grppsafx.inc
include th04/op/music.inc
include th04/sprites/op_cdg.inc
extern _execl:proc
extern _getch:proc
op_01 group OP_MAIN_TEXT, OP_01_TEXT
g_SHARED group SHARED, SHARED_
; ===========================================================================
; 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/atrtcmod.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_in.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_read.asm
include libs/master.lib/dos_seek.asm
include libs/master.lib/dos_setvect.asm
include libs/master.lib/egc.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_hline.asm
include libs/master.lib/grcg_polygon_c.asm
include libs/master.lib/grcg_round_boxfill.asm
include libs/master.lib/grcg_setcolor.asm
include libs/master.lib/get_machine_98.asm
include libs/master.lib/get_machine_at.asm
include libs/master.lib/get_machine_dosbox.asm
include libs/master.lib/check_machine_fmr.asm
include libs/master.lib/get_machine.asm
include libs/master.lib/gaiji_backup.asm
include libs/master.lib/gaiji_entry_bfnt.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_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/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/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_rect.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/draw_trapezoid.asm
include th03/formats/pfopen.asm
include libs/master.lib/pf_str_ieq.asm
include libs/master.lib/js_sense.asm
include libs/master.lib/bgm_bell_org.asm
include libs/master.lib/bgm_mget.asm
include libs/master.lib/bgm_read_sdata.asm
include libs/master.lib/bgm_timer.asm
include libs/master.lib/bgm_pinit.asm
include libs/master.lib/bgm_timerhook.asm
include libs/master.lib/bgm_play.asm
include libs/master.lib/bgm_sound.asm
include libs/master.lib/bgm_effect_sound.asm
include libs/master.lib/bgm_stop_play.asm
include libs/master.lib/bgm_set_tempo.asm
include libs/master.lib/bgm_init_finish.asm
include libs/master.lib/bgm_stop_sound.asm
include libs/master.lib/graph_gaiji_puts.asm
include libs/master.lib/graph_gaiji_putc.asm
_TEXT ends
; ===========================================================================
OP_MAIN_TEXT segment byte public 'CODE' use16
@cfg_load$qv procdesc near
@cfg_save$qv procdesc near
@cfg_save_exit$qv procdesc near
_start_demo procdesc near
@OPTION_UNPUT_AND_PUT$QIUI procdesc pascal near \
sel:word, col:word
@MENU_SEL_UPDATE_AND_RENDER$QCC procdesc pascal near \
max:byte, direction:byte
@main_update_and_render$qv procdesc near
OP_MAIN_TEXT ends
; Segment type: Pure code
op_01_TEXT segment byte public 'CODE' use16
assume cs:op_01
;org 0Ch
assume es:nothing, ss:nothing, ds:_DATA, fs:nothing, gs:nothing
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
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_B0A2
mov _option_input_allowed, 0
call @egc_copy_rect_1_to_0_16$qiiii pascal, (272 shl 16) or 224, (160 shl 16) or 144
xor si, si
jmp short loc_B08D
; ---------------------------------------------------------------------------
loc_B077:
push si
mov al, _menu_sel
cbw
cmp ax, si
jnz short loc_B085
mov ax, 8
jmp short loc_B088
; ---------------------------------------------------------------------------
loc_B085:
mov ax, 1
loc_B088:
push ax
call @option_unput_and_put$qiui
inc si
loc_B08D:
cmp si, 8
jl short loc_B077
mov _menu_unput_and_put, offset @option_unput_and_put$qiui
mov _option_initialized, 1
mov _option_input_allowed, 0
loc_B0A2:
cmp _key_det, INPUT_NONE
jnz short loc_B0AE
mov _option_input_allowed, 1
loc_B0AE:
cmp _option_input_allowed, 0
jz loc_B35B
test _key_det.lo, low INPUT_UP
jz short loc_B0C5
call @menu_sel_update_and_render$qcc pascal, 7, -1
loc_B0C5:
test _key_det.lo, low INPUT_DOWN
jz short loc_B0D3
call @menu_sel_update_and_render$qcc pascal, 7, 1
loc_B0D3:
test _key_det.hi, high INPUT_OK
jnz short loc_B0E3
test _key_det.lo, low INPUT_SHOT
jz loc_B16F
loc_B0E3:
mov al, _menu_sel
cbw
cmp ax, 6
jz short loc_B0F4
cmp ax, 7
jz short loc_B14F
jmp loc_B178
; ---------------------------------------------------------------------------
loc_B0F4:
les bx, _resident
mov es:[bx+resident_t.rank], RANK_NORMAL
mov es:[bx+resident_t.cfg_lives], CFG_LIVES_DEFAULT
mov es:[bx+resident_t.cfg_bombs], CFG_BOMBS_DEFAULT
mov es:[bx+resident_t.bgm_mode], SND_BGM_FM86
mov es:[bx+resident_t.se_mode], SND_SE_FM
mov es:[bx+resident_t.turbo_mode], 1
kajacall KAJA_SONG_STOP
les bx, _resident
mov al, es:[bx+resident_t.bgm_mode]
mov ah, 0
push ax
mov al, es:[bx+resident_t.se_mode]
mov ah, 0
push ax
call snd_determine_modes
call snd_load pascal, ds, offset aOp, SND_LOAD_SONG
kajacall KAJA_SONG_PLAY
mov _option_initialized, 0
jmp short loc_B16F
; ---------------------------------------------------------------------------
loc_B14F:
call _snd_se_reset
call snd_se_play pascal, 11
call _snd_se_update
mov _option_initialized, 0
mov _menu_sel, 4
mov _in_option, 0
loc_B16F:
test _key_det.lo, low INPUT_RIGHT
jz loc_B250
loc_B178:
mov al, _menu_sel
cbw
mov bx, ax
cmp bx, 5
ja loc_B246
add bx, bx
jmp cs:off_B36B[bx]
loc_B18C:
les bx, _resident
inc es:[bx+resident_t.rank]
cmp es:[bx+resident_t.rank], RANK_LUNATIC
jbe loc_B246
mov es:[bx+resident_t.rank], RANK_EASY
jmp loc_B246
; ---------------------------------------------------------------------------
loc_B1A5:
les bx, _resident
inc es:[bx+resident_t.cfg_lives]
cmp es:[bx+resident_t.cfg_lives], CFG_LIVES_MAX
jbe loc_B246
mov es:[bx+resident_t.cfg_lives], 1
jmp loc_B246
; ---------------------------------------------------------------------------
loc_B1BE:
les bx, _resident
inc es:[bx+resident_t.cfg_bombs]
cmp es:[bx+resident_t.cfg_bombs], CFG_BOMBS_MAX
jbe short loc_B246
mov es:[bx+resident_t.cfg_bombs], 0
jmp short loc_B246
; ---------------------------------------------------------------------------
loc_B1D4:
les bx, _resident
inc es:[bx+resident_t.bgm_mode]
cmp es:[bx+resident_t.bgm_mode], SND_BGM_MODE_COUNT
jb short loc_B1E8
mov es:[bx+resident_t.bgm_mode], SND_BGM_OFF
loc_B1E8:
kajacall KAJA_SONG_STOP
les bx, _resident
mov al, es:[bx+resident_t.bgm_mode]
mov ah, 0
push ax
mov al, es:[bx+resident_t.se_mode]
mov ah, 0
push ax
call snd_determine_modes
call snd_load pascal, ds, offset aOp, SND_LOAD_SONG
kajacall KAJA_SONG_PLAY
jmp short loc_B246
; ---------------------------------------------------------------------------
loc_B21C:
les bx, _resident
cmp es:[bx+resident_t.se_mode], SND_SE_OFF
jnz short loc_B22E
mov es:[bx+resident_t.se_mode], SND_SE_BEEP
jmp short loc_B246
; ---------------------------------------------------------------------------
loc_B22E:
les bx, _resident
dec es:[bx+resident_t.se_mode]
jmp short loc_B246
; ---------------------------------------------------------------------------
loc_B238:
les bx, _resident
mov al, 1
sub al, es:[bx+resident_t.turbo_mode]
mov es:[bx+resident_t.turbo_mode], al
loc_B246:
mov al, _menu_sel
cbw
call @option_unput_and_put$qiui pascal, ax, 8
loc_B250:
test _key_det.lo, low INPUT_LEFT
jz loc_B339
mov al, _menu_sel
cbw
mov bx, ax
cmp bx, 5
ja loc_B32F
add bx, bx
jmp cs:off_B35F[bx]
loc_B26D:
les bx, _resident
cmp es:[bx+resident_t.rank], RANK_EASY
jnz short loc_B27D
mov es:[bx+resident_t.rank], RANK_EXTRA
loc_B27D:
les bx, _resident
dec es:[bx+resident_t.rank]
jmp loc_B32F
; ---------------------------------------------------------------------------
loc_B288:
les bx, _resident
cmp es:[bx+resident_t.cfg_lives], 1
jnz short loc_B298
mov es:[bx+resident_t.cfg_lives], (CFG_LIVES_MAX + 1)
loc_B298:
les bx, _resident
dec es:[bx+resident_t.cfg_lives]
jmp loc_B32F
; ---------------------------------------------------------------------------
loc_B2A3:
les bx, _resident
cmp es:[bx+resident_t.cfg_bombs], 0
jnz short loc_B2B3
mov es:[bx+resident_t.cfg_bombs], (CFG_BOMBS_MAX + 1)
loc_B2B3:
les bx, _resident
dec es:[bx+resident_t.cfg_bombs]
jmp short loc_B32F
; ---------------------------------------------------------------------------
loc_B2BD:
les bx, _resident
cmp es:[bx+resident_t.bgm_mode], SND_BGM_OFF
jnz short loc_B2CF
mov es:[bx+resident_t.bgm_mode], SND_BGM_FM86
jmp short loc_B2D7
; ---------------------------------------------------------------------------
loc_B2CF:
les bx, _resident
dec es:[bx+resident_t.bgm_mode]
loc_B2D7:
kajacall KAJA_SONG_STOP
les bx, _resident
mov al, es:[bx+resident_t.bgm_mode]
mov ah, 0
push ax
mov al, es:[bx+resident_t.se_mode]
mov ah, 0
push ax
call snd_determine_modes
call snd_load pascal, ds, offset aOp, SND_LOAD_SONG
kajacall KAJA_SONG_PLAY
jmp short loc_B32F
; ---------------------------------------------------------------------------
loc_B30B:
les bx, _resident
inc es:[bx+resident_t.se_mode]
cmp es:[bx+resident_t.se_mode], SND_SE_MODE_COUNT
jb short loc_B32F
mov es:[bx+resident_t.se_mode], SND_SE_OFF
jmp short loc_B32F
; ---------------------------------------------------------------------------
loc_B321:
les bx, _resident
mov al, 1
sub al, es:[bx+resident_t.turbo_mode]
mov es:[bx+resident_t.turbo_mode], al
loc_B32F:
mov al, _menu_sel
cbw
call @option_unput_and_put$qiui pascal, ax, 8
loc_B339:
test _key_det.hi, high INPUT_CANCEL
jz short loc_B34F
mov _option_initialized, 0
mov _menu_sel, 4
mov _in_option, 0
loc_B34F:
cmp _key_det, INPUT_NONE
jz short loc_B35B
mov _option_input_allowed, 0
loc_B35B:
pop si
pop bp
retn
option_update_and_render endp
; ---------------------------------------------------------------------------
db 0
off_B35F dw offset loc_B26D
dw offset loc_B288
dw offset loc_B2A3
dw offset loc_B2BD
dw offset loc_B30B
dw offset loc_B321
off_B36B dw offset loc_B18C
dw offset loc_B1A5
dw offset loc_B1BE
dw offset loc_B1D4
dw offset loc_B21C
dw offset loc_B238
; =============== 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
push si
xor si, si
call text_clear
call respal_create
mov _mem_assign_paras, MEM_ASSIGN_PARAS_OP
call @game_init_op$qnxuc c, offset aMSzlEd_dat, ds
or ax, ax
jz short loc_B3AB
push ds
push offset asc_F7F7 ; "\n<>󂫃<EFBFBD><F382AB83><EFBFBD><EFBFBD><EFBFBD><EFBFBD>s<EFBFBD><73><EFBFBD>ł<EFBFBD><C582>B<EFBFBD><42><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>󂫂𑝂₵"...
call dos_puts2
call _getch
loc_B3AB:
call gaiji_backup
push ds
push offset aGameft_bft ; "GAMEFT.bft"
call gaiji_entry_bfnt
call @cfg_load$qv
les bx, _resident
cmp es:[bx+resident_t.rank], RANK_SHOW_SETUP_MENU
jnz short loc_B3D3
call _setup_menu
les bx, _resident
mov es:[bx+resident_t.rank], RANK_NORMAL
loc_B3D3:
les bx, _resident
mov al, es:[bx+resident_t.bgm_mode]
mov ah, 0
push ax
mov al, es:[bx+resident_t.se_mode]
mov ah, 0
push ax
call snd_determine_modes
call snd_load pascal, ds, offset aMiko, SND_LOAD_SE
les bx, _resident
cmp es:[bx+resident_t.zunsoft_shown], 0
jnz short loc_B40D
call _zunsoft
les bx, _resident
mov es:[bx+resident_t.zunsoft_shown], 1
loc_B40D:
les bx, _resident
cmp es:[bx+resident_t.demo_num], 0
jnz short loc_B420
kajacall KAJA_SONG_STOP
loc_B420:
call _op_animate
call _cleardata_and_regist_view_sprite
call _main_cdg_load
mov _in_option, 0
mov _quit, 0
mov _menu_sel, 0
jmp short loc_B47B
; ---------------------------------------------------------------------------
loc_B43A:
call far ptr _input_reset_sense
mov al, _in_option
cbw
or ax, ax
jz short loc_B44E
cmp ax, 1
jz short loc_B45C
jmp short loc_B45F
; ---------------------------------------------------------------------------
loc_B44E:
call @main_update_and_render$qv
cmp si, 640
jl short loc_B45F
call _start_demo
jmp short loc_B45F
; ---------------------------------------------------------------------------
loc_B45C:
call option_update_and_render
loc_B45F:
cmp _key_det, INPUT_NONE
jnz short loc_B469
inc si
jmp short loc_B46B
; ---------------------------------------------------------------------------
loc_B469:
xor si, si
loc_B46B:
les bx, _resident
inc es:[bx+resident_t.rand]
push 1
call frame_delay
loc_B47B:
cmp _quit, 0
jz short loc_B43A
call _main_cdg_free
call @cfg_save_exit$qv
call gaiji_restore
call text_clear
call @game_exit_to_dos$qv
call respal_free
pop si
pop bp
retf
_main endp
include th04/setup.asm
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_B794 proc near
var_2 = word ptr -2
enter 2, 0
mov _window_tiles.x, (448 / WINDOW_TILE_W)
call window_singleline pascal, (96 shl 16) or 80
call graph_putsa_fx pascal, (112 shl 16) or 88, V_WHITE, ds, offset aSETUP_BGM_HEAD
mov _window_tiles.x, (160 / WINDOW_TILE_W)
mov _window_tiles.y, 1 + 3
call window_dropdown_animate pascal, ( 32 shl 16) or 128
mov [bp+var_2], 0
jmp short loc_B7EB
; ---------------------------------------------------------------------------
loc_B7D4:
push [bp+var_2]
cmp [bp+var_2], 2
jnz short loc_B7E2
mov ax, V_WHITE
jmp short loc_B7E4
; ---------------------------------------------------------------------------
loc_B7E2:
xor ax, ax
loc_B7E4:
push ax
call setup_bgm_choice_put
inc [bp+var_2]
loc_B7EB:
cmp [bp+var_2], 3
jl short loc_B7D4
mov _window_tiles.x, (400 / WINDOW_TILE_W)
mov _window_tiles.y, 1 + 9
call window_dropdown_animate pascal, (192 shl 16) or 128
call setup_bgm_help_put
mov [bp+var_2], 2
loc_B80E:
call input_wait_for_change pascal, 0
push 1
call frame_delay
test _key_det.hi, high INPUT_OK
jnz short loc_B87A
test _key_det.lo, low INPUT_SHOT
jnz short loc_B87A
test _key_det.lo, low INPUT_UP
jz short loc_B851
call setup_bgm_choice_put pascal, [bp+var_2], 0
cmp [bp+var_2], 2
jnz short loc_B846
mov [bp+var_2], 0
jmp short loc_B849
; ---------------------------------------------------------------------------
loc_B846:
inc [bp+var_2]
loc_B849:
call setup_bgm_choice_put pascal, [bp+var_2], V_WHITE
loc_B851:
test _key_det.lo, low INPUT_DOWN
jz short loc_B80E
call setup_bgm_choice_put pascal, [bp+var_2], 0
cmp [bp+var_2], 0
jnz short loc_B86D
mov [bp+var_2], 2
jmp short loc_B870
; ---------------------------------------------------------------------------
loc_B86D:
dec [bp+var_2]
loc_B870:
call setup_bgm_choice_put pascal, [bp+var_2], V_WHITE
jmp short loc_B80E
; ---------------------------------------------------------------------------
loc_B87A:
mov _window_tiles.x, (400 / WINDOW_TILE_W)
mov _window_tiles.y, 1 + 9
call window_rollup_animate pascal, (192 shl 16) or 128
mov _window_tiles.x, (160 / WINDOW_TILE_W)
mov _window_tiles.y, 1 + 3
call window_rollup_animate pascal, ( 32 shl 16) or 128
les bx, _resident
mov al, byte ptr [bp+var_2]
mov es:[bx+resident_t.bgm_mode], al
leave
retn
sub_B794 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_B8B1 proc near
var_2 = word ptr -2
enter 2, 0
mov _window_tiles.x, (448 / WINDOW_TILE_W)
call window_singleline pascal, (96 shl 16) or 80
call graph_putsa_fx pascal, (112 shl 16) or 88, V_WHITE, ds, offset aSETUP_SE_HEAD
mov _window_tiles.x, (160 / WINDOW_TILE_W)
mov _window_tiles.y, 1 + 3
call window_dropdown_animate pascal, ( 32 shl 16) or 128
mov [bp+var_2], 0
jmp short loc_B908
; ---------------------------------------------------------------------------
loc_B8F1:
push [bp+var_2]
cmp [bp+var_2], 1
jnz short loc_B8FF
mov ax, V_WHITE
jmp short loc_B901
; ---------------------------------------------------------------------------
loc_B8FF:
xor ax, ax
loc_B901:
push ax
call setup_se_choice_put
inc [bp+var_2]
loc_B908:
cmp [bp+var_2], 3
jl short loc_B8F1
mov _window_tiles.x, (400 / WINDOW_TILE_W)
mov _window_tiles.y, 1 + 9
call window_dropdown_animate pascal, (192 shl 16) or 128
call setup_se_help_put
mov [bp+var_2], 1
loc_B92B:
call input_wait_for_change pascal, 0
push 1
call frame_delay
test _key_det.hi, high INPUT_OK
jnz short loc_B997
test _key_det.lo, low INPUT_SHOT
jnz short loc_B997
test _key_det.lo, low INPUT_DOWN
jz short loc_B96E
call setup_se_choice_put pascal, [bp+var_2], 0
cmp [bp+var_2], 2
jnz short loc_B963
mov [bp+var_2], 0
jmp short loc_B966
; ---------------------------------------------------------------------------
loc_B963:
inc [bp+var_2]
loc_B966:
call setup_se_choice_put pascal, [bp+var_2], V_WHITE
loc_B96E:
test _key_det.lo, low INPUT_UP
jz short loc_B92B
call setup_se_choice_put pascal, [bp+var_2], 0
cmp [bp+var_2], 0
jnz short loc_B98A
mov [bp+var_2], 2
jmp short loc_B98D
; ---------------------------------------------------------------------------
loc_B98A:
dec [bp+var_2]
loc_B98D:
call setup_se_choice_put pascal, [bp+var_2], V_WHITE
jmp short loc_B92B
; ---------------------------------------------------------------------------
loc_B997:
mov _window_tiles.x, (400 / WINDOW_TILE_W)
mov _window_tiles.y, 1 + 9
call window_rollup_animate pascal, (192 shl 16) or 128
mov _window_tiles.x, (160 / WINDOW_TILE_W)
mov _window_tiles.y, 1 + 3
call window_rollup_animate pascal, ( 32 shl 16) or 128
les bx, _resident
mov al, byte ptr [bp+var_2]
mov es:[bx+resident_t.se_mode], al
leave
retn
sub_B8B1 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
public _setup_menu
_setup_menu proc near
push bp
mov bp, sp
mov PaletteTone, 0
call far ptr palette_show
call super_entry_bfnt pascal, ds, offset aMswin_bft ; "mswin.bft"
graph_accesspage 1
call pi_load pascal, 0, ds, offset aMs_pi
call pi_palette_apply pascal, 0
call pi_put_8 pascal, large 0, 0
freePISlotLarge 0
call graph_copy_page pascal, 0
push 1
call palette_black_in
call sub_B794
push 1
call frame_delay
call graph_copy_page pascal, 0
call sub_B8B1
push 1
call palette_black_out
call super_free
pop bp
retn
_setup_menu endp
include th04/zunsoft.asm
; =============== 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, 8
push ax
mov al, [bp+@@color]
mov ah, 0
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, 8
push ax
mov al, [bp+@@color]
mov ah, 0
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_BF5E
; ---------------------------------------------------------------------------
loc_BF49:
push si
mov al, [bp+@@sel]
mov ah, 0
cmp ax, si
jnz short loc_BF57
mov al, 3
jmp short loc_BF59
; ---------------------------------------------------------------------------
loc_BF57:
mov al, 5
loc_BF59:
push ax
call draw_track
inc si
loc_BF5E:
cmp si, 18h
jl short loc_BF49
pop si
pop bp
retn 2
draw_tracks endp
include th02/op/music.asm
include th02/op/music_cmt_load.asm
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
public DRAW_CMT_LINES
draw_cmt_lines proc near
push bp
mov bp, sp
push si
call graph_putsa_fx pascal, (320 shl 16) or 64, 7, ds, offset _music_cmt
mov si, 1
jmp short loc_C306
; ---------------------------------------------------------------------------
loc_C2DE:
mov bx, si
imul bx, MUSIC_CMT_LINE_LEN
cmp _music_cmt[bx], ';'
jz short loc_C305
push 320
lea ax, [si+4]
shl ax, 4
push ax
push 7
push ds
mov ax, si
imul ax, MUSIC_CMT_LINE_LEN
add ax, offset _music_cmt
push ax
call graph_putsa_fx
loc_C305:
inc si
loc_C306:
cmp si, MUSIC_CMT_LINE_COUNT
jl short loc_C2DE
pop si
pop bp
retn
draw_cmt_lines endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_C30E proc near
push bp
mov bp, sp
push si
mov si, FX_MASK
jmp short loc_C328
; ---------------------------------------------------------------------------
loc_C317:
mov _graph_putsa_fx_func, si
call draw_cmt_lines
call music_flip
call draw_cmt_lines
call music_flip
inc si
loc_C328:
cmp si, FX_MASK_END
jl short loc_C317
mov _graph_putsa_fx_func, FX_WEIGHT_BOLD
call draw_cmt_lines
call music_flip
call draw_cmt_lines
pop si
pop bp
retn
sub_C30E endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_C33F proc near
push bp
mov bp, sp
mov _graph_putsa_fx_func, FX_WEIGHT_BOLD
call bgimage_put_rect pascal, (320 shl 16) or 64, (320 shl 16) or 320
call music_flip
call bgimage_put_rect pascal, (320 shl 16) or 64, (320 shl 16) or 320
pop bp
retn
sub_C33F endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
public DRAW_CMT
draw_cmt proc near
@@track = word ptr 4
push bp
mov bp, sp
cmp byte_12DBE, 0
jz short loc_C37C
call sub_C33F
loc_C37C:
call music_cmt_load pascal, [bp+@@track]
call screen_back_B_put
call bgimage_put_rect pascal, (320 shl 16) or 64, (320 shl 16) or 320
cmp byte_12DBE, 0
jz short loc_C3A2
call sub_C30E
jmp short loc_C3B0
; ---------------------------------------------------------------------------
loc_C3A2:
mov byte_12DBE, 1
call draw_cmt_lines
call music_flip
call draw_cmt_lines
loc_C3B0:
call screen_back_B_put
pop bp
retn 2
draw_cmt endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
public _musicroom
_musicroom proc near
push bp
mov bp, sp
mov byte_12DBE, 0
call cdg_free_all
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_load pascal, 0, ds, offset aMusic_pi
call pi_palette_apply pascal, 0
call pi_put_8 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
call _bgimage_snap
graph_accesspage 1
graph_showpage 0
call screen_back_B_snap
mov al, music_track_playing
mov ah, 0
call draw_cmt pascal, ax
mov PaletteTone, 100
call far ptr palette_show
loc_C454:
call far ptr _input_reset_sense
cmp _key_det, INPUT_NONE
jz short loc_C465
call music_flip
jmp short loc_C454
; ---------------------------------------------------------------------------
loc_C465:
call far ptr _input_reset_sense
test _key_det.lo, low INPUT_UP
jz short loc_C4A0
call draw_track pascal, word ptr _music_sel, 5
cmp _music_sel, 0
jbe short loc_C487
dec _music_sel
jmp short loc_C48C
; ---------------------------------------------------------------------------
loc_C487:
mov _music_sel, 17h
loc_C48C:
cmp _music_sel, 16h
jnz short loc_C497
dec _music_sel
loc_C497:
call draw_track pascal, word ptr _music_sel, 3
loc_C4A0:
test _key_det.lo, low INPUT_DOWN
jz short loc_C4D6
call draw_track pascal, word ptr _music_sel, 5
cmp _music_sel, 17h
jnb short loc_C4BD
inc _music_sel
jmp short loc_C4C2
; ---------------------------------------------------------------------------
loc_C4BD:
mov _music_sel, 0
loc_C4C2:
cmp _music_sel, 16h
jnz short loc_C4CD
inc _music_sel
loc_C4CD:
call draw_track pascal, word ptr _music_sel, 3
loc_C4D6:
test _key_det.lo, low INPUT_SHOT
jnz short loc_C4E4
test _key_det.hi, high INPUT_OK
jz short loc_C51D
loc_C4E4:
cmp _music_sel, 17h
jz short loc_C533
kajacall KAJA_SONG_FADE, 32
mov al, _music_sel
mov music_track_playing, al
mov ah, 0
call draw_cmt pascal, ax
mov al, _music_sel
mov ah, 0
shl ax, 2
mov bx, ax
call snd_load pascal, dword ptr _MUSIC_FILES[bx], SND_LOAD_SONG
kajacall KAJA_SONG_PLAY
loc_C51D:
test _key_det.hi, high INPUT_CANCEL
jnz short loc_C533
cmp _key_det, INPUT_NONE
jnz loc_C454
call music_flip
jmp loc_C465
; ---------------------------------------------------------------------------
loc_C533:
call far ptr _input_reset_sense
cmp _key_det, INPUT_NONE
jz short loc_C544
call music_flip
jmp short loc_C533
; ---------------------------------------------------------------------------
loc_C544:
kajacall KAJA_SONG_FADE, 16
call screen_back_B_free
graph_showpage 0
graph_accesspage al
push 1
call palette_black_out
call _bgimage_free
call snd_load pascal, ds, offset aOp_2, SND_LOAD_SONG
kajacall KAJA_SONG_PLAY
pop bp
retn
_musicroom endp
include th04/formats/scoredat_decode_both.asm
include th04/formats/scoredat_encode.asm
include th04/formats/scoredat_recreate.asm
include th04/formats/scoredat_load_both.asm
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_C79E proc near
var_4 = word ptr -4
var_2 = word ptr -2
arg_0 = word ptr 4
arg_2 = word ptr 6
enter 4, 0
push si
push di
mov di, [bp+arg_2]
mov si, [bp+arg_0]
mov [bp+var_4], 16
mov bx, si
shl bx, 3
mov al, _hi_reimu.score.g_score[bx][SCORE_DIGITS - 1]
mov ah, 0
add ax, -gb_0_
cmp ax, 10
jl short loc_C7E0
push 140
push di
mov bx, si
shl bx, 3
mov al, _hi_reimu.score.g_score[bx][SCORE_DIGITS - 1]
mov ah, 0
add ax, -gb_0_
mov bx, 10
cwd
idiv bx
push ax
call super_put
loc_C7E0:
mov bx, si
shl bx, 3
mov al, _hi_marisa.score.g_score[bx][SCORE_DIGITS - 1]
mov ah, 0
add ax, -gb_0_
cmp ax, 10
jl short loc_C811
push 448
push di
mov bx, si
shl bx, 3
mov al, _hi_marisa.score.g_score[bx][SCORE_DIGITS - 1]
mov ah, 0
add ax, -gb_0_
mov bx, 10
cwd
idiv bx
push ax
call super_put
loc_C811:
push 156
push di
mov bx, si
shl bx, 3
mov al, _hi_reimu.score.g_score[bx][SCORE_DIGITS - 1]
mov ah, 0
add ax, -gb_0_
mov bx, 10
cwd
idiv bx
push dx
call super_put
push 464
push di
mov bx, si
shl bx, 3
mov al, _hi_marisa.score.g_score[bx][SCORE_DIGITS - 1]
mov ah, 0
add ax, -gb_0_
mov bx, 10
cwd
idiv bx
push dx
call super_put
mov [bp+var_2], 6
jmp short loc_C899
; ---------------------------------------------------------------------------
loc_C854:
mov ax, [bp+var_4]
add ax, 156
push ax
push di
mov bx, si
shl bx, 3
add bx, [bp+var_2]
mov al, _hi_reimu.score.g_score[bx]
mov ah, 0
add ax, -gb_0_
push ax
call super_put
mov ax, [bp+var_4]
add ax, 464
push ax
push di
mov bx, si
shl bx, 3
add bx, [bp+var_2]
mov al, _hi_marisa.score.g_score[bx]
mov ah, 0
add ax, -gb_0_
push ax
call super_put
dec [bp+var_2]
add [bp+var_4], 16
loc_C899:
cmp [bp+var_2], 0
jge short loc_C854
pop di
pop si
leave
retn 4
sub_C79E endp
include th04/hiscore/hiscore_stage_put.asm
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_C8F5 proc near
arg_0 = word ptr 4
push bp
mov bp, sp
push si
push di
mov si, [bp+arg_0]
or si, si
jnz loc_C989
push (10 shl 16) or 98
push GAIJI_W
mov ax, si
imul ax, (SCOREDAT_NAME_LEN + 1)
add ax, offset _hi_reimu.score.g_name
push ds
push ax
push 14
call graph_gaiji_puts
push (8 shl 16) or 96
push GAIJI_W
mov ax, si
imul ax, (SCOREDAT_NAME_LEN + 1)
add ax, offset _hi_reimu.score.g_name
push ds
push ax
push 7
call graph_gaiji_puts
push (322 shl 16) or 98
push GAIJI_W
mov ax, si
imul ax, (SCOREDAT_NAME_LEN + 1)
add ax, offset _hi_marisa.score.g_name
push ds
push ax
push 14
call graph_gaiji_puts
push (320 shl 16) or 96
push GAIJI_W
mov ax, si
imul ax, (SCOREDAT_NAME_LEN + 1)
add ax, offset _hi_marisa.score.g_name
push ds
push ax
push 7
call graph_gaiji_puts
push 600000h
call sub_C79E
push (292 shl 16) or 96
mov al, _hi_reimu.score.g_stage[si]
mov ah, 0
push ax
call hiscore_stage_put
push (600 shl 16) or 96
jmp loc_CA0A
; ---------------------------------------------------------------------------
loc_C989:
mov ax, si
shl ax, 4
add ax, 112
mov di, ax
push 10
add ax, 2
push ax
push GAIJI_W
mov ax, si
imul ax, (SCOREDAT_NAME_LEN + 1)
add ax, offset _hi_reimu.score.g_name
push ds
push ax
push 14
call graph_gaiji_puts
push 8
push di
push GAIJI_W
mov ax, si
imul ax, (SCOREDAT_NAME_LEN + 1)
add ax, offset _hi_reimu.score.g_name
push ds
push ax
push 2
call graph_gaiji_puts
push 322
lea ax, [di+2]
push ax
push GAIJI_W
mov ax, si
imul ax, (SCOREDAT_NAME_LEN + 1)
add ax, offset _hi_marisa.score.g_name
push ds
push ax
push 14
call graph_gaiji_puts
push 320
push di
push GAIJI_W
mov ax, si
imul ax, (SCOREDAT_NAME_LEN + 1)
add ax, offset _hi_marisa.score.g_name
push ds
push ax
push 2
call graph_gaiji_puts
push di
push si
call sub_C79E
push 292
push di
mov al, _hi_reimu.score.g_stage[si]
mov ah, 0
push ax
call hiscore_stage_put
push 600
push di
loc_CA0A:
mov al, _hi_marisa.score.g_stage[si]
mov ah, 0
push ax
call hiscore_stage_put
pop di
pop si
pop bp
retn 2
sub_C8F5 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
public _score_render
_score_render proc near
push bp
mov bp, sp
push si
graph_accesspage 1
call pi_palette_apply pascal, 0
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
push 0
call sub_C8F5
mov si, 1
jmp short loc_CA5B
; ---------------------------------------------------------------------------
loc_CA56:
push si
call sub_C8F5
inc si
loc_CA5B:
cmp si, 9
jl short loc_CA56
push 9
call sub_C8F5
push (496 shl 16) or 376
mov al, _rank
mov ah, 0
add ax, ax
add ax, 10
push ax
call super_put
push (560 shl 16) or 376
mov al, _rank
mov ah, 0
add ax, ax
add ax, 11
push ax
call super_put
pop si
pop bp
retn
_score_render endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
public _regist_view_menu
_regist_view_menu proc near
push bp
mov bp, sp
kajacall KAJA_SONG_STOP
call snd_load pascal, ds, offset aName, SND_LOAD_SONG
kajacall KAJA_SONG_PLAY
kajacall KAJA_SONG_FADE, -128
push 1
call palette_black_out
les bx, _resident
assume es:nothing
mov al, es:[bx+resident_t.rank]
mov _rank, al
call _scoredat_load_both
call pi_load pascal, 0, ds, offset aHi01_pi
loc_CADA:
call _score_render
push 1
call palette_black_in
loc_CAE4:
call far ptr _input_reset_sense
push 1
call frame_delay
test _key_det.hi, high INPUT_OK
jnz short loc_CB58
test _key_det.lo, low INPUT_SHOT
jnz short loc_CB58
test _key_det.hi, high INPUT_CANCEL
jnz short loc_CB58
test _key_det.hi, high INPUT_OK
jnz short loc_CB58
test _key_det.lo, low INPUT_LEFT
jz short loc_CB36
cmp _rank, RANK_EASY
jz short loc_CB36
dec _rank
mov PaletteTone, 0
call far ptr palette_show
call _scoredat_load_both
call _score_render
push 1
call palette_black_in
loc_CB36:
test _key_det.lo, low INPUT_RIGHT
jz short loc_CAE4
cmp _rank, RANK_EXTRA
jnb short loc_CAE4
inc _rank
mov PaletteTone, 0
call far ptr palette_show
call _scoredat_load_both
jmp short loc_CADA
; ---------------------------------------------------------------------------
loc_CB58:
kajacall KAJA_SONG_FADE, 1
push 1
call palette_black_out
freePISlotLarge 0
graph_accesspage 1
call pi_load pascal, 0, ds, offset aOp1_pi_0
call pi_palette_apply pascal, 0
call pi_put_8 pascal, large 0, 0
freePISlotLarge 0
call graph_copy_page pascal, 0
push 1
call palette_black_in
loc_CBB3:
call far ptr _input_reset_sense
push 1
call frame_delay
cmp _key_det, INPUT_NONE
jnz short loc_CBB3
kajacall KAJA_SONG_STOP
call snd_load pascal, ds, offset aOp_0, SND_LOAD_SONG
kajacall KAJA_SONG_PLAY
pop bp
retn
_regist_view_menu endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
public _cleardata_and_regist_view_sprite
_cleardata_and_regist_view_sprite proc near
push bp
mov bp, sp
mov _rank, RANK_EASY
jmp loc_CC6F
; ---------------------------------------------------------------------------
loc_CBEE:
call _scoredat_load_both
or al, al
jnz loc_CC78
mov al, _rank
mov ah, 0
mov dl, _hi_reimu.score.cleared
mov bx, ax
mov _cleared_with_reimu[bx], dl
mov al, _rank
mov ah, 0
mov dl, _hi_marisa.score.cleared
mov bx, ax
mov _cleared_with_marisa[bx], dl
mov al, _rank
mov ah, 0
mov bx, ax
cmp _cleared_with_reimu[bx], SCOREDAT_CLEARED_BOTH
jbe short loc_CC2F
mov al, _rank
mov ah, 0
mov bx, ax
mov _cleared_with_reimu[bx], 0
loc_CC2F:
mov al, _rank
mov ah, 0
mov bx, ax
cmp _cleared_with_marisa[bx], SCOREDAT_CLEARED_BOTH
jbe short loc_CC49
mov al, _rank
mov ah, 0
mov bx, ax
mov _cleared_with_marisa[bx], 0
loc_CC49:
cmp _rank, RANK_EASY
jz short loc_CC6B
mov al, _rank
mov ah, 0
mov bx, ax
mov al, _cleared_with_reimu[bx]
mov dl, _rank
mov dh, 0
mov bx, dx
or al, _cleared_with_marisa[bx]
or _extra_unlocked, al
loc_CC6B:
inc _rank
loc_CC6F:
cmp _rank, RANK_COUNT
jb loc_CBEE
loc_CC78:
les bx, _resident
mov al, es:[bx+resident_t.rank]
mov _rank, al
call super_entry_bfnt pascal, ds, offset aScnum_bft ; "scnum.bft"
call super_entry_bfnt pascal, ds, offset aHi_m_bft ; "hi_m.bft"
pop bp
retn
_cleardata_and_regist_view_sprite endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
public _main_cdg_load
_main_cdg_load proc near
push bp
mov bp, sp
call cdg_load_all pascal, CDG_NUMERAL, ds, offset aSft1_cd2
call cdg_load_all pascal, CDG_MAIN, ds, offset aSft2_cd2
call cdg_load_all pascal, CDG_CURSOR, ds, offset aCar_cd2
call cdg_load_all_noalpha pascal, 40, ds, offset aSl_cd2
pop bp
retn
_main_cdg_load endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
public _main_cdg_free
_main_cdg_free proc near
push bp
mov bp, sp
call cdg_free_all
pop bp
retn
_main_cdg_free endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
public _op_animate
_op_animate proc near
@@page = byte ptr -4
var_3 = byte ptr -3
@@component = word ptr -2
enter 4, 0
push si
push di
mov PaletteTone, 0
call far ptr palette_show
graph_accesspage 1
call grcg_setcolor pascal, (GC_RMW shl 16) + V_WHITE
call grcg_byteboxfill_x pascal, large 0, (((RES_X - 1) / 8) shl 16) or (RES_Y - 1)
GRCG_OFF_CLOBBERING dx
call graph_copy_page pascal, 0
call pi_load pascal, 0, ds, offset aOp5b_pi
call pi_load pascal, 1, ds, offset aOp4b_pi
call pi_load pascal, 2, ds, offset aOp3b_pi
call pi_load pascal, 3, ds, offset aOp2b_pi
call pi_load pascal, 4, ds, offset aOp1b_pi
call pi_load pascal, 5, ds, offset aOp0b_pi
call pi_palette_apply pascal, 0
push 4
call palette_black_in
graph_showpage 0
graph_accesspage 1
xor si, si
mov [bp+var_3], 0
mov di, 100
mov [bp+@@page], 0
jmp short loc_CDC4
; ---------------------------------------------------------------------------
loc_CD7A:
mov ax, si
mov bx, 4
cwd
idiv bx
or dx, dx
jnz short loc_CDB0
cmp [bp+var_3], 6
jnb short loc_CDB0
pushd 38
mov al, [bp+var_3]
mov ah, 0
push ax
call pi_put_8
inc [bp+var_3]
graph_accesspage [bp+@@page]
mov al, 1
sub al, [bp+@@page]
mov [bp+@@page], al
graph_showpage al
loc_CDB0:
mov PaletteTone, di
call far ptr palette_show
add di, 2
push 1
call frame_delay
inc si
loc_CDC4:
cmp si, 1Ch
jl short loc_CD7A
mov PaletteTone, 200
call far ptr palette_show
graph_showpage 0
graph_accesspage al
freePISlotLarge 0
freePISlotLarge 1
freePISlotLarge 2
freePISlotLarge 3
freePISlotLarge 4
freePISlotLarge 5
les bx, _resident
cmp es:[bx+resident_t.demo_num], 0
jnz short loc_CE50
call snd_load pascal, ds, offset aOp_1, SND_LOAD_SONG
kajacall KAJA_SONG_PLAY
loc_CE50:
graph_accesspage 1
call pi_load pascal, 0, ds, offset aOp1_pi_1
call pi_palette_apply pascal, 0
call pi_put_8 pascal, large 0, 0
freePISlotLarge 0
call graph_copy_page pascal, 0
xor si, si
jmp short loc_CEAA
; ---------------------------------------------------------------------------
loc_CE8B:
mov bx, si
imul bx, size rgb_t
mov Palettes[bx].r, 255
mov bx, si
imul bx, size rgb_t
mov Palettes[bx].g, 255
mov bx, si
imul bx, size rgb_t
mov Palettes[bx].b, 255
inc si
loc_CEAA:
cmp si, COLOR_COUNT
jl short loc_CE8B
call far ptr palette_show
mov PaletteTone, 100
call far ptr palette_show
xor si, si
mov [bp+var_3], 240
jmp short loc_CEE8
; ---------------------------------------------------------------------------
loc_CEC7:
mov al, [bp+var_3]
mov Palettes[0 * size rgb_t].r, al
mov Palettes[0 * size rgb_t].g, al
mov Palettes[0 * size rgb_t].b, al
call far ptr palette_show
push 1
call frame_delay
inc si
mov al, [bp+var_3]
add al, -16
mov [bp+var_3], al
loc_CEE8:
cmp si, 15
jl short loc_CEC7
xor si, si
mov [bp+var_3], 252
jmp short loc_CF4E
; ---------------------------------------------------------------------------
loc_CEF5:
mov di, 1
jmp short loc_CF34
; ---------------------------------------------------------------------------
loc_CEFA:
mov [bp+@@component], 0
jmp short loc_CF2D
; ---------------------------------------------------------------------------
loc_CF01:
mov bx, di
imul bx, size rgb_t
add bx, [bp+@@component]
mov al, _pi_headers._palette[bx]
mov bx, di
imul bx, size rgb_t
add bx, [bp+@@component]
cmp al, Palettes[bx].r
jnb short loc_CF2A
mov bx, di
imul bx, size rgb_t
add bx, [bp+@@component]
mov al, [bp+var_3]
mov Palettes[bx].r, al
loc_CF2A:
inc [bp+@@component]
loc_CF2D:
cmp [bp+@@component], size rgb_t
jl short loc_CF01
inc di
loc_CF34:
cmp di, COLOR_COUNT
jl short loc_CEFA
call far ptr palette_show
push 1
call frame_delay
inc si
mov al, [bp+var_3]
add al, -4
mov [bp+var_3], al
loc_CF4E:
cmp si, 63
jl short loc_CEF5
call pi_palette_apply pascal, 0
pop di
pop si
leave
retn
_op_animate endp
_playchar_menu procdesc near
op_01_TEXT ends
; ===========================================================================
SHARED segment word public 'CODE' use16
extern FRAME_DELAY:proc
extern PI_PALETTE_APPLY:proc
extern PI_PUT_8:proc
extern PI_LOAD:proc
extern INPUT_WAIT_FOR_CHANGE:proc
extern @POLAR$QIII:proc
extern SND_KAJA_INTERRUPT:proc
extern SND_DETERMINE_MODES:proc
extern SND_DELAY_UNTIL_MEASURE:proc
extern @game_exit_to_dos$qv:proc
extern SND_LOAD:proc
SHARED ends
SHARED_ segment word public 'CODE' use16
assume cs:g_SHARED
assume es:nothing, ss:nothing, ds:_DATA, fs:nothing, gs:nothing
include th04/hardware/grppsafx.asm
extern @game_exit$qv:proc
extern @game_init_op$qnxuc:proc
extern _input_reset_sense:proc
extern _input_sense:proc
extern _snd_se_reset:proc
extern SND_SE_PLAY:proc
extern _snd_se_update:proc
extern @EGC_COPY_RECT_1_TO_0_16$QIIII:proc
extern _bgimage_snap:proc
extern _bgimage_put:proc
extern _bgimage_free:proc
extern BGIMAGE_PUT_RECT:proc
extern CDG_LOAD_ALL_NOALPHA:proc
extern CDG_LOAD_ALL:proc
extern CDG_FREE_ALL:proc
extern FRAME_DELAY_2:proc
SHARED_ ends
.data
extern _menu_sel:byte
extern _quit:byte
public _MENU_DESC
_MENU_DESC label dword
dd aGqbGav ; "<22>Q<EFBFBD>[<5B><><EFBFBD><EFBFBD><EFBFBD>J<EFBFBD>n<EFBFBD><6E><EFBFBD>܂<EFBFBD>"
dd aGgglgxgggigxge ; "<22>G<EFBFBD>L<EFBFBD>X<EFBFBD>g<EFBFBD><67><EFBFBD>X<EFBFBD>e<EFBFBD>[<5B>W<EFBFBD><57><EFBFBD>J<EFBFBD>n<EFBFBD><6E><EFBFBD>܂<EFBFBD>"
dd aMNVGngcgxgrgav ; "<22><><EFBFBD>݂̃n<CC83>C<EFBFBD>X<EFBFBD>R<EFBFBD>A<EFBFBD><41><EFBFBD>\\<5C><><EFBFBD><EFBFBD><EFBFBD>܂<EFBFBD>"
dd aIKyoVU ; "<22><><EFBFBD>y<EFBFBD><79><EFBFBD>ɓ<EFBFBD><C993><EFBFBD><EFBFBD>܂<EFBFBD>"
dd aKeoarTsv ; "<22>e<EFBFBD><65><EFBFBD>ݒ<EFBFBD><DD92><EFBFBD><EFBFBD>ύX<CF8D>o<EFBFBD><6F><EFBFBD>܂<EFBFBD>"
dd aVcvnvrvCVsvV ; "<22>c<EFBFBD>n<EFBFBD>r<EFBFBD>ɖ߂<C996><DF82>܂<EFBFBD>"
dd aUqiUxv ; "<22><><EFBFBD>Փx<D593><78><EFBFBD><EFBFBD><E282B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>܂<EFBFBD><DC82>@<40>i<EFBFBD><69><EFBFBD>S<EFBFBD>Ҍ<EFBFBD><D28C><EFBFBD><EFBFBD>A<EFBFBD>E...
dd aUqiUxv_1 ; "<22><><EFBFBD>Փx<D593><78><EFBFBD>W<EFBFBD><57><EFBFBD>ɂ<EFBFBD><C982>܂<EFBFBD><DC82>@<40>@<40>@<40>i<EFBFBD><69><EFBFBD>ʌ<EFBFBD><CA8C><EFBFBD><EFBFBD>A<EFBFBD>E...
dd aUqiUxv_0 ; "<22><><EFBFBD>Փx<D593><78><EFBFBD><EFBFBD><EF82B5><EFBFBD><EFBFBD><EFBFBD>܂<EFBFBD><DC82>@<40>@<40>@<40>i<EFBFBD>A<EFBFBD>[<5B>P<EFBFBD>[<5B>_<EFBFBD>E...
dd aUqiUxv_2 ; "<22><><EFBFBD>Փx<D593><78><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɓ<C993><EF82B5><EFBFBD><EFBFBD><EFBFBD>܂<EFBFBD><DC82>@<40>i<EFBFBD>V<EFBFBD><56><EFBFBD>[<5B>^<5E>E...
dd aGqbGagxgBGgouv ; "<22>Q<EFBFBD>[<5B><><EFBFBD>X<EFBFBD>^<5E>[<5B>g<EFBFBD><67><EFBFBD>̐l<CC90><6C><EFBFBD><EFBFBD><EFBFBD>ύX<CF8D>o<EFBFBD><6F><EFBFBD>܂<EFBFBD><DC82>i<EFBFBD>E...
dd aGGavOgcpi ; "<22>{<7B><><EFBFBD>̎g<CC8E>p<EFBFBD>񐔂<EFBFBD><F1909482>ύX<CF8D>o<EFBFBD><6F><EFBFBD>܂<EFBFBD><DC82>i<EFBFBD><69><EFBFBD><EFBFBD><EFBFBD>G<EFBFBD>L<EFBFBD>E...
dd aVavfvlvCmvVVV ; "<22>a<EFBFBD>f<EFBFBD>l<EFBFBD>͗<EFBFBD><CD97><EFBFBD><EFBFBD>܂<EFBFBD><DC82><EFBFBD>"
dd aVavfvlvVqvuvji ; "<22>a<EFBFBD>f<EFBFBD>l<EFBFBD>ɂQ<C982>U<EFBFBD>j<EFBFBD><6A><EFBFBD><EFBFBD><EFBFBD>݊<EFBFBD><DD8A><EFBFBD><EFBFBD>g<EFBFBD>p<EFBFBD><70><EFBFBD>܂<EFBFBD>"
dd aVavfvlvVwvuiMM ; "<22>a<EFBFBD>f<EFBFBD>l<EFBFBD>ɂW<C982>U<EFBFBD><55><EFBFBD><EFBFBD><EFBFBD>݊<EFBFBD><DD8A><EFBFBD><EFBFBD>g<EFBFBD>p<EFBFBD><70><EFBFBD>܂<EFBFBD>"
dd aM_0 ; "<22><><EFBFBD>ʉ<EFBFBD><CA89>͗<EFBFBD><CD97><EFBFBD><EFBFBD>܂<EFBFBD><DC82><EFBFBD>"
dd aM_2 ; "<22><><EFBFBD>ʉ<EFBFBD><CA89>ɂe<C982>l<EFBFBD><6C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>g<EFBFBD>p<EFBFBD><70><EFBFBD>܂<EFBFBD>"
dd aM_1 ; "<22><><EFBFBD>ʉ<EFBFBD><CA89>ɂa<C982><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>g<EFBFBD>p<EFBFBD><70><EFBFBD>܂<EFBFBD>"
dd aUgtevSVvpPkvBa ; "<22>G<EFBFBD>e<EFBFBD>̑<EFBFBD><CC91><EFBFBD><EFBFBD><EFBFBD>ŁA<C581><EFBFBD>Ə<EFBFBD><C68F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>i<EFBFBD>X<EFBFBD><58><EFBFBD>E...
dd aPicacovV ; "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>}<7D>V<EFBFBD><56><EFBFBD>̃X<CC83>s<EFBFBD>[<5B>h<EFBFBD>ɔC<C994><43><EFBFBD>܂<EFBFBD><DC82>i<EFBFBD>E...
dd aVVGigvgvgzguv ; "<22><><EFBFBD>̃I<CC83>v<EFBFBD>V<EFBFBD><56><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>S<EFBFBD>ĕW<C495><57><EFBFBD>ɖ߂<C996><DF82>܂<EFBFBD>"
dd aGigvgvgzguv ; "<22>I<EFBFBD>v<EFBFBD>V<EFBFBD><56><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>I<EFBFBD><49><EFBFBD><EFBFBD><EFBFBD>܂<EFBFBD>"
dd aGqbGav_0 ; "<22>Q<EFBFBD>[<5B><><EFBFBD><EFBFBD><EFBFBD>J<EFBFBD>n<EFBFBD><6E><EFBFBD>܂<EFBFBD><DC82>i<EFBFBD>C<EFBFBD>[<5B>W<EFBFBD>[<5B>j"
dd aGqbGav_1 ; "<22>Q<EFBFBD>[<5B><><EFBFBD><EFBFBD><EFBFBD>J<EFBFBD>n<EFBFBD><6E><EFBFBD>܂<EFBFBD><DC82>i<EFBFBD>m<EFBFBD>[<5B>}<7D><><EFBFBD>j"
dd aGqbGav_2 ; "<22>Q<EFBFBD>[<5B><><EFBFBD><EFBFBD><EFBFBD>J<EFBFBD>n<EFBFBD><6E><EFBFBD>܂<EFBFBD><DC82>i<EFBFBD>n<EFBFBD>[<5B>h<EFBFBD>j"
dd aGqbGav_3 ; "<22>Q<EFBFBD>[<5B><><EFBFBD><EFBFBD><EFBFBD>J<EFBFBD>n<EFBFBD><6E><EFBFBD>܂<EFBFBD><DC82>i<EFBFBD><69><EFBFBD>i<EFBFBD>e<EFBFBD>B<EFBFBD>b<EFBFBD>N<EFBFBD>j"
public _main_menu_initialized
_main_menu_initialized db 0
_option_initialized db 0
public _CFG_FN, _aMAIN, _aDEB
_CFG_FN db 'MIKO.CFG',0
_aMAIN db 'main',0
_aDEB db 'deb',0
aGqbGav db '<27>Q<EFBFBD>[<5B><><EFBFBD><EFBFBD><EFBFBD>J<EFBFBD>n<EFBFBD><6E><EFBFBD>܂<EFBFBD>',0
aGgglgxgggigxge db '<27>G<EFBFBD>L<EFBFBD>X<EFBFBD>g<EFBFBD><67><EFBFBD>X<EFBFBD>e<EFBFBD>[<5B>W<EFBFBD><57><EFBFBD>J<EFBFBD>n<EFBFBD><6E><EFBFBD>܂<EFBFBD>',0
aMNVGngcgxgrgav db '<27><><EFBFBD>݂̃n<CC83>C<EFBFBD>X<EFBFBD>R<EFBFBD>A<EFBFBD><41><EFBFBD>\<5C><><EFBFBD><EFBFBD><EFBFBD>܂<EFBFBD>',0
aIKyoVU db '<27><><EFBFBD>y<EFBFBD><79><EFBFBD>ɓ<EFBFBD><C993><EFBFBD><EFBFBD>܂<EFBFBD>',0
aKeoarTsv db '<27>e<EFBFBD><65><EFBFBD>ݒ<EFBFBD><DD92><EFBFBD><EFBFBD>ύX<CF8D>o<EFBFBD><6F><EFBFBD>܂<EFBFBD>',0
aVcvnvrvCVsvV db '<27>c<EFBFBD>n<EFBFBD>r<EFBFBD>ɖ߂<C996><DF82>܂<EFBFBD>',0
aUqiUxv db '<27><><EFBFBD>Փx<D593><78><EFBFBD><EFBFBD><E282B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>܂<EFBFBD><DC82>@<40>i<EFBFBD><69><EFBFBD>S<EFBFBD>Ҍ<EFBFBD><D28C><EFBFBD><EFBFBD>A<EFBFBD>T<EFBFBD>ʃG<CA83><47><EFBFBD>h<EFBFBD>j',0
aUqiUxv_1 db '<27><><EFBFBD>Փx<D593><78><EFBFBD>W<EFBFBD><57><EFBFBD>ɂ<EFBFBD><C982>܂<EFBFBD><DC82>@<40>@<40>@<40>i<EFBFBD><69><EFBFBD>ʌ<EFBFBD><CA8C><EFBFBD><EFBFBD>A<EFBFBD>S<EFBFBD>U<EFBFBD>ʁj<CA81>@<40>@',0
aUqiUxv_0 db '<27><><EFBFBD>Փx<D593><78><EFBFBD><EFBFBD><EF82B5><EFBFBD><EFBFBD><EFBFBD>܂<EFBFBD><DC82>@<40>@<40>@<40>i<EFBFBD>A<EFBFBD>[<5B>P<EFBFBD>[<5B>_<EFBFBD>[<5B><><EFBFBD><EFBFBD><EFBFBD>j<EFBFBD>@<40>@',0
aUqiUxv_2 db '<27><><EFBFBD>Փx<D593><78><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɓ<C993><EF82B5><EFBFBD><EFBFBD><EFBFBD>܂<EFBFBD><DC82>@<40>i<EFBFBD>V<EFBFBD><56><EFBFBD>[<5B>^<5E>[<5B><><EFBFBD><EFBFBD><EFBFBD>j<EFBFBD>@<40>@',0
aGqbGagxgBGgouv db '<27>Q<EFBFBD>[<5B><><EFBFBD>X<EFBFBD>^<5E>[<5B>g<EFBFBD><67><EFBFBD>̐l<CC90><6C><EFBFBD><EFBFBD><EFBFBD>ύX<CF8D>o<EFBFBD><6F><EFBFBD>܂<EFBFBD><DC82>i<EFBFBD><69><EFBFBD><EFBFBD><EFBFBD>G<EFBFBD>L<EFBFBD>X<EFBFBD>g<EFBFBD><67><EFBFBD>j',0
aGGavOgcpi db '<27>{<7B><><EFBFBD>̎g<CC8E>p<EFBFBD>񐔂<EFBFBD><F1909482>ύX<CF8D>o<EFBFBD><6F><EFBFBD>܂<EFBFBD><DC82>i<EFBFBD><69><EFBFBD><EFBFBD><EFBFBD>G<EFBFBD>L<EFBFBD>X<EFBFBD>g<EFBFBD><67><EFBFBD>j',0
aVavfvlvCmvVVV db '<27>a<EFBFBD>f<EFBFBD>l<EFBFBD>͗<EFBFBD><CD97><EFBFBD><EFBFBD>܂<EFBFBD><DC82><EFBFBD>',0
aVavfvlvVqvuvji db '<27>a<EFBFBD>f<EFBFBD>l<EFBFBD>ɂQ<C982>U<EFBFBD>j<EFBFBD><6A><EFBFBD><EFBFBD><EFBFBD>݊<EFBFBD><DD8A><EFBFBD><EFBFBD>g<EFBFBD>p<EFBFBD><70><EFBFBD>܂<EFBFBD>',0
aVavfvlvVwvuiMM db '<27>a<EFBFBD>f<EFBFBD>l<EFBFBD>ɂW<C982>U<EFBFBD><55><EFBFBD><EFBFBD><EFBFBD>݊<EFBFBD><DD8A><EFBFBD><EFBFBD>g<EFBFBD>p<EFBFBD><70><EFBFBD>܂<EFBFBD>',0
aM_0 db '<27><><EFBFBD>ʉ<EFBFBD><CA89>͗<EFBFBD><CD97><EFBFBD><EFBFBD>܂<EFBFBD><DC82><EFBFBD>',0
aM_2 db '<27><><EFBFBD>ʉ<EFBFBD><CA89>ɂe<C982>l<EFBFBD><6C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>g<EFBFBD>p<EFBFBD><70><EFBFBD>܂<EFBFBD>',0
aM_1 db '<27><><EFBFBD>ʉ<EFBFBD><CA89>ɂa<C982><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>g<EFBFBD>p<EFBFBD><70><EFBFBD>܂<EFBFBD>',0
aUgtevSVvpPkvBa db '<27>G<EFBFBD>e<EFBFBD>̑<EFBFBD><CC91><EFBFBD><EFBFBD><EFBFBD>ŁA<C581><EFBFBD>Ə<EFBFBD><C68F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>i<EFBFBD>X<EFBFBD><58><EFBFBD>[<5B>j<EFBFBD><6A><EFBFBD><EFBFBD><EFBFBD>܂<EFBFBD><DC82>i<EFBFBD><69><EFBFBD>S<EFBFBD>җp<D297>j',0
aPicacovV db '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>}<7D>V<EFBFBD><56><EFBFBD>̃X<CC83>s<EFBFBD>[<5B>h<EFBFBD>ɔC<C994><43><EFBFBD>܂<EFBFBD><DC82>i<EFBFBD>W<EFBFBD><57><EFBFBD>j',0
aVVGigvgvgzguv db '<27><><EFBFBD>̃I<CC83>v<EFBFBD>V<EFBFBD><56><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>S<EFBFBD>ĕW<C495><57><EFBFBD>ɖ߂<C996><DF82>܂<EFBFBD>',0
aGigvgvgzguv db '<27>I<EFBFBD>v<EFBFBD>V<EFBFBD><56><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>I<EFBFBD><49><EFBFBD><EFBFBD><EFBFBD>܂<EFBFBD>',0
aGqbGav_0 db '<27>Q<EFBFBD>[<5B><><EFBFBD><EFBFBD><EFBFBD>J<EFBFBD>n<EFBFBD><6E><EFBFBD>܂<EFBFBD><DC82>i<EFBFBD>C<EFBFBD>[<5B>W<EFBFBD>[<5B>j',0
aGqbGav_1 db '<27>Q<EFBFBD>[<5B><><EFBFBD><EFBFBD><EFBFBD>J<EFBFBD>n<EFBFBD><6E><EFBFBD>܂<EFBFBD><DC82>i<EFBFBD>m<EFBFBD>[<5B>}<7D><><EFBFBD>j',0
aGqbGav_2 db '<27>Q<EFBFBD>[<5B><><EFBFBD><EFBFBD><EFBFBD>J<EFBFBD>n<EFBFBD><6E><EFBFBD>܂<EFBFBD><DC82>i<EFBFBD>n<EFBFBD>[<5B>h<EFBFBD>j',0
aGqbGav_3 db '<27>Q<EFBFBD>[<5B><><EFBFBD><EFBFBD><EFBFBD>J<EFBFBD>n<EFBFBD><6E><EFBFBD>܂<EFBFBD><DC82>i<EFBFBD><69><EFBFBD>i<EFBFBD>e<EFBFBD>B<EFBFBD>b<EFBFBD>N<EFBFBD>j',0
public _MENU_MAIN_BG_FN
_MENU_MAIN_BG_FN db 'op1.pi',0
aOp db 'op',0
aMSzlEd_dat db '<27><><EFBFBD>z<EFBFBD><7A>ed.dat',0
asc_F7F7 db 0Ah
db '<27>󂫃<EFBFBD><F382AB83><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>',0Ah,0
aGameft_bft db 'GAMEFT.bft',0
aMiko db 'miko',0
include libs/master.lib/atrtcmod[data].asm
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/get_machine_98[data].asm
include libs/master.lib/get_machine_at[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/machine[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
include libs/master.lib/respal_exist[data].asm
include libs/master.lib/draw_trapezoid[data].asm
include th02/formats/pfopen[data].asm
include libs/master.lib/bgm_timerhook[data].asm
include libs/master.lib/bgm[data].asm
include th04/snd/se_priority[data].asm
include th04/snd/snd[data].asm
db 0
include th04/snd/load[data].asm
include th04/hardware/grppsafx[data].asm
include th03/snd/se_state[data].asm
include th04/hardware/bgimage[data].asm
include th03/formats/cdg[data].asm
include th04/setup[data].asm
include th04/zunsoft[data].asm
public _MUSIC_TITLES
_MUSIC_TITLES label dword
dd aNo_1MSzlBLotus ; "No.1 <20><><EFBFBD>z<EFBFBD><7A> <20>` Lotus Land Story"
dd aNo_2WitchingDr ; "No.2 Witching Dream "
dd aNo_3SeleneSLig ; "No.3 Selene's light "
dd aNo_4Sxp ; "No.4 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@<40>` Decoration Battle"
dd aNo_5BreakTheSa ; "No.5 Break the Sabbath "
dd aNo_6NglLBScarl ; "No.6 <20>g<EFBFBD><67><EFBFBD><EFBFBD> <20>` Scarlet Phoneme "
dd aNo_7BadApple ; "No.7 Bad Apple!! "
dd aNo_8CRab@bPerd ; "No.8 <20><><EFBFBD><EFBFBD><EFBFBD>@<40>` Perdition crisis "
dd aNo_9GagkgxgGgg ; "No.9 <20>A<EFBFBD><41><EFBFBD>X<EFBFBD>}<7D>G<EFBFBD>X<EFBFBD>e<EFBFBD><65> "
dd aNo_10Pnpcuyszl ; "No.10 <20><><EFBFBD><EFBFBD><EFBFBD>Y<EFBFBD>z<EFBFBD>ȁ@<40>` Capriccio "
dd aNo_11RpvKab@bC ; "No.11 <20><><EFBFBD>̊<EFBFBD><CC8A>@<40>` Casket of Star "
dd aNo_12LotusLove ; "No.12 Lotus Love "
dd aNo_13CVVslXBSl ; "No.13 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>| <20>`Sleeping Terror"
dd aNo_14DreamLand ; "No.14 Dream Land "
dd aNo_15ChcB@bIna ; "No.15 <20>H<EFBFBD><48><EFBFBD>@<40>` Inanimate Dream "
dd aNo_16LVVVsv ; "No.16 <20>ւ<EFBFBD><D682><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȃ<EFBFBD><C882>V<EFBFBD>Y "
dd aNo_17GbgcghmSz ; "No.17 <20><><EFBFBD>C<EFBFBD>h<EFBFBD><68><EFBFBD>z<EFBFBD>@<40>` Icemilk Magic"
dd aNo_18Vivavvvvi ; "No.18 <20><><EFBFBD><EFBFBD><ED82A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@<40>` Innocence "
dd aNo_19Days ; "No.19 Days "
dd aNo_20Peaceful ; "No.20 Peaceful "
dd aNo_21ArcadianD ; "No.21 Arcadian Dream "
dd aNo_22MSzvPzrl ; "No.22 <20><><EFBFBD>z<EFBFBD>̏Z<CC8F>l "
dd asc_105B2 ; " "
dd aB@b@vpvxvivf ; " <20>@<40>@<40>p<EFBFBD><70><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "
public _MUSIC_FILES
_MUSIC_FILES label dword
dd aOp_2 ; "op"
dd aSt00 ; "st00"
dd aSt10 ; "st10"
dd aSt00b ; "st00b"
dd aSt01 ; "st01"
dd aSt01b ; "st01b"
dd aSt02 ; "st02"
dd aSt02b ; "st02b"
dd aSt03 ; "st03"
dd aSt03c ; "st03c"
dd aSt03b ; "st03b"
dd aSt04 ; "st04"
dd aSt04b ; "st04b"
dd aSt05 ; "st05"
dd aSt05b ; "st05b"
dd aSt06 ; "st06"
dd aSt06b ; "st06b"
dd aSt06c ; "st06c"
dd aEnd1 ; "end1"
dd aEnd2 ; "end2"
dd aStaff ; "staff"
dd aName_0 ; "name"
include th02/op/polygons[data].asm
music_track_playing db 0
aNo_1MSzlBLotus db 'No.1 <20><><EFBFBD>z<EFBFBD><7A> <20>` Lotus Land Story',0
aNo_2WitchingDr db 'No.2 Witching Dream ',0
aNo_3SeleneSLig db 'No.3 Selene',27h,'s light ',0
aNo_4Sxp db 'No.4 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@<40>` Decoration Battle',0
aNo_5BreakTheSa db 'No.5 Break the Sabbath ',0
aNo_6NglLBScarl db 'No.6 <20>g<EFBFBD><67><EFBFBD><EFBFBD> <20>` Scarlet Phoneme ',0
aNo_7BadApple db 'No.7 Bad Apple!! ',0
aNo_8CRab@bPerd db 'No.8 <20><><EFBFBD><EFBFBD><EFBFBD>@<40>` Perdition crisis ',0
aNo_9GagkgxgGgg db 'No.9 <20>A<EFBFBD><41><EFBFBD>X<EFBFBD>}<7D>G<EFBFBD>X<EFBFBD>e<EFBFBD><65> ',0
aNo_10Pnpcuyszl db 'No.10 <20><><EFBFBD><EFBFBD><EFBFBD>Y<EFBFBD>z<EFBFBD>ȁ@<40>` Capriccio ',0
aNo_11RpvKab@bC db 'No.11 <20><><EFBFBD>̊<EFBFBD><CC8A>@<40>` Casket of Star ',0
aNo_12LotusLove db 'No.12 Lotus Love ',0
aNo_13CVVslXBSl db 'No.13 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>| <20>`Sleeping Terror',0
aNo_14DreamLand db 'No.14 Dream Land ',0
aNo_15ChcB@bIna db 'No.15 <20>H<EFBFBD><48><EFBFBD>@<40>` Inanimate Dream ',0
aNo_16LVVVsv db 'No.16 <20>ւ<EFBFBD><D682><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȃ<EFBFBD><C882>V<EFBFBD>Y ',0
aNo_17GbgcghmSz db 'No.17 <20><><EFBFBD>C<EFBFBD>h<EFBFBD><68><EFBFBD>z<EFBFBD>@<40>` Icemilk Magic',0
aNo_18Vivavvvvi db 'No.18 <20><><EFBFBD><EFBFBD><ED82A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@<40>` Innocence ',0
aNo_19Days db 'No.19 Days ',0
aNo_20Peaceful db 'No.20 Peaceful ',0
aNo_21ArcadianD db 'No.21 Arcadian Dream ',0
aNo_22MSzvPzrl db 'No.22 <20><><EFBFBD>z<EFBFBD>̏Z<CC8F>l ',0
asc_105B2 db ' ',0
aB@b@vpvxvivf db ' <20>@<40>@<40>p<EFBFBD><70><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ',0
aOp_2 db 'op',0
aSt00 db 'st00',0
aSt10 db 'st10',0
aSt00b db 'st00b',0
aSt01 db 'st01',0
aSt01b db 'st01b',0
aSt02 db 'st02',0
aSt02b db 'st02b',0
aSt03 db 'st03',0
aSt03c db 'st03c',0
aSt03b db 'st03b',0
aSt04 db 'st04',0
aSt04b db 'st04b',0
aSt05 db 'st05',0
aSt05b db 'st05b',0
aSt06 db 'st06',0
aSt06b db 'st06b',0
aSt06c db 'st06c',0
aEnd1 db 'end1',0
aEnd2 db 'end2',0
aStaff db 'staff',0
aName_0 db 'name',0
include th04/op/music_cmt_load[data].asm
aMusic_pi db 'music.pi',0
aGensou_scr db 'GENSOU.SCR',0
aName db 'name',0
aHi01_pi db 'hi01.pi',0
aOp1_pi_0 db 'op1.pi',0
aOp_0 db 'op',0
aScnum_bft db 'scnum.bft',0
aHi_m_bft db 'hi_m.bft',0
db 0
aSft1_cd2 db 'sft1.cd2',0
aSft2_cd2 db 'sft2.cd2',0
aCar_cd2 db 'car.cd2',0
aSl_cd2 db 'sl.cd2',0
aOp5b_pi db 'op5b.pi',0
aOp4b_pi db 'op4b.pi',0
aOp3b_pi db 'op3b.pi',0
aOp2b_pi db 'op2b.pi',0
aOp1b_pi db 'op1b.pi',0
aOp0b_pi db 'op0b.pi',0
aOp_1 db 'op',0
aOp1_pi_1 db 'op1.pi',0
.data?
extern _resident:dword
extern _in_option:byte
extern _menu_unput_and_put:word
_option_input_allowed = byte ptr $-1 ; place in padding area of previous segment
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 libs/master.lib/super_put_rect[bss].asm
include th01/hardware/vram_planes[bss].asm
include libs/master.lib/pfint21[bss].asm
include th02/formats/pi_slots[bss].asm
include th03/formats/hfliplut[bss].asm
include th04/snd/interrupt[bss].asm
include libs/master.lib/bgm[bss].asm
include th02/snd/load[bss].asm
include th04/mem[bss].asm
include th04/hardware/input[bss].asm
include th04/hardware/egcrect[bss].asm
include th04/formats/cdg[bss].asm
include th04/setup[bss].asm
include th04/zunsoft[bss].asm
db 56 dup(?)
include th02/op/music[bss].asm
byte_12DBE db ?
db ? ;
include th03/op/cmt_back[bss].asm
include th02/op/music_cmt[bss].asm
include th04/formats/scoredat_op[bss].asm
_rank db ?
public _cleared_with, _extra_unlocked
_cleared_with label byte
_cleared_with_reimu db RANK_COUNT dup (?)
_cleared_with_marisa db RANK_COUNT dup (?)
_extra_unlocked db ?
db 49 dup(?)
end