ReC98/th03_mainl.asm

4633 lines
93 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 : CE44AA7A114237C6B3CD67EEA9C0225A
; File Name : th03/MAINL.EXE
; Format : MS-DOS executable (EXE)
; Base Address: 0h Range: 0h-10CF0h Loaded length: F72Ch
; Entry Point : 0:0
; OS type : MS DOS
; Application type: Executable 16bit
.386
.model use16 large _TEXT
include ReC98.inc
include th03/th03.inc
include th01/hardware/grppsafx.inc
include th03/sprites/regi.inc
include th03/formats/scoredat.inc
extern SCOPY@:proc
extern __ctype:byte
extern _execl:proc
extern _tolower:proc
group_01 group CFG_LRES_TEXT, mainl_01_TEXT, SCOREDAT_TEXT, REGIST_TEXT, mainl_03_TEXT
; ===========================================================================
; 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_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_filesize.asm
include libs/master.lib/dos_keyclear.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_size.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_setcolor.asm
include libs/master.lib/gdc_outpw.asm
db 0
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_gaiji_putc.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_scrollup.asm
include libs/master.lib/graph_show.asm
include libs/master.lib/iatan2.asm
include libs/master.lib/js_end.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/text_fillca.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/palette_white_out.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_set_palettes.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 th03/formats/pfopen.asm
include libs/master.lib/pf_str_ieq.asm
include libs/master.lib/graph_pack_put_8_noclip.asm
_TEXT ends
; ===========================================================================
CFG_LRES_TEXT segment byte public 'CODE' use16
_cfg_load_resident_ptr procdesc near
CFG_LRES_TEXT ends
; Segment type: Pure code
mainl_01_TEXT segment byte public 'CODE' use16
assume cs:group_01
;org 3
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
sub_9624 proc near
var_2 = byte ptr -2
var_1 = byte ptr -1
enter 2, 0
push ds
push offset aLogo0_rgb ; "logo0.rgb"
call palette_entry_rgb
call far ptr palette_show
call cdg_load_all_noalpha pascal, 0, ds, offset aLogo_cd2
call cdg_load_single pascal, 5, ds, offset aLogo5_cdg, 0
les bx, _resident
cmp es:[bx+resident_t.pid_winner], 0
jnz short loc_965E
mov al, _playchar_filename_id[0]
jmp short loc_9661
; ---------------------------------------------------------------------------
loc_965E:
mov al, _playchar_filename_id[1]
loc_9661:
mov [bp+var_1], al
les bx, _resident
cmp es:[bx+resident_t.pid_winner], 0
jnz short loc_969A
cmp es:[bx+resident_t.story_stage], 6
jnz short loc_967C
mov [bp+var_2], 9
jmp short loc_96B7
; ---------------------------------------------------------------------------
loc_967C:
les bx, _resident
cmp es:[bx+resident_t.story_stage], 7
jnz short loc_968D
mov [bp+var_2], 0Ah
jmp short loc_96B7
; ---------------------------------------------------------------------------
loc_968D:
les bx, _resident
cmp es:[bx+resident_t.pid_winner], 0
jnz short loc_96AA
jmp short loc_96A5
; ---------------------------------------------------------------------------
loc_969A:
les bx, _resident
cmp es:[bx+resident_t.pid_winner], 0
jnz short loc_96AA
loc_96A5:
mov al, _playchar_filename_id[1]
jmp short loc_96AD
; ---------------------------------------------------------------------------
loc_96AA:
mov al, _playchar_filename_id[0]
loc_96AD:
mov ah, 0
cwd
sub ax, dx
sar ax, 1
mov [bp+var_2], al
loc_96B7:
push 6
push ds
mov al, [bp+var_1]
mov ah, 0
cwd
sub ax, dx
mov bx, ax
sar bx, 1
add bx, bx
push word ptr [bx+90h]
mov al, [bp+var_1]
mov ah, 0
and ax, 1
push ax
call cdg_load_single_noalpha
mov al, [bp+var_1]
mov ah, 0
cwd
sub ax, dx
mov bx, ax
sar bx, 1
shl bx, 2
pushd dword ptr [bx+0A2h]
call file_ropen
mov al, [bp+var_2]
mov ah, 0
imul ax, 0B4h
cwde
push eax
push 0
call file_seek
push ds
push offset unk_F72C
push 3Ch ; '<'
call file_read
mov byte_F768, 0
push ds
push offset unk_F769
push 3Ch ; '<'
call file_read
mov byte_F7A5, 0
push ds
push offset unk_F7A6
push 3Ch ; '<'
call file_read
mov byte_F7E2, 0
call file_close
leave
retn
sub_9624 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_973E proc near
push bp
mov bp, sp
call graph_putsa_fx pascal, (80 shl 16) or 272, 2Fh, ds, offset unk_F72C
call graph_putsa_fx pascal, (80 shl 16) or 288, 2Fh, ds, offset unk_F769
call graph_putsa_fx pascal, (80 shl 16) or 304, 2Fh, ds, offset unk_F7A6
pop bp
retn
sub_973E endp
include th03/formats/cdg_free_all.asm
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_978D proc near
push bp
mov bp, sp
push si
graph_accesspage 1
call graph_clear
graph_accesspage 0
call graph_clear
graph_showpage 0
mov PaletteTone, 0
call far ptr palette_show
call graph_show
call cdg_put_noalpha_8 pascal, large (352 shl 16) or 300, 0
kajacall KAJA_SONG_PLAY
push 2
call palette_black_in
push 60010h
call snd_delay_until_measure
mov si, 1
jmp short loc_97FC
; ---------------------------------------------------------------------------
loc_97E8:
call cdg_put_noalpha_8 pascal, large (352 shl 16) or 300, si
push 6
call frame_delay
inc si
loc_97FC:
cmp si, 5
jl short loc_97E8
push 0A0040h
call snd_delay_until_measure
mov PaletteTone, 200
call far ptr palette_show
call cdg_put_noalpha_8 pascal, large (224 shl 16) or 64, 6
call cdg_put_noalpha_8 pascal, large (352 shl 16) or 300, 5
push ds
push offset aLogo1_rgb ; "logo1.rgb"
call palette_entry_rgb
call far ptr palette_show
call cdg_free_all
push 0B0004h
call snd_delay_until_measure
push 1
call palette_white_in
push 8
call frame_delay
call sub_973E
call sub_9887
or ax, ax
jnz short loc_9868
call sub_990C
loc_9868:
call input_mode_interface
cmp _input_sp, INPUT_NONE
jnz short loc_987D
push 1
call frame_delay
jmp short loc_9868
; ---------------------------------------------------------------------------
loc_987D:
push 1
call palette_black_out
pop si
pop bp
retn
sub_978D endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_9887 proc near
var_2 = word ptr -2
enter 2, 0
les bx, _resident
cmp es:[bx+resident_t.game_mode], GM_STORY
jnz short loc_98A1
les bx, _resident
cmp es:[bx+resident_t.pid_winner], 0
jz short loc_98A6
loc_98A1:
mov ax, 1
leave
retn
; ---------------------------------------------------------------------------
loc_98A6:
les bx, _resident
mov al, es:[bx+resident_t.story_stage]
mov ah, 0
add bx, ax
mov al, es:[bx+resident_t.story_opponents]
mov bx, word ptr _resident
mov es:[bx+resident_t.RESIDENT_playchar_paletted][1], al
cmp es:[bx+resident_t.story_stage], 7
jnz short loc_98CA
mov ax, 3
leave
retn
; ---------------------------------------------------------------------------
loc_98CA:
les bx, _resident
cmp es:[bx+resident_t.story_stage], 8
jnz short loc_98DA
mov ax, 4
leave
retn
; ---------------------------------------------------------------------------
loc_98DA:
les bx, _resident
cmp es:[bx+resident_t.story_stage], 9
jnz short loc_98EA
mov ax, 5
leave
retn
; ---------------------------------------------------------------------------
loc_98EA:
les bx, _resident
mov al, es:[bx+resident_t.RESIDENT_playchar_paletted][1]
mov ah, 0
dec ax
cwd
sub ax, dx
sar ax, 1
mov [bp+var_2], ax
cmp [bp+var_2], 7
jl short loc_9908
mov es:[bx+resident_t.RESIDENT_playchar_paletted][1], (1 + (PLAYCHAR_REIMU * 2))
loc_9908:
xor ax, ax
leave
retn
sub_9887 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_990C proc near
var_1 = byte ptr -1
enter 2, 0
graph_showpage 0
graph_accesspage 1
mov al, _playchar_filename_id[0]
mov [bp+var_1], al
push 0
push ds
mov ah, 0
cwd
sub ax, dx
mov bx, ax
sar bx, 1
add bx, bx
push word ptr [bx+90h]
mov al, [bp+var_1]
mov ah, 0
and ax, 1
push ax
call cdg_load_single
les bx, _resident
mov al, es:[bx+resident_t.RESIDENT_playchar_paletted][1]
add al, -1
mov [bp+var_1], al
push 1
push ds
mov ah, 0
cwd
sub ax, dx
mov bx, ax
sar bx, 1
add bx, bx
push word ptr [bx+90h]
mov al, [bp+var_1]
mov ah, 0
and ax, 1
push ax
call cdg_load_single
mov al, [bp+var_1]
mov ah, 0
cwd
sub ax, dx
sar ax, 1
mov [bp+var_1], al
mov byte_F7E5, 1
les bx, _resident
cmp es:[bx+resident_t.game_mode], GM_STORY
jz short loc_9997
mov bx, word_E504
mov al, [bx+4]
add al, 4
jmp short loc_99CB
; ---------------------------------------------------------------------------
loc_9997:
cmp [bp+var_1], 7
jnz short loc_99A8
mov bx, word_E504
mov al, [bx+4]
add al, 2
jmp short loc_99CB
; ---------------------------------------------------------------------------
loc_99A8:
cmp [bp+var_1], 8
jnz short loc_99B7
mov bx, word_E504
inc byte ptr [bx+4]
jmp short loc_99F1
; ---------------------------------------------------------------------------
loc_99B7:
les bx, _resident
cmp es:[bx+resident_t.story_stage], 6
jnz short loc_99D4
mov bx, word_E504
mov al, [bx+4]
add al, 3
loc_99CB:
mov bx, word_E504
mov [bx+4], al
jmp short loc_99F1
; ---------------------------------------------------------------------------
loc_99D4:
push 2
push ds
push word_E502
les bx, _resident
mov al, es:[bx+resident_t.story_stage]
mov ah, 0
inc ax
push ax
call cdg_load_single
mov byte_F7E5, 0
loc_99F1:
call pi_load pascal, 0, ds, offset aStnx0_pi
call pi_put_8 pascal, large 0, 0
freePISlotLarge 0
call pi_load pascal, 0, ds, word_E504
call pi_put_8 pascal, large 0, 0
leave
retn
sub_990C endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_9A2C proc near
var_4 = word ptr -4
var_2 = word ptr -2
enter 4, 0
push si
mov si, 3A3h
mov [bp+var_2], 3AAh
mov PaletteTone, 0
call far ptr palette_show
call pi_palette_apply pascal, 0
call graph_copy_page pascal, 0
freePISlotLarge 0
call cdg_put_8 pascal, large (96 shl 16) or 96, 0
call cdg_put_hflip_8 pascal, large (352 shl 16) or 96, 1
cmp byte_F7E5, 0
jnz short loc_9A8E
call cdg_put_8 pascal, large (384 shl 16) or 46, 2
loc_9A8E:
call cdg_free pascal, 0
call cdg_free pascal, 1
call cdg_free pascal, 2
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
add ax, ax
mov [bp+var_4], ax
push (80 shl 16) or 292
push (15 or FX_WEIGHT_BOLD)
mov bx, [bp+var_4]
shl bx, 2
pushd CHAR_TITLE[bx]
call graph_putsa_fx
push (128 shl 16) or 308
push (15 or FX_WEIGHT_BOLD)
mov bx, [bp+var_4]
shl bx, 2
pushd CHAR_NAME[bx]
call graph_putsa_fx
les bx, _resident
mov al, es:[bx+resident_t.RESIDENT_playchar_paletted][1]
mov ah, 0
dec ax
cwd
sub ax, dx
sar ax, 1
add ax, ax
mov [bp+var_4], ax
push (336 shl 16) or 292
push (15 or FX_WEIGHT_BOLD)
mov bx, [bp+var_4]
shl bx, 2
pushd CHAR_TITLE[bx]
call graph_putsa_fx
push (384 shl 16) or 308
push (15 or FX_WEIGHT_BOLD)
mov bx, [bp+var_4]
shl bx, 2
pushd CHAR_NAME[bx]
call graph_putsa_fx
push 1
call palette_black_in
mov vsync_Count1, 0
graph_accesspage 1
call graph_clear
push 0
call sub_9D20
push 1
call sub_9D20
call pi_load pascal, 0, ds, offset aEn2_pi
call pi_put_interlace_8 pascal, large 280, 0
freePISlotLarge 0
les bx, _resident
mov al, es:[bx+resident_t.RESIDENT_playchar_paletted][1]
mov ah, 0
dec ax
cwd
sub ax, dx
sar ax, 1
mov [bp+var_4], ax
mov bx, [bp+var_4]
cmp bx, 8
ja short loc_9BC2
add bx, bx
jmp cs:off_9C9F[bx]
loc_9B97:
push 0
push ds
push offset aEnemy00_pi ; "ENEMY00.pi"
jmp short loc_9BBD
; ---------------------------------------------------------------------------
loc_9B9F:
push 0
push ds
push offset aEnemy01_pi ; "ENEMY01.pi"
jmp short loc_9BBD
; ---------------------------------------------------------------------------
loc_9BA7:
push 0
push ds
push offset aEnemy02_pi ; "ENEMY02.pi"
jmp short loc_9BBD
; ---------------------------------------------------------------------------
loc_9BAF:
push 0
push ds
push offset aEnemy03_pi ; "ENEMY03.pi"
jmp short loc_9BBD
; ---------------------------------------------------------------------------
loc_9BB7:
push 0
push ds
push offset aEnemy04_pi ; "ENEMY04.pi"
loc_9BBD:
call pi_load
loc_9BC2:
call pi_put_interlace_8 pascal, large 304, 0
les bx, _resident
mov al, es:[bx+resident_t.RESIDENT_playchar_paletted][1]
mov ah, 0
dec ax
cwd
sub ax, dx
sar ax, 1
mov [bp+var_4], ax
cmp [bp+var_4], 0Ah
jl short loc_9BFB
mov bx, 10
cwd
idiv bx
add al, [si]
mov [si], al
mov ax, [bp+var_4]
cwd
idiv bx
mov [bp+var_4], dx
loc_9BFB:
mov al, [si+1]
add al, byte ptr [bp+var_4]
mov [si+1], al
kajacall KAJA_SONG_STOP
les bx, _resident
cmp es:[bx+resident_t.story_stage], 6
jz short loc_9C1E
push SND_LOAD_SONG
push ds
push si
jmp short loc_9C25
; ---------------------------------------------------------------------------
loc_9C1E:
push SND_LOAD_SONG
push ds
push [bp+var_2]
loc_9C25:
call _snd_load
add sp, 6
call _snd_load c, offset aYume_efc, ds, SND_LOAD_SE
mov _input_sp, INPUT_NONE
loc_9C42:
cmp vsync_Count1, 20h ; ' '
jbe short loc_9C42
jmp short loc_9C50
; ---------------------------------------------------------------------------
loc_9C4B:
call input_mode_interface
loc_9C50:
cmp vsync_Count1, 60h
ja short loc_9C5E
cmp _input_sp, INPUT_NONE
jz short loc_9C4B
loc_9C5E:
push 1
call palette_white_out
graph_accesspage 0
call graph_clear
push 1
call palette_white_in
call text_fillca pascal, (' ' shl 16) + TX_BLACK + TX_REVERSE
call pi_palette_apply pascal, 0
freePISlotLarge 0
call respal_set_palettes
pop si
leave
retn
sub_9A2C endp
; ---------------------------------------------------------------------------
off_9C9F dw offset loc_9B97
dw offset loc_9B97
dw offset loc_9B9F
dw offset loc_9BA7
dw offset loc_9B9F
dw offset loc_9BA7
dw offset loc_9B97
dw offset loc_9BAF
dw offset loc_9BB7
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_9CB1 proc near
arg_0 = dword ptr 4
arg_4 = word ptr 8
push bp
mov bp, sp
push si
mov si, [bp+arg_4]
call pi_load pascal, 0, large [bp+arg_0]
mov ax, si
imul ax, 320
call pi_put_interlace_8 pascal, ax, (200 shl 16)
freePISlotLarge 0
les bx, [bp+arg_0]
mov byte ptr es:[bx+2], 'e'
mov byte ptr es:[bx+3], 'x'
call pi_load pascal, 0, word ptr [bp+arg_0+2], bx
mov ax, si
imul ax, 320
call pi_put_interlace_8 pascal, ax, (208 shl 16)
freePISlotLarge 0
pop si
pop bp
retn 6
sub_9CB1 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_9D20 proc near
var_E = byte ptr -0Eh
var_D = byte ptr -0Dh
var_2 = word ptr -2
arg_0 = word ptr 4
enter 0Eh, 0
push si
push di
mov di, [bp+arg_0]
xor si, si
jmp short loc_9D35
; ---------------------------------------------------------------------------
loc_9D2D:
mov al, [si+116h]
mov [bp+si+var_E], al
inc si
loc_9D35:
cmp si, 0Ch
jl short loc_9D2D
les bx, _resident
add bx, di
mov al, es:[bx+resident_t.RESIDENT_playchar_paletted]
mov ah, 0
dec ax
mov [bp+var_2], ax
cmp [bp+var_2], 10
jl short loc_9D65
mov bx, 10
cwd
idiv bx
add al, [bp+var_E]
mov [bp+var_E], al
mov ax, [bp+var_2]
cwd
idiv bx
mov [bp+var_2], dx
loc_9D65:
mov al, [bp+var_D]
add al, byte ptr [bp+var_2]
mov [bp+var_D], al
push di
push ss
lea ax, [bp+var_E]
push ax
call sub_9CB1
pop di
pop si
leave
retn 2
sub_9D20 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
var_2 = byte ptr -2
var_1 = byte ptr -1
_argc = word ptr 6
_argv = dword ptr 8
_envp = dword ptr 0Ch
enter 2, 0
call _cfg_load_resident_ptr
or ax, ax
jz @@ret
call game_init_main pascal, ds, offset aCOul
call respal_exist
mov _snd_midi_active, 0
les bx, _resident
cmp es:[bx+resident_t.bgm_mode], SND_BGM_OFF
jz short loc_9DAD
call _snd_determine_mode
loc_9DAD:
call gaiji_backup
push ds
push offset aMikoft_bft ; "MIKOFT.bft"
call gaiji_entry_bfnt
call _snd_load c, offset aYume_efc, ds, SND_LOAD_SE
call _snd_se_reset
call _hflip_lut_generate
les bx, _resident
cmp es:[bx+resident_t.show_score_menu], 0
jz short loc_9E04
call sub_B7D2
call text_clear
call gaiji_restore
call _game_exit
pushd 0
push ds
push offset path ; "op"
push ds
push offset path ; "op"
call _execl
add sp, 0Ch
loc_9E04:
les bx, _resident
mov al, es:[bx+resident_t.RESIDENT_playchar_paletted][0]
add al, -1
mov _playchar_filename_id[0], al
mov al, es:[bx+resident_t.RESIDENT_playchar_paletted][1]
add al, -1
mov _playchar_filename_id[1], al
cmp es:[bx+resident_t.story_stage], 0
jz loc_9F85
cmp es:[bx+resident_t.game_mode], GM_STORY
jnz short loc_9E3F
call sub_9887
mov [bp+var_1], al
cmp [bp+var_1], 4
jz short loc_9E89
cmp [bp+var_1], 5
jnz short loc_9E3F
call sub_B972
loc_9E3F:
call _snd_load c, offset aWin_m, ds, SND_LOAD_SONG
call sub_9624
call sub_978D
kajacall KAJA_SONG_STOP
les bx, _resident
cmp es:[bx+resident_t.game_mode], GM_STORY
jnz loc_9F58
call sub_9887
mov [bp+var_1], al
cmp [bp+var_1], 0
jnz short loc_9E7B
loc_9E75:
call sub_9A2C
jmp loc_9F1E
; ---------------------------------------------------------------------------
loc_9E7B:
cmp [bp+var_1], 3
jz short loc_9E89
cmp [bp+var_1], 4
jnz loc_9F38
loc_9E89:
call cdg_free_all
freePISlotLarge 0
mov al, _playchar_filename_id[0]
mov ah, 0
cwd
sub ax, dx
sar ax, 1
mov [bp+var_2], al
cmp [bp+var_2], 10
jb short loc_9EDC
les bx, off_E4B6
mov al, es:[bx+1]
mov dl, [bp+var_2]
mov dh, 0
mov bx, 10
push ax
mov ax, dx
cwd
idiv bx
pop dx
add dl, al
mov bx, word ptr off_E4B6
mov es:[bx+1], dl
mov al, [bp+var_2]
mov ah, 0
mov bx, 10
cwd
idiv bx
mov [bp+var_2], dl
loc_9EDC:
les bx, off_E4B6
mov al, [bp+var_2]
add es:[bx+2], al
cmp [bp+var_1], 4
jnz short loc_9EF1
inc byte ptr es:[bx+5]
loc_9EF1:
graph_accesspage 0
graph_showpage al
call graph_clear
call graph_show
pushd [off_E4B6]
call sub_A12E
call sub_AC6E
call sub_A174
call sub_990C
call sub_9A2C
call gaiji_restore
loc_9F1E:
call _game_exit_from_mainl_to_main
pushd 0
push ds
push offset aMain ; "main"
push ds
push offset aMain ; "main"
loc_9F2E:
call _execl
add sp, 0Ch
leave
retf
; ---------------------------------------------------------------------------
loc_9F38:
call cdg_free_all
freePISlotLarge 0
call sub_B7D2
call sub_9F8D
or ax, ax
jnz short loc_9F85
call sub_B92E
jmp short loc_9F69
; ---------------------------------------------------------------------------
loc_9F58:
call cdg_free_all
freePISlotLarge 0
loc_9F69:
call text_clear
call gaiji_restore
call _game_exit
pushd 0
push ds
push offset path ; "op"
push ds
push offset path ; "op"
jmp short loc_9F2E
; ---------------------------------------------------------------------------
loc_9F85:
call sub_990C
jmp loc_9E75
; ---------------------------------------------------------------------------
@@ret:
leave
retf
_main endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_9F8D proc near
var_6 = dword ptr -6
var_2 = word ptr -2
enter 6, 0
push si
push di
mov si, 1
mov [bp+var_2], 0
mov word ptr [bp+var_6+2], ds
mov word ptr [bp+var_6], offset a0
xor di, di
jmp short loc_9FB3
; ---------------------------------------------------------------------------
loc_9FA7:
les bx, _resident
add bx, di
mov es:[bx+resident_t.score_last], 0
inc di
loc_9FB3:
cmp di, (PLAYER_COUNT * SCORE_DIGITS)
jl short loc_9FA7
les bx, _resident
cmp es:[bx+resident_t.rem_credits], 0
jnz short loc_9FC8
xor ax, ax
jmp loc_A12A
; ---------------------------------------------------------------------------
loc_9FC8:
call cdg_put_noalpha_8 pascal, large (192 shl 16) or 272, 0
call cdg_put_noalpha_8 pascal, large (352 shl 16) or 272, 3
les bx, _resident
mov al, es:[bx+resident_t.rem_credits]
les bx, [bp+var_6]
add al, es:[bx]
mov es:[bx], al
call graph_putsa_fx pascal, (576 shl 16) or 371, 2Fh, word ptr [bp+var_6+2], bx
push 1
call palette_black_in
loc_A00B:
call input_mode_interface
test _input_sp.lo, low INPUT_LEFT
jnz short loc_A01E
test _input_sp.lo, low INPUT_RIGHT
jz short loc_A056
loc_A01E:
cmp [bp+var_2], 0
jnz short loc_A05B
mov ax, 1
sub ax, si
mov si, ax
push (192 shl 16) or 272
add ax, ax
mov dx, 2
sub dx, ax
push dx
call cdg_put_noalpha_8
push (352 shl 16) or 272
mov ax, si
add ax, ax
inc ax
push ax
call cdg_put_noalpha_8
mov [bp+var_2], 1
jmp short loc_A05B
; ---------------------------------------------------------------------------
loc_A056:
mov [bp+var_2], 0
loc_A05B:
test _input_sp.hi, high INPUT_OK
jnz short loc_A069
test _input_sp.lo, low INPUT_SHOT
jz short loc_A0B0
loc_A069:
cmp si, 1
jnz short loc_A0C5
call grcg_setcolor pascal, (GC_RMW shl 16) + 0
call grcg_boxfill pascal, (576 shl 16) or 371, (592 shl 16) or 387
call grcg_off
les bx, _resident
dec es:[bx+resident_t.rem_credits]
les bx, [bp+var_6]
dec byte ptr es:[bx]
call graph_putsa_fx pascal, (576 shl 16) or 371, 2Fh, word ptr [bp+var_6+2], bx
jmp short loc_A0C5
; ---------------------------------------------------------------------------
loc_A0B0:
test _input_sp.hi, high INPUT_CANCEL
jz short loc_A0BB
xor si, si
jmp short loc_A0C5
; ---------------------------------------------------------------------------
loc_A0BB:
push 1
call frame_delay
jmp loc_A00B
; ---------------------------------------------------------------------------
loc_A0C5:
kajacall KAJA_SONG_FADE, 3
push 1
call palette_black_out
graph_accesspage 0
graph_showpage al
mov PaletteTone, 0
call far ptr palette_show
call pi_load pascal, 0, ds, offset aOver_pi
call pi_palette_apply pascal, 0
call pi_put_8 pascal, large 0, 0
freePISlotLarge 0
kajacall KAJA_SONG_STOP
les bx, _resident
dec es:[bx+resident_t.story_stage]
mov es:[bx+resident_t.story_lives], CREDIT_LIVES
mov ax, si
loc_A12A:
pop di
pop si
leave
retn
sub_9F8D endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_A12E proc near
arg_0 = dword ptr 4
push bp
mov bp, sp
push si
call sub_A174
pushd [bp+arg_0]
call file_ropen
or ax, ax
jnz short loc_A147
mov ax, 1
jmp short loc_A16F
; ---------------------------------------------------------------------------
loc_A147:
call file_size
mov si, ax
push ax
call hmem_allocbyte
mov word ptr _cutscene_script+2, ax
mov word ptr _cutscene_script, 0
push ax
push word ptr _cutscene_script
push si
call file_read
call file_close
xor ax, ax
loc_A16F:
pop si
pop bp
retn 4
sub_A12E endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_A174 proc near
push bp
mov bp, sp
cmp _cutscene_script, 0
jz short loc_A191
push word ptr _cutscene_script+2
call hmem_free
mov _cutscene_script, 0
loc_A191:
pop bp
retn
sub_A174 endp
EGC_START_COPY_DEF 1, near
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_A1C7 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 ax, [bp+arg_2]
sar ax, 3
mov dx, [bp+arg_0]
shl dx, 6
add ax, dx
mov dx, [bp+arg_0]
shl dx, 4
add ax, dx
mov si, ax
call egc_start_copy_1
xor di, di
jmp short loc_A225
; ---------------------------------------------------------------------------
loc_A1EC:
mov [bp+var_2], 0
jmp short loc_A21B
; ---------------------------------------------------------------------------
loc_A1F3:
graph_accesspage 0
les bx, _VRAM_PLANE_B
add bx, si
mov ax, es:[bx]
mov [bp+var_4], ax
mov al, 1
out dx, al
mov bx, word ptr _VRAM_PLANE_B
add bx, si
mov ax, [bp+var_4]
mov es:[bx], ax
add [bp+var_2], 2
add si, 2
loc_A21B:
cmp [bp+var_2], 28h ; '('
jl short loc_A1F3
inc di
add si, 28h ; '('
loc_A225:
cmp di, 0C8h
jl short loc_A1EC
call egc_off
graph_accesspage 0
pop di
pop si
leave
retn 4
sub_A1C7 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_A23C proc near
var_8 = dword ptr -8
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 = word ptr 0Ah
enter 8, 0
push si
push di
mov eax, _pi_buffers
mov [bp+var_8], eax
cmp [bp+arg_2], 1
jnz short loc_A257
add word ptr [bp+var_8], 0A0h
jmp short loc_A26F
; ---------------------------------------------------------------------------
loc_A257:
cmp [bp+arg_2], 2
jnz short loc_A264
add word ptr [bp+var_8], 0FA00h
jmp short loc_A26F
; ---------------------------------------------------------------------------
loc_A264:
cmp [bp+arg_2], 3
jnz short loc_A26F
add word ptr [bp+var_8], 0FAA0h
loc_A26F:
mov eax, [bp+var_8]
shr eax, 10h
mov dx, word ptr [bp+var_8]
shr dx, 4
add ax, dx
mov dx, word ptr [bp+var_8]
and dx, 0Fh
mov word ptr [bp+var_8+2], ax
mov word ptr [bp+var_8], dx
graph_showpage 1
mov ax, [bp+arg_6]
sar ax, 3
mov dx, [bp+arg_4]
shl dx, 6
add ax, dx
mov dx, [bp+arg_4]
shl dx, 4
add ax, dx
mov si, ax
graph_accesspage 0
xor di, di
jmp loc_A34E
; ---------------------------------------------------------------------------
loc_A2B4:
call graph_pack_put_8_noclip pascal, large 400, [bp+var_8], 320
call egc_start_copy_1
egc_selectpat
egc_setrop EGC_COMPAREREAD or EGC_WS_PATREG or EGC_RL_MEMREAD
outw2 EGC_BITLENGTHREG, 0Fh
mov bx, [bp+arg_0]
shl bx, 3
mov ax, di
and ax, 3
add ax, ax
add bx, ax
outw2 EGC_MASKREG, _PI_MASKS[bx]
mov [bp+var_4], 7D00h
mov [bp+var_2], 0
jmp short loc_A31E
; ---------------------------------------------------------------------------
loc_A301:
les bx, _VRAM_PLANE_B
add bx, [bp+var_4]
mov ax, es:[bx]
mov bx, word ptr _VRAM_PLANE_B
add bx, si
mov es:[bx], ax
inc [bp+var_2]
add si, 2
add [bp+var_4], 2
loc_A31E:
cmp [bp+var_2], 14h
jl short loc_A301
call egc_off
add si, 28h ; '('
add word ptr [bp+var_8], 140h
mov eax, [bp+var_8]
shr eax, 10h
mov dx, word ptr [bp+var_8]
shr dx, 4
add ax, dx
mov dx, word ptr [bp+var_8]
and dx, 0Fh
mov word ptr [bp+var_8+2], ax
mov word ptr [bp+var_8], dx
inc di
loc_A34E:
cmp di, 0C8h
jl loc_A2B4
graph_showpage 0
push [bp+arg_6]
push [bp+arg_4]
call sub_A1C7
pop di
pop si
leave
retn 8
sub_A23C endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_A36B proc near
var_8 = word ptr -8
var_6 = word ptr -6
var_4 = word ptr -4
var_2 = word ptr -2
enter 8, 0
push si
push di
call sub_A43C
graph_accesspage 0
push 3C00h
call hmem_allocbyte
mov word ptr dword_105CA+2, ax
mov word ptr dword_105CA, 0
xor si, si
mov di, 140h
mov [bp+var_4], 0
jmp loc_A430
; ---------------------------------------------------------------------------
loc_A398:
mov [bp+var_2], 50h ; 'P'
mov [bp+var_6], 0
jmp loc_A424
; ---------------------------------------------------------------------------
loc_A3A5:
mov ax, [bp+var_2]
sar ax, 3
mov dx, di
shl dx, 6
add ax, dx
mov dx, di
shl dx, 4
add ax, dx
mov [bp+var_8], ax
les bx, _VRAM_PLANE_B
add bx, [bp+var_8]
mov ax, es:[bx]
mov dx, si
add dx, dx
les bx, dword_105CA
add bx, dx
mov es:[bx], ax
inc si
les bx, _VRAM_PLANE_R
add bx, [bp+var_8]
mov ax, es:[bx]
mov dx, si
add dx, dx
les bx, dword_105CA
add bx, dx
mov es:[bx], ax
inc si
les bx, _VRAM_PLANE_G
add bx, [bp+var_8]
mov ax, es:[bx]
mov dx, si
add dx, dx
les bx, dword_105CA
add bx, dx
mov es:[bx], ax
inc si
les bx, _VRAM_PLANE_E
add bx, [bp+var_8]
mov ax, es:[bx]
mov dx, si
add dx, dx
les bx, dword_105CA
add bx, dx
mov es:[bx], ax
inc si
add [bp+var_6], 2
add [bp+var_2], 10h
loc_A424:
cmp [bp+var_6], 3Ch ; '<'
jl loc_A3A5
inc [bp+var_4]
inc di
loc_A430:
cmp [bp+var_4], 40h
jl loc_A398
pop di
pop si
leave
retn
sub_A36B endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_A43C proc near
push bp
mov bp, sp
cmp dword_105CA, 0
jz short loc_A459
push word ptr dword_105CA+2
call hmem_free
mov dword_105CA, 0
loc_A459:
pop bp
retn
sub_A43C endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_A45B proc near
var_6 = word ptr -6
var_4 = word ptr -4
var_2 = word ptr -2
enter 6, 0
push si
push di
xor cx, cx
mov si, 140h
mov [bp+var_4], 0
jmp loc_A4FE
; ---------------------------------------------------------------------------
loc_A46E:
mov [bp+var_2], 50h ; 'P'
mov [bp+var_6], 0
jmp short loc_A4F4
; ---------------------------------------------------------------------------
loc_A47A:
mov ax, [bp+var_2]
sar ax, 3
mov dx, si
shl dx, 6
add ax, dx
mov dx, si
shl dx, 4
add ax, dx
mov di, ax
mov ax, cx
add ax, ax
les bx, dword_105CA
add bx, ax
mov ax, es:[bx]
les bx, _VRAM_PLANE_B
add bx, di
mov es:[bx], ax
inc cx
mov ax, cx
add ax, ax
les bx, dword_105CA
add bx, ax
mov ax, es:[bx]
les bx, _VRAM_PLANE_R
add bx, di
mov es:[bx], ax
inc cx
mov ax, cx
add ax, ax
les bx, dword_105CA
add bx, ax
mov ax, es:[bx]
les bx, _VRAM_PLANE_G
add bx, di
mov es:[bx], ax
inc cx
mov ax, cx
add ax, ax
les bx, dword_105CA
add bx, ax
mov ax, es:[bx]
les bx, _VRAM_PLANE_E
add bx, di
mov es:[bx], ax
inc cx
add [bp+var_6], 2
add [bp+var_2], 10h
loc_A4F4:
cmp [bp+var_6], 3Ch ; '<'
jl short loc_A47A
inc [bp+var_4]
inc si
loc_A4FE:
cmp [bp+var_4], 40h
jl loc_A46E
pop di
pop si
leave
retn
sub_A45B endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_A50A proc near
var_2 = byte ptr -2
var_1 = byte ptr -1
arg_0 = dword ptr 4
enter 2, 0
les bx, _cutscene_script
mov cl, es:[bx]
inc word ptr _cutscene_script
les bx, _cutscene_script
mov al, es:[bx]
mov [bp+var_1], al
inc word ptr _cutscene_script
les bx, _cutscene_script
mov al, es:[bx]
mov [bp+var_2], al
inc word ptr _cutscene_script
mov al, cl
mov ah, 0
mov bx, ax
test (__ctype + 1)[bx], _IS_DIG
jnz short loc_A554
les bx, [bp+arg_0]
mov ax, word_105D8
mov es:[bx], ax
sub word ptr _cutscene_script, 3
leave
retn 4
; ---------------------------------------------------------------------------
loc_A554:
mov al, [bp+var_1]
mov ah, 0
mov bx, ax
test (__ctype + 1)[bx], _IS_DIG
jnz short loc_A578
mov al, cl
mov ah, 0
add ax, 0FFD0h
les bx, [bp+arg_0]
mov es:[bx], ax
sub word ptr _cutscene_script, 2
leave
retn 4
; ---------------------------------------------------------------------------
loc_A578:
mov al, [bp+var_2]
mov ah, 0
mov bx, ax
test (__ctype + 1)[bx], _IS_DIG
jnz short loc_A5A8
mov al, cl
mov ah, 0
add ax, 0FFD0h
imul ax, 0Ah
mov dl, [bp+var_1]
mov dh, 0
add ax, dx
add ax, 0FFD0h
les bx, [bp+arg_0]
mov es:[bx], ax
dec word ptr _cutscene_script
leave
retn 4
; ---------------------------------------------------------------------------
loc_A5A8:
mov al, cl
mov ah, 0
add ax, 0FFD0h
imul ax, 64h
mov dl, [bp+var_1]
mov dh, 0
add dx, 0FFD0h
imul dx, 0Ah
add ax, dx
mov dl, [bp+var_2]
mov dh, 0
add ax, dx
add ax, 0FFD0h
les bx, [bp+arg_0]
mov es:[bx], ax
leave
retn 4
sub_A50A endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_A5D3 proc near
arg_0 = dword ptr 4
push bp
mov bp, sp
les bx, _cutscene_script
cmp byte ptr es:[bx], ','
jnz short loc_A5EF
inc word ptr _cutscene_script
pushd [bp+arg_0]
call sub_A50A
pop bp
retn 4
; ---------------------------------------------------------------------------
loc_A5EF:
les bx, [bp+arg_0]
mov ax, word_105D8
mov es:[bx], ax
pop bp
retn 4
sub_A5D3 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_A5FC proc near
push bp
mov bp, sp
add point_105D0.x, 16
cmp point_105D0.x, 560
jl short loc_A64B
add point_105D0.y, 16
mov point_105D0.x, 144
cmp point_105D0.y, 384
jl short loc_A64B
cmp byte_105CE, 0
jnz short loc_A62D
call input_wait_for_change pascal, 0
loc_A62D:
mov point_105D0.x, 80
mov point_105D0.y, 320
graph_accesspage 1
call sub_A45B
graph_accesspage 0
call sub_A45B
loc_A64B:
pop bp
retn
sub_A5FC endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_A64D proc near
var_16 = byte ptr -16h
var_6 = word ptr -6
var_4 = word ptr -4
var_2 = word ptr -2
arg_0 = byte ptr 4
enter 16h, 0
push si
mov al, [bp+arg_0]
mov ah, 0
push ax ; ch
call _tolower
pop cx
mov [bp+arg_0], al
mov ah, 0
mov [bp+var_6], ax
mov cx, 10h ; switch 16 cases
mov bx, offset word_AC2E
loc_A66C:
mov ax, cs:[bx]
cmp ax, [bp+var_6]
jz short loc_A67C
add bx, 2
loop loc_A66C
jmp loc_AC1E ; default
; ---------------------------------------------------------------------------
loc_A67C:
jmp word ptr cs:[bx+20h] ; switch jump
loc_A680:
add point_105D0.y, 16 ; jumptable 0000A67C case 110
mov point_105D0.x, 80
cmp point_105D0.y, 384
jl loc_AC1E ; default
loc_A695:
les bx, _cutscene_script ; jumptable 0000A67C case 115
mov al, es:[bx]
mov [bp+arg_0], al
cmp [bp+arg_0], '-'
jz short loc_A6C4
mov word_105D8, 0
push ss
lea ax, [bp+var_2]
push ax
call sub_A50A
cmp byte_105CE, 0
jnz short loc_A6C8
call input_wait_for_change pascal, [bp+var_2]
jmp short loc_A6C8
; ---------------------------------------------------------------------------
loc_A6C4:
inc word ptr _cutscene_script
loc_A6C8:
mov point_105D0.x, 80
mov point_105D0.y, 320
graph_accesspage 1
call sub_A45B
graph_accesspage 0
call sub_A45B
jmp loc_AC1E ; default
; ---------------------------------------------------------------------------
loc_A6E9:
mov word_105D8, 0Fh ; jumptable 0000A67C case 99
push ss
lea ax, [bp+var_2]
push ax
call sub_A50A
mov al, byte ptr [bp+var_2]
mov col_105D6, al
jmp loc_AC1E ; default
; ---------------------------------------------------------------------------
loc_A700:
mov word_105D8, 2 ; jumptable 0000A67C case 98
push ss
lea ax, [bp+var_2]
push ax
call sub_A50A
mov bx, [bp+var_2]
cmp bx, 3
ja loc_AC1E ; default
add bx, bx
jmp cs:off_AC26[bx]
loc_A71F:
mov byte_105D7, 0
jmp loc_AC1E ; default
; ---------------------------------------------------------------------------
loc_A727:
mov byte_105D7, 10h
jmp loc_AC1E ; default
; ---------------------------------------------------------------------------
loc_A72F:
mov byte_105D7, 20h ; ' '
jmp loc_AC1E ; default
; ---------------------------------------------------------------------------
loc_A737:
mov byte_105D7, 30h ; '0'
jmp loc_AC1E ; default
; ---------------------------------------------------------------------------
loc_A73F:
les bx, _cutscene_script ; jumptable 0000A67C case 119
mov al, es:[bx]
mov ah, 0
push ax ; ch
call _tolower
pop cx
mov [bp+arg_0], al
cmp [bp+arg_0], 'o'
jz short loc_A75E
cmp [bp+arg_0], 'i'
jnz short loc_A78C
loc_A75E:
inc word ptr _cutscene_script
mov word_105D8, 1
push ss
lea ax, [bp+var_2]
push ax
call sub_A50A
cmp [bp+arg_0], 'i'
jnz short loc_A781
push [bp+var_2]
call palette_white_in
jmp loc_AB90
; ---------------------------------------------------------------------------
loc_A781:
push [bp+var_2]
call palette_white_out
jmp loc_AB90
; ---------------------------------------------------------------------------
loc_A78C:
mov word_105D8, 40h
cmp [bp+arg_0], 'm'
jz short loc_A7CF
cmp [bp+arg_0], 'k'
jnz short loc_A7A2
inc word ptr _cutscene_script
loc_A7A2:
push ss
lea ax, [bp+var_2]
push ax
call sub_A50A
cmp byte_105CE, 0
jnz loc_AC1E ; default
cmp [bp+arg_0], 'k'
jz short loc_A7C4
push [bp+var_2]
call frame_delay
jmp loc_AB90
; ---------------------------------------------------------------------------
loc_A7C4:
call input_wait_for_ok pascal, [bp+var_2]
jmp loc_AB90
; ---------------------------------------------------------------------------
loc_A7CF:
inc word ptr _cutscene_script
les bx, _cutscene_script
mov al, es:[bx]
mov [bp+arg_0], al
cmp [bp+arg_0], 'k'
jnz short loc_A7E7
inc word ptr _cutscene_script
loc_A7E7:
push ss
lea ax, [bp+var_2]
push ax
call sub_A50A
push ss
lea ax, [bp+var_4]
push ax
call sub_A5D3
cmp byte_105CE, 0
jnz loc_AC1E ; default
cmp [bp+arg_0], 'k'
jz short loc_A814
push [bp+var_2]
push [bp+var_4]
call snd_delay_until_measure
jmp loc_AB63
; ---------------------------------------------------------------------------
loc_A814:
call input_wait_for_ok_or_measure pascal, [bp+var_2], [bp+var_4]
jmp loc_AB63
; ---------------------------------------------------------------------------
loc_A822:
les bx, _cutscene_script ; jumptable 0000A67C case 118
cmp byte ptr es:[bx], 'p'
jz short loc_A843
mov word_105D8, 1
push ss
lea ax, [bp+var_2]
push ax
call sub_A50A
mov ax, [bp+var_2]
mov word_105D4, ax
jmp loc_AC1E ; default
; ---------------------------------------------------------------------------
loc_A843:
inc word ptr _cutscene_script
mov word_105D8, 0
push ss
lea ax, [bp+var_2]
push ax
call sub_A50A
graph_showpage byte ptr [bp+var_2]
jmp loc_AC1E ; default
; ---------------------------------------------------------------------------
loc_A85F:
mov word_105D8, 64h ; 'd' ; jumptable 0000A67C case 116
push ss
lea ax, [bp+var_2]
push ax
call sub_A50A
cmp byte_105CE, 0
jnz short loc_A87B
push 1
call frame_delay
loc_A87B:
mov ax, [bp+var_2]
mov PaletteTone, ax
call far ptr palette_show
jmp loc_AC1E ; default
; ---------------------------------------------------------------------------
loc_A889:
les bx, _cutscene_script ; jumptable 0000A67C case 102
mov al, es:[bx]
mov [bp+arg_0], al
cmp [bp+arg_0], 'm'
jz short loc_A8D5
cmp [bp+arg_0], 'i'
jz short loc_A8A7
cmp [bp+arg_0], 'o'
jnz loc_AC1E ; default
loc_A8A7:
inc word ptr _cutscene_script
mov word_105D8, 1
push ss
lea ax, [bp+var_2]
push ax
call sub_A50A
cmp [bp+arg_0], 'i'
jnz short loc_A8CA
push [bp+var_2]
call palette_black_in
jmp loc_AB90
; ---------------------------------------------------------------------------
loc_A8CA:
push [bp+var_2]
call palette_black_out
jmp loc_AB90
; ---------------------------------------------------------------------------
loc_A8D5:
inc word ptr _cutscene_script
mov word_105D8, 1
push ss
lea ax, [bp+var_2]
push ax
call sub_A50A
mov ax, [bp+var_2]
add ax, 200h
push ax
jmp loc_AB8B
; ---------------------------------------------------------------------------
loc_A8F1:
les bx, _cutscene_script ; jumptable 0000A67C case 103
cmp byte ptr es:[bx], 'a'
jz short loc_A945
mov word_105D8, 8
push ss
lea ax, [bp+var_2]
push ax
call sub_A50A
mov [bp+var_4], 0
jmp short loc_A933
; ---------------------------------------------------------------------------
loc_A910:
test byte ptr [bp+var_4], 1
jz short loc_A91A
push 4
jmp short loc_A91D
; ---------------------------------------------------------------------------
loc_A91A:
push RES_Y - 4
loc_A91D:
call graph_scrollup
cmp byte_105CE, 0
jnz short loc_A930
push 1
call frame_delay
loc_A930:
inc [bp+var_4]
loc_A933:
mov ax, [bp+var_4]
cmp ax, [bp+var_2]
jle short loc_A910
call graph_scrollup pascal, 0
jmp loc_AB90
; ---------------------------------------------------------------------------
loc_A945:
inc word ptr _cutscene_script
mov word_105D8, 0
push ss
lea ax, [bp+var_2]
push ax
call sub_A50A
graph_accesspage 1
push point_105D0.x
push point_105D0.y
mov ax, [bp+var_2]
dec ax
push ax
mov al, col_105D6
mov ah, 0
push ax
call graph_gaiji_putc
graph_accesspage 0
push point_105D0.x
push point_105D0.y
push [bp+var_2]
mov al, col_105D6
mov ah, 0
push ax
call graph_gaiji_putc
call sub_A5FC
jmp loc_AC1E ; default
; ---------------------------------------------------------------------------
loc_A997:
mov word_105D8, 0 ; jumptable 0000A67C case 107
push ss
lea ax, [bp+var_2]
push ax
call sub_A50A
cmp byte_105CE, 0
jnz loc_AC1E ; default
call input_wait_for_change pascal, 0
jmp loc_AB90
; ---------------------------------------------------------------------------
loc_A9B8:
graph_accesspage 1 ; jumptable 0000A67C case 64
call graph_clear
graph_accesspage 0
call graph_clear
jmp loc_AC1E ; default
; ---------------------------------------------------------------------------
loc_A9D1:
les bx, _cutscene_script ; jumptable 0000A67C case 112
mov al, es:[bx]
mov [bp+arg_0], al
inc word ptr _cutscene_script
cmp [bp+arg_0], '='
jz short loc_A9EB
cmp [bp+arg_0], '@'
jnz short loc_AA1B
loc_A9EB:
graph_accesspage 1
cmp [bp+arg_0], '='
jnz short loc_A9FE
call pi_palette_apply pascal, 0
loc_A9FE:
call pi_put_8 pascal, large 0, 0
call graph_copy_page pascal, 0
graph_accesspage 0
call sub_A36B
jmp loc_AC1E ; default
; ---------------------------------------------------------------------------
loc_AA1B:
cmp [bp+arg_0], '-'
jnz short loc_AA32
freePISlotLarge 0
jmp loc_AC1E ; default
; ---------------------------------------------------------------------------
loc_AA32:
cmp [bp+arg_0], 'p'
jnz short loc_AA42
call pi_palette_apply pascal, 0
jmp loc_AB90
; ---------------------------------------------------------------------------
loc_AA42:
cmp [bp+arg_0], ','
jz short loc_AA4F
dec word ptr _cutscene_script
jmp loc_AC1E ; default
; ---------------------------------------------------------------------------
loc_AA4F:
mov [bp+var_2], 0
jmp short loc_AA84
; ---------------------------------------------------------------------------
loc_AA56:
les bx, _cutscene_script
mov al, es:[bx]
mov [bp+arg_0], al
inc word ptr _cutscene_script
mov ah, 0
mov bx, ax
test (__ctype + 1)[bx], _IS_CTL
jnz short loc_AA8A
cmp [bp+arg_0], ' '
jz short loc_AA8A
lea bx, [bp+var_16]
add bx, [bp+var_2]
mov al, [bp+arg_0]
mov ss:[bx], al
inc [bp+var_2]
loc_AA84:
cmp [bp+var_2], 0Ch
jl short loc_AA56
loc_AA8A:
lea bx, [bp+var_16]
add bx, [bp+var_2]
mov byte ptr ss:[bx], 0
push 0
push ss
lea ax, [bp+var_16]
push ax
call pi_load
jmp loc_AC1E ; default
; ---------------------------------------------------------------------------
loc_AAA3:
mov word_105D8, 4 ; jumptable 0000A67C case 61
les bx, _cutscene_script
mov al, es:[bx]
mov [bp+arg_0], al
cmp [bp+arg_0], 3Dh ; '='
jz short loc_AAF8
push ss
lea ax, [bp+var_2]
push ax
call sub_A50A
graph_showpage 1
graph_accesspage 0
cmp [bp+var_2], 4
jge short loc_AAD5
jmp short loc_AB44
; ---------------------------------------------------------------------------
loc_AAD5:
call grcg_setcolor pascal, (GC_RMW shl 16) + 0
call grcg_byteboxfill_x pascal, ((160 / 8) shl 16) or 64, ((472 / 8) shl 16) or 263
call grcg_off
jmp short loc_AB54
; ---------------------------------------------------------------------------
loc_AAF8:
inc word ptr _cutscene_script
push ss
lea ax, [bp+var_2]
push ax
call sub_A50A
mov word_105D8, 1
push ss
lea ax, [bp+var_4]
push ax
call sub_A5D3
xor si, si
jmp short loc_AB33
; ---------------------------------------------------------------------------
loc_AB16:
push 0A00040h
push [bp+var_2]
push si
call sub_A23C
cmp byte_105CE, 0
jnz short loc_AB32
push [bp+var_4]
call frame_delay
loc_AB32:
inc si
loc_AB33:
cmp si, 4
jl short loc_AB16
graph_showpage 1
graph_accesspage 0
loc_AB44:
call pi_put_quarter_8 pascal, (160 shl 16) + 64, 0, [bp+var_2]
loc_AB54:
graph_showpage 0
push 0A00040h
call sub_A1C7
loc_AB63:
jmp loc_AC1E ; default
; ---------------------------------------------------------------------------
loc_AB66:
les bx, _cutscene_script ; jumptable 0000A67C case 109
mov al, es:[bx]
mov [bp+arg_0], al
cmp [bp+arg_0], 24h ; '$'
jnz short loc_AB7F
inc word ptr _cutscene_script
push (KAJA_SONG_STOP shl 8)
jmp short loc_AB8B
; ---------------------------------------------------------------------------
loc_AB7F:
cmp [bp+arg_0], 2Ah ; '*'
jnz short loc_AB93
inc word ptr _cutscene_script
loc_AB89:
push (KAJA_SONG_PLAY shl 8)
loc_AB8B:
call snd_kaja_interrupt
loc_AB90:
jmp loc_AC1E ; default
; ---------------------------------------------------------------------------
loc_AB93:
cmp [bp+arg_0], 2Ch ; ','
jnz loc_AC1E ; default
inc word ptr _cutscene_script
mov [bp+var_2], 0
jmp short loc_ABD4
; ---------------------------------------------------------------------------
loc_ABA6:
les bx, _cutscene_script
mov al, es:[bx]
mov [bp+arg_0], al
inc word ptr _cutscene_script
mov ah, 0
mov bx, ax
test (__ctype + 1)[bx], _IS_CTL
jnz short loc_ABDA
cmp [bp+arg_0], 20h ; ' '
jz short loc_ABDA
lea bx, [bp+var_16]
add bx, [bp+var_2]
mov al, [bp+arg_0]
mov ss:[bx], al
inc [bp+var_2]
loc_ABD4:
cmp [bp+var_2], 0Ch
jl short loc_ABA6
loc_ABDA:
lea bx, [bp+var_16]
add bx, [bp+var_2]
mov byte ptr ss:[bx], 0
kajacall KAJA_SONG_STOP
push SND_LOAD_SONG
push ss
lea ax, [bp+var_16]
push ax
call _snd_load
add sp, 6
jmp short loc_AB89
; ---------------------------------------------------------------------------
loc_ABFE:
push ss ; jumptable 0000A67C case 101
lea ax, [bp+var_2]
push ax
call sub_A50A
call _snd_se_reset
call snd_se_play pascal, [bp+var_2]
call _snd_se_update
jmp short loc_AC1E ; default
; ---------------------------------------------------------------------------
loc_AC1A:
mov al, -1 ; jumptable 0000A67C case 36
jmp short loc_AC20
; ---------------------------------------------------------------------------
loc_AC1E:
mov al, 0 ; default
loc_AC20:
pop si
leave
retn 2
sub_A64D endp
; ---------------------------------------------------------------------------
db 0
off_AC26 dw offset loc_A71F
dw offset loc_A727
dw offset loc_A72F
dw offset loc_A737
word_AC2E dw 24h, 3Dh, 40h, 62h
dw 63h, 65h, 66h, 67h ; value table for switch statement
dw 6Bh, 6Dh, 6Eh, 70h
dw 73h, 74h, 76h, 77h
dw offset loc_AC1A ; jump table for switch statement
dw offset loc_AAA3
dw offset loc_A9B8
dw offset loc_A700
dw offset loc_A6E9
dw offset loc_ABFE
dw offset loc_A889
dw offset loc_A8F1
dw offset loc_A997
dw offset loc_AB66
dw offset loc_A680
dw offset loc_A9D1
dw offset loc_A695
dw offset loc_A85F
dw offset loc_A822
dw offset loc_A73F
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_AC6E proc near
var_6 = dword ptr -6
var_2 = byte ptr -2
var_1 = byte ptr -1
enter 6, 0
push si
mov word ptr [bp+var_6+2], ds
mov word ptr [bp+var_6], offset asc_EFC2
mov point_105D0.x, 80
mov point_105D0.y, 320
mov word_105D4, 1
mov col_105D6, 0Fh
mov byte_105D7, 20h ; ' '
mov [bp+var_2], 0
call sub_A36B
mov byte_105CE, 0
loc_ACA3:
call input_mode_interface
test _input_sp.hi, high INPUT_CANCEL
jz short loc_ACB6
mov byte_105CE, 1
jmp short loc_ACBB
; ---------------------------------------------------------------------------
loc_ACB6:
mov byte_105CE, 0
loc_ACBB:
les bx, _cutscene_script
mov al, es:[bx]
mov [bp+var_1], al
inc word ptr _cutscene_script
mov ah, 0
mov bx, ax
test (__ctype + 1)[bx], _IS_CTL
jnz short loc_ACA3
cmp [bp+var_1], ' '
jz short loc_ACA3
cmp [bp+var_1], '\'
jnz short loc_ACFB
les bx, _cutscene_script
mov al, es:[bx]
mov [bp+var_1], al
inc word ptr _cutscene_script
push word ptr [bp+var_1]
call sub_A64D
cmp al, -1
jnz short loc_ACA3
jmp loc_ADA0
; ---------------------------------------------------------------------------
loc_ACFB:
les bx, [bp+var_6]
mov al, [bp+var_1]
mov es:[bx], al
les bx, _cutscene_script
mov al, es:[bx]
mov [bp+var_1], al
les bx, [bp+var_6]
mov es:[bx+1], al
inc word ptr _cutscene_script
graph_accesspage 1
push point_105D0.x
push point_105D0.y
mov al, col_105D6
or al, byte_105D7
mov ah, 0
push ax
push word ptr [bp+var_6+2]
push bx
call graph_putsa_fx
graph_accesspage 0
push point_105D0.x
push point_105D0.y
mov al, col_105D6
or al, byte_105D7
mov ah, 0
push ax
pushd [bp+var_6]
call graph_putsa_fx
call sub_A5FC
cmp byte_105CE, 0
jnz loc_ACA3
cmp _input_sp, INPUT_NONE
jnz short loc_AD7A
push word_105D4
call frame_delay
jmp loc_ACA3
; ---------------------------------------------------------------------------
loc_AD7A:
mov ax, word_105D4
mov bx, 3
cwd
idiv bx
mov si, ax
test [bp+var_2], 1
jnz short loc_AD8F
or si, si
jz short loc_AD9A
loc_AD8F:
or si, si
jnz short loc_AD94
inc si
loc_AD94:
push si
call frame_delay
loc_AD9A:
inc [bp+var_2]
jmp loc_ACA3
; ---------------------------------------------------------------------------
loc_ADA0:
call sub_A45B
call sub_A43C
pop si
leave
retn
sub_AC6E endp
mainl_01_TEXT ends
SCOREDAT_TEXT segment byte public 'CODE' use16
@SCOREDAT_LOAD_AND_DECODE$Q6RANK_T procdesc pascal near \
rank:word
SCOREDAT_TEXT ends
REGIST_TEXT segment byte public 'CODE' use16
@SCOREDAT_ENCODE_AND_SAVE$Q6RANK_T procdesc pascal near \
rank:word
@regist_load_and_put_initial$qv procdesc near
@regist_score_enter_from_resident$qv procdesc near
@alphabet_put_initial$qv procdesc near
@regist_rows_put$qv procdesc near
@regist_name_enter$qv procdesc near
REGIST_TEXT ends
mainl_03_TEXT segment byte public 'CODE' use16
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_B74E proc near
var_1 = byte ptr -1
enter 2, 0
push si
push di
xor cx, cx
jmp short loc_B769
; ---------------------------------------------------------------------------
loc_B758:
mov bx, _entered_place
shl bx, 3
add bx, cx
cmp _hi.SDS_score.SD_name[bx], REGI_SP
jnz short loc_B7A2
inc cx
loc_B769:
cmp cx, SCOREDAT_NAME_LEN
jl short loc_B758
loc_B76E:
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
shl ax, 3
add ax, 92Eh
mov di, ax
mov cx, (SCOREDAT_NAME_LEN - 1)
jmp short loc_B79C
; ---------------------------------------------------------------------------
loc_B78B:
mov bx, _entered_place
shl bx, 3
add bx, cx
mov al, [di]
mov _hi.SDS_score.SD_name[bx], al
dec cx
inc di
loc_B79C:
or cx, cx
jge short loc_B78B
jmp short loc_B7CE
; ---------------------------------------------------------------------------
loc_B7A2:
mov bx, _entered_place
shl bx, 3
mov al, _hi.SDS_score.SD_name[bx]
mov [bp+var_1], al
xor cx, cx
jmp short loc_B7C7
; ---------------------------------------------------------------------------
loc_B7B4:
mov bx, _entered_place
shl bx, 3
add bx, cx
mov al, _hi.SDS_score.SD_name[bx]
cmp al, [bp+var_1]
jnz short loc_B7CE
inc cx
loc_B7C7:
cmp cx, SCOREDAT_NAME_LEN
jl short loc_B7B4
jmp short loc_B76E
; ---------------------------------------------------------------------------
loc_B7CE:
pop di
pop si
leave
retn
sub_B74E endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_B7D2 proc near
push bp
mov bp, sp
les bx, _resident
mov eax, es:[bx+resident_t.rand]
mov random_seed, eax
call _snd_load c, offset aScore_m, ds, SND_LOAD_SONG
kajacall KAJA_SONG_PLAY
les bx, _resident
mov al, es:[bx+resident_t.rank]
mov ah, 0
call @scoredat_load_and_decode$q6rank_t pascal, ax
les bx, _resident
cmp es:[bx+resident_t.story_stage], STAGE_NONE
jnz short loc_B819
mov _entered_place, -1
jmp short loc_B81F
; ---------------------------------------------------------------------------
loc_B819:
call @regist_score_enter_from_resident$qv
mov _entered_place, ax
loc_B81F:
call @regist_load_and_put_initial$qv
cmp _entered_place, -1
jnz short loc_B835
call @regist_rows_put$qv
push 2
call palette_black_in
jmp short loc_B858
; ---------------------------------------------------------------------------
loc_B835:
call @regist_rows_put$qv
call graph_copy_page pascal, 1
graph_accesspage 0
call @alphabet_put_initial$qv
push 2
call palette_black_in
call @regist_name_enter$qv
call sub_B74E
call @regist_rows_put$qv
loc_B858:
call input_wait_for_change pascal, 0
les bx, _resident
cmp es:[bx+resident_t.rem_credits], 0
jz short loc_B871
cmp es:[bx+resident_t.story_stage], STAGE_ALL
jnz short loc_B879
loc_B871:
kajacall KAJA_SONG_FADE, 16
loc_B879:
push 2
call palette_black_out
les bx, _resident
mov al, es:[bx+resident_t.rank]
mov ah, 0
call @scoredat_encode_and_save$q6rank_t pascal, ax
call super_free
graph_accesspage 0
graph_showpage al
mov PaletteTone, 0
call far ptr palette_show
les bx, _resident
cmp es:[bx+resident_t.rem_credits], 0
jz short loc_B8F1
cmp es:[bx+resident_t.story_stage], STAGE_ALL
jz short loc_B8F1
call pi_load pascal, 0, ds, offset aConti_pi
call pi_palette_apply pascal, 0
call pi_put_8 pascal, large 0, 0
freePISlotLarge 0
call cdg_load_all pascal, 0, ds, offset aConti_cd2
pop bp
retn
; ---------------------------------------------------------------------------
loc_B8F1:
call pi_load pascal, 0, ds, offset aOver_pi_0
call pi_palette_apply pascal, 0
call pi_put_8 pascal, large 0, 0
freePISlotLarge 0
call _snd_delay_until_volume stdcall, 255
pop cx
kajacall KAJA_SONG_STOP
pop bp
retn
sub_B7D2 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_B92E proc near
push bp
mov bp, sp
kajacall KAJA_SONG_STOP
call _snd_load c, offset aOver_m, ds, SND_LOAD_SONG
kajacall KAJA_SONG_PLAY
push 1
call palette_black_in
push 30040h
call snd_delay_until_measure
push 1
call palette_black_out
kajacall KAJA_SONG_STOP
pop bp
retn
sub_B92E endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_B972 proc near
var_1 = byte ptr -1
enter 2, 0
call cdg_free pascal, 0
call cdg_free pascal, 1
call cdg_free pascal, 2
freePISlotLarge 0
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 [bp+var_1], al
cmp [bp+var_1], 10
jl short loc_B9DD
les bx, off_EE4E
mov al, es:[bx+1]
push ax
mov al, [bp+var_1]
cbw
mov bx, 10
cwd
idiv bx
pop dx
add dl, al
mov bx, word ptr off_EE4E
mov es:[bx+1], dl
mov al, [bp+var_1]
cbw
mov bx, 10
cwd
idiv bx
mov [bp+var_1], dl
loc_B9DD:
les bx, off_EE4E
mov al, [bp+var_1]
add es:[bx+2], al
mov PaletteTone, 0
call far ptr palette_show
push 60h
call frame_delay
graph_accesspage 0
graph_showpage al
call graph_clear
call graph_show
pushd [off_EE4E]
call sub_A12E
call sub_AC6E
call sub_A174
call sub_C40D
les bx, _resident
mov es:[bx+resident_t.story_stage], STAGE_ALL
call sub_B7D2
les bx, _resident
cmp es:[bx+resident_t.rem_credits], 3
jnz short loc_BA66
cmp es:[bx+resident_t.RESIDENT_playchar_paletted], (1 + (PLAYCHAR_CHIYURI * 2))
jnb short loc_BA66
graph_accesspage 1
call graph_clear
graph_accesspage 0
call graph_clear
graph_showpage 0
push ds
push offset a@99ed_txt ; "@99ED.TXT"
call sub_A12E
call sub_AC6E
call sub_A174
loc_BA66:
call text_clear
call gaiji_restore
call _game_exit
pushd 0
push ds
push offset aOp_0 ; "op"
push ds
push offset aOp_0 ; "op"
call _execl
add sp, 0Ch
leave
retn
sub_B972 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_BA8A proc near
arg_0 = word ptr 4
arg_2 = word ptr 6
arg_4 = word ptr 8
push bp
mov bp, sp
push si
push di
mov ax, [bp+arg_4]
sar ax, 3
mov dx, [bp+arg_2]
shl dx, 6
add ax, dx
mov dx, [bp+arg_2]
shl dx, 4
add ax, dx
mov di, ax
mov si, [bp+arg_0]
shl si, 4
add si, 0A62h
mov ax, 0A800h
mov es, ax
assume es:nothing
mov cx, [bp+arg_4]
; Hack (and cx, 7)
db 081h
db 0e1h
db 007h
db 000h
mov bx, 8
loc_BAC0:
mov ax, [si]
ror ax, cl
or es:[di], ax
add di, 50h ; 'P'
add si, 2
dec bx
jnz short loc_BAC0
pop di
pop si
pop bp
retn 6
sub_BA8A endp
include th03/formats/cdg_unput_upwards.asm
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_BB51 proc near
push bp
mov bp, sp
push di
mov ax, 0A800h
mov es, ax
assume es:nothing
xor ax, ax
mov di, ax
mov cx, 3E80h
rep stosw
pop di
pop bp
retn
sub_BB51 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_BB66 proc near
push bp
mov bp, sp
push si
mov si, 22C2h
xor ax, ax
jmp short loc_BB78
; ---------------------------------------------------------------------------
loc_BB71:
mov byte ptr [si], 0
inc ax
add si, 10h
loc_BB78:
cmp ax, 50h ; 'P'
jl short loc_BB71
pop si
pop bp
retn
sub_BB66 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_BB80 proc near
@@length = byte ptr -2
@@angle = byte ptr -1
enter 2, 0
push si
push di
mov si, 22C2h
xor di, di
jmp loc_BC1A
; ---------------------------------------------------------------------------
loc_BB8E:
cmp byte ptr [si], 0
jnz loc_BC16
mov ax, di
shl ax, 3
cmp ax, word_10BB2
jg short loc_BC16
mov byte ptr [si], 1
test di, 3
jz short loc_BBBE
call IRand
mov bx, (632 shl 4)
cwd
idiv bx
mov [si+2], dx
mov word ptr [si+4], 0
jmp short loc_BBD1
; ---------------------------------------------------------------------------
loc_BBBE:
mov word ptr [si+2], (632 shl 4)
call IRand
mov bx, (392 shl 4)
cwd
idiv bx
mov [si+4], dx
loc_BBD1:
call IRand
mov bx, 20h
cwd
idiv bx
add dl, 50h
mov [bp+@@angle], dl
call IRand
mov bx, 40h
cwd
idiv bx
add dl, 30h ; '0'
mov [bp+@@length], dl
call IRand
and ax, 3
mov [si+0Ah], ax
push ds
lea ax, [si+6]
push ax
push ds
lea ax, [si+8]
push ax
push word ptr [bp+@@angle]
mov al, [bp+@@length]
mov ah, 0
push ax
call vector2
loc_BC16:
inc di
add si, 10h
loc_BC1A:
mov al, byte_106B0
mov ah, 0
cmp ax, di
jg loc_BB8E
pop di
pop si
leave
retn
sub_BB80 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_BC29 proc near
push bp
mov bp, sp
push si
mov si, 22C2h
xor dx, dx
jmp short loc_BC63
; ---------------------------------------------------------------------------
loc_BC34:
cmp byte ptr [si], 0
jz short loc_BC5F
mov byte ptr [si], 1
mov ax, [si+6]
add [si+2], ax
mov ax, [si+8]
add [si+4], ax
cmp word ptr [si+2], 0
jg short loc_BC53
add word ptr [si+2], 2780h
loc_BC53:
cmp word ptr [si+4], 1880h
jl short loc_BC5F
sub word ptr [si+4], 1880h
loc_BC5F:
inc dx
add si, 10h
loc_BC63:
mov al, byte_106B0
mov ah, 0
cmp ax, dx
jg short loc_BC34
pop si
pop bp
retn
sub_BC29 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_BC6F proc near
push bp
mov bp, sp
push si
push di
mov si, 22C2h
xor di, di
jmp short loc_BC98
; ---------------------------------------------------------------------------
loc_BC7B:
cmp byte ptr [si], 0
jz short loc_BC94
mov ax, [si+2]
sar ax, 4
push ax
mov ax, [si+4]
sar ax, 4
push ax
push word ptr [si+0Ah]
call sub_BA8A
loc_BC94:
inc di
add si, 10h
loc_BC98:
mov al, byte_106B0
mov ah, 0
cmp ax, di
jg short loc_BC7B
pop di
pop si
pop bp
retn
sub_BC6F endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_BCA5 proc near
arg_0 = word ptr 4
arg_2 = word ptr 6
push bp
mov bp, sp
cmp _snd_active, 0
jnz short loc_BCB9
mov ax, word_10BB2
cmp ax, [bp+arg_0]
jle short loc_BCCF
jmp short loc_BCCA
; ---------------------------------------------------------------------------
loc_BCB9:
mov ah, KAJA_GET_SONG_MEASURE
int 60h ; - FTP Packet Driver - BASIC FUNC - TERMINATE DRIVER FOR HANDLE
; BX = handle
; Return: CF set on error, DH = error code
; CF clear if successful
cmp ax, [bp+arg_2]
jb short loc_BCCF
cmp word_10BB2, 0C0h
jle short loc_BCCF
loc_BCCA:
mov ax, 1
jmp short loc_BCD1
; ---------------------------------------------------------------------------
loc_BCCF:
xor ax, ax
loc_BCD1:
pop bp
retn 4
sub_BCA5 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_BCD5 proc near
push bp
mov bp, sp
call sub_BB80
call sub_BC29
call sub_BC6F
cmp byte_10BB6, 0
jz short loc_BCFE
cmp vsync_Count1, 1
jbe short loc_BCFE
mov byte_10BB5, 0
mov byte_106B0, 32h ; '2'
mov byte_10BB6, 0
loc_BCFE:
cmp vsync_Count1, 0
jz short loc_BCFE
mov vsync_Count1, 0
graph_showpage byte_10BB4
mov al, 1
sub al, byte_10BB4
mov byte_10BB4, al
graph_accesspage al
pop bp
retn
sub_BCD5 endp
include th03/formats/cdg_put_dissolve.asm
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_BDF4 proc near
arg_0 = word ptr 4
push bp
mov bp, sp
push si
push di
mov di, [bp+arg_0]
call sub_BB51
mov ax, word_10BB2
cmp ax, word_10BBE
jg loc_BEC1
push 140h
mov al, byte_10BB4
mov ah, 0
add ax, ax
mov bx, ax
push word ptr [bx+27D8h]
push di
call cdg_unput_for_upwards_motion_e_8
mov al, byte_10BB4
mov ah, 0
add ax, ax
mov bx, ax
mov ax, [bx+27D8h]
cmp ax, word_10BC0
jle short loc_BE66
mov al, byte_10BB4
mov ah, 0
add ax, ax
mov dx, word_10BBC
mov bx, ax
sub [bx+27D8h], dx
mov al, byte_10BB4
mov ah, 0
add ax, ax
mov bx, ax
mov ax, [bx+27D8h]
cmp ax, word_10BC0
jge short loc_BE66
mov al, byte_10BB4
mov ah, 0
add ax, ax
mov dx, word_10BC0
mov bx, ax
mov [bx+27D8h], dx
loc_BE66:
mov ax, word_10BBE
mov bx, 8
cwd
idiv bx
push ax
mov ax, word_10BB2
cwd
pop bx
idiv bx
mov dx, 7
sub dx, ax
mov si, dx
or si, si
jge short loc_BE84
xor si, si
loc_BE84:
cmp byte_10BB5, 0
jz short loc_BEA7
cmp byte_10BC6, 0
jz short loc_BEA7
push (504 shl 16) or 200
mov al, byte_10BC6
mov ah, 0
push ax
push si
call cdg_put_dissolve_e_8
mov byte_10BC7, 1
loc_BEA7:
push 320
mov al, byte_10BB4
mov ah, 0
add ax, ax
mov bx, ax
push word ptr [bx+27D8h]
push di
push si
call cdg_put_dissolve_e_8
mov byte_10BC7, 0
loc_BEC1:
pop di
pop si
pop bp
retn 2
sub_BDF4 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_BEC7 proc near
arg_0 = word ptr 4
push bp
mov bp, sp
push si
push di
mov di, [bp+arg_0]
call sub_BB51
cmp word_10BB2, 0A1h
jg loc_BF78
cmp word_10BB2, 0A0h
jge short loc_BF57
push 140h
mov al, byte_10BB4
mov ah, 0
add ax, ax
mov bx, ax
push word ptr [bx+27D8h]
push di
call cdg_unput_for_upwards_motion_e_8
mov al, byte_10BB4
mov ah, 0
add ax, ax
mov bx, ax
dec word ptr [bx+27D8h]
mov ax, word_10BB2
mov bx, 20
cwd
idiv bx
mov si, ax
cmp si, 7
jle short loc_BF18
mov si, 7
loc_BF18:
cmp byte_10BB5, 0
jz short loc_BF3B
cmp byte_10BC6, 0
jz short loc_BF3B
push (504 shl 16) or 200
mov al, byte_10BC6
mov ah, 0
push ax
push si
call cdg_put_dissolve_e_8
mov byte_10BC7, 1
loc_BF3B:
push 320
mov al, byte_10BB4
mov ah, 0
add ax, ax
mov bx, ax
push word ptr [bx+27D8h]
push di
push si
call cdg_put_dissolve_e_8
mov byte_10BC7, 0
jmp short loc_BF78
; ---------------------------------------------------------------------------
loc_BF57:
call grcg_setcolor pascal, (GC_RMW shl 16) + 0
call grcg_byteboxfill_x pascal, ((8 / 8) shl 16) or 8, (((RES_X - 1 - 8) / 8) shl 16) or (RES_Y - 1 - 8)
call grcg_off
loc_BF78:
pop di
pop si
pop bp
retn 2
sub_BEC7 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_BF7E proc near
@@slot = word ptr 4
@@y_center = word ptr 6
@@x_center = word ptr 8
push bp
mov bp, sp
push si
cmp word_10BB2, 0A0h
jg short loc_BFAD
mov ax, word_10BB2
mov bx, 20
cwd
idiv bx
mov dx, 7
sub dx, ax
mov si, dx
or si, si
jge short loc_BFA0
xor si, si
loc_BFA0:
call cdg_put_dissolve_e_8 pascal, [bp+@@x_center], [bp+@@y_center], [bp+@@slot], si
loc_BFAD:
pop si
pop bp
retn 6
sub_BF7E endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_BFB2 proc near
arg_0 = word ptr 4
arg_2 = word ptr 6
arg_4 = word ptr 8
push bp
mov bp, sp
push si
mov si, [bp+arg_4]
cmp word_10BBC, 2
jnz short loc_BFE3
mov al, byte_10BB4
mov ah, 0
add ax, ax
mov bx, ax
mov word ptr [bx+27D8h], 108h
mov al, byte_10BB4
mov ah, 0
xor ax, 1
add ax, ax
mov bx, ax
mov word ptr [bx+27D8h], 107h
jmp short loc_C00E
; ---------------------------------------------------------------------------
loc_BFE3:
mov al, byte_10BB4
mov ah, 0
add ax, ax
mov dx, 118h
sub dx, word_10BC4
mov bx, ax
mov [bx+27D8h], dx
mov al, byte_10BB4
mov ah, 0
xor ax, 1
add ax, ax
mov dx, 118h
sub dx, word_10BC4
mov bx, ax
mov [bx+27D8h], dx
loc_C00E:
mov word_10BB2, 0
loc_C014:
push si
call sub_BDF4
call sub_BCD5
inc word_10BB2
push [bp+arg_2]
push 100h
call sub_BCA5
or ax, ax
jz short loc_C014
mov word_10BB2, 0
loc_C032:
push si
call sub_BEC7
call sub_BCD5
inc word_10BB2
push [bp+arg_0]
push 100h
call sub_BCA5
or ax, ax
jz short loc_C032
call grcg_setcolor pascal, (GC_RMW shl 16) + 0
call grcg_byteboxfill_x pascal, ((8 / 8) shl 16) or 8, (((RES_X - 1 - 8) / 8) shl 16) or (RES_Y - 1 - 8)
call grcg_off
call sub_BCD5
call grcg_setcolor pascal, (GC_RMW shl 16) + 0
call grcg_byteboxfill_x pascal, ((8 / 8) shl 16) or 8, (((RES_X - 1 - 8) / 8) shl 16) or (RES_Y - 1 - 8)
call grcg_off
call sub_BCD5
pop si
pop bp
retn 6
sub_BFB2 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_C097 proc near
arg_0 = word ptr 4
arg_2 = word ptr 6
arg_4 = word ptr 8
push bp
mov bp, sp
push si
push di
mov si, [bp+arg_4]
cmp word_10BBC, 2
jnz short loc_C0C9
mov al, byte_10BB4
mov ah, 0
add ax, ax
mov bx, ax
mov word ptr [bx+27D8h], 108h
mov al, byte_10BB4
mov ah, 0
xor ax, 1
add ax, ax
mov bx, ax
mov word ptr [bx+27D8h], 107h
jmp short loc_C0D6
; ---------------------------------------------------------------------------
loc_C0C9:
mov ax, 118h
sub ax, word_10BC4
mov word_10BC8, ax
mov word_10BCA, ax
loc_C0D6:
mov word_10BB2, 0
loc_C0DC:
push si
call sub_BDF4
mov byte_10BC7, 1
push 320
push word_10BC2
lea ax, [si-1]
push ax
push 0
call cdg_put_dissolve_e_8
mov byte_10BC7, 0
call sub_BCD5
inc word_10BB2
push [bp+arg_2]
push 100h
call sub_BCA5
or ax, ax
jz short loc_C0DC
mov word_10BB2, 0
loc_C114:
cmp word_10BB2, 0A1h
jg short loc_C12A
push 320
push word_10BC2
lea ax, [si-1]
push ax
call cdg_unput_for_upwards_motion_e_8
loc_C12A:
push si
call sub_BEC7
cmp word_10BB2, 0A1h
jg short loc_C199
mov ax, word_10BB2
dec ax
mov bx, 20
cwd
idiv bx
mov di, ax
cmp di, 7
jle short loc_C14A
mov di, 7
loc_C14A:
cmp byte_10BB4, 0
jnz short loc_C155
dec word_10BC2
loc_C155:
mov byte_10BC7, 1
cmp word_10BB2, 0A0h
jge short loc_C173
push 320
push word_10BC2
lea ax, [si-1]
push ax
push di
call cdg_put_dissolve_e_8
jmp short loc_C194
; ---------------------------------------------------------------------------
loc_C173:
call grcg_setcolor pascal, (GC_RMW shl 16) + 0
call grcg_byteboxfill_x pascal, ((8 / 8) shl 16) or 8, (((RES_X - 1 - 8) / 8) shl 16) or (RES_Y - 1 - 8)
call grcg_off
loc_C194:
mov byte_10BC7, 0
loc_C199:
call sub_BCD5
inc word_10BB2
push [bp+arg_0]
push 100h
call sub_BCA5
or ax, ax
jz loc_C114
call grcg_setcolor pascal, (GC_RMW shl 16) + 0
call grcg_byteboxfill_x pascal, ((8 / 8) shl 16) or 8, (((RES_X - 1 - 8) / 8) shl 16) or (RES_Y - 1 - 8)
call grcg_off
call sub_BCD5
call grcg_setcolor pascal, (GC_RMW shl 16) + 0
call grcg_byteboxfill_x pascal, ((8 / 8) shl 16) or 8, (((RES_X - 1 - 8) / 8) shl 16) or (RES_Y - 1 - 8)
call grcg_off
call sub_BCD5
pop di
pop si
pop bp
retn 6
sub_C097 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_C1FD proc near
arg_0 = word ptr 4
arg_2 = word ptr 6
arg_4 = word ptr 8
push bp
mov bp, sp
cmp word_10BBC, 2
jnz short loc_C22A
mov al, byte_10BB4
mov ah, 0
add ax, ax
mov bx, ax
mov word ptr [bx+27D8h], 108h
mov al, byte_10BB4
mov ah, 0
xor ax, 1
add ax, ax
mov bx, ax
mov word ptr [bx+27D8h], 107h
jmp short loc_C237
; ---------------------------------------------------------------------------
loc_C22A:
mov ax, 118h
sub ax, word_10BC4
mov word_10BC8, ax
mov word_10BCA, ax
loc_C237:
mov word_10BB2, 0
loc_C23D:
push [bp+arg_4]
call sub_BDF4
call sub_BCD5
inc word_10BB2
push [bp+arg_2]
push 100h
call sub_BCA5
or ax, ax
jz short loc_C23D
mov word_10BB2, 0
loc_C25D:
call sub_BB51
call sub_BCD5
inc word_10BB2
push [bp+arg_0]
push 100h
call sub_BCA5
or ax, ax
jz short loc_C25D
mov al, byte_10BB4
mov ah, 0
add ax, ax
mov bx, ax
mov ax, [bx+27D8h]
mov word_10BC2, ax
pop bp
retn 6
sub_C1FD endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_C288 proc near
var_4 = word ptr -4
var_2 = word ptr -2
enter 4, 0
push si
push di
push (352 shl 16) or 174
push (15 or FX_WEIGHT_BOLD)
mov al, playchar_10BD7
mov ah, 0
shl ax, 2
mov bx, ax
pushd aVERDICT_PLAYCHARS[bx]
call graph_putsa_fx
push (360 shl 16) or 199
push (15 or FX_WEIGHT_BOLD)
mov al, _rank
mov ah, 0
shl ax, 2
mov bx, ax
pushd aVERDICT_RANKS[bx]
call graph_putsa_fx
mov si, 408
mov [bp+var_4], 0
mov [bp+var_2], 8
jmp short loc_C319
; ---------------------------------------------------------------------------
loc_C2D5:
mov bx, [bp+var_2]
mov al, [bx+27DCh]
mov ah, 0
mov di, ax
cmp [bp+var_4], 0
jnz short loc_C2F7
or di, di
jz short loc_C2F7
mov ax, [bp+var_2]
shl ax, 3
sub si, ax
mov [bp+var_4], 1
loc_C2F7:
cmp [bp+var_4], 0
jz short loc_C316
push si
push (224 shl 16) or (15 or FX_WEIGHT_BOLD)
mov bx, di
shl bx, 2
pushd aVERDICT_NUMBERS[bx]
call graph_putsa_fx
add si, 16
loc_C316:
dec [bp+var_2]
loc_C319:
cmp [bp+var_2], 0
jg short loc_C2D5
mov al, _rem_credits
mov ah, 0
mov di, ax
push si
push (224 shl 16) or (15 or FX_WEIGHT_BOLD)
mov bx, di
shl bx, 2
pushd aVERDICT_NUMBERS[bx]
call graph_putsa_fx
push (408 shl 16) or 248
push (15 or FX_WEIGHT_BOLD)
mov bx, di
shl bx, 2
pushd aVERDICT_NUMBERS[bx]
call graph_putsa_fx
mov al, _skill
mov ah, 0
mov bx, 100
cwd
idiv bx
mov di, ax
mov si, 408
mov [bp+var_4], 0
or di, di
jz short loc_C38D
sub si, 16
mov [bp+var_4], 1
push si
push (291 shl 16) or (15 or FX_WEIGHT_BOLD)
mov bx, di
shl bx, 2
pushd aVERDICT_NUMBERS[bx]
call graph_putsa_fx
add si, 16
loc_C38D:
mov al, _skill
mov ah, 0
mov bx, 100
cwd
idiv bx
mov bx, 10
mov ax, dx
cwd
idiv bx
mov di, ax
or di, di
jz short loc_C3B4
cmp [bp+var_4], 0
jnz short loc_C3B4
mov [bp+var_4], 1
sub si, 8
loc_C3B4:
cmp [bp+var_4], 0
jz short loc_C3D3
push si
push (291 shl 16) or (15 or FX_WEIGHT_BOLD)
mov bx, di
shl bx, 2
pushd aVERDICT_NUMBERS[bx]
call graph_putsa_fx
add si, 16
loc_C3D3:
mov al, _skill
mov ah, 0
mov bx, 10
cwd
idiv bx
mov di, dx
push si
push (291 shl 16) or (15 or FX_WEIGHT_BOLD)
mov bx, di
shl bx, 2
pushd aVERDICT_NUMBERS[bx]
call graph_putsa_fx
lea ax, [si+16]
call graph_putsa_fx pascal, ax, (291 shl 16) or (15 or FX_WEIGHT_BOLD), ds, offset aU_ ; "<22>_"
pop di
pop si
leave
retn
sub_C288 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_C40D proc near
push bp
mov bp, sp
push si
push di
kajacall KAJA_SONG_FADE, 16
push 4
call palette_black_out
call _snd_delay_until_volume stdcall, 255
pop cx
kajacall KAJA_SONG_STOP
mov byte_106B0, 50h ; 'P'
mov si, 1
jmp short loc_C44B
; ---------------------------------------------------------------------------
loc_C43C:
les bx, _resident
assume es:nothing
add bx, si
mov al, es:[bx+resident_t.pid_winner]
mov [si+27DCh], al
inc si
loc_C44B:
cmp si, 9
jl short loc_C43C
les bx, _resident
mov al, 3
sub al, es:[bx+resident_t.rem_credits]
mov _rem_credits, al
mov al, es:[bx+resident_t.RESIDENT_playchar_paletted][0]
mov ah, 0
dec ax
cwd
sub ax, dx
sar ax, 1
mov playchar_10BD7, al
mov al, es:[bx+resident_t.rank]
mov _rank, al
mov al, es:[bx+resident_t.skill]
mov _skill, al
mov al, byte_10BD3
mov ah, 0
cmp ax, 3
jz short loc_C48B
cmp ax, 4
jz short loc_C49E
jmp short loc_C4B1
; ---------------------------------------------------------------------------
loc_C48B:
mov al, byte_10BD2
mov ah, 0
cwd
sub ax, dx
sar ax, 1
add al, _skill
add al, 2
mov _skill, al
loc_C49E:
mov al, byte_10BD2
mov ah, 0
cwd
sub ax, dx
sar ax, 1
add al, _skill
add al, 7
mov _skill, al
loc_C4B1:
cmp byte_10BD3, 5
jb short loc_C4C0
mov al, _skill
add al, 15
mov _skill, al
loc_C4C0:
cmp byte_10BD4, 0
jz short loc_C4CC
mov _skill, 100
loc_C4CC:
cmp _skill, 100
jbe short loc_C4D8
mov _skill, 100
loc_C4D8:
call _snd_load c, offset aEd_m, ds, SND_LOAD_SONG
mov PaletteTone, 0
call far ptr palette_show
push ds
push offset aEdbk1_rgb ; "edbk1.rgb"
call palette_entry_rgb
call far ptr palette_show
call grcg_setcolor pascal, (GC_RMW shl 16) + 8
graph_accesspage 1
call grcg_byteboxfill_x pascal, large 0, (((RES_X - 1) / 8) shl 16) or (RES_Y - 1)
graph_accesspage 0
call grcg_byteboxfill_x pascal, large 0, (((RES_X - 1) / 8) shl 16) or (RES_Y - 1)
call grcg_setcolor pascal, (GC_RMW shl 16) + 0
graph_accesspage 1
call grcg_byteboxfill_x pascal, ((8 / 8) shl 16) or 8, (((RES_X - 1 - 8) / 8) shl 16) or (RES_Y - 1 - 8)
graph_accesspage 0
call grcg_byteboxfill_x pascal, ((8 / 8) shl 16) or 8, (((RES_X - 1 - 8) / 8) shl 16) or (RES_Y - 1 - 8)
call grcg_off
graph_showpage 1
call cdg_load_single_noalpha pascal, 0, ds, offset aStf1_cdg, 0
call cdg_load_single_noalpha pascal, 1, ds, offset aStf11_cdg, 0
call cdg_load_single pascal, 2, ds, offset aStf3_cdg, 0
call cdg_load_single pascal, 3, ds, offset aStf4_cdg, 0
call cdg_load_single_noalpha pascal, 4, ds, offset aStf5_cdg, 0
call cdg_load_single_noalpha pascal, 5, ds, offset aStf6_cdg, 0
call cdg_load_single_noalpha pascal, 6, ds, offset aStf7_cdg, 0
call cdg_load_single_noalpha pascal, 7, ds, offset aStf8_cdg, 0
call cdg_load_single_noalpha pascal, 8, ds, offset aStf9_cdg, 0
call cdg_load_single_noalpha pascal, 9, ds, offset aStf10_cdg, 0
call cdg_load_single_noalpha pascal, 10, ds, offset aStf2_cdg, 0
call cdg_load_single_noalpha pascal, 11, ds, offset aStf12_cdg, 0
call sub_BB66
mov word_10BB2, 0
les bx, _resident
mov eax, es:[bx+resident_t.rand]
mov random_seed, eax
mov byte_10BB4, 0
mov PaletteTone, 100
call far ptr palette_show
kajacall KAJA_SONG_PLAY
mov byte_10BB6, 1
mov byte_10BB5, 1
push 1
call frame_delay
mov vsync_Count1, 0
loc_C657:
call sub_BB51
call sub_BCD5
inc word_10BB2
push 40100h
call sub_BCA5
or ax, ax
jz short loc_C657
mov byte_10BC7, 0
mov word_10BC4, 0
mov word_10BC0, 0C8h
mov word_10BBC, 2
mov word_10BBE, 41h ; 'A'
mov byte_10BC6, 0
pushd 8
push 0Ah
call sub_BFB2
mov word_10BBC, 1
mov word_10BBE, 0A1h
mov byte_10BB6, 0
push 10010h
push 14h
call sub_BFB2
mov word_10BC4, 20h ; ' '
mov word_10BC0, 0A8h ; '<27>'
push 20016h
push 18h
call sub_C1FD
mov byte_10BC6, 7
mov word_10BC0, 0D8h
mov word_10BC4, 0FFF0h
push 30020h
push 22h ; '"'
call sub_C097
mov byte_10BC6, 0
mov word_10BC0, 0C8h
mov word_10BC4, 0
push 40024h
push 26h ; '&'
call sub_BFB2
push 0B002Ah
push 2Ch ; ','
call sub_BFB2
push 50030h
push 32h ; '2'
call sub_BFB2
push 60036h
push 38h ; '8'
call sub_BFB2
push 0A003Ch
push 3Eh ; '>'
call sub_BFB2
mov word_10BB2, 0
loc_C735:
call sub_BB51
push 1400080h
push 8
call sub_BF7E
push 0C000F0h
push 9
call sub_BF7E
call sub_BCD5
inc word_10BB2
push 420100h
call sub_BCA5
or ax, ax
jz short loc_C735
mov al, 1
sub al, byte_10BB4
graph_accesspage al
call sub_C288
graph_accesspage byte_10BB4
call sub_C288
mov word_10BB2, 0
xor di, di
loc_C781:
call input_mode_interface
call sub_BB51
call sub_BCD5
inc word_10BB2
or di, di
jz short loc_C7AB
mov PaletteTone, di
call far ptr palette_show
test byte ptr word_10BB2, 1
jz short loc_C781
dec di
or di, di
jnz short loc_C781
jmp short loc_C7CD
; ---------------------------------------------------------------------------
loc_C7AB:
cmp _input_sp, INPUT_NONE
jz short loc_C781
cmp word_10BB2, 100h
jle short loc_C781
kajacall KAJA_SONG_FADE, 8
mov di, 100
mov word_10BB2, 0
jmp short loc_C781
; ---------------------------------------------------------------------------
loc_C7CD:
xor si, si
jmp short loc_C7D8
; ---------------------------------------------------------------------------
loc_C7D1:
call cdg_free pascal, si
inc si
loc_C7D8:
cmp si, CDG_SLOT_COUNT
jl short loc_C7D1
pop di
pop si
pop bp
retn
sub_C40D endp
mainl_03_TEXT ends
; ===========================================================================
SHARED segment word public 'CODE' use16
extern _snd_determine_mode:proc
extern _snd_delay_until_volume:proc
extern _snd_load:proc
extern VECTOR2:proc
extern _game_exit:proc
extern CDG_PUT_8:proc
extern CDG_PUT_HFLIP_8:proc
extern FRAME_DELAY:proc
extern PI_PALETTE_APPLY:proc
extern PI_PUT_8:proc
extern PI_PUT_INTERLACE_8:proc
extern _snd_se_reset:proc
extern SND_SE_PLAY:proc
extern _snd_se_update:proc
extern SND_KAJA_INTERRUPT:proc
extern GAME_INIT_MAIN:proc
extern CDG_LOAD_SINGLE:proc
extern CDG_LOAD_SINGLE_NOALPHA:proc
extern CDG_LOAD_ALL_NOALPHA:proc
extern CDG_LOAD_ALL:proc
extern CDG_FREE:proc
extern _game_exit_from_mainl_to_main:proc
extern GRAPH_PUTSA_FX:proc
extern SND_DELAY_UNTIL_MEASURE:proc
extern INPUT_WAIT_FOR_OK_OR_MEASURE:proc
extern INPUT_WAIT_FOR_OK:proc
extern PI_LOAD:proc
extern PI_PUT_QUARTER_8:proc
extern INPUT_MODE_INTERFACE:proc
extern INPUT_WAIT_FOR_CHANGE:proc
extern CDG_PUT_NOALPHA_8:proc
extern _hflip_lut_generate:proc
SHARED ends
.data
dw offset a00sl_cd2
dw offset a02sl_cd2
dw offset a04sl_cd2
dw offset a06sl_cd2
dw offset a08sl_cd2
dw offset a10sl_cd2
dw offset a12sl_cd2
dw offset a14sl_cd2
dw offset a16sl_cd2
dd a@00tx_txt ; "@00TX.TXT"
dd a@01tx_txt ; "@01TX.TXT"
dd a@02tx_txt ; "@02TX.TXT"
dd a@03tx_txt ; "@03TX.TXT"
dd a@04tx_txt ; "@04TX.TXT"
dd a@05tx_txt ; "@05TX.TXT"
dd a@06tx_txt ; "@06TX.TXT"
dd a@07tx_txt ; "@07TX.TXT"
dd a@08tx_txt ; "@08TX.TXT"
off_E4B6 dd a@00dm0_txt
; "@00DM0.TXT"
CHAR_TITLE dd TITLE_REIMU ; " <20><><EFBFBD>Ɠ`<60><><EFBFBD><EFBFBD><EFBFBD>ێ炷<DB8E><E782B7><EFBFBD>ޏ<EFBFBD> "
CHAR_NAME dd NAME_REIMU ; " <20><><EFBFBD><EFBFBD><EFBFBD>@<40>˖<EFBFBD>"
dd TITLE_MIMA ; " <20>v<EFBFBD><76><EFBFBD>̖<EFBFBD><CC96>ɉ^<5E><><EFBFBD><EFBFBD><EFBFBD>C<EFBFBD><43><EFBFBD><EFBFBD>_ "
dd NAME_MIMA ; " <09><> <20><>"
dd TITLE_MARISA ; " <20><><EFBFBD>@<40>ƍg<C68D><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȃ鑶<C882><E991B6> "
dd NAME_MARISA ; " <20><><EFBFBD>J<EFBFBD>@<40><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "
dd TITLE_ELLEN ; "<22>͂<EFBFBD><CD82><EFBFBD><E782AB><EFBFBD>̂ŗ<CC82><C597>𖲌<EFBFBD><F096B28C><EFBFBD><E99682>"
dd NAME_ELLEN ; "<22>@<40>@<40>G<EFBFBD><47><EFBFBD><EFBFBD>"
dd TITLE_KOTOHIME ; " <09>e<EFBFBD><65><EFBFBD>ɔ<EFBFBD><C994>𖲂݂<F096B282><DD82>P "
dd NAME_KOTOHIME ; " <20><><EFBFBD>e<EFBFBD>P"
dd TITLE_KANA ; " <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "
dd NAME_KANA ; "<22>J<EFBFBD>i<EFBFBD>E<EFBFBD>A<EFBFBD>i<EFBFBD>x<EFBFBD><78><EFBFBD><EFBFBD>"
dd TITLE_RIKAKO ; " <20>@<40>@<40>@<40><><EFBFBD><EFBFBD><EFBFBD>T<EFBFBD><54><EFBFBD>Ȋw "
dd NAME_RIKAKO ; "<22>@<40><><EFBFBD>q<EFBFBD>@<40><><EFBFBD><EFBFBD><EFBFBD>q"
dd TITLE_CHIYURI ; "<22>@ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E996B2><EFBFBD>̏Z<CC8F>l "
dd NAME_CHIYURI ; " <20>k<EFBFBD><6B><EFBFBD>́@<40><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
dd TITLE_YUMEMI ; "<22>@ <20>@<40>@<40>@<40><><EFBFBD><EFBFBD><EFBFBD>`<60><><EFBFBD>@<40>@<40>@ "
dd NAME_YUMEMI ; " <20>@<40><><EFBFBD><EFBFBD><EFBFBD>@<40><><EFBFBD><EFBFBD>"
word_E502 dw offset aSt_cd2
word_E504 dw offset aStnx1_pi
a0016_pi db '0016.pi',0
db 0
db 0
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
a@00tx_txt db '@00TX.TXT',0
a@01tx_txt db '@01TX.TXT',0
a@02tx_txt db '@02TX.TXT',0
a@03tx_txt db '@03TX.TXT',0
a@04tx_txt db '@04TX.TXT',0
a@05tx_txt db '@05TX.TXT',0
a@06tx_txt db '@06TX.TXT',0
a@07tx_txt db '@07TX.TXT',0
a@08tx_txt db '@08TX.TXT',0
a@00dm0_txt db '@00DM0.TXT',0
TITLE_REIMU db ' <20><><EFBFBD>Ɠ`<60><><EFBFBD><EFBFBD><EFBFBD>ێ炷<DB8E><E782B7><EFBFBD>ޏ<EFBFBD> ',0
NAME_REIMU db ' <20><><EFBFBD><EFBFBD><EFBFBD>@<40>˖<EFBFBD>',0
TITLE_MIMA db ' <20>v<EFBFBD><76><EFBFBD>̖<EFBFBD><CC96>ɉ^<5E><><EFBFBD><EFBFBD><EFBFBD>C<EFBFBD><43><EFBFBD><EFBFBD>_ ',0
NAME_MIMA db ' <20><> <20><>',0
TITLE_MARISA db ' <20><><EFBFBD>@<40>ƍg<C68D><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȃ鑶<C882><E991B6> ',0
NAME_MARISA db ' <20><><EFBFBD>J<EFBFBD>@<40><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ',0
TITLE_ELLEN db '<27>͂<EFBFBD><CD82><EFBFBD><E782AB><EFBFBD>̂ŗ<CC82><C597>𖲌<EFBFBD><F096B28C><EFBFBD><E99682>',0
NAME_ELLEN db '<27>@<40>@<40>G<EFBFBD><47><EFBFBD><EFBFBD>',0
TITLE_KOTOHIME db ' <20>e<EFBFBD><65><EFBFBD>ɔ<EFBFBD><C994>𖲂݂<F096B282><DD82>P ',0
NAME_KOTOHIME db ' <20><><EFBFBD>e<EFBFBD>P',0
TITLE_KANA db ' <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ',0
NAME_KANA db '<27>J<EFBFBD>i<EFBFBD>E<EFBFBD>A<EFBFBD>i<EFBFBD>x<EFBFBD><78><EFBFBD><EFBFBD>',0
TITLE_RIKAKO db ' <20>@<40>@<40>@<40><><EFBFBD><EFBFBD><EFBFBD>T<EFBFBD><54><EFBFBD>Ȋw ',0
NAME_RIKAKO db '<27>@<40><><EFBFBD>q<EFBFBD>@<40><><EFBFBD><EFBFBD><EFBFBD>q',0
TITLE_CHIYURI db '<27>@ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E996B2><EFBFBD>̏Z<CC8F>l ',0
NAME_CHIYURI db ' <20>k<EFBFBD><6B><EFBFBD>́@<40><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>',0
TITLE_YUMEMI db '<27>@ <20>@<40>@<40>@<40><><EFBFBD><EFBFBD><EFBFBD>`<60><><EFBFBD>@<40>@<40>@ ',0
NAME_YUMEMI db ' <20>@<40><><EFBFBD><EFBFBD><EFBFBD>@<40><><EFBFBD><EFBFBD>',0
include th03/formats/cfg_lres[data].asm
aLogo0_rgb db 'logo0.rgb',0
aLogo_cd2 db 'logo.cd2',0
aLogo5_cdg db 'logo5.cdg',0
aLogo1_rgb db 'logo1.rgb',0
aSt_cd2 db 'st.cd2',0
aStnx1_pi db 'stnx1.pi',0
aStnx0_pi db 'stnx0.pi',0
a00mm_m db '00mm.m',0
aDec_m db 'dec.m',0
aEn2_pi db 'EN2.pi',0
aEnemy00_pi db 'ENEMY00.pi',0
aEnemy01_pi db 'ENEMY01.pi',0
aEnemy02_pi db 'ENEMY02.pi',0
aEnemy03_pi db 'ENEMY03.pi',0
aEnemy04_pi db 'ENEMY04.pi',0
aYume_efc db 'YUME.EFC',0
aCOul db '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1.dat',0
aMikoft_bft db 'MIKOFT.bft',0
; char path[]
path db 'op',0
aWin_m db 'win.m',0
; char aMain[]
aMain db 'main',0
include libs/master.lib/atan8[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/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
public _snd_active
_snd_active db 0
db 0
include libs/master.lib/respal_exist[data].asm
include th03/snd/se_state[data].asm
include th02/formats/pfopen[data].asm
include th03/formats/cdg[data].asm
include th03/snd/se_priority[data].asm
a0 db '0',0
aOver_pi db 'over.pi',0
include th03/formats/pi_put_masked[data].asm
asc_EFC2 db ' ', 0
even
public _REGIST_PLAYCHARS
_REGIST_PLAYCHARS label dword
dd aNoEntry ; " No Entry! "
dd aB@b@sCB@b@ ; "<22>@<40>@<40>˖<EFBFBD><CB96>@<40>@"
dd aB@b@cgcvb@b@ ; "<22>@<40>@<40><><EFBFBD><EFBFBD><EFBFBD>@<40>@"
dd aB@cvcanB@ ; " <20>@<40><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@ "
dd aB@gggmgub@ ; " <20>@<40>G<EFBFBD><47><EFBFBD><EFBFBD><EFBFBD>@ "
dd aB@pmuexpb@ ; " <20>@<40><><EFBFBD>e<EFBFBD>P<EFBFBD>@ "
dd aB@Gjgi ; " <20>@ <20>J<EFBFBD>i "
dd aB@canboq ; " <20>@<40><><EFBFBD><EFBFBD><EFBFBD>q "
dd aB@vVfvsb@ ; " <20>@<40><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@ "
dd aB@CF ; " <20>@ <20><><EFBFBD><EFBFBD><EFBFBD>@ "
public _REGI_PLAYCHAR
_REGI_PLAYCHAR label byte
db REGI_R, REGI_E, REGI_I, REGI_M, REGI_U, regi_sp, regi_sp, regi_sp
db REGI_M, REGI_I, REGI_M, REGI_A, regi_sp, regi_sp, regi_sp, regi_sp
db REGI_M, REGI_A, REGI_R, REGI_I, REGI_S, REGI_A, regi_sp, regi_sp
db REGI_E, REGI_L, REGI_E, REGI_N, regi_sp, regi_sp, regi_sp, regi_sp
db REGI_K, REGI_O, REGI_T, REGI_O, REGI_H, REGI_I, REGI_M, REGI_E
db REGI_K, REGI_A, REGI_N, REGI_A, regi_sp, regi_sp, regi_sp, regi_sp
db REGI_R, REGI_I, REGI_K, REGI_A, REGI_K, REGI_O, regi_sp, regi_sp
db REGI_C, REGI_H, REGI_I, REGI_Y, REGI_U, REGI_R, REGI_I, regi_sp
db REGI_Y, REGI_U, REGI_M, REGI_E, REGI_M, REGI_I, regi_sp, regi_sp
public _SCOREDAT_FN
_SCOREDAT_FN dw offset aYume_nem
public _rank_image_fn, _REGIST_INPUT_HOLD_INIT
_rank_image_fn dw offset aRft0_cdg
_REGIST_INPUT_HOLD_INIT dw 4 dup(0)
aNoEntry db ' No Entry! ',0
aB@b@sCB@b@ db '<27>@<40>@<40>˖<EFBFBD><CB96>@<40>@',0
aB@b@cgcvb@b@ db '<27>@<40>@<40><><EFBFBD><EFBFBD><EFBFBD>@<40>@',0
aB@cvcanB@ db ' <20>@<40><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@ ',0
aB@gggmgub@ db ' <20>@<40>G<EFBFBD><47><EFBFBD><EFBFBD><EFBFBD>@ ',0
aB@pmuexpb@ db ' <20>@<40><><EFBFBD>e<EFBFBD>P<EFBFBD>@ ',0
aB@Gjgi db ' <20>@ <20>J<EFBFBD>i ',0
aB@canboq db ' <20>@<40><><EFBFBD><EFBFBD><EFBFBD>q ',0
aB@vVfvsb@ db ' <20>@<40><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@ ',0
aB@CF db ' <20>@ <20><><EFBFBD><EFBFBD><EFBFBD>@ ',0
aYume_nem db 'YUME.NEM',0
aRft0_cdg db 'rft0.cdg',0
public _regib_pi, _regi2_bft, _regi1_bft
_regib_pi db 'regib.pi',0
_regi2_bft db 'regi2.bft',0
_regi1_bft db 'regi1.bft',0
aScore_m db 'score.m',0
aConti_pi db 'conti.pi',0
aConti_cd2 db 'conti.cd2',0
aOver_pi_0 db 'over.pi',0
aOver_m db 'over.m',0
db 0
off_EE4E dd a@00ed_txt
; "@00ED.TXT"
db 3Ch ; <
db 0
db 7Eh ; ~
db 0
db 0FFh
db 0
db 0FFh
db 0
db 0FFh
db 0
db 0FFh
db 0
db 7Eh ; ~
db 0
db 3Ch ; <
db 0
db 0
db 0
db 18h
db 0
db 3Ch ; <
db 0
db 7Eh ; ~
db 0
db 7Eh ; ~
db 0
db 3Ch ; <
db 0
db 18h
db 0
db 0
db 0
db 0
db 0
db 0
db 0
db 18h
db 0
db 3Ch ; <
db 0
db 3Ch ; <
db 0
db 18h
db 0
db 0
db 0
db 0
db 0
db 0
db 0
db 0
db 0
db 0
db 0
db 18h
db 0
db 18h
db 0
db 0
db 0
db 0
db 0
db 0
db 0
include th03/formats/cdg_put_dissolve[data].asm
aVERDICT_PLAYCHARS label dword
dd aFocab@sC_0 ; " <20><><EFBFBD><EFBFBD><EFBFBD>@<40>˖<EFBFBD>"
dd aCgCv_0 ; " <09><> <20><>"
dd aCIjb@cvcan_0 ; " <20><><EFBFBD>J<EFBFBD>@<40><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "
dd aB@b@gggmgu_0 ; "<22>@<40>@<40>G<EFBFBD><47><EFBFBD><EFBFBD>"
dd aPmuexp_0 ; " <20><><EFBFBD>e<EFBFBD>P"
dd aGjgibegagigx_0 ; "<22>J<EFBFBD>i<EFBFBD>E<EFBFBD>A<EFBFBD>i<EFBFBD>x<EFBFBD><78><EFBFBD><EFBFBD>"
dd aB@tisqb@canb_0 ; "<22>@<40><><EFBFBD>q<EFBFBD>@<40><><EFBFBD><EFBFBD><EFBFBD>q"
dd aCkftiB@vVfvs_0 ; " <20>k<EFBFBD><6B><EFBFBD>́@<40><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
dd aB@iknsb@cF_0 ; " <20>@<40><><EFBFBD><EFBFBD><EFBFBD>@<40><><EFBFBD><EFBFBD>"
aVERDICT_RANKS label dword
dd aVdvbvuvs ; " <20>d<EFBFBD><64><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
dd aVmvpvtvnvbvm ; " <20>m<EFBFBD><6D><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
dd aVgvbvtvd ; " <20>g<EFBFBD><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
dd aVkvxvovbvfvivg ; "<22>k<EFBFBD><6B><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
aVERDICT_NUMBERS label dword
dd aVo ; "<22>O"
dd aVp ; "<22>P"
dd aVq ; "<22>Q"
dd aVr ; "<22>R"
dd aVs ; "<22>S"
dd aVt ; "<22>T"
dd aVu ; "<22>U"
dd aVv ; "<22>V"
dd aVw ; "<22>W"
dd aVx ; "<22>X"
a@00ed_txt db '@00ED.TXT',0
a@99ed_txt db '@99ED.TXT',0
; char aOp_0[]
aOp_0 db 'op',0
aFocab@sC_0 db ' <20><><EFBFBD><EFBFBD><EFBFBD>@<40>˖<EFBFBD>',0
aCgCv_0 db ' <20><> <20><>',0
aCIjb@cvcan_0 db ' <20><><EFBFBD>J<EFBFBD>@<40><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ',0
aB@b@gggmgu_0 db '<27>@<40>@<40>G<EFBFBD><47><EFBFBD><EFBFBD>',0
aPmuexp_0 db ' <20><><EFBFBD>e<EFBFBD>P',0
aGjgibegagigx_0 db '<27>J<EFBFBD>i<EFBFBD>E<EFBFBD>A<EFBFBD>i<EFBFBD>x<EFBFBD><78><EFBFBD><EFBFBD>',0
aB@tisqb@canb_0 db '<27>@<40><><EFBFBD>q<EFBFBD>@<40><><EFBFBD><EFBFBD><EFBFBD>q',0
aCkftiB@vVfvs_0 db ' <20>k<EFBFBD><6B><EFBFBD>́@<40><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>',0
aB@iknsb@cF_0 db ' <20>@<40><><EFBFBD><EFBFBD><EFBFBD>@<40><><EFBFBD><EFBFBD>',0
aVdvbvuvs db ' <20>d<EFBFBD><64><EFBFBD><EFBFBD><EFBFBD><EFBFBD>',0
aVmvpvtvnvbvm db ' <20>m<EFBFBD><6D><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>',0
aVgvbvtvd db ' <20>g<EFBFBD><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD>',0
aVkvxvovbvfvivg db '<27>k<EFBFBD><6B><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>',0
aVo db '<27>O',0
aVp db '<27>P',0
aVq db '<27>Q',0
aVr db '<27>R',0
aVs db '<27>S',0
aVt db '<27>T',0
aVu db '<27>U',0
aVv db '<27>V',0
aVw db '<27>W',0
aVx db '<27>X',0
aU_ db '<27>_',0
aEd_m db 'ed.m',0
aEdbk1_rgb db 'edbk1.rgb',0
aStf1_cdg db 'stf1.cdg',0
aStf11_cdg db 'stf11.cdg',0
aStf3_cdg db 'stf3.cdg',0
aStf4_cdg db 'stf4.cdg',0
aStf5_cdg db 'stf5.cdg',0
aStf6_cdg db 'stf6.cdg',0
aStf7_cdg db 'stf7.cdg',0
aStf8_cdg db 'stf8.cdg',0
aStf9_cdg db 'stf9.cdg',0
aStf10_cdg db 'stf10.cdg',0
aStf2_cdg db 'stf2.cdg',0
aStf12_cdg db 'stf12.cdg',0
.data?
unk_F72C db ? ;
db 59 dup(?)
byte_F768 db ?
unk_F769 db ? ;
db 59 dup(?)
byte_F7A5 db ?
unk_F7A6 db ? ;
db 59 dup(?)
byte_F7E2 db ?
_playchar_filename_id db PLAYER_COUNT dup (?)
byte_F7E5 db ?
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
public _cutscene_script
_cutscene_script dd ?
dword_105CA dd ?
byte_105CE db ?
db ?
point_105D0 Point <?>
word_105D4 dw ?
col_105D6 db ?
byte_105D7 db ?
word_105D8 dw ?
public _resident
_resident dd ?
public _hi
_hi scoredat_section_t <?>
include th03/hiscore/regist[bss].asm
db 2 dup(?)
byte_106B0 db ?
db 1281 dup(?)
word_10BB2 dw ?
byte_10BB4 db ?
byte_10BB5 db ?
byte_10BB6 db ?
db 5 dup(?)
word_10BBC dw ?
word_10BBE dw ?
word_10BC0 dw ?
word_10BC2 dw ?
word_10BC4 dw ?
byte_10BC6 db ?
byte_10BC7 db ?
word_10BC8 dw ?
word_10BCA dw ?
_rem_credits db ?
db 5 dup(?)
byte_10BD2 db ?
byte_10BD3 db ?
byte_10BD4 db ?
db ?
_rank db ?
playchar_10BD7 db ?
_skill db ?
db ? ;
end