;
; +-------------------------------------------------------------------------+
; |   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_	; "�_"
		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 ; '�'
		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		; "   ���Ɠ`����ێ炷��ޏ�   "
CHAR_NAME		dd NAME_REIMU		; "   ����@�˖�"
		dd TITLE_MIMA		; " �v���̖��ɉ^����C���鐸�_ "
		dd NAME_MIMA		; "	�� ��"
		dd TITLE_MARISA	; "   ���@�ƍg������Ȃ鑶��   "
		dd NAME_MARISA		; "  ���J�@������ "
		dd TITLE_ELLEN		; "�͂��炫���̂ŗ��𖲌��閂��"
		dd NAME_ELLEN		; "�@�@�G����"
		dd TITLE_KOTOHIME		; "	�e���ɔ��𖲂݂�P     "
		dd NAME_KOTOHIME		; "    ���e�P"
		dd TITLE_KANA			; "	������������������     "
		dd NAME_KANA	; "�J�i�E�A�i�x����"
		dd TITLE_RIKAKO		; "  �@�@�@����T���Ȋw	       "
		dd NAME_RIKAKO	; "�@���q�@�����q"
		dd TITLE_CHIYURI		; "�@  ���������閲���̏Z�l    "
		dd NAME_CHIYURI	; " �k���́@�����"
		dd TITLE_YUMEMI	; "�@  �@�@�@�����`���@�@�@    "
		dd NAME_YUMEMI		; " �@����@����"
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 '   ���Ɠ`����ێ炷��ޏ�   ',0
NAME_REIMU	db '   ����@�˖�',0
TITLE_MIMA	db ' �v���̖��ɉ^����C���鐸�_ ',0
NAME_MIMA		db '     �� ��',0
TITLE_MARISA	db '   ���@�ƍg������Ȃ鑶��   ',0
NAME_MARISA	db '  ���J�@������ ',0
TITLE_ELLEN	db '�͂��炫���̂ŗ��𖲌��閂��',0
NAME_ELLEN	db '�@�@�G����',0
TITLE_KOTOHIME		db '     �e���ɔ��𖲂݂�P     ',0
NAME_KOTOHIME		db '    ���e�P',0
TITLE_KANA		db '     ������������������     ',0
NAME_KANA	db '�J�i�E�A�i�x����',0
TITLE_RIKAKO	db '  �@�@�@����T���Ȋw        ',0
NAME_RIKAKO	db '�@���q�@�����q',0
TITLE_CHIYURI		db '�@  ���������閲���̏Z�l    ',0
NAME_CHIYURI	db ' �k���́@�����',0
TITLE_YUMEMI	db '�@  �@�@�@�����`���@�@�@    ',0
NAME_YUMEMI	db ' �@����@����',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 '������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@		; "�@�@�˖��@�@"
		dd aB@b@cgcvb@b@	; "�@�@�����@�@"
		dd aB@cvcanB@		; " �@�������@ "
		dd aB@gggmgub@		; " �@�G�����@ "
		dd aB@pmuexpb@		; " �@���e�P�@ "
		dd aB@Gjgi		; " �@ �J�i    "
		dd aB@canboq		; " �@�����q   "
		dd aB@vVfvsb@		; " �@�����@ "
		dd aB@CF		; " �@ �����@  "
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 '�@�@�˖��@�@',0
aB@b@cgcvb@b@	db '�@�@�����@�@',0
aB@cvcanB@	db ' �@�������@ ',0
aB@gggmgub@	db ' �@�G�����@ ',0
aB@pmuexpb@	db ' �@���e�P�@ ',0
aB@Gjgi		db ' �@ �J�i    ',0
aB@canboq	db ' �@�����q   ',0
aB@vVfvsb@	db ' �@�����@ ',0
aB@CF		db ' �@ �����@  ',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		; "   ����@�˖�"
		dd aCgCv_0		; "	�� ��"
		dd aCIjb@cvcan_0	; "  ���J�@������ "
		dd aB@b@gggmgu_0	; "�@�@�G����"
		dd aPmuexp_0		; "    ���e�P"
		dd aGjgibegagigx_0	; "�J�i�E�A�i�x����"
		dd aB@tisqb@canb_0	; "�@���q�@�����q"
		dd aCkftiB@vVfvs_0	; " �k���́@�����"
		dd aB@iknsb@cF_0	; " �@����@����"
aVERDICT_RANKS label dword
		dd aVdvbvuvs		; "   �d������"
		dd aVmvpvtvnvbvm	; " �m����������"
		dd aVgvbvtvd		; "   �g������"
		dd aVkvxvovbvfvivg	; "�k������������"
aVERDICT_NUMBERS label dword
		dd aVo			; "�O"
		dd aVp			; "�P"
		dd aVq			; "�Q"
		dd aVr			; "�R"
		dd aVs			; "�S"
		dd aVt			; "�T"
		dd aVu			; "�U"
		dd aVv			; "�V"
		dd aVw			; "�W"
		dd aVx			; "�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 '   ����@�˖�',0
aCgCv_0		db '     �� ��',0
aCIjb@cvcan_0	db '  ���J�@������ ',0
aB@b@gggmgu_0	db '�@�@�G����',0
aPmuexp_0	db '    ���e�P',0
aGjgibegagigx_0	db '�J�i�E�A�i�x����',0
aB@tisqb@canb_0	db '�@���q�@�����q',0
aCkftiB@vVfvs_0	db ' �k���́@�����',0
aB@iknsb@cF_0	db ' �@����@����',0
aVdvbvuvs	db '   �d������',0
aVmvpvtvnvbvm	db ' �m����������',0
aVgvbvtvd	db '   �g������',0
aVkvxvovbvfvivg	db '�k������������',0
aVo		db '�O',0
aVp		db '�P',0
aVq		db '�Q',0
aVr		db '�R',0
aVs		db '�S',0
aVt		db '�T',0
aVu		db '�U',0
aVv		db '�V',0
aVw		db '�W',0
aVx		db '�X',0
aU_		db '�_',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