ReC98/th04_maine.asm

3059 lines
63 KiB
NASM
Raw Blame History

This file contains ambiguous Unicode characters

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

;
; +-------------------------------------------------------------------------+
; | This file has been generated by The Interactive Disassembler (IDA) |
; | Copyright (c) 2009 by Hex-Rays, <support@hex-rays.com> |
; +-------------------------------------------------------------------------+
;
; Input MD5 : 50C37C4BDDEC04B753524F5D3B030A96
; File Name : th04/MAINE.EXE
; Format : MS-DOS executable (EXE)
; Base Address: 0h Range: 0h-126D0h Loaded length: 10062h
; Entry Point : 0:0
; OS type : MS DOS
; Application type: Executable 16bit
.386
.model use16 large _TEXT
BINARY = 'E'
include ReC98.inc
include th04/th04.inc
include th04/hardware/grppsafx.inc
extern _tolower:proc
extern __ctype:byte
group_01 group maine_01_TEXT
; ===========================================================================
; Segment type: Pure code
_TEXT segment word public 'CODE' use16
extern PALETTE_BLACK_IN:proc
extern PALETTE_BLACK_OUT:proc
extern EGC_OFF:proc
extern FILE_APPEND:proc
extern FILE_CLOSE:proc
extern FILE_CREATE:proc
extern FILE_EXIST:proc
extern FILE_READ:proc
extern FILE_ROPEN:proc
extern FILE_SEEK:proc
extern FILE_WRITE:proc
extern GRCG_SETCOLOR:proc
extern GAIJI_PUTCA:proc
extern GAIJI_PUTSA:proc
extern GRAPH_COPY_PAGE:proc
extern GRAPH_PI_FREE:proc
extern PALETTE_SHOW:proc
extern IRAND:proc
extern TEXT_CLEAR:proc
extern SUPER_FREE:proc
extern SUPER_ENTRY_BFNT:proc
extern SUPER_PUT:proc
extern GRAPH_GAIJI_PUTS:proc
extern GRAPH_GAIJI_PUTC:proc
_TEXT ends
; ===========================================================================
maine_01_TEXT segment byte public 'CODE' use16
assume cs:group_01
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_AED0 proc near
var_2 = word ptr -2
arg_0 = word ptr 4
@@top = word ptr 6
@@left = word ptr 8
enter 2, 0
push si
push di
mov si, [bp+arg_0]
or si, si
jnz short loc_AEF1
push [bp+@@left]
push [bp+@@top]
mov al, _cdg_slot
mov ah, 0
push ax
call cdg_put_8
jmp loc_B027
; ---------------------------------------------------------------------------
loc_AEF1:
call grcg_setcolor pascal, (GC_RMW shl 16) + V_WHITE
mov bx, 4
mov ax, si
cwd
idiv bx
mov si, ax
push [bp+@@left]
push ax
mov al, _radial_angle
mov ah, 0
add ax, ax
mov bx, ax
push _CosTable8[bx]
call @polar$qiii
mov di, ax
push [bp+@@top]
push si
mov al, _radial_angle
mov ah, 0
add ax, ax
mov bx, ax
push _SinTable8[bx]
call @polar$qiii
mov [bp+var_2], ax
push di
push ax
mov al, _cdg_slot
mov ah, 0
inc ax
push ax
push 0
call cdg_put_plane
mov al, _radial_angle
add al, 40h
mov _radial_angle, al
push [bp+@@left]
push si
mov ah, 0
add ax, ax
mov bx, ax
push _CosTable8[bx]
call @polar$qiii
mov di, ax
push [bp+@@top]
push si
mov al, _radial_angle
mov ah, 0
add ax, ax
mov bx, ax
push _SinTable8[bx]
call @polar$qiii
mov [bp+var_2], ax
push di
push ax
mov al, _cdg_slot
mov ah, 0
inc ax
push ax
push 1
call cdg_put_plane
mov al, _radial_angle
add al, 40h
mov _radial_angle, al
push [bp+@@left]
push si
mov ah, 0
add ax, ax
mov bx, ax
push _CosTable8[bx]
call @polar$qiii
mov di, ax
push [bp+@@top]
push si
mov al, _radial_angle
mov ah, 0
add ax, ax
mov bx, ax
push _SinTable8[bx]
call @polar$qiii
mov [bp+var_2], ax
push di
push ax
mov al, _cdg_slot
mov ah, 0
inc ax
push ax
push 2
call cdg_put_plane
mov al, _radial_angle
add al, 40h
mov _radial_angle, al
push [bp+@@left]
push si
mov ah, 0
add ax, ax
mov bx, ax
push _CosTable8[bx]
call @polar$qiii
mov di, ax
push [bp+@@top]
push si
mov al, _radial_angle
mov ah, 0
add ax, ax
mov bx, ax
push _SinTable8[bx]
call @polar$qiii
mov [bp+var_2], ax
push di
push ax
mov al, _cdg_slot
mov ah, 0
inc ax
push ax
push 3
call cdg_put_plane
mov al, _radial_angle
add al, 40h
mov _radial_angle, al
GRCG_OFF_CLOBBERING dx
loc_B027:
pop di
pop si
leave
retn 6
sub_AED0 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_B02D proc near
var_2 = word ptr -2
arg_0 = word ptr 4
arg_2 = word ptr 6
arg_4 = word ptr 8
enter 2, 0
push si
push di
mov si, [bp+arg_0]
or si, si
jnz short loc_B04E
push [bp+arg_4]
push [bp+arg_2]
mov al, _cdg_slot
mov ah, 0
push ax
call cdg_put_8
jmp loc_B13E
; ---------------------------------------------------------------------------
loc_B04E:
call grcg_setcolor pascal, (GC_RMW shl 16) + V_WHITE
mov ax, si
cwd
sub ax, dx
sar ax, 1
mov si, ax
push [bp+arg_4]
cwd
sub ax, dx
sar ax, 1
push ax
push _CosTable8+192
call @polar$qiii
mov di, ax
push [bp+arg_2]
mov ax, si
cwd
sub ax, dx
sar ax, 1
push ax
push _CosTable8+64
call @polar$qiii
mov [bp+var_2], ax
push di
push ax
mov al, _cdg_slot
mov ah, 0
inc ax
push ax
push 0
call cdg_put_plane
call @polar$qiii pascal, [bp+arg_4], si, _CosTable8+128
mov di, ax
call @polar$qiii pascal, [bp+arg_2], si, _CosTable8
mov [bp+var_2], ax
push di
push ax
mov al, _cdg_slot
mov ah, 0
inc ax
push ax
push 1
call cdg_put_plane
push [bp+arg_4]
mov ax, si
cwd
sub ax, dx
sar ax, 1
push ax
push _CosTable8+448
call @polar$qiii
mov di, ax
push [bp+arg_2]
mov ax, si
cwd
sub ax, dx
sar ax, 1
push ax
push _CosTable8+320
call @polar$qiii
mov [bp+var_2], ax
push di
push ax
mov al, _cdg_slot
mov ah, 0
inc ax
push ax
push 2
call cdg_put_plane
call @polar$qiii pascal, [bp+arg_4], si, _CosTable8+384
mov di, ax
call @polar$qiii pascal, [bp+arg_2], si, _CosTable8+256
mov [bp+var_2], ax
push di
push ax
mov al, _cdg_slot
mov ah, 0
inc ax
push ax
push 3
call cdg_put_plane
GRCG_OFF_CLOBBERING dx
loc_B13E:
pop di
pop si
leave
retn 6
sub_B02D endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_B144 proc near
var_2 = word ptr -2
arg_0 = word ptr 4
arg_2 = word ptr 6
arg_4 = word ptr 8
enter 2, 0
push si
push di
mov si, [bp+arg_0]
or si, si
jnz short loc_B165
push [bp+arg_4]
push [bp+arg_2]
mov al, _cdg_slot
mov ah, 0
push ax
call cdg_put_8
jmp loc_B255
; ---------------------------------------------------------------------------
loc_B165:
call grcg_setcolor pascal, (GC_RMW shl 16) + V_WHITE
mov ax, si
cwd
sub ax, dx
sar ax, 1
mov si, ax
push [bp+arg_4]
cwd
sub ax, dx
sar ax, 1
push ax
push _CosTable8
call @polar$qiii
mov di, ax
push [bp+arg_2]
mov ax, si
cwd
sub ax, dx
sar ax, 1
push ax
push _SinTable8
call @polar$qiii
mov [bp+var_2], ax
push di
push ax
mov al, _cdg_slot
mov ah, 0
inc ax
push ax
push 0
call cdg_put_plane
call @polar$qiii pascal, [bp+arg_4], si, _CosTable8
mov di, ax
call @polar$qiii pascal, [bp+arg_2], si, _SinTable8
mov [bp+var_2], ax
push di
push ax
mov al, _cdg_slot
mov ah, 0
inc ax
push ax
push 1
call cdg_put_plane
push [bp+arg_4]
mov ax, si
cwd
sub ax, dx
sar ax, 1
push ax
push _CosTable8+256
call @polar$qiii
mov di, ax
push [bp+arg_2]
mov ax, si
cwd
sub ax, dx
sar ax, 1
push ax
push _CosTable8+128
call @polar$qiii
mov [bp+var_2], ax
push di
push ax
mov al, _cdg_slot
mov ah, 0
inc ax
push ax
push 2
call cdg_put_plane
call @polar$qiii pascal, [bp+arg_4], si, _CosTable8+256
mov di, ax
call @polar$qiii pascal, [bp+arg_2], si, _CosTable8+128
mov [bp+var_2], ax
push di
push ax
mov al, _cdg_slot
mov ah, 0
inc ax
push ax
push 3
call cdg_put_plane
GRCG_OFF_CLOBBERING dx
loc_B255:
pop di
pop si
leave
retn 6
sub_B144 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_B25B proc near
arg_0 = word ptr 4
arg_2 = word ptr 6
arg_4 = word ptr 8
arg_6 = word ptr 0Ah
arg_8 = word ptr 0Ch
push bp
mov bp, sp
push si
mov si, [bp+arg_0]
mov ax, si
cwd
sub ax, dx
sar ax, 1
mov si, ax
mov ax, [bp+arg_8]
sub ax, si
push ax
mov ax, [bp+arg_6]
sub ax, si
push ax
mov ax, si
add ax, ax
add ax, [bp+arg_4]
push ax
mov ax, si
add ax, ax
add ax, [bp+arg_2]
push ax
call bgimage_put_rect_16
pop si
pop bp
retn 0Ah
sub_B25B endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_B291 proc near
@@page = word ptr -2
@@base_top = word ptr 4
@@base_left = word ptr 6
enter 2, 0
push si
push di
mov di, [bp+@@base_left]
mov si, 3Fh ; '?'
mov [bp+@@page], 0
graph_accesspage 0
mov dx, 164 ; Port 00A4h: Page display register
mov al, 1
jmp short loc_B30B
; ---------------------------------------------------------------------------
loc_B2AF:
push di
push [bp+@@base_top]
mov al, _cdg_slot
mov ah, 0
shl ax, 4
mov bx, ax
push _cdg_slots.pixel_w[bx]
mov al, _cdg_slot
mov ah, 0
shl ax, 4
mov bx, ax
push _cdg_slots.pixel_h[bx]
lea ax, [si+1]
push ax
call sub_B25B
dec si
mov al, _radial_angle
add al, 8
mov _radial_angle, al
call _dissolve_put_func pascal, di, [bp+@@base_top], si
loc_B2E8:
cmp vsync_Count1, 2
jb short loc_B2E8
mov vsync_Count1, 0
graph_showpage byte ptr [bp+@@page]
mov ax, 1
sub ax, [bp+@@page]
mov [bp+@@page], ax
mov dx, 166 ; Port 00A6h: Page access register
mov al, byte ptr [bp+@@page]
loc_B30B:
out dx, al
or si, si
jg short loc_B2AF
call graph_copy_page pascal, [bp+@@page]
pop di
pop si
leave
retn 4
sub_B291 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_B31E proc near
@@page = word ptr -2
@@base_top = word ptr 4
@@base_left = word ptr 6
enter 2, 0
push si
push di
mov di, [bp+@@base_left]
xor si, si
mov [bp+@@page], 0
graph_accesspage 0
mov dx, 164 ; Port 00A4h: Page display register
mov al, 1
loc_B339:
out dx, al
push di
push [bp+@@base_top]
mov al, _cdg_slot
mov ah, 0
shl ax, 4
mov bx, ax
push _cdg_slots.pixel_w[bx]
mov al, _cdg_slot
mov ah, 0
shl ax, 4
mov bx, ax
push _cdg_slots.pixel_h[bx]
push si
call sub_B25B
inc si
mov al, _radial_angle
add al, 8
mov _radial_angle, al
cmp si, 40h
jge short loc_B39A
call _dissolve_put_func pascal, di, [bp+@@base_top], si
loc_B375:
cmp vsync_Count1, 2
jb short loc_B375
mov vsync_Count1, 0
graph_showpage byte ptr [bp+@@page]
mov ax, 1
sub ax, [bp+@@page]
mov [bp+@@page], ax
mov dx, 166 ; Port 00A6h: Page access register
mov al, byte ptr [bp+@@page]
jmp short loc_B339
; ---------------------------------------------------------------------------
loc_B39A:
mov ax, 1
sub ax, [bp+@@page]
call graph_copy_page pascal, ax
pop di
pop si
leave
retn 4
sub_B31E endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_B3AC proc near
@@page = word ptr -2
@@base_top_2 = word ptr 4
@@base_left_2 = word ptr 6
@@base_top_1 = word ptr 8
@@base_left_1 = word ptr 0Ah
enter 2, 0
push si
push di
mov di, [bp+@@base_left_1]
xor si, si
mov [bp+@@page], 0
graph_accesspage 0
mov dx, 164 ; Port 00A4h: Page display register
mov al, 1
loc_B3C7:
out dx, al
push di
push [bp+@@base_top_1]
push _cdg_slots.pixel_w + (size cdg_t * 2)
push _cdg_slots.pixel_h + (size cdg_t * 2)
push si
call sub_B25B
push [bp+@@base_left_2]
push [bp+@@base_top_2]
push _cdg_slots.pixel_w + (size cdg_t * 0)
push _cdg_slots.pixel_h + (size cdg_t * 0)
push si
call sub_B25B
inc si
mov al, _radial_angle
add al, -8
mov _radial_angle, al
cmp si, 40h
jge short loc_B43B
mov _cdg_slot, 2
call _dissolve_put_func pascal, di, [bp+@@base_top_1], si
mov _cdg_slot, 0
call _dissolve_put_func pascal, [bp+@@base_left_2], [bp+@@base_top_2], si
loc_B416:
cmp vsync_Count1, 2
jb short loc_B416
mov vsync_Count1, 0
graph_showpage byte ptr [bp+@@page]
mov ax, 1
sub ax, [bp+@@page]
mov [bp+@@page], ax
mov dx, 166 ; Port 00A6h: Page access register
mov al, byte ptr [bp+@@page]
jmp short loc_B3C7
; ---------------------------------------------------------------------------
loc_B43B:
mov ax, 1
sub ax, [bp+@@page]
call graph_copy_page pascal, ax
pop di
pop si
leave
retn 8
sub_B3AC endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
public @staffroll_animate$qv
@staffroll_animate$qv proc near
push bp
mov bp, sp
mov PaletteTone, 0
call far ptr palette_show
graph_accesspage 1
call pi_load pascal, 0, ds, offset aSff1_pi
call pi_palette_apply pascal, 0
call pi_put_8 pascal, large 0, 0
freePISlotLarge 0
call graph_copy_page pascal, 0
call _bgimage_snap
kajacall KAJA_SONG_STOP
call snd_load pascal, ds, offset aStaff, SND_LOAD_SONG
kajacall KAJA_SONG_PLAY
push 0Ch
call palette_black_in
call cdg_load_single pascal, 0, ds, offset aSff1_cdg, 0
call cdg_load_single_noalpha pascal, 1, ds, offset aSff1b_cdg, 0
call snd_delay_until_measure pascal, (3 shl 16) or 64
mov _cdg_slot, 0
mov _dissolve_put_func, offset sub_AED0
call sub_B291 pascal, (352 shl 16) or 160
call cdg_load_single pascal, 2, ds, offset aSff2_cdg, 0
call cdg_load_single_noalpha pascal, 3, ds, offset aSff2b_cdg, 0
call snd_delay_until_measure pascal, (7 shl 16) or 160
mov _dissolve_put_func, offset sub_B02D
call sub_B31E pascal, (352 shl 16) or 160
mov _cdg_slot, 2
mov _dissolve_put_func, offset sub_B144
call sub_B291 pascal, (192 shl 16) or 128
graph_accesspage 0
mov _cdg_slot, 0
call cdg_load_single pascal, 0, ds, offset aSff3_cdg, 0
call cdg_load_single_noalpha pascal, 1, ds, offset aSff3b_cdg, 0
call snd_delay_until_measure pascal, (11 shl 16) or 160
call sub_B291 pascal, (288 shl 16) or 200
call snd_delay_until_measure pascal, (19 shl 16) or 160
mov _dissolve_put_func, offset sub_B02D
call sub_B3AC pascal, (192 shl 16) or 128, (288 shl 16) or 200
push 4
call palette_black_out
call cdg_free_all
graph_accesspage 1
call pi_load pascal, 0, ds, offset aSff2_pi
call pi_palette_apply pascal, 0
call pi_put_8 pascal, large 0, 0
freePISlotLarge 0
call graph_copy_page pascal, 0
call _bgimage_snap
push 4
call palette_black_in
call cdg_load_single pascal, 2, ds, offset aSff4_cdg, 0
call cdg_load_single_noalpha pascal, 3, ds, offset aSff4b_cdg, 0
call snd_delay_until_measure pascal, (23 shl 16) or 160
mov _cdg_slot, 2
mov _dissolve_put_func, offset sub_B144
call sub_B291 pascal, (32 shl 16) or 112
call cdg_free pascal, 2
call cdg_load_single pascal, 4, ds, offset aSff5_cdg, 0
call cdg_load_single_noalpha pascal, 5, ds, offset aSff5b_cdg, 0
call snd_delay_until_measure pascal, (27 shl 16) or 160
mov _cdg_slot, 4
mov _dissolve_put_func, offset sub_B02D
call sub_B291 pascal, (32 shl 16) or 184
call cdg_load_single pascal, 0, ds, offset aSff8_cdg, 0
call cdg_load_single_noalpha pascal, 1, ds, offset aSff8b_cdg, 0
call snd_delay_until_measure pascal, (31 shl 16) or 160
mov _dissolve_put_func, offset sub_B144
call sub_B31E pascal, (32 shl 16) or 184
mov _cdg_slot, 0
call sub_B291 pascal, (64 shl 16) or 184
call cdg_load_single pascal, 4, ds, offset aSff9_cdg, 0
call cdg_load_single_noalpha pascal, 5, ds, offset aSff9b_cdg, 0
call snd_delay_until_measure pascal, (35 shl 16) or 160
mov _dissolve_put_func, offset sub_AED0
call sub_B31E pascal, (64 shl 16) or 184
mov _cdg_slot, 4
call sub_B291 pascal, (64 shl 16) or 184
call cdg_load_single pascal, 0, ds, offset aSff6_cdg, 0
call cdg_load_single_noalpha pascal, 1, ds, offset aSff6b_cdg, 0
call snd_delay_until_measure pascal, (39 shl 16) or 160
mov _dissolve_put_func, offset sub_B02D
call sub_B31E pascal, (64 shl 16) or 184
mov _cdg_slot, 0
call sub_B291 pascal, (32 shl 16) or 184
call snd_delay_until_measure pascal, (43 shl 16) or 160
mov _dissolve_put_func, offset sub_B144
call sub_B3AC pascal, (32 shl 16) or 112, (32 shl 16) or 184
call cdg_load_single pascal, 0, ds, offset aSff7_cdg, 0
call cdg_load_single_noalpha pascal, 1, ds, offset aSff7b_cdg, 0
mov _cdg_slot, 0
call sub_B291 pascal, (32 shl 16) or 336
call snd_delay_until_measure pascal, (48 shl 16) or 160
call _bgimage_free
call cdg_free_all
push 4
call palette_black_out
pop bp
retn
@staffroll_animate$qv endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
public @GRAPH_3_DIGIT_PUT$QIIU
@graph_3_digit_put$qiiu proc near
@@digit = word ptr -6
@@g_str = byte ptr -4
@@val = word ptr 4
@@top = word ptr 6
@@left = word ptr 8
enter 6, 0
push si
xor si, si
mov [bp+@@g_str], g_EMPTY
mov ax, [bp+@@val]
mov bx, 100
xor dx, dx
div bx
mov [bp+@@digit], ax
mov ax, [bp+@@val]
xor dx, dx
div bx
mov [bp+@@val], dx
cmp _graph_3_digit_put_as_fixed_2_dig, 0
jnz short loc_B7C5
or si, [bp+@@digit]
or si, si
jz short loc_B7C1
mov al, byte ptr [bp+@@digit]
add al, gb_0_
mov [bp+@@g_str], al
jmp short loc_B7C5
; ---------------------------------------------------------------------------
loc_B7C1:
mov [bp+@@g_str], g_EMPTY
loc_B7C5:
mov ax, [bp+@@val]
mov bx, 10
xor dx, dx
div bx
mov [bp+@@digit], ax
mov ax, [bp+@@val]
xor dx, dx
div bx
mov [bp+@@val], dx
or si, [bp+@@digit]
mov al, _graph_3_digit_put_as_fixed_2_dig
mov ah, 0
or si, ax
or si, si
jz short loc_B7F4
mov al, byte ptr [bp+@@digit]
add al, gb_0_
mov [bp+@@g_str+1], al
jmp short loc_B7F8
; ---------------------------------------------------------------------------
loc_B7F4:
mov [bp+@@g_str+1], g_EMPTY
loc_B7F8:
mov al, byte ptr [bp+@@val]
add al, gb_0_
mov [bp+@@g_str+2], al
mov [bp+@@g_str+3], 0
push [bp+@@left]
push [bp+@@top]
push GAIJI_W
push ss
lea ax, [bp+@@g_str]
push ax
push 14
call graph_gaiji_puts
pop si
leave
retn 6
@graph_3_digit_put$qiiu endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_B81D proc near
@@g_str = byte ptr -0Ch
var_2 = byte ptr -2
var_1 = byte ptr -1
enter 0Ch, 0
push si
mov [bp+var_2], 0
xor si, si
jmp short loc_B851
; ---------------------------------------------------------------------------
loc_B82A:
mov ax, 7
sub ax, si
les bx, _resident
add bx, ax
mov al, es:[bx+resident_t.score_last]
mov [bp+var_1], al
or [bp+var_2], al
cmp [bp+var_2], 0
jz short loc_B84C
add al, gb_0_
mov [bp+si+@@g_str], al
jmp short loc_B850
; ---------------------------------------------------------------------------
loc_B84C:
mov [bp+si+@@g_str], g_EMPTY
loc_B850:
inc si
loc_B851:
cmp si, 8
jl short loc_B82A
mov [bp+@@g_str+8], 0
push (160 shl 16) or 96
push GAIJI_W
push ss
lea ax, [bp+@@g_str]
push ax
push 14
call graph_gaiji_puts
mov [bp+var_2], 1
call graph_putsa_fx pascal, (288 shl 16) or 96, 14, ds, offset aU_ ; "<22>_"
pop si
leave
retn
sub_B81D endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
public @SKILL_APPLY_AND_GRAPH_PERCENTAGE$QIIUIUI
@skill_apply_and_graph_percentage$qiiuiui proc near
@@fraction = dword ptr -6
@@digits = word ptr -2
@@share = word ptr 4
@@total = word ptr 6
@@top = word ptr 8
@@left = word ptr 0Ah
enter 6, 0
push si
push di
mov si, [bp+@@left]
mov di, [bp+@@top]
cmp [bp+@@total], 0
jz short loc_B8A2
mov [bp+@@fraction], 1000000
jmp short loc_B8AA
; ---------------------------------------------------------------------------
loc_B8A2:
mov [bp+@@fraction], 0
loc_B8AA:
mov ax, [bp+@@total]
cmp ax, [bp+@@share]
jz short loc_B8E3
cmp [bp+@@total], 0
jz short loc_B8CD
movzx ebx, [bp+@@total]
mov eax, [bp+@@fraction]
xor edx, edx
div ebx
mov [bp+@@fraction], eax
jmp short loc_B8D5
; ---------------------------------------------------------------------------
loc_B8CD:
mov [bp+@@fraction], 0
loc_B8D5:
movzx eax, [bp+@@share]
imul eax, [bp+@@fraction]
mov [bp+@@fraction], eax
loc_B8E3:
cmp _skill_subtract, 0
jnz short loc_B8F4
mov eax, _skill
add eax, [bp+@@fraction]
jmp short loc_B8FC
; ---------------------------------------------------------------------------
loc_B8F4:
mov eax, _skill
sub eax, [bp+@@fraction]
loc_B8FC:
mov _skill, eax
mov eax, [bp+@@fraction]
mov ebx, 10000
xor edx, edx
div ebx
mov [bp+@@digits], ax
call @graph_3_digit_put$qiiu pascal, si, di, ax
mov ebx, 10000
mov eax, [bp+@@fraction]
xor edx, edx
div ebx
mov [bp+@@fraction], edx
mov eax, [bp+@@fraction]
mov ebx, 100
xor edx, edx
div ebx
mov [bp+@@digits], ax
mov _graph_3_digit_put_as_fixed_2_dig, 1
lea ax, [si+48]
call @graph_3_digit_put$qiiu pascal, ax, di, [bp+@@digits]
mov _graph_3_digit_put_as_fixed_2_dig, 0
lea ax, [si+48]
call graph_putsa_fx pascal, ax, di, 14, ds, offset aBd ; "<22>D"
lea ax, [si+96]
call graph_putsa_fx pascal, ax, di, 14, ds, offset aBu ; "<22><>"
pop di
pop si
leave
retn 8
@skill_apply_and_graph_percentage$qiiuiui endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
public @GRAPH_FRACTION_OF_MILLION_PUT$QIIUL
@graph_fraction_of_million_put$qiiul proc near
@@digits = word ptr -2
@@val = dword ptr 4
@@top = word ptr 8
@@left = word ptr 0Ah
enter 2, 0
push si
push di
mov si, [bp+@@left]
mov di, [bp+@@top]
mov eax, [bp+@@val]
mov ebx, 10000
xor edx, edx
div ebx
mov [bp+@@digits], ax
call @graph_3_digit_put$qiiu pascal, si, di, ax
mov ebx, 10000
mov eax, [bp+@@val]
xor edx, edx
div ebx
mov [bp+@@val], edx
mov eax, [bp+@@val]
mov ebx, 100
xor edx, edx
div ebx
mov [bp+@@digits], ax
mov _graph_3_digit_put_as_fixed_2_dig, 1
lea ax, [si+48]
call @graph_3_digit_put$qiiu pascal, ax, di, [bp+@@digits]
mov _graph_3_digit_put_as_fixed_2_dig, 0
lea ax, [si+48]
call graph_putsa_fx pascal, ax, di, 14, ds, offset aBd_0 ; "<22>D"
pop di
pop si
leave
retn 8
@graph_fraction_of_million_put$qiiul endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_B9F2 proc near
var_8 = dword ptr -8
var_4 = dword ptr -4
enter 8, 0
les bx, _resident
mov eax, es:[bx+resident_t.rand]
mov random_seed, eax
mov al, es:[bx+resident_t.credit_lives]
mov ah, 0
dec ax
mov bx, ax
cmp bx, 5
ja short loc_BA52
add bx, bx
jmp cs:off_BB75[bx]
loc_BA18:
mov [bp+var_4], 2500
jmp short loc_BA52
; ---------------------------------------------------------------------------
loc_BA22:
mov [bp+var_4], 2000
jmp short loc_BA52
; ---------------------------------------------------------------------------
loc_BA2C:
mov [bp+var_4], 1500
jmp short loc_BA52
; ---------------------------------------------------------------------------
loc_BA36:
mov [bp+var_4], 1000
jmp short loc_BA52
; ---------------------------------------------------------------------------
loc_BA40:
mov [bp+var_4], 500
jmp short loc_BA52
; ---------------------------------------------------------------------------
loc_BA4A:
mov [bp+var_4], 0
loc_BA52:
les bx, _resident
mov al, es:[bx+resident_t.credit_bombs]
mov ah, 0
or ax, ax
jz short loc_BA67
cmp ax, 1
jz short loc_BA71
jmp short loc_BA79
; ---------------------------------------------------------------------------
loc_BA67:
add [bp+var_4], 2500
jmp short loc_BA79
; ---------------------------------------------------------------------------
loc_BA71:
add [bp+var_4], 1500
loc_BA79:
les bx, _resident
cmp es:[bx+resident_t.turbo_mode], 0
jz short loc_BA8C
add [bp+var_4], 2000
loc_BA8C:
les bx, _resident
cmp es:[bx+resident_t.graze], 0
jz short loc_BAA5
mov ax, es:[bx+resident_t.graze]
add ax, ax
movzx eax, ax
add [bp+var_4], eax
loc_BAA5:
mov [bp+var_8], 1000000
les bx, _resident
mov ax, es:[bx+resident_t.items_spawned]
cmp ax, es:[bx+resident_t.items_collected]
jz short loc_BAF3
cmp es:[bx+resident_t.items_spawned], 0
jz short loc_BAD8
movzx ebx, es:[bx+resident_t.items_spawned]
mov eax, [bp+var_8]
xor edx, edx
div ebx
mov [bp+var_8], eax
jmp short loc_BAE0
; ---------------------------------------------------------------------------
loc_BAD8:
mov [bp+var_8], 0
loc_BAE0:
les bx, _resident
movzx eax, es:[bx+resident_t.items_collected]
imul eax, [bp+var_8]
mov [bp+var_8], eax
loc_BAF3:
mov eax, 1000000
sub eax, [bp+var_8]
mov [bp+var_8], eax
mov ebx, 100
xor edx, edx
div ebx
mov [bp+var_8], eax
cmp [bp+var_8], 0
jz short loc_BB2A
call IRand
cwde
xor edx, edx
div [bp+var_8]
add [bp+var_4], edx
loc_BB2A:
mov eax, [bp+var_4]
imul eax, 100
mov [bp+var_4], eax
cmp [bp+var_4], 1000000
jbe short loc_BB48
mov [bp+var_4], 1000000
loc_BB48:
mov eax, _skill
add eax, [bp+var_4]
mov _skill, eax
call @graph_fraction_of_million_put$qiiul pascal, (192 shl 16) or 264, [bp+var_4]
call graph_putsa_fx pascal, (288 shl 16) or 264, 14, ds, offset aBu_0 ; "<22><>"
leave
retn
sub_B9F2 endp
; ---------------------------------------------------------------------------
db 0
off_BB75 dw offset loc_BA18
dw offset loc_BA22
dw offset loc_BA2C
dw offset loc_BA36
dw offset loc_BA40
dw offset loc_BA4A
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_BB81 proc near
var_4 = dword ptr -4
enter 4, 0
push si
mov _graph_putsa_fx_func, FX_WEIGHT_BOLD
graph_accesspage 0
graph_showpage al
call graph_putsa_fx pascal, (16 shl 16) or 48, V_WHITE, ds, offset aB@b@b@b@b@b@b@ ; "<22>@<40>@<40>@<40>@<40>@<40>@<40>@ <20>r<EFBFBD>O<EFBFBD><4F><EFBFBD><EFBFBD>"
call graph_putsa_fx pascal, (16 shl 16) or 72, V_WHITE, ds, offset aUqiUx ; "<22><><EFBFBD>Փx"
call graph_putsa_fx pascal, (16 shl 16) or 96, V_WHITE, ds, offset aNPiuU_ ; "<22>ŏI<C58F><49><EFBFBD>_"
call graph_putsa_fx pascal, (16 shl 16) or 120, V_WHITE, ds, offset aGGxi ; "<22>~<7E>X<EFBFBD><58><EFBFBD><EFBFBD>"
call graph_putsa_fx pascal, (16 shl 16) or 144, V_WHITE, ds, offset aGGaogcpi ; "<22>{<7B><><EFBFBD>g<EFBFBD>p<EFBFBD><70><EFBFBD><EFBFBD>"
call graph_putsa_fx pascal, (16 shl 16) or 168, V_WHITE, ds, offset aGqbGatbrmcj ; "<22>Q<EFBFBD>[<5B><><EFBFBD>B<EFBFBD><42><EFBFBD><EFBFBD>"
call graph_putsa_fx pascal, (16 shl 16) or 192, V_WHITE, ds, offset aIlcSObcj ; "<22><><EFBFBD><EFBFBD><EFBFBD>ގ<EFBFBD><DE8E><EFBFBD>"
call graph_putsa_fx pascal, (16 shl 16) or 216, V_WHITE, ds, offset aGagcgegai ; "<22>A<EFBFBD>C<EFBFBD>e<EFBFBD><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
call graph_putsa_fx pascal, (16 shl 16) or 240, V_WHITE, ds, offset aUU_gagcgeganNv ; "<22><><EFBFBD>_<EFBFBD>A<EFBFBD>C<EFBFBD>e<EFBFBD><65><EFBFBD>ō<EFBFBD><C58D>_<EFBFBD><5F>"
call graph_putsa_fx pascal, (16 shl 16) or 264, V_WHITE, ds, offset aLcnzvv ; "<22>C<EFBFBD><43><EFBFBD><EFBFBD>"
call graph_putsa_fx pascal, (16 shl 16) or 288, V_WHITE, ds, offset aPicacovCj ; "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
call graph_putsa_fx pascal, (16 shl 16) or 336, V_WHITE, ds, offset aVavVVSrso ; "<22><><EFBFBD>Ȃ<EFBFBD><C882>̘r<CC98>O"
les bx, _resident
cmp es:[bx+resident_t.stage], STAGE_EXTRA
jnz short loc_BC71
mov al, RANK_EXTRA
jmp short loc_BC79
; ---------------------------------------------------------------------------
loc_BC71:
les bx, _resident
mov al, es:[bx+resident_t.rank]
loc_BC79:
mov _verdict_rank, al
push (176 shl 16) or 72
push GAIJI_W
push ds
mov ah, 0
shl ax, 3
add ax, offset grEASY
push ax
push 14
call graph_gaiji_puts
call sub_B81D
push (240 shl 16) or 120 ; (left shl 16) or top
les bx, _resident
mov al, es:[bx+resident_t.miss_count]
mov ah, 0
push ax ; num
call @graph_3_digit_put$qiiu
push (240 shl 16) or 144 ; (left shl 16) or top
les bx, _resident
mov al, es:[bx+resident_t.bombs_used]
mov ah, 0
push ax ; num
call @graph_3_digit_put$qiiu
call graph_putsa_fx pascal, (288 shl 16) or 120, 14, ds, offset aTimes ; "<22><>"
call graph_putsa_fx pascal, (288 shl 16) or 144, 14, ds, offset aTimes_0 ; "<22><>"
mov byte_124CC, 1
les bx, _resident
cmp es:[bx+resident_t.stage], STAGE_EXTRA
jz short loc_BD0A
cmp es:[bx+resident_t.end_sequence], ES_GOOD
jnz short loc_BCFF
mov es:[bx+resident_t.std_frames], 44000
loc_BCFF:
push (192 shl 16) or 168
push 44000
jmp short loc_BD24
; ---------------------------------------------------------------------------
loc_BD0A:
les bx, _resident
cmp es:[bx+resident_t.end_sequence], ES_EXTRA
jnz short loc_BD1B
mov es:[bx+resident_t.std_frames], 12000
loc_BD1B:
push (192 shl 16) or 168 ; (left shl 16) or top
push 12000 ; total
loc_BD24:
les bx, _resident
push es:[bx+resident_t.std_frames] ; share
call @skill_apply_and_graph_percentage$qiiuiui
mov byte_124CC, 0
push (192 shl 16) or 192 ; (left shl 16) or top
les bx, _resident
push es:[bx+resident_t.enemies_gone] ; total
push es:[bx+resident_t.enemies_killed] ; share
call @skill_apply_and_graph_percentage$qiiuiui
push (192 shl 16) or 216 ; (left shl 16) or top
les bx, _resident
push es:[bx+resident_t.items_spawned] ; total
push es:[bx+resident_t.items_collected] ; share
call @skill_apply_and_graph_percentage$qiiuiui
push (192 shl 16) or 240 ; (left shl 16) or top
les bx, _resident
push es:[bx+resident_t.point_items_collected] ; total
push es:[bx+resident_t.max_valued_point_items_collected] ; share
call @skill_apply_and_graph_percentage$qiiuiui
call sub_B9F2
push (192 shl 16) or 288 ; (left shl 16) or top
les bx, _resident
mov eax, es:[bx+resident_t.frames]
mov ebx, 10
xor edx, edx
div ebx
push ax ; total
mov bx, word ptr _resident
mov eax, es:[bx+resident_t.slow_frames]
mov ebx, 10
xor edx, edx
div ebx
push ax ; share
call @skill_apply_and_graph_percentage$qiiuiui
mov ebx, 5
mov eax, _skill
cdq
idiv ebx
mov _skill, eax
les bx, _resident
cmp es:[bx+resident_t.score_last][7], 9
jb short loc_BDD4
add _skill, 600000
jmp short loc_BE08
; ---------------------------------------------------------------------------
loc_BDD4:
les bx, _resident
movzx eax, es:[bx+resident_t.score_last][6]
imul eax, 10000
add _skill, eax
cmp es:[bx+resident_t.score_last][7], 3
jbe short loc_BE08
mov al, es:[bx+resident_t.score_last][7]
mov ah, 0
add ax, -3
cwde
imul eax, 100000
add _skill, eax
loc_BE08:
mov al, _verdict_rank
mov ah, 0
mov bx, ax
cmp bx, RANK_EXTRA
ja short loc_BE6F
add bx, bx
jmp cs:off_C0EE[bx]
loc_BE1B:
sub _skill, 50000
mov [bp+var_4], 800000
jmp short loc_BE6F
; ---------------------------------------------------------------------------
loc_BE2E:
mov [bp+var_4], 1000000
jmp short loc_BE6F
; ---------------------------------------------------------------------------
loc_BE38:
add _skill, 150000
mov [bp+var_4], 1200000
jmp short loc_BE6F
; ---------------------------------------------------------------------------
loc_BE4B:
add _skill, 300000
mov [bp+var_4], 1400000
jmp short loc_BE6F
; ---------------------------------------------------------------------------
loc_BE5E:
add _skill, 450000
mov [bp+var_4], 1500000
loc_BE6F:
les bx, _resident
mov al, es:[bx+resident_t.credit_lives]
mov ah, 0
dec ax
mov bx, ax
cmp bx, 5
ja short loc_BECA
add bx, bx
jmp cs:off_C0E2[bx]
loc_BE88:
add _skill, 50000
add [bp+var_4], 100000
jmp short loc_BECA
; ---------------------------------------------------------------------------
loc_BE9B:
add _skill, 25000
add [bp+var_4], 50000
jmp short loc_BECA
; ---------------------------------------------------------------------------
loc_BEAE:
sub [bp+var_4], 25000
jmp short loc_BECA
; ---------------------------------------------------------------------------
loc_BEB8:
sub [bp+var_4], 50000
jmp short loc_BECA
; ---------------------------------------------------------------------------
loc_BEC2:
sub [bp+var_4], 75000
loc_BECA:
les bx, _resident
mov al, es:[bx+resident_t.credit_bombs]
mov ah, 0
or ax, ax
jz short loc_BEDF
cmp ax, 1
jz short loc_BEF2
jmp short loc_BF03
; ---------------------------------------------------------------------------
loc_BEDF:
add _skill, 50000
add [bp+var_4], 100000
jmp short loc_BF03
; ---------------------------------------------------------------------------
loc_BEF2:
add _skill, 20000
add [bp+var_4], 50000
loc_BF03:
les bx, _resident
cmp es:[bx+resident_t.turbo_mode], 0
jnz short loc_BF17
sub _skill, 100000
loc_BF17:
les bx, _resident
cmp es:[bx+resident_t.miss_count], 15
jb short loc_BF2D
sub _skill, 300000
jmp short loc_BF43
; ---------------------------------------------------------------------------
loc_BF2D:
les bx, _resident
movzx eax, es:[bx+resident_t.miss_count]
imul eax, 20000
sub _skill, eax
loc_BF43:
les bx, _resident
cmp es:[bx+resident_t.bombs_used], 30
jb short loc_BF59
sub _skill, 90000
jmp short loc_BF6F
; ---------------------------------------------------------------------------
loc_BF59:
les bx, _resident
movzx eax, es:[bx+resident_t.bombs_used]
imul eax, 3000
sub _skill, eax
loc_BF6F:
les bx, _resident
cmp es:[bx+resident_t.end_sequence], ES_EXTRA
jnb short loc_BFA1
cmp _verdict_rank, RANK_EXTRA
jz short loc_BF96
mov ebx, 2
mov eax, _skill
cdq
idiv ebx
mov _skill, eax
jmp short loc_BFB4
; ---------------------------------------------------------------------------
loc_BF96:
sub _skill, 200000
jmp short loc_BFB4
; ---------------------------------------------------------------------------
loc_BFA1:
les bx, _resident
cmp es:[bx+resident_t.end_sequence], ES_BAD
jnz short loc_BFB4
sub [bp+var_4], 100000
loc_BFB4:
cmp _skill, 0
jge short loc_BFC7
mov _skill, 0
jmp short loc_BFD9
; ---------------------------------------------------------------------------
loc_BFC7:
mov eax, _skill
cmp eax, [bp+var_4]
jbe short loc_BFD9
mov eax, [bp+var_4]
mov _skill, eax
loc_BFD9:
les bx, _resident
mov eax, es:[bx+resident_t.frames]
shr eax, 1
cmp eax, es:[bx+resident_t.slow_frames]
jbe loc_C0AE
call @graph_fraction_of_million_put$qiiul pascal, (192 shl 16) or 336, [_skill]
call graph_putsa_fx pascal, (288 shl 16) or 336, 14, ds, offset aPoint ; "<22>_"
push ds
push offset a_ude_txt ; "_ude.txt"
call file_ropen
cmp _skill, 1500000
jge short loc_C084
cmp _skill, 0
jnz short loc_C02E
mov si, 19h
jmp short loc_C074
; ---------------------------------------------------------------------------
loc_C02E:
cmp _skill, 1050000
jge short loc_C051
mov eax, _skill
mov ebx, 50000
cdq
idiv ebx
mov dx, 24
sub dx, ax
mov si, dx
jmp short loc_C074
; ---------------------------------------------------------------------------
loc_C051:
cmp _skill, 1200000
jge short loc_C061
mov si, 3
jmp short loc_C074
; ---------------------------------------------------------------------------
loc_C061:
cmp _skill, 1350000
jge short loc_C071
mov si, 2
jmp short loc_C074
; ---------------------------------------------------------------------------
loc_C071:
mov si, 1
loc_C074:
mov ax, si
imul ax, 1Eh
cwde
push eax
push 0
call file_seek
loc_C084:
push ds
push offset unk_124D3
push 1Eh
call file_read
mov byte_124EF, 0
call file_close
call @frame_delay$qi pascal, 64
push (64 shl 16) or 360
push V_WHITE
push ds
push offset unk_124D3
jmp short loc_C0CB
; ---------------------------------------------------------------------------
loc_C0AE:
call graph_putsa_fx pascal, (192 shl 16) or 336, 14, ds, offset aBhbhbhbhbhbhu_ ; "<22>H<EFBFBD>H<EFBFBD>H<EFBFBD>H<EFBFBD>H<EFBFBD>H<EFBFBD>_"
push (64 shl 16) or 360
push V_WHITE
push ds
push offset aPicacovVVcvsfT ; "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɂ<EFBFBD><C982><EFBFBD><E994BB><EFBFBD>s<EFBFBD><73>"
loc_C0CB:
call graph_putsa_fx
call @input_wait_for_change$qi pascal, 0
push 2
call palette_black_out
pop si
leave
retn
sub_BB81 endp
; ---------------------------------------------------------------------------
db 0
off_C0E2 dw offset loc_BE88
dw offset loc_BE9B
dw offset loc_BECA
dw offset loc_BEAE
dw offset loc_BEB8
dw offset loc_BEC2
off_C0EE dw offset loc_BE1B
dw offset loc_BE2E
dw offset loc_BE38
dw offset loc_BE4B
dw offset loc_BE5E
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
public @verdict_animate$qv
@verdict_animate$qv proc near
push bp
mov bp, sp
mov PaletteTone, 0
call far ptr palette_show
graph_accesspage 1
call pi_load pascal, 0, ds, offset aUde_pi
call pi_palette_apply pascal, 0
call pi_put_8 pascal, large 0, 0
freePISlotLarge 0
call graph_copy_page pascal, 0
push 4
call palette_black_in
call sub_BB81
pop bp
retn
@verdict_animate$qv endp
include th04/formats/scoredat_decode.asm
include th04/formats/scoredat_encode.asm
include th04/formats/scoredat_recreate.asm
include th04/formats/scoredat_load_for.asm
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_C316 proc near
push bp
mov bp, sp
push si
call scoredat_encode
push ds
push offset aGensou_scr_2 ; "GENSOU.SCR"
call file_append
mov al, _rank
mov ah, 0
imul ax, size scoredat_section_t
movzx eax, ax
call file_seek pascal, large eax, 0
cmp playchar_125B8, PLAYCHAR_REIMU
jz short loc_C350
call file_seek pascal, large RANK_COUNT * size scoredat_section_t, 1
loc_C350:
call file_write pascal, ds, offset _hi, size scoredat_section_t
xor si, si
jmp short loc_C3A5
; ---------------------------------------------------------------------------
loc_C360:
mov ax, si
imul ax, size scoredat_section_t
movzx eax, ax
call file_seek pascal, large eax, 0
call file_read pascal, ds, offset _hi, size scoredat_section_t
call scoredat_decode
call scoredat_encode
mov ax, si
imul ax, size scoredat_section_t
movzx eax, ax
call file_seek pascal, large eax, 0
call file_write pascal, ds, offset _hi, size scoredat_section_t
inc si
loc_C3A5:
cmp si, 0Ah
jl short loc_C360
call file_close
pop si
pop bp
retn
sub_C316 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_C3B2 proc near
@@place = word ptr -2
enter 2, 0
mov [bp+@@place], (SCOREDAT_PLACES - 1)
jmp short loc_C40E
; ---------------------------------------------------------------------------
loc_C3BD:
mov cx, 7
jmp short loc_C407
; ---------------------------------------------------------------------------
loc_C3C2:
les bx, _resident
add bx, cx
mov al, es:[bx+resident_t.score_last]
mov ah, 0
mov bx, [bp+@@place]
shl bx, 3
add bx, cx
mov dl, _hi.score.g_score[bx]
mov dh, 0
add dx, -gb_0_
cmp ax, dx
jg short loc_C40B
les bx, _resident
add bx, cx
mov al, es:[bx+resident_t.score_last]
mov ah, 0
mov bx, [bp+@@place]
shl bx, 3
add bx, cx
mov dl, _hi.score.g_score[bx]
mov dh, 0
add dx, -gb_0_
cmp ax, dx
jl short loc_C41B
dec cx
loc_C407:
or cx, cx
jge short loc_C3C2
loc_C40B:
dec [bp+@@place]
loc_C40E:
cmp [bp+@@place], 0
jge short loc_C3BD
mov _entered_place, 0
jmp short loc_C430
; ---------------------------------------------------------------------------
loc_C41B:
cmp [bp+@@place], (SCOREDAT_PLACES - 1)
jnz short loc_C428
mov _entered_place, -1
leave
retn
; ---------------------------------------------------------------------------
loc_C428:
mov al, byte ptr [bp+@@place]
inc al
mov _entered_place, al
loc_C430:
mov [bp+@@place], (SCOREDAT_PLACES - 2)
jmp short loc_C489
; ---------------------------------------------------------------------------
loc_C437:
mov cx, SCOREDAT_NAME_LEN - 1
jmp short loc_C455
; ---------------------------------------------------------------------------
loc_C43C:
mov bx, [bp+@@place]
imul bx, (SCOREDAT_NAME_LEN + 1)
add bx, cx
mov al, _hi.score.g_name[0 * (SCOREDAT_NAME_LEN + 1)][bx]
mov bx, [bp+@@place]
imul bx, (SCOREDAT_NAME_LEN + 1)
add bx, cx
mov _hi.score.g_name[1 * (SCOREDAT_NAME_LEN + 1)][bx], al
dec cx
loc_C455:
or cx, cx
jge short loc_C43C
mov cx, SCORE_DIGITS - 1
jmp short loc_C477
; ---------------------------------------------------------------------------
loc_C45E:
mov bx, [bp+@@place]
shl bx, 3
add bx, cx
mov al, _hi.score.g_score[0 * SCORE_DIGITS][bx]
mov bx, [bp+@@place]
shl bx, 3
add bx, cx
mov _hi.score.g_score[1 * SCORE_DIGITS][bx], al
dec cx
loc_C477:
or cx, cx
jge short loc_C45E
mov bx, [bp+@@place]
mov al, _hi.score.g_stage+0[bx]
mov _hi.score.g_stage+1[bx], al
dec [bp+@@place]
loc_C489:
mov al, _entered_place
mov ah, 0
cmp ax, [bp+@@place]
jle short loc_C437
mov cx, (SCOREDAT_NAME_LEN - 1)
jmp short loc_C4AA
; ---------------------------------------------------------------------------
loc_C498:
mov al, _entered_place
mov ah, 0
imul ax, (SCOREDAT_NAME_LEN + 1)
add ax, cx
mov bx, ax
mov _hi.score.g_name[bx], gs_DOT
dec cx
loc_C4AA:
or cx, cx
jge short loc_C498
mov cx, SCOREDAT_NAME_LEN - 1
jmp short loc_C4D1
; ---------------------------------------------------------------------------
loc_C4B3:
les bx, _resident
add bx, cx
mov al, es:[bx+resident_t.score_last]
add al, gb_0_
mov dl, _entered_place
mov dh, 0
shl dx, 3
add dx, cx
mov bx, dx
mov _hi.score.g_score[bx], al
dec cx
loc_C4D1:
or cx, cx
jge short loc_C4B3
les bx, _resident
cmp es:[bx+resident_t.end_sequence], ES_EXTRA
jb short loc_C4EE
mov al, _entered_place
mov ah, 0
mov bx, ax
mov _hi.score.g_stage[bx], gs_ALL
leave
retn
; ---------------------------------------------------------------------------
loc_C4EE:
les bx, _resident
mov al, es:[bx+resident_t.stage]
add al, gb_1_
mov dl, _entered_place
mov dh, 0
mov bx, dx
mov _hi.score.g_stage[bx], al
leave
retn
sub_C3B2 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_C506 proc near
@@y = word ptr -4
var_2 = word ptr -2
arg_0 = byte ptr 4
arg_2 = word ptr 6
enter 4, 0
push si
push di
mov si, [bp+arg_2]
or si, si
jnz short loc_C518
mov ax, 96
jmp short loc_C520
; ---------------------------------------------------------------------------
loc_C518:
mov ax, si
shl ax, 4
add ax, 112
loc_C520:
mov [bp+@@y], ax
cmp [bp+arg_0], 0
jnz short loc_C52E
mov ax, 172
jmp short loc_C531
; ---------------------------------------------------------------------------
loc_C52E:
mov ax, 480
loc_C531:
mov di, ax
mov al, _entered_place
mov ah, 0
cmp ax, si
jnz short loc_C549
mov al, [bp+arg_0]
cmp al, playchar_125B8
jnz short loc_C549
mov al, 0Ah
jmp short loc_C54B
; ---------------------------------------------------------------------------
loc_C549:
mov al, 0
loc_C54B:
mov [bp+arg_0], al
mov bx, si
shl bx, 3
mov al, _hi.score.g_score[bx][SCORE_DIGITS - 1]
mov ah, 0
add ax, -gb_0_
cmp ax, 10
jl short loc_C589
lea ax, [di-32]
push ax
push [bp+@@y]
mov bx, si
shl bx, 3
mov al, _hi.score.g_score[bx][SCORE_DIGITS - 1]
mov ah, 0
add ax, -gb_0_
mov bx, 10
cwd
idiv bx
mov dl, [bp+arg_0]
mov dh, 0
add ax, dx
push ax
call super_put
loc_C589:
lea ax, [di-16]
push ax
push [bp+@@y]
mov bx, si
shl bx, 3
mov al, _hi.score.g_score[bx][SCORE_DIGITS - 1]
mov ah, 0
add ax, -gb_0_
mov bx, 10
cwd
idiv bx
mov al, [bp+arg_0]
mov ah, 0
add dx, ax
push dx
call super_put
mov [bp+var_2], 6
jmp short loc_C5E0
; ---------------------------------------------------------------------------
loc_C5B8:
push di
push [bp+@@y]
mov bx, si
shl bx, 3
add bx, [bp+var_2]
mov al, _hi.score.g_score[bx]
mov ah, 0
mov dl, [bp+arg_0]
mov dh, 0
add ax, dx
add ax, -gb_0_
push ax
call super_put
dec [bp+var_2]
add di, 16
loc_C5E0:
cmp [bp+var_2], 0
jge short loc_C5B8
pop di
pop si
leave
retn 4
sub_C506 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_C5EC proc near
@@col = byte ptr -5
@@y = word ptr -4
@@x = word ptr -2
@@gaiji = word ptr 4
arg_2 = word ptr 6
arg_4 = word ptr 8
enter 6, 0
push si
push di
mov si, [bp+arg_4]
mov di, [bp+arg_2]
mov al, _entered_place
mov ah, 0
cmp ax, si
jnz short loc_C60E
mov al, playchar_125B8
mov ah, 0
cmp ax, di
jnz short loc_C60E
mov al, 7
jmp short loc_C610
; ---------------------------------------------------------------------------
loc_C60E:
mov al, 12
loc_C610:
mov [bp+@@col], al
or si, si
jnz short loc_C61C
mov ax, 96
jmp short loc_C624
; ---------------------------------------------------------------------------
loc_C61C:
mov ax, si
shl ax, 4
add ax, 112
loc_C624:
mov [bp+@@y], ax
or di, di
jnz short loc_C630
mov ax, 292
jmp short loc_C633
; ---------------------------------------------------------------------------
loc_C630:
mov ax, 600
loc_C633:
mov [bp+@@x], ax
add ax, 2
push ax
mov ax, [bp+@@y]
add ax, 2
push ax
push [bp+@@gaiji]
push 14
call graph_gaiji_putc
push [bp+@@x]
push [bp+@@y]
push [bp+@@gaiji]
mov al, [bp+@@col]
mov ah, 0
push ax
call graph_gaiji_putc
pop di
pop si
leave
retn 6
sub_C5EC endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_C665 proc near
@@y = word ptr -2
arg_0 = byte ptr 4
arg_2 = byte ptr 6
arg_4 = word ptr 8
enter 2, 0
push si
push di
mov si, [bp+arg_4]
cmp [bp+arg_2], 0
jnz short loc_C679
mov ax, 2
jmp short loc_C67C
; ---------------------------------------------------------------------------
loc_C679:
mov ax, 40
loc_C67C:
mov di, ax
or si, si
jnz short loc_C687
mov ax, 6
jmp short loc_C68A
; ---------------------------------------------------------------------------
loc_C687:
lea ax, [si+7]
loc_C68A:
mov [bp+@@y], ax
mov ax, di
shl ax, 3
add ax, 2
push ax
mov ax, [bp+@@y]
shl ax, 4
add ax, 2
push ax
push 800010h
call sub_CBF3
mov ax, di
shl ax, 3
add ax, 2
push ax
mov ax, [bp+@@y]
shl ax, 4
add ax, 2
push ax
push GAIJI_W
mov ax, si
imul ax, (SCOREDAT_NAME_LEN + 1)
add ax, offset _hi.score.g_name
push ds
push ax
push 14
call graph_gaiji_puts
push di
push [bp+@@y]
mov ax, si
imul ax, (SCOREDAT_NAME_LEN + 1)
add ax, offset _hi.score.g_name
push ds
push ax
push TX_RED
call gaiji_putsa
mov al, [bp+arg_0]
mov ah, 0
add ax, ax
add ax, di
push ax
push [bp+@@y]
mov bx, si
imul bx, (SCOREDAT_NAME_LEN + 1)
mov al, [bp+arg_0]
mov ah, 0
add bx, ax
mov al, offset _hi.score.g_name[bx]
mov ah, 0
push ax
push TX_RED + TX_REVERSE
call gaiji_putca
pop di
pop si
leave
retn 6
sub_C665 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_C711 proc near
@@x = word ptr -2
arg_0 = word ptr 4
arg_2 = word ptr 6
enter 2, 0
push si
push di
mov si, [bp+arg_2]
cmp byte ptr [bp+arg_0], 0
jnz short loc_C725
mov ax, 16
jmp short loc_C728
; ---------------------------------------------------------------------------
loc_C725:
mov ax, 320
loc_C728:
mov [bp+@@x], ax
or si, si
jnz short loc_C734
mov ax, 96
jmp short loc_C73C
; ---------------------------------------------------------------------------
loc_C734:
mov ax, si
shl ax, 4
add ax, 112
loc_C73C:
mov di, ax
mov ax, [bp+@@x]
add ax, 2
push ax
lea ax, [di+2]
push ax
push GAIJI_W
mov ax, si
imul ax, 9
add ax, offset _hi.score.g_name
push ds
push ax
push 14
call graph_gaiji_puts
mov al, _entered_place
mov ah, 0
cmp ax, si
jnz short loc_C76E
mov al, byte ptr [bp+arg_0]
cmp al, playchar_125B8
jz short loc_C787
loc_C76E:
push [bp+@@x]
push di
push GAIJI_W
mov ax, si
imul ax, (SCOREDAT_NAME_LEN + 1)
add ax, offset _hi.score.g_name
push ds
push ax
push 12
call graph_gaiji_puts
jmp short loc_C7AB
; ---------------------------------------------------------------------------
loc_C787:
mov ax, [bp+@@x]
mov bx, 8
cwd
idiv bx
push ax
mov ax, di
mov bx, 16
cwd
idiv bx
push ax
mov ax, si
imul ax, (SCOREDAT_NAME_LEN + 1)
add ax, offset _hi.score.g_name
push ds
push ax
push TX_RED
call gaiji_putsa
loc_C7AB:
push si
push [bp+arg_0]
call sub_C506
push si
mov al, byte ptr [bp+arg_0]
mov ah, 0
push ax
mov al, _hi.score.g_stage[si]
mov ah, 0
push ax
call sub_C5EC
pop di
pop si
leave
retn 4
sub_C711 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_C7C9 proc near
arg_0 = word ptr 4
push bp
mov bp, sp
push si
xor si, si
jmp short loc_C7D9
; ---------------------------------------------------------------------------
loc_C7D1:
push si
push [bp+arg_0]
call sub_C711
inc si
loc_C7D9:
cmp si, 0Ah
jl short loc_C7D1
pop si
pop bp
retn 2
sub_C7C9 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_C7E3 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]
mov di, [bp+arg_2]
mov ax, si
add ax, ax
add ax, 17h
push ax
lea ax, [di+12h]
push ax
mov bx, di
imul bx, ALPHABET_COLS
mov al, _gALPHABET[bx+si]
mov ah, 0
push ax
push [bp+arg_0]
call gaiji_putca
pop di
pop si
pop bp
retn 6
sub_C7E3 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
include th02/hiscore/regist.inc
public @regist_menu$qv
@regist_menu$qv proc near
var_A = byte ptr -0Ah
var_9 = byte ptr -9
@@initial_col = word ptr -8
@@initial_row = word ptr -6
var_4 = word ptr -4
@@row = word ptr -2
enter 0Ah, 0
push si
push di
xor si, si
mov [bp+var_9], 0
mov PaletteTone, 0
call far ptr palette_show
graph_accesspage 1
call pi_load pascal, 0, ds, offset aHi01_pi
call pi_palette_apply pascal, 0
call pi_put_8 pascal, large 0, 0
freePISlotLarge 0
call graph_copy_page pascal, 0
call super_entry_bfnt pascal, ds, offset aScnum2_bft ; "scnum2.bft"
les bx, _resident
cmp es:[bx+resident_t.stage], STAGE_EXTRA
jnz short loc_C87A
mov al, 4
jmp short loc_C882
; ---------------------------------------------------------------------------
loc_C87A:
les bx, _resident
mov al, es:[bx+resident_t.rank]
loc_C882:
mov _rank, al
les bx, _resident
cmp es:[bx+resident_t.playchar_ascii], '0' + PLAYCHAR_MARISA
jnz short loc_C895
mov ax, 1
jmp short loc_C897
; ---------------------------------------------------------------------------
loc_C895:
xor ax, ax
loc_C897:
mov playchar_125B8, al
mov al, 1
sub al, playchar_125B8
push ax
call scoredat_load_for
mov al, playchar_125B8
mov ah, 0
mov dx, 1
sub dx, ax
push dx
call sub_C7C9
call scoredat_load_for pascal, word ptr playchar_125B8
les bx, _resident
cmp es:[bx+resident_t.turbo_mode], 0
jnz short loc_C8CB
cmp _rank, RANK_EXTRA
jnz short loc_C8D9
loc_C8CB:
call sub_C3B2
mov al, playchar_125B8
mov ah, 0
push ax
call sub_C7C9
jmp short loc_C909
; ---------------------------------------------------------------------------
loc_C8D9:
mov _entered_place, -1
mov al, playchar_125B8
mov ah, 0
push ax
call sub_C7C9
call graph_putsa_fx pascal, (124 shl 16) or 196, 9, ds, offset aGxgnbGvbGhvVGv ; "<22>X<EFBFBD><58><EFBFBD>[<5B><><EFBFBD>[<5B>h<EFBFBD>ł̃v<CC83><76><EFBFBD>C<EFBFBD>ł́A<CD81>X<EFBFBD>R<EFBFBD>A<EFBFBD>͋L<CD8B>E...
call graph_putsa_fx pascal, (120 shl 16) or 192, 2, ds, offset aGxgnbGvbGhvV_1 ; "<22>X<EFBFBD><58><EFBFBD>[<5B><><EFBFBD>[<5B>h<EFBFBD>ł̃v<CC83><76><EFBFBD>C<EFBFBD>ł́A<CD81>X<EFBFBD>R<EFBFBD>A<EFBFBD>͋L<CD8B>E...
loc_C909:
les bx, _resident
cmp es:[bx+resident_t.end_sequence], ES_GOOD
jz short loc_C922
cmp es:[bx+resident_t.end_sequence], ES_EXTRA
jz short loc_C922
cmp _rank, RANK_EASY
jnz short loc_C95E
loc_C922:
mov al, _hi.score.cleared
mov [bp+var_A], al
cmp [bp+var_A], SCOREDAT_CLEARED_BOTH + 1
jb short loc_C944
les bx, _resident
cmp es:[bx+resident_t.shottype], SHOTTYPE_A
jnz short loc_C93D
mov al, SCOREDAT_CLEARED_A
jmp short loc_C93F
; ---------------------------------------------------------------------------
loc_C93D:
mov al, SCOREDAT_CLEARED_B
loc_C93F:
mov [bp+var_A], al
jmp short loc_C958
; ---------------------------------------------------------------------------
loc_C944:
les bx, _resident
cmp es:[bx+resident_t.shottype], SHOTTYPE_A
jnz short loc_C953
mov al, SCOREDAT_CLEARED_A
jmp short loc_C955
; ---------------------------------------------------------------------------
loc_C953:
mov al, SCOREDAT_CLEARED_B
loc_C955:
or [bp+var_A], al
loc_C958:
mov al, [bp+var_A]
mov _hi.score.cleared, al
loc_C95E:
kajacall KAJA_SONG_STOP
call snd_load pascal, ds, offset aName, SND_LOAD_SONG
kajacall KAJA_SONG_PLAY
push 2
call palette_black_in
cmp _entered_place, -1
jz loc_CB7F
mov [bp+@@initial_row], 0
jmp short loc_C9CB
; ---------------------------------------------------------------------------
loc_C990:
mov [bp+@@initial_col], 0
jmp short loc_C9C2
; ---------------------------------------------------------------------------
loc_C997:
mov ax, [bp+@@initial_col]
add ax, ax
add ax, 23
push ax
mov ax, [bp+@@initial_row]
add ax, 18
push ax
mov bx, [bp+@@initial_row]
imul bx, ALPHABET_COLS
add bx, [bp+@@initial_col]
mov al, _gALPHABET[bx]
mov ah, 0
push ax
push TX_WHITE
call gaiji_putca
inc [bp+@@initial_col]
loc_C9C2:
cmp [bp+@@initial_col], ALPHABET_COLS
jl short loc_C997
inc [bp+@@initial_row]
loc_C9CB:
cmp [bp+@@initial_row], ALPHABET_ROWS
jl short loc_C990
push (23 shl 16) + 18
mov al, _gALPHABET
mov ah, 0
push ax
push TX_GREEN + TX_REVERSE
call gaiji_putca
xor di, di
mov [bp+@@row], 0
call @input_reset_sense$qv
mov [bp+var_4], 1
loc_C9F6:
call @input_sense$qv
cmp [bp+var_4], 0
jnz loc_CB3B
test _key_det.lo, low INPUT_MOVEMENT
jz short loc_CA6A
push di
push [bp+@@row]
push TX_WHITE
call sub_C7E3
test _key_det.lo, low INPUT_UP
jz short loc_CA1E
dec [bp+@@row]
loc_CA1E:
test _key_det.lo, low INPUT_DOWN
jz short loc_CA28
inc [bp+@@row]
loc_CA28:
test _key_det.lo, low INPUT_LEFT
jz short loc_CA30
dec di
loc_CA30:
test _key_det.lo, low INPUT_RIGHT
jz short loc_CA38
inc di
loc_CA38:
cmp [bp+@@row], 0
jge short loc_CA45
mov [bp+@@row], (ALPHABET_ROWS - 1)
jmp short loc_CA50
; ---------------------------------------------------------------------------
loc_CA45:
cmp [bp+@@row], (ALPHABET_ROWS - 1)
jle short loc_CA50
mov [bp+@@row], 0
loc_CA50:
or di, di
jge short loc_CA59
mov di, (ALPHABET_COLS - 1)
jmp short loc_CA60
; ---------------------------------------------------------------------------
loc_CA59:
cmp di, (ALPHABET_COLS - 1)
jle short loc_CA60
xor di, di
loc_CA60:
push di
push [bp+@@row]
push TX_GREEN + TX_REVERSE
call sub_C7E3
loc_CA6A:
test _key_det.lo, low INPUT_SHOT
jnz short loc_CA7A
test _key_det.hi, high INPUT_OK
jz loc_CB03
loc_CA7A:
mov bx, [bp+@@row]
imul bx, ALPHABET_COLS
mov al, _gALPHABET[bx+di]
mov [bp+var_A], al
mov ah, 0
sub ax, gs_SPACE
mov bx, ax
cmp bx, 8
ja short @@regular
add bx, bx
jmp cs:off_CB9E[bx]
@@space:
mov [bp+var_A], g_EMPTY
jmp short @@regular
; ---------------------------------------------------------------------------
@@left:
mov al, _entered_place
mov ah, 0
imul ax, (SCOREDAT_NAME_LEN + 1)
mov bx, ax
mov _hi.score.g_name[bx+si], g_EMPTY
or si, si
jle short loc_CAF5
dec si
jmp short loc_CAF5
; ---------------------------------------------------------------------------
@@right:
cmp si, 7
jge short loc_CAF5
jmp short loc_CAF4
; ---------------------------------------------------------------------------
@@regular:
mov al, _entered_place
mov ah, 0
imul ax, (SCOREDAT_NAME_LEN + 1)
mov dl, [bp+var_A]
mov bx, ax
mov _hi.score.g_name[bx+si], dl
cmp si, 7
jnz short loc_CAEF
push di
push [bp+@@row]
push TX_WHITE
call sub_C7E3
mov di, ALPHABET_ENTER_COL
mov [bp+@@row], ALPHABET_ENTER_ROW
push di
push [bp+@@row]
push TX_GREEN + TX_REVERSE
call sub_C7E3
loc_CAEF:
cmp si, 7
jge short loc_CAF5
loc_CAF4:
inc si
loc_CAF5:
mov al, _entered_place
mov ah, 0
push ax
push word ptr playchar_125B8
push si
call sub_C665
loc_CB03:
test _key_det.lo, low INPUT_BOMB
jz short loc_CB2C
mov al, _entered_place
mov ah, 0
imul ax, (SCOREDAT_NAME_LEN + 1)
mov bx, ax
mov _hi.score.g_name[bx+si], g_EMPTY
or si, si
jle short loc_CB1E
dec si
loc_CB1E:
mov al, _entered_place
mov ah, 0
push ax
push word ptr playchar_125B8
push si
call sub_C665
loc_CB2C:
test _key_det.hi, high INPUT_CANCEL
jnz short @@enter
mov ax, _key_det
mov [bp+var_4], ax
jmp short loc_CB6B
; ---------------------------------------------------------------------------
loc_CB3B:
mov ax, _key_det
cmp ax, [bp+var_4]
jnz short loc_CB59
inc [bp+var_9]
cmp [bp+var_9], 1Eh
jbe short loc_CB6B
test [bp+var_9], 1
jnz short loc_CB6B
mov [bp+var_4], 0
jmp short loc_CB6B
; ---------------------------------------------------------------------------
loc_CB59:
cmp _key_det, INPUT_NONE
jz short loc_CB62
jmp short loc_CB67
; ---------------------------------------------------------------------------
loc_CB62:
mov [bp+var_4], 0
loc_CB67:
mov [bp+var_9], 0
loc_CB6B:
call @input_reset_sense$qv
call @frame_delay$qi pascal, 1
jmp loc_C9F6
; ---------------------------------------------------------------------------
@@enter:
call sub_C316
jmp short loc_CB89
; ---------------------------------------------------------------------------
loc_CB7F:
call sub_C316
call @input_wait_for_change$qi pascal, 0
loc_CB89:
call super_free
call text_clear
push 1
call palette_black_out
pop di
pop si
leave
retn
; ---------------------------------------------------------------------------
off_CB9E dw offset @@space
dw offset @@left
dw offset @@right
dw offset @@regular
dw offset @@regular
dw offset @@regular
dw offset @@regular
dw offset @@regular
dw offset @@enter
@regist_menu$qv endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
_egc_start_copy_inlined proc near
push bp
mov bp, sp
EGC_START_COPY_INLINED
pop bp
retn
_egc_start_copy_inlined endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_CBF3 proc near
var_8 = word ptr -8
var_6 = word ptr -6
var_4 = word ptr -4
var_2 = word ptr -2
arg_0 = word ptr 4
arg_2 = word ptr 6
arg_4 = word ptr 8
arg_6 = word ptr 0Ah
enter 8, 0
push si
push di
mov di, [bp+arg_2]
call _egc_start_copy_inlined
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 [bp+var_6], ax
mov bx, 16
mov ax, di
cwd
idiv bx
mov di, ax
mov [bp+var_4], 0
jmp short loc_CC66
; ---------------------------------------------------------------------------
loc_CC29:
mov [bp+var_2], 0
mov si, [bp+var_6]
jmp short loc_CC5A
; ---------------------------------------------------------------------------
loc_CC33:
graph_accesspage 1
les bx, _VRAM_PLANE_B
add bx, si
mov ax, es:[bx]
mov [bp+var_8], ax
mov al, 0
out dx, al
mov bx, word ptr _VRAM_PLANE_B
add bx, si
mov ax, [bp+var_8]
mov es:[bx], ax
inc [bp+var_2]
add si, 2
loc_CC5A:
cmp [bp+var_2], di
jl short loc_CC33
inc [bp+var_4]
add [bp+var_6], 50h ; 'P'
loc_CC66:
mov ax, [bp+var_4]
cmp ax, [bp+arg_0]
jl short loc_CC29
call egc_off
pop di
pop si
leave
retn 8
sub_CBF3 endp
db 0
maine_01_TEXT ends
; ===========================================================================
SHARED segment byte public 'CODE' use16
include th02/snd/snd.inc
extern @FRAME_DELAY$QI:proc
extern PI_PALETTE_APPLY:proc
extern PI_PUT_8:proc
extern PI_LOAD:proc
extern @INPUT_WAIT_FOR_CHANGE$QI:proc
extern @POLAR$QIII:proc
extern SND_KAJA_INTERRUPT:proc
extern SND_DELAY_UNTIL_MEASURE:proc
extern CDG_PUT_PLANE:proc
extern SND_LOAD:proc
extern GRAPH_PUTSA_FX:proc
extern CDG_PUT_8:proc
extern @input_reset_sense$qv:proc
extern @input_sense$qv:proc
extern _bgimage_snap:proc
extern _bgimage_free:proc
extern BGIMAGE_PUT_RECT_16:proc
extern CDG_LOAD_SINGLE_NOALPHA:proc
extern CDG_LOAD_SINGLE:proc
extern CDG_FREE:proc
extern CDG_FREE_ALL:proc
SHARED ends
.data
; libs/master/pal[data].mas
extern PaletteTone:word
; libs/master/rand[data].mas
extern random_seed:dword
; libs/master.lib/sin8[data].asm
extern _SinTable8:word:256
extern _CosTable8:word:256
; th04/hardware/grppsafx.asm
extern _graph_putsa_fx_func:word
include th03/snd/se_state[data].asm
include th04/hardware/bgimage[data].asm
include th03/formats/cdg[data].asm
include th03/formats/pi_put_masked[data].asm
include th03/cutscene/cutscene[data].asm
aSff1_pi db 'sff1.pi',0
aStaff db 'staff',0
aSff1_cdg db 'sff1.cdg',0
aSff1b_cdg db 'sff1b.cdg',0
aSff2_cdg db 'sff2.cdg',0
aSff2b_cdg db 'sff2b.cdg',0
aSff3_cdg db 'sff3.cdg',0
aSff3b_cdg db 'sff3b.cdg',0
aSff2_pi db 'sff2.pi',0
aSff4_cdg db 'sff4.cdg',0
aSff4b_cdg db 'sff4b.cdg',0
aSff5_cdg db 'sff5.cdg',0
aSff5b_cdg db 'sff5b.cdg',0
aSff8_cdg db 'sff8.cdg',0
aSff8b_cdg db 'sff8b.cdg',0
aSff9_cdg db 'sff9.cdg',0
aSff9b_cdg db 'sff9b.cdg',0
aSff6_cdg db 'sff6.cdg',0
aSff6b_cdg db 'sff6b.cdg',0
aSff7_cdg db 'sff7.cdg',0
aSff7b_cdg db 'sff7b.cdg',0
db 0
include th04/gaiji/verdict[data].asm
aU_ db '<27>_',0
aBd db '<27>D',0
aBu db '<27><>',0
aBd_0 db '<27>D',0
aBu_0 db '<27><>',0
aB@b@b@b@b@b@b@ db '<27>@<40>@<40>@<40>@<40>@<40>@<40>@ <20>r<EFBFBD>O<EFBFBD><4F><EFBFBD><EFBFBD>',0
aUqiUx db '<27><><EFBFBD>Փx',0
aNPiuU_ db '<27>ŏI<C58F><49><EFBFBD>_',0
aGGxi db '<27>~<7E>X<EFBFBD><58><EFBFBD><EFBFBD>',0
aGGaogcpi db '<27>{<7B><><EFBFBD>g<EFBFBD>p<EFBFBD><70><EFBFBD><EFBFBD>',0
aGqbGatbrmcj db '<27>Q<EFBFBD>[<5B><><EFBFBD>B<EFBFBD><42><EFBFBD><EFBFBD>',0
aIlcSObcj db '<27><><EFBFBD><EFBFBD><EFBFBD>ގ<EFBFBD><DE8E><EFBFBD>',0
aGagcgegai db '<27>A<EFBFBD>C<EFBFBD>e<EFBFBD><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>',0
aUU_gagcgeganNv db '<27><><EFBFBD>_<EFBFBD>A<EFBFBD>C<EFBFBD>e<EFBFBD><65><EFBFBD>ō<EFBFBD><C58D>_<EFBFBD><5F>',0
aLcnzvv db '<27>C<EFBFBD><43><EFBFBD><EFBFBD>',0
aPicacovCj db '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>',0
aVavVVSrso db '<27><><EFBFBD>Ȃ<EFBFBD><C882>̘r<CC98>O',0
aTimes db '<27><>',0
aTimes_0 db '<27><>',0
aPoint db '<27>_',0
a_ude_txt db '_ude.txt',0
aBhbhbhbhbhbhu_ db '<27>H<EFBFBD>H<EFBFBD>H<EFBFBD>H<EFBFBD>H<EFBFBD>H<EFBFBD>_',0
aPicacovVVcvsfT db '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɂ<EFBFBD><C982><EFBFBD><E994BB><EFBFBD>s<EFBFBD><73>',0
aUde_pi db 'ude.pi',0
db 0
include th04/hiscore/alphabet[data].asm
aGensou_scr db 'GENSOU.SCR',0
aGensou_scr_0 db 'GENSOU.SCR',0
aGensou_scr_1 db 'GENSOU.SCR',0
aGensou_scr_2 db 'GENSOU.SCR',0
aHi01_pi db 'hi01.pi',0
aScnum2_bft db 'scnum2.bft',0
aGxgnbGvbGhvVGv db '<27>X<EFBFBD><58><EFBFBD>[<5B><><EFBFBD>[<5B>h<EFBFBD>ł̃v<CC83><76><EFBFBD>C<EFBFBD>ł́A<CD81>X<EFBFBD>R<EFBFBD>A<EFBFBD>͋L<CD8B>^<5E><><EFBFBD><EFBFBD><EFBFBD>܂<EFBFBD><DC82><EFBFBD>',0
aGxgnbGvbGhvV_1 db '<27>X<EFBFBD><58><EFBFBD>[<5B><><EFBFBD>[<5B>h<EFBFBD>ł̃v<CC83><76><EFBFBD>C<EFBFBD>ł́A<CD81>X<EFBFBD>R<EFBFBD>A<EFBFBD>͋L<CD8B>^<5E><><EFBFBD><EFBFBD><EFBFBD>܂<EFBFBD><DC82><EFBFBD>',0
aName db 'name',0
db 0
.data?
extern _resident:dword
; libs/master.lib/vs[bss].asm
extern vsync_Count1:word
; th01/hardware/vram_planes[bss].asm
extern _VRAM_PLANE_B:dword
; th02/formats/pi_slots[bss].asm
extern _pi_buffers:dword:6
extern _pi_headers:PiHeader:6
include th02/snd/load[bss].asm
include th04/mem[bss].asm
include th04/hardware/input[bss].asm
include th04/formats/cdg[bss].asm
include th03/cutscene/cutscene[bss].asm
public _cdg_slot, _radial_angle, _dissolve_put_func
_cdg_slot db ?
_radial_angle db ?
_dissolve_put_func dw ?
db 2 dup(?)
byte_124CC db ?
db ? ;
public _skill
_skill dd ?
_verdict_rank db ?
unk_124D3 db ? ;
db 27 dup(?)
byte_124EF db ?
db 2 dup(?)
include th04/formats/scoredat[bss].asm
include th03/hiscore/regist[bss].asm
_rank db ?
playchar_125B8 db ?
end