ReC98/th01_reiiden.asm

4687 lines
99 KiB
NASM
Raw Blame History

This file contains invisible Unicode characters

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

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

;
; +-------------------------------------------------------------------------+
; | This file has been generated by The Interactive Disassembler (IDA) |
; | Copyright (c) 2009 by Hex-Rays, <support@hex-rays.com> |
; +-------------------------------------------------------------------------+
;
; Input MD5 : F39FD5A146426CF261F207D7FC878675
; File Name : th01/REIIDEN.EXE
; Format : MS-DOS executable (EXE)
; Base Address: 0h Range: 0h-3B660h Loaded length: 36C14h
; Entry Point : 0:0
; OS type : MS DOS
; Application type: Executable 16bit
.386
.model use16 large
BINARY = 'M'
include ReC98.inc
include th01/th01.inc
include th01/hardware/grppsafx.inc
include th01/math/area.inc
include th01/math/subpixel.inc
include th01/main/playfld.inc
include th01/formats/cfg.inc
include th01/sprites/main_ptn.inc
LIVES_MAX = 6
BOMBS_MAX = 5
STAGES_PER_SCENE = 5
BOSS_STAGE = (STAGES_PER_SCENE - 1)
option emulator
extern @$bdla$qnv:proc
extern @$bnew$qui:proc
extern @$bnwa$qui:proc
extern @_vector_new_$qnvuiuluie:proc
extern @set_new_handler$qnqv$v:proc
extern FTOL@:proc
extern SCOPY@:proc
extern __control87:proc
extern __turboFloat
extern _coreleft:proc
extern _execl:proc
extern _exit:proc
extern _farheapcheck:proc
extern _farheapchecknode:proc
extern _kbhit:proc
extern _printf:proc
extern _puts:proc
extern _scanf:proc
extern _strcmp:proc
extern _strcpy:proc
extern _toupper:proc
main_01 group main_010_TEXT, main_011_TEXT, main_012_TEXT, main_013_TEXT
main_15 group main_15_TEXT, main_15__TEXT
main_18 group main_18_TEXT, main_18__TEXT
main_19 group main_19_TEXT, main_19__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/text_clear.asm
include libs/master.lib/text_fillca.asm
include libs/master.lib/graph_400line.asm
include libs/master.lib/graph_clear.asm
include libs/master.lib/graph_show.asm
include libs/master.lib/graph_start.asm
include libs/master.lib/palette_show.asm
include libs/master.lib/palette_init.asm
include libs/master.lib/respal_exist.asm
include libs/master.lib/respal_free.asm
include libs/master.lib/resdata.asm
include libs/master.lib/file_read.asm
include libs/master.lib/file_close.asm
include libs/master.lib/file_exist.asm
include libs/master.lib/file_ropen.asm
include libs/master.lib/file_write.asm
include libs/master.lib/file_create.asm
include libs/master.lib/file_seek.asm
include libs/master.lib/dos_free.asm
include libs/master.lib/dos_axdx.asm
include libs/master.lib/keystart.asm
include libs/master.lib/key_sense.asm
include libs/master.lib/dos_ropen.asm
include libs/master.lib/grcg_setcolor.asm
include libs/master.lib/grcg_pset.asm
include libs/master.lib/egc.asm
include libs/master.lib/iatan2.asm
include libs/master.lib/isqrt.asm
include libs/master.lib/random.asm
_TEXT ends
; ===========================================================================
; Segment type: Pure code
main_010_TEXT segment byte public 'CODE' use16
main_010_TEXT ends
main_011_TEXT segment byte public 'CODE' use16
assume cs:main_01
;org 2
assume es:nothing, ss:nothing, ds:_DATA, fs:nothing, gs:nothing
extern _input_sense:proc
extern _input_reset_sense:proc
extern _load_and_init_stuff_used_in_all_:proc
extern @stage_entrance$qinxci:proc
main_011_TEXT ends
main_012_TEXT segment byte public 'CODE' use16
extern @invincibility_sprites_update_and$qi:proc
extern @orb_velocity_y_update$qv:proc
extern @orb_force_new$qd11orb_force_t:proc
extern @orb_move_x$q16orb_velocity_x_t:proc
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_C766 proc far
var_C = qword ptr -0Ch
arg_0 = word ptr 6
push bp
mov bp, sp
push si
mov si, [bp+arg_0]
cmp _orb_in_portal, 0
jnz loc_C816
call @orb_move_x$q16orb_velocity_x_t stdcall, _orb_velocity_x
pop cx
call @orb_velocity_y_update$qv
add _orb_cur_top, ax
inc word_34A92
cmp _orb_velocity_x, OVX_4_LEFT
jz short loc_C799
cmp _orb_velocity_x, OVX_8_LEFT
jnz short loc_C79D
loc_C799:
inc word_34A7E
loc_C79D:
cmp _orb_velocity_x, OVX_4_RIGHT
jz short loc_C7AB
cmp _orb_velocity_x, OVX_8_RIGHT
jnz short loc_C7AF
loc_C7AB:
dec word_34A7E
loc_C7AF:
cmp word_34A7E, 0Ah
jl short loc_C7BC
mov word_34A7E, 0
loc_C7BC:
cmp word_34A7E, 0
jge short loc_C7C9
mov word_34A7E, 9
loc_C7C9:
cmp _orb_cur_top, ORB_TOP_MAX
jle short loc_C7F4
push OF_BOUNCE_FROM_SURFACE
fld _ORB_COEFFICIENT_OF_RESTITUTION
sub sp, 8
fstp [bp+var_C]
fwait
call @orb_force_new$qd11orb_force_t
add sp, 0Ah
mov _orb_cur_top, ORB_TOP_MAX
mov _cardcombo_cur, 0
loc_C7F4:
cmp _orb_cur_top, ORB_TOP_MIN
jge short loc_C816
push OF_BOUNCE_FROM_TOP
fldz
sub sp, 8
fstp [bp+var_C]
fwait
call @orb_force_new$qd11orb_force_t
add sp, 0Ah
mov _orb_cur_top, ORB_TOP_MIN
loc_C816:
push 1
call _frame_delay
pop cx
call @CPellets@unput_update_render$qv c, offset _Pellets, ds
mov ax, si
mov bx, 5
cwd
idiv bx
cmp dx, 4
jz short loc_C846
call @cards_hittest$qi pascal, si
pop cx
call @obstacles_update_and_render$qi stdcall, 0
pop cx
loc_C846:
cmp _orb_in_portal, 0
jnz short loc_C855
call @orb_player_hittest$qi stdcall, OR_NONE
pop cx
loc_C855:
cmp _orb_in_portal, 0
jnz short loc_C879
mov ax, word_34A7E
mov bx, 3
cwd
idiv bx
add ax, 3
call @ptn_unput_8$qiii c, _orb_prev_left, _orb_prev_top, ax
loc_C879:
mov ax, si
mov bx, 5
cwd
idiv bx
cmp dx, 4
jz short loc_C88B
call @cards_update_and_render$qv
loc_C88B:
cmp _orb_in_portal, 0
jnz short loc_C8B6
cmp _done, 0
jnz short loc_C8B6
mov ax, word_34A7E
mov bx, 3
cwd
idiv bx
add ax, PTN_ORB
call @ptn_put_8$qiii c, _orb_cur_left, _orb_cur_top, ax
loc_C8B6:
mov ax, _orb_cur_left
mov _orb_prev_left, ax
mov ax, _orb_cur_top
mov _orb_prev_top, ax
pop si
pop bp
retf 2
sub_C766 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_C8C7 proc far
arg_0 = word ptr 6
push bp
mov bp, sp
push si
push di
xor si, si
jmp short loc_C92D
; ---------------------------------------------------------------------------
loc_C8D0:
cmp si, 7
jz short loc_C92C
xor di, di
jmp short loc_C927
; ---------------------------------------------------------------------------
loc_C8D9:
mov bx, si
imul bx, 3
mov al, _z_Palettes[bx+di]
cbw
imul [bp+arg_0]
mov bx, 100
cwd
idiv bx
mov bx, si
imul bx, 3
mov _z_Palettes[bx+di], al
mov bx, si
imul bx, 3
mov al, _z_Palettes[bx+di]
cbw
or ax, ax
jge short loc_C90D
mov bx, si
imul bx, 3
mov byte ptr _z_Palettes[bx+di], 0
loc_C90D:
mov bx, si
imul bx, 3
mov al, _z_Palettes[bx+di]
cbw
cmp ax, 0Fh
jle short loc_C926
mov bx, si
imul bx, 3
mov byte ptr _z_Palettes[bx+di], 0Fh
loc_C926:
inc di
loc_C927:
cmp di, 3
jl short loc_C8D9
loc_C92C:
inc si
loc_C92D:
cmp si, 10h
jl short loc_C8D0
call _z_palette_set_all_show c, offset _z_Palettes, ds
pop di
pop si
pop bp
retf
sub_C8C7 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_C942 proc far
var_1 = byte ptr -1
enter 2, 0
mov [bp+var_1], 0
call _graph_putsa_fx c, 272, large ((7 or FX_WEIGHT_BLACK) shl 16) or 128, offset aVovVtvrvd, ds ; "<22>o<EFBFBD>`<60>t<EFBFBD>r<EFBFBD>d"
call _graph_putsa_fx c, 256, large ((7 or FX_WEIGHT_BLACK) shl 16) or 144, offset aB@nKjb@b@pic, ds ; "<22>@<40>ĊJ<C48A>@<40>@<40>I<EFBFBD><49>"
call _graph_putsa_fx c, 256, large (7 shl 16) or 144, offset aBB@b@b@b@b@b@, ds ; "<22><><EFBFBD>@<40>@<40>@<40>@<40>@<40>@"
push 28h ; '('
call sub_C8C7
pop cx
mov _input_lr, 0
mov _input_shot, 0
mov _input_ok, 0
jmp loc_CA30
; ---------------------------------------------------------------------------
loc_C9A2:
call _input_sense stdcall, 0
pop cx
cmp _done, 1
jz loc_CB91
cmp _input_lr, INPUT_LEFT
jnz short loc_C9E6
call @egc_copy_rect_1_to_0_16$qiiii c, large (144 shl 16) or 320, large (16 shl 16) or 16
call _graph_putsa_fx c, 256, large (7 shl 16) or 144, offset aB, ds ; "<22><>"
mov [bp+var_1], 0
loc_C9E6:
cmp _input_lr, INPUT_RIGHT
jnz short loc_CA1A
call @egc_copy_rect_1_to_0_16$qiiii c, large (144 shl 16) or 256, large (16 shl 16) or 16
call _graph_putsa_fx c, 320, large (7 shl 16) or 144, offset aB, ds ; "<22><>"
mov [bp+var_1], 1
loc_CA1A:
cmp _input_shot, 0
jnz short loc_CA39
cmp _input_ok, 0
jnz short loc_CA39
push 1
call _frame_delay
pop cx
loc_CA30:
cmp _paused, 0
jnz loc_C9A2
loc_CA39:
call @egc_copy_rect_1_to_0_16$qiiii c, large (128 shl 16) or 276, large (16 shl 16) or 80
call @egc_copy_rect_1_to_0_16$qiiii c, large (144 shl 16) or 256, large (16 shl 16) or 112
push 14h
call _frame_delay
pop cx
mov _input_lr, 0
mov _input_shot, 0
mov _input_ok, 0
cmp [bp+var_1], 0
jz loc_CB96
cmp _paused, 0
jz loc_CB96
call _graph_putsa_fx c, 224, large ((7 or FX_WEIGHT_BLACK) shl 16) or 128, offset aCUcvPicVVVsvdv, ds ; "<22>{<7B><><EFBFBD>ɏI<C98F><49><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>́H"
call _graph_putsa_fx c, 224, large ((7 or FX_WEIGHT_BLACK) shl 16) or 144, offset aB@vdvVVVgb@b@v, ds ; "<22>@<40><><EFBFBD><EFBFBD><EFBFBD>ł<EFBFBD><C582><EFBFBD><EFBFBD>@<40>@<40>͂<EFBFBD><CD82><EFBFBD>"
call _graph_putsa_fx c, 224, large (7 shl 16) or 144, offset aB, ds ; "<22><>"
mov [bp+var_1], 0
jmp loc_CB5D
; ---------------------------------------------------------------------------
loc_CACF:
call _input_sense stdcall, 0
pop cx
cmp _done, 1
jz loc_CB91
cmp _input_lr, INPUT_LEFT
jnz short loc_CB13
call @egc_copy_rect_1_to_0_16$qiiii c, large (144 shl 16) or 336, large (16 shl 16) or 16
call _graph_putsa_fx c, 224, large (7 shl 16) or 144, offset aB, ds ; "<22><>"
mov [bp+var_1], 0
loc_CB13:
cmp _input_lr, INPUT_RIGHT
jnz short loc_CB47
call @egc_copy_rect_1_to_0_16$qiiii c, large (144 shl 16) or 224, large (16 shl 16) or 16
call _graph_putsa_fx c, 336, large (7 shl 16) or 144, offset aB, ds ; "<22><>"
mov [bp+var_1], 1
loc_CB47:
cmp _input_shot, 0
jnz short loc_CB66
cmp _input_ok, 0
jnz short loc_CB66
push 1
call _frame_delay
pop cx
loc_CB5D:
cmp _paused, 0
jnz loc_CACF
loc_CB66:
cmp [bp+var_1], 0
jz short loc_CB96
les bx, _resident
inc es:[bx+reiidenconfig_t.continues_total]
inc _continues_total
mov ax, es:[bx+reiidenconfig_t.stage]
mov bx, 5
xor dx, dx
div bx
add ax, ax
mov bx, word ptr _resident
add bx, ax
inc es:[bx+reiidenconfig_t.continues_per_scene]
loc_CB91:
mov ax, 1
leave
retf
; ---------------------------------------------------------------------------
loc_CB96:
call _z_palette_set_all_show c, offset _stage_palette, ds
call _input_reset_sense
call @egc_copy_rect_1_to_0_16$qiiii c, large (128 shl 16) or 232, large (32 shl 16) or 176
xor ax, ax
leave
retf
sub_C942 endp
main_012_TEXT ends
main_013_TEXT segment byte public 'CODE' use16
extern @pellet_speed_lower$qii:proc
extern @pellet_speed_raise$qi:proc
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_CC0F proc far
push bp
mov bp, sp
push si
push di
xor di, di
push 1
call _graph_accesspage_func
pop cx
call _graph_copy_accessed_page_to_othe
call _graph_putsa_fx c, 0, ((FX_CLEAR_BG or (7 or FX_WEIGHT_BOLD)) shl 16) or 0, offset aVgvpvovfvivovx, ds ; "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>H<EFBFBD>@<40>@<40>@ "
call _graph_putsa_fx c, 0, ((FX_CLEAR_BG or (7 or FX_WEIGHT_BOLD)) shl 16) or 16, offset aVxvevub@b@B@, ds ; "<22>x<EFBFBD><78><EFBFBD><EFBFBD><EFBFBD>@<40>@ <20>@"
call _graph_putsa_fx c, 0, ((FX_CLEAR_BG or (7 or FX_WEIGHT_BOLD)) shl 16) or 32, offset aVmvpb@b@B@, ds ; "<22>m<EFBFBD><6D><EFBFBD>@<40>@ <09>@ "
call _graph_putsa_fx c, 0, ((FX_CLEAR_BG or (1 or FX_WEIGHT_BOLD)) shl 16) or 48, offset aVxvevub@b@c@, ds ; "<22>x<EFBFBD><78><EFBFBD><EFBFBD><EFBFBD>@<40>@<40>@ "
call _graph_putsa_fx c, 0, ((FX_CLEAR_BG or (1 or FX_WEIGHT_BOLD)) shl 16) or 64, offset aVmvpb@b@c@, ds ; "<22>m<EFBFBD><6D><EFBFBD>@<40>@<40>@ "
push 0
call _graph_accesspage_func
pop cx
call @graph_2xscale_byterect_1_to_0_sl$qiiiiii c, large ( 64 shl 16) or 160, large ( 0 shl 16) or 0, large (16 shl 16) or 144
call @graph_2xscale_byterect_1_to_0_sl$qiiiiii c, large (200 shl 16) or 288, large (16 shl 16) or 0, large (16 shl 16) or 48
call @graph_2xscale_byterect_1_to_0_sl$qiiiiii c, large (232 shl 16) or 288, large (64 shl 16) or 0, large (16 shl 16) or 48
mov si, 1
mov _input_ok, 0
mov _paused, 0
mov _input_shot, 0
call _input_reset_sense
les bx, _resident
inc es:[bx+reiidenconfig_t.continues_total]
inc _continues_total
mov ax, es:[bx+reiidenconfig_t.stage]
mov bx, 5
xor dx, dx
div bx
add ax, ax
mov bx, word ptr _resident
add bx, ax
inc es:[bx+reiidenconfig_t.continues_per_scene]
mov bx, word ptr _resident
mov eax, es:[bx+reiidenconfig_t.score_highest]
cmp eax, _score
jnb short loc_CD2E
mov eax, _score
mov es:[bx+reiidenconfig_t.score_highest], eax
loc_CD2E:
les bx, _resident
mov es:[bx+reiidenconfig_t.score], 0
mov al, es:[bx+reiidenconfig_t.start_lives_extra]
add al, 2
mov es:[bx+reiidenconfig_t.rem_lives], al
call @pellet_speed_lower$qii c, large (-2 and 0FFFFh) or (-5 shl 16)
loc_CD52:
call _input_sense stdcall, 0
pop cx
inc di
push 1
call _frame_delay
pop cx
cmp _input_ok, 1
jz short loc_CD70
cmp _input_shot, 1
jnz short loc_CDBC
loc_CD70:
cmp si, 1
jnz short loc_CDA2
les bx, _resident
mov es:[bx+reiidenconfig_t.snd_need_init], 0
call @game_switch_binary$qv
les bx, _resident
mov es:[bx+reiidenconfig_t.p_value], 0
pushd 0
push ds
push offset path ; "REIIDEN"
push ds
push offset path ; "REIIDEN"
call _execl
add sp, 0Ch
jmp short loc_CDBC
; ---------------------------------------------------------------------------
loc_CDA2:
mov _done, 0
mov _paused, 0
mov _continues_total, 0
call _mdrv2_bgm_stop
jmp short loc_CDD3
; ---------------------------------------------------------------------------
loc_CDBC:
cmp di, 0BB8h
ja short loc_CDA2
cmp _paused, 1
jnz short loc_CDD8
mov _done, 0
mov _paused, 0
loc_CDD3:
xor ax, ax
jmp loc_CE58
; ---------------------------------------------------------------------------
loc_CDD8:
cmp _input_up, 1
jnz short loc_CE16
mov si, 1
call @graph_2xscale_byterect_1_to_0_sl$qiiiiii c, large (200 shl 16) or 288, large (16 shl 16) or 0, large (16 shl 16) or 48
call @graph_2xscale_byterect_1_to_0_sl$qiiiiii c, large (232 shl 16) or 288, large (64 shl 16) or 0, large (16 shl 16) or 48
loc_CE16:
cmp _input_down, 1
jnz loc_CD52
xor si, si
call @graph_2xscale_byterect_1_to_0_sl$qiiiiii c, large (200 shl 16) or 288, large (48 shl 16) or 0, large (16 shl 16) or 48
call @graph_2xscale_byterect_1_to_0_sl$qiiiiii c, large (232 shl 16) or 288, large (32 shl 16) or 0, large (16 shl 16) or 48
jmp loc_CD52
; ---------------------------------------------------------------------------
loc_CE58:
pop di
pop si
pop bp
retf
sub_CC0F endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_CE5C proc far
var_1E = byte ptr -1Eh
var_14 = byte ptr -14h
var_12 = word ptr -12h
var_10 = word ptr -10h
var_E = word ptr -0Eh
var_A = word ptr -0Ah
var_8 = word ptr -8
var_4 = word ptr -4
var_2 = word ptr -2
enter 1Eh, 0
push si
push di
lea ax, [bp+var_1E]
push ss
push ax
push ds
push offset byte_34AD5
mov cx, 0Ah
call SCOPY@
call @items_bomb_reset$qv
call @items_point_reset$qv
call @ptn_put_8$qiii c, _orb_cur_left, _orb_cur_top, 3
call IRand
mov bx, 8
cwd
idiv bx
or dx, dx
jnz short loc_CEA3
mov ax, 1
jmp short loc_CEA5
; ---------------------------------------------------------------------------
loc_CEA3:
xor ax, ax
loc_CEA5:
add ax, 56h
call @ptn_put_8$qiii c, _player_left, _player_top, ax
xor di, di
jmp short loc_CEDA
; ---------------------------------------------------------------------------
loc_CEBC:
mov bx, di
add bx, bx
lea ax, [bp+var_A]
add bx, ax
mov ax, _player_left
mov ss:[bx], ax
mov bx, di
add bx, bx
lea ax, [bp+var_14]
add bx, ax
mov word ptr ss:[bx], 170h
inc di
loc_CEDA:
cmp di, 5
jl short loc_CEBC
call _graph_copy_accessed_page_to_othe
xor di, di
jmp loc_D00D
; ---------------------------------------------------------------------------
loc_CEE9:
mov ax, di
mov bx, 2
cwd
idiv bx
shl dx, 3
mov ax, RES_Y
sub ax, dx
call @z_vsync_wait_and_scrollup$qi stdcall, ax
pop cx
xor si, si
jmp short loc_CF31
; ---------------------------------------------------------------------------
loc_CF04:
mov bx, di
add bx, bx
lea ax, [bp+var_1E]
add bx, ax
cmp word ptr ss:[bx], 0
jnz short loc_CF30
push (32 shl 16) or 32
push 368
mov bx, si
add bx, bx
lea ax, [bp+var_A]
add bx, ax
push word ptr ss:[bx]
call @egc_copy_rect_1_to_0_16$qiiii
add sp, 8
loc_CF30:
inc si
loc_CF31:
cmp si, 5
jl short loc_CF04
sub [bp+var_A], 8
pushd 2
call isqrt
push ax
mov ax, 8
cwd
pop bx
idiv bx
sub [bp+var_8], ax
pushd 2
call isqrt
push ax
mov ax, 8
cwd
pop bx
idiv bx
add [bp+var_4], ax
add [bp+var_2], 8
pushd 2
call isqrt
push ax
mov ax, 8
cwd
pop bx
idiv bx
sub [bp+var_12], ax
pushd 2
call isqrt
push ax
mov ax, 8
cwd
pop bx
idiv bx
sub [bp+var_E], ax
sub [bp+var_10], 8
xor si, si
jmp short loc_CFF8
; ---------------------------------------------------------------------------
loc_CF92:
mov bx, si
add bx, bx
lea ax, [bp+var_A]
add bx, ax
cmp word ptr ss:[bx], 260h
jge short loc_CFAE
mov bx, si
add bx, bx
add bx, ax
cmp word ptr ss:[bx], 0
jge short loc_CFBC
loc_CFAE:
mov bx, si
add bx, bx
lea ax, [bp+var_1E]
add bx, ax
mov word ptr ss:[bx], 1
loc_CFBC:
mov bx, si
add bx, bx
lea ax, [bp+var_1E]
add bx, ax
cmp word ptr ss:[bx], 0
jnz short loc_CFF7
mov ax, di
mov bx, 2
cwd
idiv bx
add dx, 84
push dx
mov bx, si
add bx, bx
lea ax, [bp+var_14]
add bx, ax
push word ptr ss:[bx]
mov bx, si
add bx, bx
lea ax, [bp+var_A]
add bx, ax
push word ptr ss:[bx]
call @ptn_put_8$qiii
add sp, 6
loc_CFF7:
inc si
loc_CFF8:
cmp si, 5
jl short loc_CF92
mov ax, di
mov bx, 6
cwd
idiv bx
push ax
call _frame_delay
pop cx
inc di
loc_D00D:
cmp di, 10h
jl loc_CEE9
call @z_vsync_wait_and_scrollup$qi stdcall, 0
pop cx
mov al, _credit_bombs
mov _bombs, al
les bx, _resident
mov es:[bx+reiidenconfig_t.bombs], 1
pop di
pop si
leave
retf
sub_CE5C endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_D02F proc far
push bp
mov bp, sp
movsx eax, word_34A8A
imul eax, 400000
cmp eax, _score
ja short loc_D07A
cmp _lives, LIVES_MAX
jge short loc_D076
inc _lives
les bx, _resident
mov al, byte ptr _lives
mov es:[bx+reiidenconfig_t.rem_lives], al
mov ax, _lives
dec ax
call @hud_lives_put$qi stdcall, ax
pop cx
push 0Fh
call _mdrv2_se_play
pop cx
call @pellet_speed_raise$qi stdcall, 1
pop cx
loc_D076:
inc word_34A8A
loc_D07A:
pop bp
retf
sub_D02F endp
; =============== S U B R O U T I N E =======================================
; Attributes: noreturn bp-based frame
sub_D07C proc near
push bp
mov bp, sp
push ds
push offset aVvvtbV ; "<22><><EFBFBD><EFBFBD><EFBFBD>[<5B><><EFBFBD>A<EFBFBD>q<EFBFBD>[<5B>v<EFBFBD><76><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȃ<EFBFBD><C882><EFBFBD>"
call _puts
add sp, 4
push 1 ; status
call _exit
sub_D07C endp
; ---------------------------------------------------------------------------
pop cx
pop bp
retf
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
; int __stdcall __far sub_D095(void far *node, __int32)
sub_D095 proc far
_node = dword ptr 6
arg_4 = dword ptr 0Ah
push bp
mov bp, sp
pushd [bp+arg_4]
push ds
push offset aS ; "%s"
call _printf
add sp, 8
pushd [bp+_node]
push ds
push offset aFp ; " : [%Fp] -> "
call _printf
add sp, 8
pushd [bp+_node] ; node
call _farheapchecknode
add sp, 4
sub ax, 0FFFEh
mov bx, ax
cmp bx, 6
ja short loc_D0F9
add bx, bx
jmp cs:off_D0FD[bx]
loc_D0D5:
push ds
push offset aGqbGvvkvVViv ; "<22>q<EFBFBD>[<5B>v<EFBFBD><76><EFBFBD>݂‚<DD82><C282><EFBFBD><EFBFBD>Ȃ<EFBFBD><C882>患"
jmp short loc_D0F1
; ---------------------------------------------------------------------------
loc_D0DB:
push ds
push offset aGqbGvvkfji ; "<22>q<EFBFBD>[<5B>v<EFBFBD><76><EFBFBD>j<EFBFBD>󂳂<EFBFBD><F382B382>Ă<EFBFBD><C482>킟"
jmp short loc_D0F1
; ---------------------------------------------------------------------------
loc_D0E1:
push ds
push offset aGmbGhvkvVViv ; "<22>m<EFBFBD>[<5B>h<EFBFBD><68><EFBFBD>݂‚<DD82><C282><EFBFBD><EFBFBD>Ȃ<EFBFBD><C882><EFBFBD>"
jmp short loc_D0F1
; ---------------------------------------------------------------------------
loc_D0E7:
push ds
push offset aVVVL ; "<22><><EFBFBD><EFBFBD><EFBFBD>͋󂫃u<F382AB83><75><EFBFBD>b<EFBFBD>N<EFBFBD>ł<EFBFBD><C582><EFBFBD>"
jmp short loc_D0F1
; ---------------------------------------------------------------------------
loc_D0ED:
push ds
push offset s ; "<22><><EFBFBD>ݎg<DD8E>p<EFBFBD><70><EFBFBD>̃u<CC83><75><EFBFBD>b<EFBFBD>N<EFBFBD><4E>"
loc_D0F1:
call _puts
add sp, 4
loc_D0F9:
pop bp
retf 8
sub_D095 endp
; ---------------------------------------------------------------------------
off_D0FD dw offset loc_D0E1
dw offset loc_D0DB
dw offset loc_D0F9
dw offset loc_D0D5
dw offset loc_D0F9
dw offset loc_D0E7
dw offset loc_D0ED
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
public _test_mem
_test_mem proc far
@@ptn_size_total = dword ptr -4
enter 4, 0
push si
mov [bp+@@ptn_size_total], 0
loc_D118:
mov [bp+@@ptn_size_total], 0
cmp _mode_test, 1
jnz loc_D317
call _z_graph_hide
call _printf c, offset _esc_cls, ds
push ds
push offset aB@b@b@vVVriCVi ; "<22>@<40>@<40>@<40><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>^<5E><><EFBFBD><EFBFBD>...\n"
call _puts
add sp, 4
pushd [dword_36C1A]
push ds
push offset aOldCoreleft7lu ; "old coreleft %7lu bytes free\n"
call _printf
add sp, 8
call _coreleft
push dx
push ax
push ds
push offset aCoreleft7luByt ; " coreleft %7lu bytes free\n"
call _printf
add sp, 8
push _obstacles.O_count
push ds
push offset aKabe_nD ; " kabe_n = %d\n"
call _printf
add sp, 6
push _cards.C_count
push ds
push offset aPnl_nD ; " pnl_n = %d\n"
call _printf
add sp, 6
movsx eax, _cards.C_count
imul eax, 281h
push eax
push ds
push offset aPnl_nBuf7lu ; " pnl_n buf = %7lu\n"
call _printf
add sp, 8
xor si, si
jmp short loc_D1E3
; ---------------------------------------------------------------------------
loc_D1A9:
mov al, _ptn_image_count[si]
cbw
cwde
imul eax, 281h
push eax
push si
push ds
push offset aB@b@ptnD7lu ; "<22>@<40>@ptn %d = %7lu\n"
call _printf
add sp, 0Ah
cmp si, 2
jl short loc_D1E2
cmp si, 5
jz short loc_D1E2
mov al, _ptn_image_count[si]
cbw
cwde
imul eax, 281h
add [bp+@@ptn_size_total], eax
loc_D1E2:
inc si
loc_D1E3:
cmp si, PTN_SLOT_COUNT
jl short loc_D1A9
push ds
push (offset aB@b@b@vVVriCVi+15h) ; s
call _puts
add sp, 4
pushd [bp+@@ptn_size_total]
push ds
push offset aAllPtn7lu ; "all ptn = %7lu\n"
call _printf
add sp, 8
pushd [_stageobj_bgs_size]
push ds
push offset aKabeMem7lu ; "kabe mem = %7lu\n"
call _printf
add sp, 8
push _hud_bg_size
push ds
push offset aMaskMem7u ; "mask mem = %7u\n"
call _printf
add sp, 6
mov eax, dword_36C1A
sub eax, [bp+@@ptn_size_total]
push eax
push ds
push offset aOldPtn7lu ; "old - ptn = %7lu\n"
call _printf
add sp, 8
call _coreleft
push dx
push ax
pop eax
mov edx, dword_36C1A
sub edx, eax
sub edx, _stageobj_bgs_size
push edx
push ds
push offset aEtcMem7ld ; "etc mem = %7ld\n\n"
call _printf
add sp, 8
push ds
push offset aZPtnFreeXBossF ; "Z = PTN FREE, X = BOSS FREE, UP = TAMA "...
call _puts
add sp, 4
jmp loc_D317
; ---------------------------------------------------------------------------
loc_D26E:
push 3
call _frame_delay
pop cx
call _input_sense stdcall, 0
pop cx
cmp _input_shot, 0
jz short loc_D28B
nopcall sub_D47D
jmp short loc_D2B8
; ---------------------------------------------------------------------------
loc_D28B:
cmp _input_strike, 0
jz short loc_D2A5
xor si, si
jmp short loc_D29E
; ---------------------------------------------------------------------------
loc_D296:
call @bos_entity_free$qi stdcall, si
pop cx
inc si
loc_D29E:
cmp si, 4
jl short loc_D296
jmp short loc_D2B8
; ---------------------------------------------------------------------------
loc_D2A5:
cmp _input_up, 0
jz short loc_D2C7
call @CPellets@unput_and_reset$qv c, offset _Pellets, ds
loc_D2B8:
call _printf c, offset _esc_cls, ds
jmp loc_D118
; ---------------------------------------------------------------------------
loc_D2C7:
cmp _input_down, 0
jnz short loc_D2B8
cmp _input_ok, 0
jz short loc_D317
call _printf c, offset _esc_cls, ds
xor si, si
jmp short loc_D2F8
; ---------------------------------------------------------------------------
loc_D2E5:
push ds
push offset aPtn ; "PTN "
mov bx, si
shl bx, 2
pushd _ptn_images[bx] ; node
call sub_D095
inc si
loc_D2F8:
cmp si, 8
jl short loc_D2E5
push ds
push offset aMask ; "MASK"
pushd [_hud_bg]
call sub_D095
push ds
push offset aKabe ; "KABE"
pushd [_stageobj_bgs] ; node
call sub_D095
loc_D317:
cmp _input_mem_leave, 0
jz loc_D26E
pop si
leave
retf
_test_mem endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
public _test_show_game
_test_show_game proc far
push bp
mov bp, sp
cmp _mode_test, 1
jnz short loc_D33E
call _z_graph_show
call _printf c, offset _esc_cls, ds
loc_D33E:
pop bp
retf
_test_show_game endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_D340 proc far
push bp
mov bp, sp
inc dword_3880A
mov eax, dword_3880A
mov ebx, 1000
cdq
idiv ebx
cmp edx, 100
jnz short loc_D37C
call _printf c, offset _esc_cursor_to_x0_y2, ds
call _coreleft
push dx
push ax
push ds
push offset aCoreleft7luByt ; " coreleft %7lu bytes free\n"
call _printf
add sp, 8
loc_D37C:
call _printf c, offset _esc_cursor_to_x59_y2, ds
push ds
push offset aHeapCheak ; "HEAP Cheak "
call _printf
add sp, 4
call _farheapcheck
cmp ax, 0FFFFh
jz short loc_D3BE
cmp ax, 1
jz short loc_D3AA
cmp ax, 2
jz short loc_D3B0
jmp short loc_D3E1
; ---------------------------------------------------------------------------
loc_D3AA:
push ds
push offset aEmpty ; "EMPTY "
jmp short loc_D3B4
; ---------------------------------------------------------------------------
loc_D3B0:
push ds
push offset aOk ; "OK "
loc_D3B4:
call _printf
add sp, 4
jmp short loc_D3E1
; ---------------------------------------------------------------------------
loc_D3BE:
push ds
push offset aCorrupt ; "CORRUPT "
call _printf
add sp, 4
push 5
call _mdrv2_se_play
jmp short loc_D3D9
; ---------------------------------------------------------------------------
loc_D3D3:
call _input_sense stdcall, 0
loc_D3D9:
pop cx
cmp _input_ok, 0
jz short loc_D3D3
loc_D3E1:
call _farheapcheck
mov word_3880E, ax
call _printf c, offset _esc_cursor_to_x0_y1, ds
mov ax, _player_left_prev
cmp ax, _player_left
jz short loc_D414
push _player_left
push ds
push offset aGx3d ; "gx = %3d"
call _printf
add sp, 6
mov ax, _player_left
mov _player_left_prev, ax
loc_D414:
call _printf c, offset _esc_cursor_to_x0_y3, ds
mov al, _done
mov ah, 0
push ax
mov al, _paused
mov ah, 0
push ax
mov al, _input_strike
mov ah, 0
push ax
mov al, _input_shot
mov ah, 0
push ax
mov al, _input_lr
mov ah, 0
push ax
call _kbhit
push ax
push ds
push offset aKbhitDDirDSpDS ; " kbhit:%d,dir:%d, sp:%d, sh:%d, exit:%d"...
call _printf
add sp, 10h
call _printf c, offset _esc_cursor_to_x0_y4, ds
pushd [dword_36C20]
push _bomb_doubletap_frames
pushd [_frame_rand]
pushd [_bomb_frames]
push ds
push offset aMain7luRand7lu ; " main:%7lu, rand:%7lu, bomb:%d, timer:%"...
call _printf
add sp, 12h
pop bp
retf
sub_D340 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_D47D proc far
push bp
mov bp, sp
call @stageobj_bgs_free$qv
pop bp
retf
sub_D47D endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_D487 proc far
push bp
mov bp, sp
push si
call @stageobj_bgs_free$qv
mov si, 2
jmp short loc_D4A9
; ---------------------------------------------------------------------------
loc_D495:
call @ptn_free$q15main_ptn_slot_t stdcall, si
pop cx
cmp si, 4
jge short loc_D4A8
call @bos_entity_free$qi stdcall, si
pop cx
loc_D4A8:
inc si
loc_D4A9:
cmp si, 8
jl short loc_D495
pop si
pop bp
retf
sub_D487 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_D4B1 proc far
push bp
mov bp, sp
push ds
push offset aGogbgGtg@gcglv ; "<22>o<EFBFBD>b<EFBFBD>`<60>t<EFBFBD>@<40>C<EFBFBD><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>N<EFBFBD><4E><EFBFBD><EFBFBD><EFBFBD>Ă<EFBFBD>"
call _printf
add sp, 4
pop bp
retf
sub_D4B1 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_D4C2 proc far
push bp
mov bp, sp
movzx eax, _pellet_destroy_score_delta
add _score, eax
call @hud_score_and_cardcombo_render$qv
mov _pellet_destroy_score_delta, 0
pop bp
retf
sub_D4C2 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_D4DD proc far
push bp
mov bp, sp
mov al, byte_34ADF
cbw
dec ax
mov bx, ax
cmp bx, 6
ja short loc_D522
add bx, bx
jmp cs:off_D524[bx]
loc_D4F3:
call @singyoku_free$qv
pop bp
retf
; ---------------------------------------------------------------------------
loc_D4FA:
call @yuugenmagan_free$qv
pop bp
retf
; ---------------------------------------------------------------------------
loc_D501:
call @mima_free$qv
pop bp
retf
; ---------------------------------------------------------------------------
loc_D508:
call @kikuri_free$qv
pop bp
retf
; ---------------------------------------------------------------------------
loc_D50F:
call @elis_free$qv
pop bp
retf
; ---------------------------------------------------------------------------
loc_D516:
call @sariel_free$qv
pop bp
retf
; ---------------------------------------------------------------------------
loc_D51D:
call @konngara_free$qv
loc_D522:
pop bp
retf
sub_D4DD endp
; ---------------------------------------------------------------------------
off_D524 dw offset loc_D4F3
dw offset loc_D4FA
dw offset loc_D501
dw offset loc_D508
dw offset loc_D50F
dw offset loc_D516
dw offset loc_D51D
; =============== 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
_path = byte ptr -1Eh
var_E = word ptr -0Eh
var_C = word ptr -0Ch
s1 = dword ptr -0Ah
@@scene_id = word ptr -6
var_4 = word ptr -4
@@stage = word ptr -2
_argc = word ptr 6
_argv = dword ptr 8
_envp = dword ptr 0Ch
enter 1Eh, 0
push si
push di
mov [bp+@@stage], 0
xor si, si
mov [bp+var_4], 0
call _mdrv2_resident
or ax, ax
jnz short loc_D54F
jmp short loc_D579
; ---------------------------------------------------------------------------
loc_D54F:
push ss
lea ax, [bp+@@stage]
push ax
push ds
push offset _continues_total
push ds
push offset _frame_rand
push ds
push offset _lives_extra
push ds
push offset _credit_bombs
push ds
push offset _bgm_mode
push ds
push offset _rank
call _resident_stuff_get
add sp, 1Ch
cmp ax, 1
jnz short loc_D583
loc_D579:
call sub_D4B1
mov ax, 1
jmp loc_E2F7
; ---------------------------------------------------------------------------
loc_D583:
mov _credit_bombs, 1
les bx, _resident
mov eax, es:[bx+reiidenconfig_t.score]
mov _score, eax
mov ebx, 400000
cdq
idiv ebx
inc ax
mov word_34A8A, ax
mov eax, _frame_rand
mov random_seed, eax
call @game_init$qv
call key_start
push 3F003Fh
call __control87
add sp, 4
les bx, _resident
mov al, es:[bx+reiidenconfig_t.route]
mov _route, al
cmp es:[bx+reiidenconfig_t.debug_mode], DM_OFF
jz loc_D68E
cmp es:[bx+reiidenconfig_t.stage], 0
jnz short loc_D649
push ds
push offset aCGzgmgngg ; "<22>ʃZ<CA83><5A><EFBFBD>N<EFBFBD>g\n"
call _puts
add sp, 4
push ds
push offset aCRf ; "<22>ʐ<EFBFBD>"
call _puts
add sp, 4
push ss
lea ax, [bp+@@stage]
push ax
push ds
push offset aD ; "%d"
call _scanf
add sp, 8
push ds
push offset aSelect_flag ; "select_flag"
call _puts
add sp, 4
push ds
push offset _route
push ds
push offset aD ; "%d"
call _scanf
add sp, 8
cmp [bp+@@stage], 5
jge short loc_D62C
jmp short loc_D644
; ---------------------------------------------------------------------------
loc_D62C:
mov al, _route
cbw
cmp ax, 1
jle short loc_D63C
mov _route, 1
jmp short loc_D649
; ---------------------------------------------------------------------------
loc_D63C:
mov al, _route
cbw
or ax, ax
jge short loc_D649
loc_D644:
mov _route, 0
loc_D649:
les bx, _resident
mov al, es:[bx+reiidenconfig_t.debug_mode]
cbw
cmp ax, DM_TEST
jnz short loc_D669
push ds
push offset aGegxgggvbGhbib ; "<22>e<EFBFBD>X<EFBFBD>g<EFBFBD><67><EFBFBD>[<5B>h<EFBFBD>I<EFBFBD>I\n"
call _puts
add sp, 4
mov _mode_test, 1
loc_D669:
les bx, _resident
mov al, es:[bx+reiidenconfig_t.debug_mode]
cbw
cmp ax, DM_FULL
jnz short loc_D68E
push ds
push offset aGfgogbgogvbGhb ; "<22>f<EFBFBD>o<EFBFBD>b<EFBFBD>O<EFBFBD><4F><EFBFBD>[<5B>h<EFBFBD>I<EFBFBD>I\n"
call _puts
add sp, 4
mov _mode_debug, 1
mov _mode_test, 1
loc_D68E:
mov al, _bgm_mode
cbw
cmp ax, 1
jnz short loc_D69C
call _mdrv2_check_board
loc_D69C:
cmp [bp+@@stage], 5
jge short loc_D6A6
xor ax, ax
jmp short loc_D6EE
; ---------------------------------------------------------------------------
loc_D6A6:
cmp [bp+@@stage], 10
jge short loc_D6BD
cmp _route, 0
jnz short loc_D6B8
mov ax, 1
jmp short loc_D6EE
; ---------------------------------------------------------------------------
loc_D6B8:
mov ax, 2
jmp short loc_D6EE
; ---------------------------------------------------------------------------
loc_D6BD:
cmp [bp+@@stage], 15
jge short loc_D6D4
cmp _route, 0
jnz short loc_D6CF
mov ax, 3
jmp short loc_D6EE
; ---------------------------------------------------------------------------
loc_D6CF:
mov ax, 4
jmp short loc_D6EE
; ---------------------------------------------------------------------------
loc_D6D4:
cmp [bp+@@stage], 20
jge short loc_D6EB
cmp _route, 0
jnz short loc_D6E6
mov ax, 5
jmp short loc_D6E9
; ---------------------------------------------------------------------------
loc_D6E6:
mov ax, 6
loc_D6E9:
jmp short loc_D6EE
; ---------------------------------------------------------------------------
loc_D6EB:
mov ax, 7
loc_D6EE:
mov [bp+@@scene_id], ax
push seg main_01
push offset sub_D07C
call @set_new_handler$qnqv$v ; set_new_handler(void (*)(void))
add sp, 4
mov _arc_key, 76h
call arc_load pascal, ds, offset aUmx ; "<22><><EFBFBD><EFBFBD><EFBFBD>ˈ<EFBFBD>.<2E>`"
call _vram_planes_set
call @scene_init_and_load$quc stdcall, [bp+@@scene_id]
pop cx
cmp _mode_debug, 1
jnz short loc_D72E
call sub_D340
push 28h ; '('
call _frame_delay
pop cx
loc_D72E:
call sub_D487
les bx, _resident
mov al, es:[bx+reiidenconfig_t.rem_lives]
cbw
mov _lives, ax
mov al, es:[bx+reiidenconfig_t.bombs]
mov _bombs, al
mov _player_left, PLAYER_LEFT_START
cmp _bgm_mode, 0
jz short loc_D776
cmp es:[bx+reiidenconfig_t.snd_need_init], 0
jz short loc_D776
push ds
push offset aInit_mdt ; "init.mdt"
call _mdrv2_bgm_load
add sp, 4
call _mdrv2_bgm_play
push ds
push offset aZigoku_mde ; "zigoku.mde"
call _mdrv2_se_load
add sp, 4
loc_D776:
cmp _mode_debug, 1
jnz short loc_D795
push ds
push offset a2 ; "2 :"
call _puts
add sp, 4
call sub_D340
push 28h ; '('
call _frame_delay
pop cx
loc_D795:
call _coreleft
mov word ptr dword_36C1A+2, dx
mov word ptr dword_36C1A, ax
call _load_and_init_stuff_used_in_all_
call _z_graph_init
push 0
call _graph_accesspage_func
pop cx
call _z_graph_clear
call IRand
mov bx, 60
cwd
idiv bx
mov _card_flip_cycle, dl
mov _first_stage_in_scene, 1
mov byte_36C1E, 1
les bx, _resident
cmp es:[bx+reiidenconfig_t.snd_need_init], 0
jnz short loc_D7E0
mov ax, 1
jmp short loc_D7E2
; ---------------------------------------------------------------------------
loc_D7E0:
xor ax, ax
loc_D7E2:
mov si, ax
loc_D7E4:
les bx, _resident
mov ax, [bp+@@stage]
mov es:[bx+reiidenconfig_t.stage], ax
mov al, _route
mov es:[bx+reiidenconfig_t.route], al
mov eax, _score
mov es:[bx+reiidenconfig_t.score], eax
mov eax, _continues_total
mov es:[bx+reiidenconfig_t.continues_total], eax
call @CPellets@unput_and_reset$qv c, offset _Pellets, ds
call @CShots@unput_and_reset$qv c, offset _Shots, ds
mov word ptr [bp+s1+2], ds
mov word ptr [bp+s1], offset _default_grp_fn
mov byte_34ADF, 0
mov _unused_boss_stage_flag, 0
mov _player_invincible, 0
mov _player_invincibility_time, 0
mov ax, [bp+@@stage]
mov [bp+var_E], ax
mov cx, 4 ; switch 4 cases
mov bx, offset word_E309
loc_D84B:
mov ax, cs:[bx]
cmp ax, [bp+var_E]
jz short loc_D85B
add bx, 2
loop loc_D84B
jmp loc_D9B7 ; default
; ---------------------------------------------------------------------------
loc_D85B:
jmp word ptr cs:[bx+8] ; switch jump
loc_D85F:
mov byte_34ADF, 1 ; jumptable 0000D85B case 4
mov _unused_boss_stage_flag, 1
push ds
push offset src ; "boss1.grp"
pushd [bp+s1] ; dest
call _strcpy
add sp, 8
push ds
push offset aPositive_mdt ; "positive.mdt"
push ss
lea ax, [bp+_path]
push ax ; dest
call _strcpy
add sp, 8
xor di, di
call @singyoku_load$qv
loc_D892:
mov _Pellets.PELLET_unknown_seven, 7
jmp loc_D9CA
; ---------------------------------------------------------------------------
loc_D89B:
mov al, _route ; jumptable 0000D85B case 9
add al, 2
mov byte_34ADF, al
mov _unused_boss_stage_flag, 1
cmp _route, 0
jnz short loc_D8D9
push ds
push offset aLegend_mdt ; "LEGEND.mdt"
push ss
lea ax, [bp+_path]
push ax ; dest
call _strcpy
add sp, 8
push ds
push offset aBoss2_grp ; "boss2.grp"
pushd [bp+s1] ; dest
call _strcpy
add sp, 8
call @yuugenmagan_load$qv
jmp loc_D96D
; ---------------------------------------------------------------------------
loc_D8D9:
push ds
push offset aLegend_mdt ; "LEGEND.mdt"
push ss
lea ax, [bp+_path]
push ax ; dest
call _strcpy
add sp, 8
push ds
push offset aBoss3_grp ; "boss3.grp"
pushd [bp+s1] ; dest
call _strcpy
add sp, 8
call @mima_load$qv
jmp short loc_D96D
; ---------------------------------------------------------------------------
loc_D901:
mov al, 1 ; jumptable 0000D85B case 14
sub al, _route
add al, 4
mov byte_34ADF, al
mov _unused_boss_stage_flag, 1
mov al, _route
cbw
cmp ax, 1
jnz short loc_D947
push ds
push offset aKami_mdt ; "kami.mdt"
push ss
lea ax, [bp+_path]
push ax ; dest
call _strcpy
add sp, 8
push ds
push offset aBoss4_grp ; "boss4.grp"
pushd [bp+s1] ; dest
call _strcpy
add sp, 8
call @kikuri_load$qv
loc_D941:
mov di, 1
jmp loc_D892
; ---------------------------------------------------------------------------
loc_D947:
push ds
push offset aKami2_mdt ; "kami2.mdt"
push ss
lea ax, [bp+_path]
push ax ; dest
call _strcpy
add sp, 8
push ds
push offset aBoss5_grp ; "boss5.grp"
pushd [bp+s1] ; dest
call _strcpy
add sp, 8
call @elis_load$qv
loc_D96D:
xor di, di
jmp loc_D892
; ---------------------------------------------------------------------------
loc_D972:
mov al, _route ; jumptable 0000D85B case 19
add al, 6
mov byte_34ADF, al
mov _unused_boss_stage_flag, 1
cmp _route, 0
jnz short loc_D99F
push ds
push offset aTensi_mdt ; "tensi.mdt"
push ss
lea ax, [bp+_path]
push ax ; dest
call _strcpy
add sp, 8
call @sariel_load_and_init$qv
jmp short loc_D941
; ---------------------------------------------------------------------------
loc_D99F:
push ds
push offset aAlice_mdt ; "alice.mdt"
push ss
lea ax, [bp+_path]
push ax ; dest
call _strcpy
add sp, 8
call @konngara_init$qv
jmp short loc_D96D
; ---------------------------------------------------------------------------
loc_D9B7:
push ds ; default
push offset _default_bgm_fn ; "ST .MDT"
push ss
lea ax, [bp+_path]
push ax ; dest
call _strcpy
add sp, 8
xor di, di
loc_D9CA:
cmp byte_34ADF, 0
jz short loc_DA06
xor si, si
mov _first_stage_in_scene, 1
call @items_bomb_reset$qv
call @items_point_reset$qv
cmp _ptn_slot_stg_has_reduced_sprites, 0
jnz short loc_DA2A
call @ptn_free$q15main_ptn_slot_t stdcall, PTN_SLOT_STG
pop cx
call @ptn_load$q15main_ptn_slot_tnxc c, PTN_SLOT_STG, offset aStg_b_ptn, ds ; "stg_b.ptn"
mov _ptn_slot_stg_has_reduced_sprites, 1
jmp short loc_DA2A
; ---------------------------------------------------------------------------
loc_DA06:
cmp _ptn_slot_stg_has_reduced_sprites, 0
jz short loc_DA2A
call @ptn_free$q15main_ptn_slot_t stdcall, PTN_SLOT_STG
pop cx
call @ptn_load$q15main_ptn_slot_tnxc c, PTN_SLOT_STG, offset _PTN_STG_CARDFLIP_FN, ds ; "stg.ptn"
mov _ptn_slot_stg_has_reduced_sprites, 0
jmp short $+2
loc_DA2A:
cmp _mode_debug, 1
jnz short loc_DA49
push ds
push offset a3 ; "3 :"
call _puts
add sp, 4
call sub_D340
push 28h ; '('
call _frame_delay
pop cx
loc_DA49:
mov al, byte ptr [bp+@@stage]
inc al
mov _stage_num, al
mov al, byte_34ADF
cbw
cmp ax, 6
jz short loc_DA7B
mov al, byte_34ADF
cbw
cmp ax, 7
jz short loc_DA7B
push di ; clear_vram_page_0
pushd [bp+s1] ; bg_fn
mov ax, [bp+@@stage]
mov bx, 5
cwd
idiv bx
push dx ; int
call @stage_entrance$qinxci
add sp, 8
jmp short loc_DA9E
; ---------------------------------------------------------------------------
loc_DA7B:
mov al, byte_34ADF
cbw
cmp ax, 7
jnz short loc_DA8D
call @konngara_load_and_entrance$qc stdcall, 0
jmp short loc_DA9D
; ---------------------------------------------------------------------------
loc_DA8D:
mov al, byte_34ADF
cbw
cmp ax, 6
jnz short loc_DA9E
push 0
call @sariel_entrance$qc
loc_DA9D:
pop cx
loc_DA9E:
mov ax, word_34A8A
mov word_34A8C, ax
call @hud_bg_snap_and_put$qv
mov _cardcombo_max, 0
mov _orb_in_portal, 0
mov _bomb_frames, 0
mov _Pellets.PELLET_unknown_seven, 7
cmp _mode_debug, 1
jnz short loc_DAD7
call sub_D340
push 28h ; '('
call _frame_delay
pop cx
loc_DAD7:
mov dword_36C20, 0
mov _orb_cur_left, ORB_LEFT_START
mov _orb_cur_top, ORB_TOP_START
mov ax, [bp+@@stage]
mov bx, 5
cwd
idiv bx
or dx, dx
jz short loc_DB04
mov ax, [bp+@@stage]
cwd
idiv bx
cmp dx, 4
jnz short loc_DB0A
loc_DB04:
mov _player_left, PLAYER_LEFT_START
loc_DB0A:
fld dbl_34FF5
fstp _orb_force
fwait
mov _orb_force_frame, 0
mov _orb_velocity_x, OVX_4_LEFT
mov _orb_prev_left, ORB_LEFT_START
mov _orb_prev_top, ORB_TOP_START
mov _player_deflecting, 0
mov _bomb_damaging, 0
mov _cardcombo_cur, 0
loc_DB3E:
call @player_unput_update_render$qi stdcall, 0
pop cx
call @ptn_put_8$qiii c, _player_left, large (PTN_MIKO_L shl 16) or _player_top
call @ptn_put_8$qiii c, _orb_cur_left, _orb_cur_top, 3
mov word_34A74, 0
mov _input_lr, 0
mov _input_shot, 0
mov _input_ok, 0
mov _paused, 0
call @hud_score_and_cardcombo_render$qv
mov _bomb_doubletap_frames, (BOMB_DOUBLETAP_WINDOW * 3)
mov word_34A70, 3Ch ; '<'
call @obstacles_update_and_render$qi stdcall, 1
pop cx
mov al, byte_34ADF
cbw
cmp ax, 6
jz short loc_DBCC
mov al, byte_34ADF
cbw
cmp ax, 7
jz short loc_DBCC
cmp byte_34A35, 0
jnz short loc_DBCC
or si, si
jnz short loc_DBCC
push ss
lea ax, [bp+_path]
push ax ; path
call _mdrv2_bgm_load
add sp, 4
call _mdrv2_bgm_play
loc_DBCC:
call _input_reset_sense
cmp _player_invincibility_time, 1
jle short loc_DBDD
mov _player_invincible, 1
loc_DBDD:
cmp byte_34ADF, 0
jz short loc_DC0E
mov al, byte_34ADF
cbw
cmp ax, 1
jz short loc_DBF9
cmp ax, 3
jz short loc_DC00
cmp ax, 4
jz short loc_DC07
jmp short loc_DC3A
; ---------------------------------------------------------------------------
loc_DBF9:
call @singyoku_main$qv
jmp short loc_DC3A
; ---------------------------------------------------------------------------
loc_DC00:
call @mima_main$qv
jmp short loc_DC3A
; ---------------------------------------------------------------------------
loc_DC07:
mov _input_strike, 0
jmp short loc_DC3A
; ---------------------------------------------------------------------------
loc_DC0E:
cmp byte_36C1E, 1
jnz short loc_DC3A
jmp short loc_DC33
; ---------------------------------------------------------------------------
loc_DC17:
call _input_sense stdcall, 0
pop cx
call @player_unput_update_render$qi stdcall, 1
pop cx
push 1
call _frame_delay
pop cx
inc _bomb_frames
loc_DC33:
cmp _input_shot, 0
jz short loc_DC17
loc_DC3A:
mov byte_36C1E, 0
mov _input_shot, 0
mov _timer_initialized, 1
mov eax, _frame_rand
mov random_seed, eax
mov _bomb_doubletap_frames, BOMB_DOUBLETAP_WINDOW
mov _first_stage_in_scene, 0
mov [bp+var_C], 0BB8h
jmp loc_DE72
; ---------------------------------------------------------------------------
loc_DC64:
inc _frame_rand
mov ax, _lives
imul ax, 200
mov dx, 1800
sub dx, ax
mov al, _bombs
cbw
imul ax, 50
sub dx, ax
mov [bp+var_C], dx
movsx ebx, [bp+var_C]
mov eax, _frame_rand
xor edx, edx
div ebx
cmp edx, 0
jnz short loc_DC9D
call @pellet_speed_raise$qi stdcall, 1
pop cx
loc_DC9D:
call _input_sense stdcall, 0
pop cx
cmp _player_invincibility_time, 1
jle short loc_DCB7
dec _player_invincibility_time
mov _player_invincible, 1
jmp short loc_DCCA
; ---------------------------------------------------------------------------
loc_DCB7:
cmp _player_invincibility_time, 1
jnz short loc_DCCA
mov _player_invincible, 0
mov _player_invincibility_time, 0
loc_DCCA:
call @player_unput_update_render$qi stdcall, 1
pop cx
call @items_bomb_unput_update_render$qv
call @items_point_unput_update_render$qv
inc dword_36C20
inc _orb_force_frame
inc _bomb_frames
inc _bomb_doubletap_frames
test byte ptr _frame_rand, 3
jnz short loc_DCFA
call @timer_tick_and_put$qv
loc_DCFA:
cmp _mode_test, 1
jnz short loc_DD20
cmp _input_ok, 0
jz short loc_DD0E
mov _test_damage, 1
loc_DD0E:
cmp _input_down, 0
jz short loc_DD20
mov _done, 1
mov _lives, 0
loc_DD20:
call @invincibility_sprites_update_and$qi stdcall, _player_invincible
pop cx
mov al, byte_34ADF
cbw
dec ax
mov bx, ax
cmp bx, 6
ja short loc_DD6B
add bx, bx
jmp cs:off_E2FB[bx]
loc_DD3C:
call @singyoku_main$qv
jmp short loc_DD6B
; ---------------------------------------------------------------------------
loc_DD43:
call @yuugenmagan_main$qv
jmp short loc_DD6B
; ---------------------------------------------------------------------------
loc_DD4A:
call @mima_main$qv
jmp short loc_DD6B
; ---------------------------------------------------------------------------
loc_DD51:
call @kikuri_main$qv
jmp short loc_DD6B
; ---------------------------------------------------------------------------
loc_DD58:
call @elis_main$qv
jmp short loc_DD6B
; ---------------------------------------------------------------------------
loc_DD5F:
call @sariel_main$qv
jmp short loc_DD6B
; ---------------------------------------------------------------------------
loc_DD66:
call @konngara_main$qv
loc_DD6B:
@@i = 0
rept SHOOTOUT_LASER_COUNT
call @CShootoutLaser@update_hittest_and_render$qv c, offset _shootout_lasers[@@i * size CShootoutLaser], ds
@@i = @@i + 1
endm
push [bp+@@stage]
call sub_C766
cmp _paused, 1
jnz short loc_DDF8
call sub_C942
mov [bp+var_4], ax
loc_DDF8:
cmp [bp+var_4], 1
jz loc_E2CB
call sub_D02F
cmp _mode_debug, 1
jnz short loc_DE0F
call sub_D340
loc_DE0F:
mov al, _game_cleared
cbw
cmp ax, 1
jnz short loc_DE67
call sub_D487
les bx, _resident
mov al, _route
inc al
mov es:[bx+reiidenconfig_t.end_flag], al
mov eax, _score
mov es:[bx+reiidenconfig_t.score], eax
mov eax, es:[bx+reiidenconfig_t.score_highest]
cmp eax, _score
jnb short loc_DE47
mov eax, _score
mov es:[bx+reiidenconfig_t.score_highest], eax
loc_DE47:
push 78h ; 'x'
call _frame_delay
pop cx
call @game_switch_binary$qv
pushd 0
push ds
push offset aFuuin ; "fuuin"
push ds
push offset aFuuin ; "fuuin"
call _execl
add sp, 0Ch
loc_DE67:
cmp _pellet_destroy_score_delta, 0
jz short loc_DE72
call sub_D4C2
loc_DE72:
cmp _done, 0
jz loc_DC64
mov _timer_initialized, 0
call @z_vsync_wait_and_scrollup$qi stdcall, 0
pop cx
les bx, _resident
mov eax, _frame_rand
mov es:[bx+reiidenconfig_t.rand], eax
mov _test_damage, 0
mov _bomb_frames, 200 ; ???
cmp _lives, 0
jle short loc_DEDA
cmp _stage_cleared, 0
jnz short loc_DEDA
push 5
call _mdrv2_se_play
pop cx
les bx, _resident
dec es:[bx+reiidenconfig_t.rem_lives]
dec _lives
call @player_miss_animate_and_update$qv
mov _done, 0
inc si
mov _player_invincibility_time, MISS_INVINCIBILITY_FRAMES
jmp loc_DB3E
; ---------------------------------------------------------------------------
loc_DEDA:
cmp _stage_cleared, 1
jnz loc_E104
mov _stage_cleared, 0
mov _done, 0
cmp byte_34ADF, 0
jz short loc_DF03
call sub_D4DD
mov byte_36C1E, 1
mov _first_stage_in_scene, 1
loc_DF03:
inc si
inc [bp+@@stage]
les bx, _resident
mov ax, [bp+@@stage]
mov es:[bx+reiidenconfig_t.stage], ax
cmp byte_34ADF, 0
jz short loc_DF23
xor si, si
push ax
call sub_13475
jmp short loc_DF2B
; ---------------------------------------------------------------------------
loc_DF23:
push [bp+@@stage]
call sub_13101
loc_DF2B:
pop cx
les bx, _resident
cmp es:[bx+reiidenconfig_t.bullet_speed], 0
jge short loc_DF3D
mov es:[bx+reiidenconfig_t.bullet_speed], 0
loc_DF3D:
mov ax, [bp+@@stage]
mov bx, 5
cwd
idiv bx
cmp dx, 4
jz short loc_DF52
cmp byte_34ADF, 0
jz short loc_DF9A
loc_DF52:
les bx, _resident
mov eax, _score
mov es:[bx+reiidenconfig_t.score], eax
mov al, byte ptr _lives
mov es:[bx+reiidenconfig_t.rem_lives], al
mov es:[bx+reiidenconfig_t.snd_need_init], 1
mov al, _route
mov es:[bx+reiidenconfig_t.route], al
call _mdrv2_bgm_fade_out_nonblock
les bx, _resident
mov al, _bombs
mov es:[bx+reiidenconfig_t.bombs], al
call @game_switch_binary$qv
pushd 0
push ds
push offset aReiiden ; "reiiden"
push ds
push offset aReiiden ; "reiiden"
call _execl
add sp, 0Ch
loc_DF9A:
mov _orb_in_portal, 0
cmp byte_34ADF, 0
jnz short loc_DFBC
push 1
call _graph_accesspage_func
pop cx
call @stageobj_bgs_put_all$qv
push 0
call _graph_accesspage_func
pop cx
loc_DFBC:
call sub_D47D
cmp _cards.C_left, 0
jz short loc_DFE0
call @$bdla$qnv c, large [_cards.C_left]
mov _cards.C_left, 0
jmp short $+2
loc_DFE0:
cmp _cards.C_top, 0
jz short loc_E000
call @$bdla$qnv c, large [_cards.C_top]
mov _cards.C_top, 0
jmp short $+2
loc_E000:
cmp _cards.C_flag, 0
jz short loc_E020
call @$bdla$qnv c, large [_cards.C_flag]
mov _cards.C_flag, 0
jmp short $+2
loc_E020:
cmp _cards.C_flip_frames, 0
jz short loc_E040
call @$bdla$qnv c, large [_cards.C_flip_frames]
mov _cards.C_flip_frames, 0
jmp short $+2
loc_E040:
cmp _cards.C_hp, 0
jz short loc_E060
call @$bdla$qnv c, large [_cards.C_hp]
mov _cards.C_hp, 0
jmp short $+2
loc_E060:
cmp _cards_score, 0
jz short loc_E080
call @$bdla$qnv c, large [_cards_score]
mov _cards_score, 0
jmp short $+2
loc_E080:
cmp _obstacles.O_left, 0
jz short loc_E0A0
call @$bdla$qnv c, large [_obstacles.O_left]
mov _obstacles.O_left, 0
jmp short $+2
loc_E0A0:
cmp _obstacles.O_top, 0
jz short loc_E0C0
call @$bdla$qnv c, large [_obstacles.O_top]
mov _obstacles.O_top, 0
jmp short $+2
loc_E0C0:
cmp _obstacles.O_type, 0
jz short loc_E0E0
call @$bdla$qnv c, large [_obstacles.O_type]
mov _obstacles.O_type, 0
jmp short $+2
loc_E0E0:
cmp _obstacles.O_frames, 0
jz short loc_E101
call @$bdla$qnv c, large [_obstacles.O_frames]
mov _obstacles.O_frames, 0
jmp loc_D7E4
; ---------------------------------------------------------------------------
loc_E101:
jmp loc_D7E4
; ---------------------------------------------------------------------------
loc_E104:
cmp _cards.C_left, 0
jz short loc_E124
call @$bdla$qnv c, large [_cards.C_left]
mov _cards.C_left, 0
jmp short $+2
loc_E124:
cmp _cards.C_top, 0
jz short loc_E144
call @$bdla$qnv c, large [_cards.C_top]
mov _cards.C_top, 0
jmp short $+2
loc_E144:
cmp _cards.C_flag, 0
jz short loc_E164
call @$bdla$qnv c, large [_cards.C_flag]
mov _cards.C_flag, 0
jmp short $+2
loc_E164:
cmp _cards.C_flip_frames, 0
jz short loc_E184
call @$bdla$qnv c, large [_cards.C_flip_frames]
mov _cards.C_flip_frames, 0
jmp short $+2
loc_E184:
cmp _cards.C_hp, 0
jz short loc_E1A4
call @$bdla$qnv c, large [_cards.C_hp]
mov _cards.C_hp, 0
jmp short $+2
loc_E1A4:
cmp _cards_score, 0
jz short loc_E1C4
call @$bdla$qnv c, large [_cards_score]
mov _cards_score, 0
jmp short $+2
loc_E1C4:
cmp _obstacles.O_left, 0
jz short loc_E1E4
call @$bdla$qnv c, large [_obstacles.O_left]
mov _obstacles.O_left, 0
jmp short $+2
loc_E1E4:
cmp _obstacles.O_top, 0
jz short loc_E204
call @$bdla$qnv c, large [_obstacles.O_top]
mov _obstacles.O_top, 0
jmp short $+2
loc_E204:
cmp _obstacles.O_type, 0
jz short loc_E224
call @$bdla$qnv c, large [_obstacles.O_type]
mov _obstacles.O_type, 0
jmp short $+2
loc_E224:
cmp _obstacles.O_frames, 0
jz short loc_E244
call @$bdla$qnv c, large [_obstacles.O_frames]
mov _obstacles.O_frames, 0
jmp short $+2
loc_E244:
inc si
call sub_CE5C
call @CShots@unput_and_reset$qv c, offset _Shots, ds
call @CPellets@unput_and_reset$qv c, offset _Pellets, ds
call sub_D47D
mov word_34A8A, 1
cmp byte_34ADF, 0
jz short loc_E27B
call sub_D4DD
mov _first_stage_in_scene, 1
loc_E27B:
les bx, _resident
mov eax, _score
mov es:[bx+reiidenconfig_t.score], eax
cmp [bp+@@stage], 5
jge short loc_E295
mov dx, ds
mov ax, offset _SCOREDAT_ROUTE_SHRINE
jmp short loc_E2A8
; ---------------------------------------------------------------------------
loc_E295:
cmp _route, 0
jnz short loc_E2A3
mov dx, ds
mov ax, offset _SCOREDAT_ROUTE_MAKAI
jmp short loc_E2A8
; ---------------------------------------------------------------------------
loc_E2A3:
mov dx, ds
mov ax, offset _SCOREDAT_ROUTE_JIGOKU
loc_E2A8:
push dx
push ax
mov ax, [bp+@@stage]
inc ax
push ax
pushd [_score]
call @regist$qlixnxuc
add sp, 0Ah
les bx, _resident
mov ax, [bp+@@stage]
mov es:[bx+reiidenconfig_t.stage], ax
call sub_CC0F
loc_E2CB:
call sub_D487
call sub_D4DD
call @game_switch_binary$qv
call key_end
call arc_free
pushd 0
push ds
push offset aOp ; "op"
push ds
push offset aOp ; "op"
call _execl
add sp, 0Ch
xor ax, ax
loc_E2F7:
pop di
pop si
leave
retf
_main endp
; ---------------------------------------------------------------------------
off_E2FB dw offset loc_DD3C
dw offset loc_DD43
dw offset loc_DD4A
dw offset loc_DD51
dw offset loc_DD58
dw offset loc_DD5F
dw offset loc_DD66
word_E309 dw 4, 9, 0Eh, 13h
; value table for switch statement
dw offset loc_D85F ; jump table for switch statement
dw offset loc_D89B
dw offset loc_D901
dw offset loc_D972
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_E319 proc far
push bp
mov bp, sp
call @CPellets@$bctr$qv c, offset _Pellets, ds
mov _Shots.SHOT_unknown[0 * word], 50h
mov _Shots.SHOT_unknown[1 * word], 60h
mov _Shots.SHOT_unknown[2 * word], 70h
@@i = 0
rept SHOT_COUNT
mov _Shots.SHOT_moving[@@i], 0
@@i = @@i + 1
endm
pop bp
retf
sub_E319 endp
main_013_TEXT ends
; ===========================================================================
; Segment type: Pure code
frmdelay_TEXT segment byte public 'CODE' use16
extern _frame_delay:proc
frmdelay_TEXT ends
; ===========================================================================
; Segment type: Pure code
vsync_TEXT segment byte public 'CODE' use16
vsync_TEXT ends
; ===========================================================================
; Segment type: Pure code
ztext_TEXT segment byte public 'CODE' use16
ztext_TEXT ends
; ===========================================================================
; Segment type: Pure code
initexit_TEXT segment byte public 'CODE' use16
extern @game_init$qv:proc
extern @game_switch_binary$qv:proc
initexit_TEXT ends
; ===========================================================================
; Segment type: Pure code
graph_TEXT segment byte public 'CODE' use16
extern _z_graph_init:proc
extern _z_graph_show:proc
extern _z_graph_hide:proc
extern _graph_accesspage_func:proc
extern _grcg_setcolor_rmw:proc
extern _grcg_off_func:proc
extern _z_palette_set_all_show:proc
extern _z_palette_set_show:proc
extern _z_graph_clear:proc
extern _graph_copy_accessed_page_to_othe:proc
extern _text_extent_fx:proc
extern _graph_putsa_fx:proc
graph_TEXT ends
; ===========================================================================
; Segment type: Pure code
SHARED segment byte public 'CODE' use16
extern _vram_planes_set:proc
extern @egc_copy_rect_1_to_0_16$qiiii:proc
SHARED ends
; ===========================================================================
; Segment type: Pure code
PTN_GRP_GRZ segment byte public 'CODE' use16
extern @ptn_load$q15main_ptn_slot_tnxc:proc
extern @ptn_free$q15main_ptn_slot_t:proc
extern @grp_put$qnxc:proc
PTN_GRP_GRZ ends
; ===========================================================================
; Segment type: Pure code
main_09_TEXT segment byte public 'CODE' use16
main_09_TEXT ends
; ===========================================================================
BULLET_L_TEXT segment byte public 'CODE' use16
BULLET_L_TEXT ends
; ===========================================================================
main_11_TEXT segment byte public 'CODE' use16
main_11_TEXT ends
; ===========================================================================
; Segment type: Pure code
resstuff_TEXT segment byte public 'CODE' use16
extern _resident_stuff_get:proc
resstuff_TEXT ends
; ===========================================================================
; Segment type: Pure code
GRAPH_EX_TEXT segment byte public 'CODE' use16
extern @z_vsync_wait_and_scrollup$qi:proc
extern @graph_2xscale_byterect_1_to_0_sl$qiiiiii:proc
GRAPH_EX_TEXT ends
; ===========================================================================
main_14_TEXT segment byte public 'CODE' use16
main_14_TEXT ends
; ===========================================================================
; Segment type: Pure code
main_15_TEXT segment byte public 'CODE' use16
extern @CShootoutLaser@update_hittest_and_render$qv:proc
main_15_TEXT ends
main_15__TEXT segment byte public 'CODE' use16
assume cs:main_15
;org 0Dh
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_1240A proc far
push bp
mov bp, sp
push seg main_15
push offset sub_12428
push 5
pushd SHOOTOUT_LASER_COUNT
push size CShootoutLaser
push ds
push offset _shootout_lasers
call @_vector_new_$qnvuiuluie ; _vector_new_(void *,uint,ulong,uint,...)
add sp, 10h
pop bp
retf
sub_1240A endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_12428 proc far
@@CShootoutLaser = dword ptr 6
push bp
mov bp, sp
cmp [bp+@@CShootoutLaser], 0
jnz short loc_12444
push size CShootoutLaser
call @$bnew$qui ; operator new(uint)
pop cx
mov word ptr [bp+@@CShootoutLaser+2], dx
mov word ptr [bp+@@CShootoutLaser], ax
or ax, dx
jz short loc_1244D
loc_12444:
les bx, [bp+@@CShootoutLaser]
mov es:[bx+CShootoutLaser.SL_alive], 0
loc_1244D:
mov dx, word ptr [bp+@@CShootoutLaser+2]
loc_12450:
mov ax, word ptr [bp+@@CShootoutLaser]
pop bp
locret_12454:
retf
sub_12428 endp
main_15__TEXT ends
; ===========================================================================
; Segment type: Pure code
mdrv2_TEXT segment byte public 'CODE' use16
extern _mdrv2_resident:proc
extern _mdrv2_bgm_load:proc
extern _mdrv2_se_load:proc
extern _mdrv2_bgm_play:proc
extern _mdrv2_bgm_stop:proc
extern _mdrv2_bgm_fade_out_nonblock:proc
extern _mdrv2_check_board:proc
extern _mdrv2_se_play:proc
mdrv2_TEXT ends
; ===========================================================================
; Segment type: Pure code
main_17_TEXT segment byte public 'CODE' use16
extern @singyoku_defeat_animate_and_sele$qv:proc
main_17_TEXT ends
; ===========================================================================
; Segment type: Pure code
main_18_TEXT segment byte public 'CODE' use16
@TOTLE_METRIC_DIGIT_ANIMATE$QIII procdesc pascal near \
digit:word, place_and_top:dword
@EGC_PAGETRANS_ROWSHIFT_ALTERNATI$QII procdesc pascal near \
y: word, transferred_chunk_left:word
main_18_TEXT ends
main_18__TEXT segment byte public 'CODE' use16
assume cs:main_18
;org 0Bh
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_12D3F proc near
var_12 = word ptr -12h
var_10 = word ptr -10h
var_E = word ptr -0Eh
var_C = word ptr -0Ch
var_A = word ptr -0Ah
var_8 = dword ptr -8
_font = dword ptr -4
enter 12h, 0
push si
push di
xor di, di
mov [bp+var_A], 0
mov [bp+var_10], 1
push 320h
call @$bnwa$qui
pop cx
mov word ptr [bp+_font+2], dx
mov word ptr [bp+_font], ax
push 320h
call @$bnwa$qui
pop cx
mov word ptr [bp+var_8+2], dx
mov word ptr [bp+var_8], ax
xor si, si
jmp short loc_12D90
; ---------------------------------------------------------------------------
loc_12D73:
mov ax, si
add ax, ax
les bx, [bp+_font]
add bx, ax
mov word ptr es:[bx], 0
mov ax, si
add ax, ax
les bx, [bp+var_8]
add bx, ax
mov word ptr es:[bx], 0
inc si
loc_12D90:
cmp si, 190h
jb short loc_12D73
call egc_on
EGC_SETUP_COPY
loc_12DC5:
xor si, si
jmp short loc_12E0D
; ---------------------------------------------------------------------------
loc_12DC9:
mov ax, si
add ax, ax
les bx, [bp+var_8]
add bx, ax
cmp word ptr es:[bx], 0
jz short loc_12E0C
push si ; y
mov ax, si
add ax, ax
les bx, [bp+_font]
add bx, ax
push word ptr es:[bx] ; transferred_chunk_left
call @egc_pagetrans_rowshift_alternati$qii
mov ax, si
add ax, ax
les bx, [bp+_font]
add bx, ax
add word ptr es:[bx], 4
cmp word ptr es:[bx], 50h ; 'P'
jb short loc_12E0C
mov ax, si
add ax, ax
les bx, [bp+var_8]
add bx, ax
mov word ptr es:[bx], 0
inc [bp+var_A]
loc_12E0C:
inc si
loc_12E0D:
cmp si, 190h
jb short loc_12DC9
inc [bp+var_12]
push 2
call _frame_delay
pop cx
cmp [bp+var_A], 190h
jnb loc_12F42
cmp di, 190h
jnb short loc_12EA4
mov ax, di
add ax, ax
les bx, [bp+var_8]
add bx, ax
mov word ptr es:[bx], 1
lea ax, [di+1]
add ax, ax
mov bx, word ptr [bp+var_8]
add bx, ax
mov word ptr es:[bx], 1
lea ax, [di+2]
add ax, ax
mov bx, word ptr [bp+var_8]
add bx, ax
mov word ptr es:[bx], 1
lea ax, [di+3]
add ax, ax
mov bx, word ptr [bp+var_8]
add bx, ax
mov word ptr es:[bx], 1
lea ax, [di+4]
add ax, ax
mov bx, word ptr [bp+var_8]
add bx, ax
mov word ptr es:[bx], 1
lea ax, [di+5]
add ax, ax
mov bx, word ptr [bp+var_8]
add bx, ax
mov word ptr es:[bx], 1
lea ax, [di+6]
add ax, ax
mov bx, word ptr [bp+var_8]
add bx, ax
mov word ptr es:[bx], 1
lea ax, [di+7]
add ax, ax
mov bx, word ptr [bp+var_8]
add bx, ax
mov word ptr es:[bx], 1
loc_12EA4:
add di, 8
mov ax, [bp+var_A]
cmp ax, [bp+var_10]
jz loc_12F39
test di, 0Fh
jnz loc_12F39
mov [bp+var_C], 0
jmp short loc_12F27
; ---------------------------------------------------------------------------
loc_12EC0:
mov [bp+var_E], 0
jmp short loc_12F1E
; ---------------------------------------------------------------------------
loc_12EC7:
mov bx, [bp+var_C]
imul bx, size rgb_t
add bx, [bp+var_E]
mov al, _z_Palettes[bx]
mov bx, [bp+var_C]
imul bx, size rgb_t
add bx, [bp+var_E]
cmp al, byte ptr _grp_palette[bx]
jz short loc_12F1B
mov bx, [bp+var_C]
imul bx, 3
add bx, [bp+var_E]
mov bx, [bp+var_C]
imul bx, 3
add bx, [bp+var_E]
cmp al, byte ptr _grp_palette[bx]
jge short loc_12EFF
mov al, 1
jmp short loc_12F01
; ---------------------------------------------------------------------------
loc_12EFF:
mov al, -1
loc_12F01:
mov bx, [bp+var_C]
imul bx, 3
add bx, [bp+var_E]
add al, _z_Palettes[bx]
mov bx, [bp+var_C]
imul bx, 3
add bx, [bp+var_E]
mov _z_Palettes[bx], al
loc_12F1B:
inc [bp+var_E]
loc_12F1E:
cmp [bp+var_E], size rgb_t
jb short loc_12EC7
inc [bp+var_C]
loc_12F27:
cmp [bp+var_C], COLOR_COUNT
jb short loc_12EC0
call _z_palette_set_all_show c, offset _z_Palettes, ds
loc_12F39:
mov ax, [bp+var_A]
mov [bp+var_10], ax
jmp loc_12DC5
; ---------------------------------------------------------------------------
loc_12F42:
pushd [bp+_font] ; font
call @$bdla$qnv
pushd [bp+var_8] ; font
call @$bdla$qnv
add sp, 8
call egc_off
pop di
pop si
leave
retn 2
sub_12D3F endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_12F62 proc near
push bp
mov bp, sp
push 1
call _graph_accesspage_func
call @grp_put$qnxc stdcall, offset aClear3_grp, ds ; "CLEAR3.grp"
call @ptn_load$q15main_ptn_slot_tnxc stdcall, PTN_SLOT_NUMB, offset aNumb_ptn, ds ; "numb.ptn"
push 0
call _graph_accesspage_func
add sp, 0Eh
push 0
call sub_12D3F
pop bp
retn
sub_12F62 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_12F91 proc near
var_C = dword ptr -0Ch
var_8 = word ptr -8
var_6 = word ptr -6
var_4 = word ptr -4
var_2 = word ptr -2
enter 0Ch, 0
push si
push di
mov di, 3844h
mov eax, dword_3573A
mov [bp+var_C], eax
call _grcg_setcolor_rmw stdcall, 0
pop cx
mov [bp+var_6], di
xor si, si
jmp short loc_13024
; ---------------------------------------------------------------------------
loc_12FB1:
mov [bp+var_2], 0
mov [bp+var_4], di
mov ax, [bp+var_6]
mov [bp+var_8], ax
jmp short loc_13002
; ---------------------------------------------------------------------------
loc_12FC1:
mov ax, si
mov bx, 4
cwd
idiv bx
lea ax, [bp+var_C]
add dx, ax
mov bx, dx
mov al, ss:[bx]
les bx, _VRAM_PLANE_B
add bx, [bp+var_4]
mov es:[bx], al
mov ax, si
mov bx, 4
cwd
idiv bx
lea ax, [bp+var_C]
add dx, ax
mov bx, dx
mov al, ss:[bx]
mov bx, word ptr _VRAM_PLANE_B
add bx, [bp+var_8]
mov es:[bx], al
inc [bp+var_2]
inc [bp+var_4]
inc [bp+var_8]
loc_13002:
cmp [bp+var_2], 28h ; '('
jl short loc_12FC1
sub di, 50h ; 'P'
add [bp+var_6], 50h ; 'P'
mov ax, si
mov bx, 6
cwd
idiv bx
or dx, dx
jnz short loc_13023
push 1
call _frame_delay
pop cx
loc_13023:
inc si
loc_13024:
cmp si, 8Ch
jl short loc_12FB1
call _grcg_off_func
pop di
pop si
leave
retn
sub_12F91 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_13033 proc far
var_2C = byte ptr -2Ch
arg_0 = dword ptr 6
arg_4 = byte ptr 0Ah
enter 2Ch, 0
lea ax, [bp+var_2C]
push ss
push ax
push ds
push offset off_3573E
mov cx, 2Ch ; ','
call SCOPY@
mov al, [bp+arg_4]
cbw
shl ax, 2
lea dx, [bp+var_2C]
add ax, dx
mov bx, ax
les bx, ss:[bx]
mov al, es:[bx]
les bx, [bp+arg_0]
mov es:[bx], al
mov al, [bp+arg_4]
cbw
shl ax, 2
add ax, dx
mov bx, ax
les bx, ss:[bx]
mov al, es:[bx+1]
les bx, [bp+arg_0]
mov es:[bx+1], al
leave
retf
sub_13033 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_1307D proc near
arg_0 = word ptr 4
arg_2 = dword ptr 6
push bp
mov bp, sp
push si
mov si, [bp+arg_0]
mov ax, si
mov bx, 1000
cwd
idiv bx
push ax
pushd [bp+arg_2]
call sub_13033
add sp, 6
mov bx, 1000
mov ax, si
cwd
idiv bx
mov si, dx
mov ax, si
mov bx, 100
cwd
idiv bx
push ax
mov ax, word ptr [bp+arg_2]
add ax, 2
push word ptr [bp+arg_2+2]
push ax
call sub_13033
add sp, 6
mov bx, 100
mov ax, si
cwd
idiv bx
mov si, dx
mov ax, si
mov bx, 10
cwd
idiv bx
push ax
mov ax, word ptr [bp+arg_2]
add ax, 4
push word ptr [bp+arg_2+2]
push ax
call sub_13033
add sp, 6
mov bx, 10
mov ax, si
cwd
idiv bx
mov si, dx
push dx
mov ax, word ptr [bp+arg_2]
add ax, 6
push word ptr [bp+arg_2+2]
push ax
call sub_13033
add sp, 6
pop si
pop bp
retn 6
sub_1307D endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_13101 proc far
var_C = word ptr -0Ch
var_A = word ptr -0Ah
var_8 = dword ptr -8
var_4 = dword ptr -4
arg_0 = word ptr 6
enter 0Ch, 0
push si
push di
mov word ptr [bp+var_4+2], ds
mov word ptr [bp+var_4], offset aSTAGE_COMPLETE
mov word ptr [bp+var_8+2], ds
mov word ptr [bp+var_8], offset aSTAGE_COMPLETE_NUM
xor si, si
mov ax, [bp+arg_0]
mov bx, 10
cwd
idiv bx
push ax
mov ax, word ptr [bp+var_4]
add ax, 0Ch
push word ptr [bp+var_4+2]
push ax
call sub_13033
add sp, 6
mov ax, [bp+arg_0]
mov bx, 10
cwd
idiv bx
push dx
mov ax, word ptr [bp+var_4]
add ax, 0Eh
push word ptr [bp+var_4+2]
push ax
call sub_13033
add sp, 6
call _z_palette_set_all_show c, offset _stage_palette, ds
call sub_12F91
pushd [bp+var_4]
push ((10 or FX_WEIGHT_BOLD) shl 16) or 80
push 64
call _graph_putsa_fx
add sp, 0Ah
call _graph_putsa_fx c, 48, large ((7 or FX_WEIGHT_BOLD) shl 16) or 112, offset aB@b@vavnvmvtvr, ds ; "<22>@<40>@<40>a<EFBFBD>n<EFBFBD>m<EFBFBD>t<EFBFBD>r"
call _graph_putsa_fx c, 48, large ((7 or FX_WEIGHT_BOLD) shl 16) or 128, offset aB@vsvivnveb@, ds ; " <20>@<40>s<EFBFBD><73><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@"
call _graph_putsa_fx c, 48, large ((7 or FX_WEIGHT_BOLD) shl 16) or 160, offset aVbvpvovfvivovx, ds ; "<22>b<EFBFBD><62><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
call _graph_putsa_fx c, 48, large ((7 or FX_WEIGHT_BOLD) shl 16) or 192, offset aVavpvnvvbxvovm, ds ; "<22>a<EFBFBD><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>o<EFBFBD><6F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
call _graph_putsa_fx c, 48, large ((7 or FX_WEIGHT_BOLD) shl 16) or 224, offset aB@b@vrvsvVfvd, ds ; "<22>@<40>@<40>r<EFBFBD>s<EFBFBD>`<60>f<EFBFBD>d"
call _graph_putsa_fx c, 48, large ((7 or FX_WEIGHT_BOLD) shl 16) or 256, offset aVavnvmvtvrb@vo, ds ; "<22>a<EFBFBD>n<EFBFBD>m<EFBFBD>t<EFBFBD>r<EFBFBD>@<40>o<EFBFBD><6F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
call _graph_putsa_fx c, 160, large ((10 or FX_WEIGHT_BOLD) shl 16) or 288, offset aVgvivfb@vyb@vj, ds ; "<22>g<EFBFBD><67><EFBFBD><EFBFBD><EFBFBD>@<40>y<EFBFBD>@<40>j<EFBFBD><6A><EFBFBD><EFBFBD>"
mov ax, _stage_timer
imul ax, 3
mov si, ax
cmp si, 6553
jle short loc_13210
mov si, 6553
loc_13210:
xor di, di
jmp short loc_1321E
; ---------------------------------------------------------------------------
loc_13214:
movsx eax, si
add score_34A5E, eax
inc di
loc_1321E:
cmp di, 0Ah
jb short loc_13214
push 0
mov ax, word ptr [bp+var_8]
add ax, 8
push word ptr [bp+var_8+2]
push ax
call sub_13033
add sp, 6
push 0Ah
mov ax, word ptr [bp+var_8]
add ax, 0Ah
push word ptr [bp+var_8+2]
push ax
call sub_13033
add sp, 6
pushd [bp+var_8]
push si
call sub_1307D
pushd [bp+var_8]
push ((7 or FX_WEIGHT_BOLD) shl 16) or 128
push 256
call _graph_putsa_fx
add sp, 0Ah
mov ax, _cardcombo_max
imul ax, 100
mov si, ax
cmp si, 6553
jle short loc_13277
mov si, 6553
loc_13277:
xor di, di
jmp short loc_13285
; ---------------------------------------------------------------------------
loc_1327B:
movsx eax, si
add score_34A5E, eax
inc di
loc_13285:
cmp di, 0Ah
jb short loc_1327B
pushd [bp+var_8]
push si
call sub_1307D
pushd [bp+var_8]
push ((7 or FX_WEIGHT_BOLD) shl 16) or 160
push 256
call _graph_putsa_fx
add sp, 0Ah
mov ax, _lives
imul ax, 200
mov si, ax
mov al, _bombs
cbw
imul ax, 100
add si, ax
cmp si, 6553
jle short loc_132C2
mov si, 6553
loc_132C2:
xor di, di
jmp short loc_132D0
; ---------------------------------------------------------------------------
loc_132C6:
movsx eax, si
add score_34A5E, eax
inc di
loc_132D0:
cmp di, 0Ah
jb short loc_132C6
pushd [bp+var_8]
push si
call sub_1307D
pushd [bp+var_8]
push ((7 or FX_WEIGHT_BOLD) shl 16) or 192
push 256
call _graph_putsa_fx
add sp, 0Ah
mov ax, [bp+arg_0]
dec ax
imul ax, 200
mov si, ax
cmp si, 6553
jle short loc_13305
mov si, 6553
loc_13305:
xor di, di
jmp short loc_13313
; ---------------------------------------------------------------------------
loc_13309:
movsx eax, si
add score_34A5E, eax
inc di
loc_13313:
cmp di, 0Ah
jb short loc_13309
pushd [bp+var_8]
push si
call sub_1307D
pushd [bp+var_8]
push ((7 or FX_WEIGHT_BOLD) shl 16) or 224
push 256
call _graph_putsa_fx
add sp, 0Ah
mov eax, score_34A5E
add _score, eax
mov ebx, 10000
xor edx, edx
div ebx
mov [bp+var_A], ax
imul ax, 10000
mov dx, word ptr score_34A5E
sub dx, ax
mov [bp+var_C], dx
mov ax, [bp+arg_0]
dec ax
mov bx, 5
cwd
idiv bx
shl dx, 2
les bx, _resident
add bx, dx
mov eax, score_34A5E
mov es:[bx+reiidenconfig_t.bonus_per_stage], eax
mov ax, [bp+var_A]
mov bx, 10
cwd
idiv bx
push ax
pushd [bp+var_8]
call sub_13033
add sp, 6
mov ax, [bp+var_A]
mov bx, 10
cwd
idiv bx
push dx
mov ax, word ptr [bp+var_8]
add ax, 2
push word ptr [bp+var_8+2]
push ax
call sub_13033
add sp, 6
mov ax, [bp+var_C]
mov bx, 1000
cwd
idiv bx
push ax
mov ax, word ptr [bp+var_8]
add ax, 4
push word ptr [bp+var_8+2]
push ax
call sub_13033
add sp, 6
mov bx, 1000
mov ax, [bp+var_C]
cwd
idiv bx
mov [bp+var_C], dx
mov ax, [bp+var_C]
mov bx, 100
cwd
idiv bx
push ax
mov ax, word ptr [bp+var_8]
add ax, 6
push word ptr [bp+var_8+2]
push ax
call sub_13033
add sp, 6
mov bx, 100
mov ax, [bp+var_C]
cwd
idiv bx
mov [bp+var_C], dx
mov ax, [bp+var_C]
mov bx, 10
cwd
idiv bx
push ax
mov ax, word ptr [bp+var_8]
add ax, 8
push word ptr [bp+var_8+2]
push ax
call sub_13033
add sp, 6
push 0
mov ax, word ptr [bp+var_8]
add ax, 0Ah
push word ptr [bp+var_8+2]
push ax
call sub_13033
add sp, 6
pushd [bp+var_8]
push ((7 or FX_WEIGHT_BOLD) shl 16) or 256
push 240
call _graph_putsa_fx
add sp, 0Ah
call @hud_score_and_cardcombo_render$qv
call sub_D02F
call _input_reset_sense
mov _input_shot, 1
mov _input_ok, 1
jmp short loc_1345A
; ---------------------------------------------------------------------------
loc_13452:
call _input_sense stdcall, 0
pop cx
loc_1345A:
cmp _input_shot, 1
jnz short loc_13468
cmp _input_ok, 1
jz short loc_13452
loc_13468:
mov score_34A5E, 0
pop di
pop si
leave
retf
sub_13101 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_13475 proc far
var_6 = dword ptr -6
var_2 = word ptr -2
arg_0 = word ptr 6
enter 6, 0
push si
push di
call @CShots@unput_and_reset$qv c, offset _Shots, ds
call @CPellets@unput_and_reset$qv c, offset _Pellets, ds
push 32h ; '2'
call _frame_delay
pop cx
mov [bp+var_6], 0
call sub_12F62
mov ax, [bp+arg_0]
mov bx, 10
cwd
idiv bx
add ax, (7 * PTN_IMAGES_PER_SLOT)
call @ptn_put_8$qiii stdcall, (14 shl 16) or 224, ax
add sp, 6
mov ax, [bp+arg_0]
mov bx, 10
cwd
idiv bx
add dx, (7 * PTN_IMAGES_PER_SLOT)
call @ptn_put_8$qiii stdcall, (14 shl 16) or 256, dx
add sp, 6
push 1Eh
call _frame_delay
pop cx
mov ax, _stage_timer
imul ax, 5
movzx eax, ax
mov [bp+var_6], eax
cmp [bp+var_6], 6553
jle short loc_13505
mov [bp+var_6], 6553
loc_13505:
xor si, si
jmp short loc_13513
; ---------------------------------------------------------------------------
loc_13509:
mov eax, [bp+var_6]
add score_34A5E, eax
inc si
loc_13513:
cmp si, 0Ah
jb short loc_13509
mov eax, [bp+var_6]
mov ebx, 1000
cdq
idiv ebx
call @totle_metric_digit_animate$qiii pascal, ax, large (0 shl 16) or 86
mov eax, [bp+var_6]
mov ebx, 1000
cdq
idiv ebx
mov [bp+var_6], edx
mov eax, [bp+var_6]
mov ebx, 100
cdq
idiv ebx
call @totle_metric_digit_animate$qiii pascal, ax, large (1 shl 16) or 86
mov eax, [bp+var_6]
mov ebx, 100
cdq
idiv ebx
mov [bp+var_6], edx
mov eax, [bp+var_6]
mov ebx, 10
cdq
idiv ebx
call @totle_metric_digit_animate$qiii pascal, ax, large (2 shl 16) or 86
mov eax, [bp+var_6]
mov ebx, 10
cdq
idiv ebx
mov [bp+var_6], edx
call @totle_metric_digit_animate$qiii pascal, word ptr [bp+var_6], large (3 shl 16) or 86
pushd (0 shl 16) or 4
push 86
call @totle_metric_digit_animate$qiii
push 5
call _frame_delay
pop cx
mov ax, _cardcombo_max
imul ax, 200
cwde
mov [bp+var_6], eax
cmp [bp+var_6], 6553
jle short loc_135D4
mov [bp+var_6], 6553
loc_135D4:
xor si, si
jmp short loc_135E2
; ---------------------------------------------------------------------------
loc_135D8:
mov eax, [bp+var_6]
add score_34A5E, eax
inc si
loc_135E2:
cmp si, 0Ah
jb short loc_135D8
mov eax, [bp+var_6]
mov ebx, 1000
cdq
idiv ebx
call @totle_metric_digit_animate$qiii pascal, ax, large (0 shl 16) or 107
mov eax, [bp+var_6]
mov ebx, 1000
cdq
idiv ebx
mov [bp+var_6], edx
mov eax, [bp+var_6]
mov ebx, 100
cdq
idiv ebx
call @totle_metric_digit_animate$qiii pascal, ax, large (1 shl 16) or 107
mov eax, [bp+var_6]
mov ebx, 100
cdq
idiv ebx
mov [bp+var_6], edx
mov eax, [bp+var_6]
mov ebx, 10
cdq
idiv ebx
call @totle_metric_digit_animate$qiii pascal, ax, large (2 shl 16) or 107
mov eax, [bp+var_6]
mov ebx, 10
cdq
idiv ebx
mov [bp+var_6], edx
call @totle_metric_digit_animate$qiii pascal, word ptr [bp+var_6], large (3 shl 16) or 107
pushd (0 shl 16) or 4
push 107
call @totle_metric_digit_animate$qiii
push 5
call _frame_delay
pop cx
mov ax, _lives
imul ax, 500
cwde
mov [bp+var_6], eax
mov al, _bombs
cbw
imul ax, 200
cwde
add [bp+var_6], eax
cmp [bp+var_6], 6553
jle short loc_136B1
mov [bp+var_6], 6553
loc_136B1:
xor si, si
jmp short loc_136BF
; ---------------------------------------------------------------------------
loc_136B5:
mov eax, [bp+var_6]
add score_34A5E, eax
inc si
loc_136BF:
cmp si, 0Ah
jb short loc_136B5
mov eax, [bp+var_6]
mov ebx, 1000
cdq
idiv ebx
call @totle_metric_digit_animate$qiii pascal, ax, large (0 shl 16) or 128
mov eax, [bp+var_6]
mov ebx, 1000
cdq
idiv ebx
mov [bp+var_6], edx
mov eax, [bp+var_6]
mov ebx, 100
cdq
idiv ebx
call @totle_metric_digit_animate$qiii pascal, ax, large (1 shl 16) or 128
mov eax, [bp+var_6]
mov ebx, 100
cdq
idiv ebx
mov [bp+var_6], edx
mov eax, [bp+var_6]
mov ebx, 10
cdq
idiv ebx
call @totle_metric_digit_animate$qiii pascal, ax, large (2 shl 16) or 128
mov eax, [bp+var_6]
mov ebx, 10
cdq
idiv ebx
mov [bp+var_6], edx
call @totle_metric_digit_animate$qiii pascal, word ptr [bp+var_6], large (3 shl 16) or 128
pushd (0 shl 16) or 4
push 128
call @totle_metric_digit_animate$qiii
push 5
call _frame_delay
pop cx
mov ax, [bp+arg_0]
imul ax, 1000
cwde
mov [bp+var_6], eax
cmp [bp+var_6], 65530
jle short loc_13784
mov [bp+var_6], 65530
loc_13784:
xor si, si
jmp short loc_13792
; ---------------------------------------------------------------------------
loc_13788:
mov eax, [bp+var_6]
add score_34A5E, eax
inc si
loc_13792:
cmp si, 0Ah
jb short loc_13788
mov eax, [bp+var_6]
mov ebx, 10000
cdq
idiv ebx
call @totle_metric_digit_animate$qiii pascal, ax, large (-1 shl 16) or 149
mov eax, [bp+var_6]
mov ebx, 10000
cdq
idiv ebx
mov [bp+var_6], edx
mov eax, [bp+var_6]
mov ebx, 1000
cdq
idiv ebx
call @totle_metric_digit_animate$qiii pascal, ax, large (0 shl 16) or 149
mov eax, [bp+var_6]
mov ebx, 1000
cdq
idiv ebx
mov [bp+var_6], edx
mov eax, [bp+var_6]
mov ebx, 100
cdq
idiv ebx
call @totle_metric_digit_animate$qiii pascal, ax, large (1 shl 16) or 149
mov eax, [bp+var_6]
mov ebx, 100
cdq
idiv ebx
mov [bp+var_6], edx
mov eax, [bp+var_6]
mov ebx, 10
cdq
idiv ebx
call @totle_metric_digit_animate$qiii pascal, ax, large (2 shl 16) or 149
pushd (0 shl 16) or 3
push 149
call @totle_metric_digit_animate$qiii
pushd (0 shl 16) or 4
push 149
call @totle_metric_digit_animate$qiii
push 5
call _frame_delay
pop cx
mov eax, score_34A5E
add _score, eax
mov ebx, 10000
xor edx, edx
div ebx
mov [bp+var_2], ax
imul ax, 10000
mov dx, word ptr score_34A5E
sub dx, ax
mov di, dx
mov ax, [bp+var_2]
mov bx, 10
cwd
idiv bx
call @totle_metric_digit_animate$qiii pascal, ax, large (-1 shl 16) or 196
mov ax, [bp+var_2]
mov bx, 10
cwd
idiv bx
mov [bp+var_2], dx
call @totle_metric_digit_animate$qiii pascal, dx, large (0 shl 16) or 196
mov ax, di
mov bx, 1000
cwd
idiv bx
call @totle_metric_digit_animate$qiii pascal, ax, large (1 shl 16) or 196
mov ax, di
mov bx, 1000
cwd
idiv bx
mov di, dx
mov ax, di
mov bx, 100
cwd
idiv bx
call @totle_metric_digit_animate$qiii pascal, ax, large (2 shl 16) or 196
mov ax, di
mov bx, 100
cwd
idiv bx
mov di, dx
mov ax, di
mov bx, 10
cwd
idiv bx
call @totle_metric_digit_animate$qiii pascal, ax, large (3 shl 16) or 196
mov ax, di
mov bx, 10
cwd
idiv bx
mov di, dx
call @totle_metric_digit_animate$qiii pascal, dx, large (4 shl 16) or 196
push 5
call _frame_delay
pop cx
call _input_reset_sense
mov _input_shot, 1
mov _input_ok, 1
mov ax, [bp+arg_0]
mov bx, 5
cwd
idiv bx
dec ax
add ax, ax
les bx, _resident
add bx, ax
mov ax, word ptr _continues_total
mov es:[bx+reiidenconfig_t.continues_per_scene], ax
jmp short loc_13933
; ---------------------------------------------------------------------------
loc_1392B:
call _input_sense stdcall, 0
pop cx
loc_13933:
cmp _input_shot, 1
jnz short loc_13941
cmp _input_ok, 1
jz short loc_1392B
loc_13941:
mov score_34A5E, 0
call @ptn_free$q15main_ptn_slot_t stdcall, PTN_SLOT_NUMB
pop cx
pop di
pop si
locret_13954:
leave
retf
sub_13475 endp
main_18__TEXT ends
; ===========================================================================
; Segment type: Pure code
main_19_TEXT segment byte public 'CODE' use16
extern @scoredat_load$qv:proc
extern @scoredat_hiscore_get$qv:proc
main_19_TEXT ends
main_19__TEXT segment byte public 'CODE' use16
assume cs:main_19
extern @scoredat_free$qv:proc
extern @regist$qlixnxuc:proc
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
public _scoredat_load_hiscore
_scoredat_load_hiscore proc far
push bp
mov bp, sp
call @scoredat_load$qv
call @scoredat_hiscore_get$qv
push dx
push ax
pop eax
les bx, _resident
assume es:nothing
mov es:[bx+reiidenconfig_t.hiscore], eax
call @scoredat_free$qv
pop bp
retf
_scoredat_load_hiscore endp
main_19__TEXT ends
; ===========================================================================
; Segment type: Pure code
main_20_TEXT segment byte public 'CODE' use16
main_20_TEXT ends
; ===========================================================================
; Segment type: Pure code
main_21_TEXT segment byte public 'CODE' use16
extern @bos_entity_free$qi:proc
main_21_TEXT ends
; ===========================================================================
; Segment type: Pure code
PF_TEXT segment byte public 'CODE' use16
extern ARC_LOAD:proc
extern ARC_FREE:proc
PF_TEXT ends
; ===========================================================================
; Segment type: Pure code
main_23_TEXT segment byte public 'CODE' use16
extern @shape_ellipse_arc_put$qiiiiiucucuc:proc
extern @shape_ellipse_arc_sloppy_unput$qiiiiucucuc:proc
extern _graph_r_lineloop_put:proc
extern _graph_r_lineloop_unput:proc
main_23_TEXT ends
; ===========================================================================
; Segment type: Pure code
main_24_TEXT segment byte public 'CODE' use16
extern @items_bomb_reset$qv:proc
extern @items_bomb_unput_update_render$qv:proc
extern @items_point_reset$qv:proc
extern @items_point_unput_update_render$qv:proc
main_24_TEXT ends
; ===========================================================================
; Segment type: Pure code
main_25_TEXT segment byte public 'CODE' use16
extern @hud_score_and_cardcombo_render$qv:proc
extern @hud_lives_put$qi:proc
extern @hud_bg_snap_and_put$qv:proc
main_25_TEXT ends
; ===========================================================================
; Segment type: Pure code
main_26_TEXT segment byte public 'CODE' use16
extern @timer_tick_and_put$qv:proc
main_26_TEXT ends
; ===========================================================================
; Segment type: Pure code
main_27_TEXT segment byte public 'CODE' use16
extern @ptn_unput_8$qiii:proc
extern @ptn_put_8$qiii:proc
extern @player_unput_update_render$qi:proc
OR_NONE = 0
extern @orb_player_hittest$qi:proc
extern @player_miss_animate_and_update$qv:proc
main_27_TEXT ends
; ===========================================================================
main_28_TEXT segment byte public 'CODE' use16
extern @yuugenmagan_load$qv:proc
extern @yuugenmagan_main$qv:proc
extern @yuugenmagan_free$qv:proc
main_28_TEXT ends
; ===========================================================================
; Segment type: Pure code
main_29_TEXT segment byte public 'CODE' use16
extern @mima_load$qv:proc
extern @mima_free$qv:proc
extern @mima_main$qv:proc
main_29_TEXT ends
; ===========================================================================
; Segment type: Pure code
main_30_TEXT segment byte public 'CODE' use16
extern @cards_hittest$qi:proc
extern @cards_update_and_render$qv:proc
main_30_TEXT ends
; ===========================================================================
; Segment type: Pure code
main_31_TEXT segment byte public 'CODE' use16
extern @stageobj_bgs_put_all$qv:proc
extern @stageobj_bgs_free$qv:proc
extern @scene_init_and_load$quc:proc
extern @obstacles_update_and_render$qi:proc
main_31_TEXT ends
; ===========================================================================
; Segment type: Pure code
main_32_TEXT segment byte public 'CODE' use16
main_32_TEXT ends
; ===========================================================================
; Segment type: Pure code
main_33_TEXT segment byte public 'CODE' use16
extern @singyoku_load$qv:proc
extern @singyoku_main$qv:proc
extern @singyoku_free$qv:proc
main_33_TEXT ends
; ===========================================================================
; Segment type: Pure code
main_34_TEXT segment byte public 'CODE' use16
extern @kikuri_load$qv:proc
extern @kikuri_free$qv:proc
extern @kikuri_main$qv:proc
main_34_TEXT ends
; ===========================================================================
; Segment type: Pure code
main_35_TEXT segment byte public 'CODE' use16
extern @elis_load$qv:proc
extern @elis_main$qv:proc
extern @elis_free$qv:proc
main_35_TEXT ends
; ===========================================================================
; Segment type: Pure code
main_36_TEXT segment byte public 'CODE' use16
extern @sariel_entrance$qc:proc
extern @sariel_load_and_init$qv:proc
extern @sariel_free$qv:proc
extern @sariel_main$qv:proc
main_36_TEXT ends
; ===========================================================================
; Segment type: Pure code
main_37_TEXT segment byte public 'CODE' use16
extern @konngara_load_and_entrance$qc:proc
extern @konngara_init$qv:proc
extern @konngara_free$qv:proc
extern @konngara_main$qv:proc
main_37_TEXT ends
; ===========================================================================
; Segment type: Pure code
main_38_TEXT segment byte public 'CODE' use16
extern @CShots@unput_and_reset$qv:proc
extern @CPellets@$bctr$qv:proc
extern @CPellets@unput_update_render$qv:proc
extern @CPellets@unput_and_reset$qv:proc
main_38_TEXT ends
.data
; Not *really* a cfg_options_t, since you'd expect that structure to contain
; the immutable contents of REIIDEN.CFG. However, [bombs] is in fact the
; *current* bomb count, and the .CFG value is saved to [credit_bombs]...
public _rank, _bgm_mode, _bombs, _lives_extra
_rank db CFG_RANK_DEFAULT
_bgm_mode db CFG_BGM_MODE_DEFAULT
_bombs db CFG_BOMBS_DEFAULT
_lives_extra db CFG_LIVES_EXTRA_DEFAULT
public _stage_num
_stage_num db 0
byte_34A35 db 0
db 0
public _RANKS, _first_stage_in_scene, _timer_initialized
_RANKS label dword
dd aEasy ; "EASY"
dd aNormal ; "NORMAL"
dd aHard ; "HARD"
dd aLunatic ; "LUNATIC"
_timer_initialized db 0
db 0
_first_stage_in_scene db 1
db 0
include th01/hardware/input_main_end[data].asm
db 0
public _player_deflecting, _bomb_damaging, _player_sliding
_player_deflecting db 0
_bomb_damaging db 0
_player_sliding db 0
public _score, _bomb_frames
_score dd 0
score_34A5E dd 0
_bomb_frames dd 0
_continues_total dd 0
dw 0
public _mode_test
_mode_test dw 0
public _bomb_doubletap_frames
_bomb_doubletap_frames dw 0
word_34A70 dw 0
public _test_damage
_test_damage dw 0
word_34A74 dw 0
dw 0
public _player_invincible
_player_invincible dw 0
dw 0
public _orb_velocity_x, _lives, _stage_cleared
_orb_velocity_x dw 0
word_34A7E dw 0
_lives dw 4
_stage_cleared dw 0
public _cardcombo_cur, _orb_in_portal, _cardcombo_max
_cardcombo_cur dw 0
_orb_in_portal dw 0
_cardcombo_max dw 0
word_34A8A dw 1
word_34A8C dw 1
public _orb_prev_left, _orb_prev_top
_orb_prev_left dw ORB_LEFT_START
_orb_prev_top dw ORB_TOP_START
word_34A92 dw 0
include th01/main/player/orb[data].asm
public _ptn_slot_stg_has_reduced_sprites, _bomb_palette_flash_peak_
_ptn_slot_stg_has_reduced_sprites db 0
label _bomb_palette_flash_peak_ byte
db 0Fh, 0Fh, 0Fh
db 0Dh, 0Dh, 0Fh
db 0Dh, 0Dh, 0Fh
db 0Dh, 0Dh, 0Fh
db 0Dh, 0Dh, 0Fh
db 0Dh, 0Dh, 0Fh
db 0Dh, 0Dh, 0Fh
db 0Fh, 0Fh, 0Fh
db 0Dh, 0Dh, 0Fh
db 0Dh, 0Dh, 0Fh
db 0Dh, 0Dh, 0Fh
db 0Dh, 0Dh, 0Fh
db 0Dh, 0Dh, 0Fh
db 0Dh, 0Dh, 0Fh
db 0Dh, 0Dh, 0Fh
db 06h, 06h, 0Fh
byte_34AD5 db 0
word_34AD6 dw 0
byte_34AD8 db 0
word_34AD9 dw 0
byte_34ADB db 0
word_34ADC dw 0
unk_34ADE db 0
byte_34ADF db 0
aEasy db 'EASY',0
aNormal db 'NORMAL',0
aHard db 'HARD',0
aLunatic db 'LUNATIC',0
public _esc_cls
_esc_cls db 1Bh,'*',0
public _mask_grf, _miko_ac_bos, _miko_ac2_bos, _PTN_STG_CARDFLIP_FN, _miko_ptn
_mask_grf db 'mask.grf',0
_miko_ac_bos db 'miko_ac.bos',0
_miko_ac2_bos db 'miko_ac2.bos',0
_PTN_STG_CARDFLIP_FN db 'stg.ptn',0
_miko_ptn db 'miko.ptn',0
public _esc_color_bg_black_fg_black, _esc_cursor_to_x0_y0, _space
public _esc_color_reset, _empty_grf, _kuzi1_grc, _kuzi2_grc
_esc_color_bg_black_fg_black db 1Bh,'[16;40m',0
_esc_cursor_to_x0_y0 db 1Bh,'[0;0H',0
_space db ' ',0
_esc_color_reset db 1Bh,'[0m',0
_empty_grf db 'empty.grf',0
_kuzi1_grc db 'kuzi1.grc',0
_kuzi2_grc db 'kuzi2.grc',0
public _ORB_VELOCITY_Y_MAX, _ORB_VELOCITY_Y_MIN
public _ORB_COEFFICIENT_OF_RESTITUTION, _ORB_FORCE_2_0, _ORB_FORCE_SHOT_BASE
_ORB_VELOCITY_Y_MAX dd 16.0
_ORB_VELOCITY_Y_MIN dq -16.0
_ORB_COEFFICIENT_OF_RESTITUTION dq 0.78
_ORB_FORCE_2_0 dd 2.0
_ORB_FORCE_SHOT_BASE dq -10.0
aVovVtvrvd db '<27>o<EFBFBD>`<60>t<EFBFBD>r<EFBFBD>d',0
aB@nKjb@b@pic db '<27>@<40>ĊJ<C48A>@<40>@<40>I<EFBFBD><49>',0
aBB@b@b@b@b@b@ db '<27><><EFBFBD>@<40>@<40>@<40>@<40>@<40>@',0
aB db '<27><>',0
aCUcvPicVVVsvdv db '<27>{<7B><><EFBFBD>ɏI<C98F><49><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>́H',0
aB@vdvVVVgb@b@v db '<27>@<40><><EFBFBD><EFBFBD><EFBFBD>ł<EFBFBD><C582><EFBFBD><EFBFBD>@<40>@<40>͂<EFBFBD><CD82><EFBFBD>',0
aVgvpvovfvivovx db '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>H<EFBFBD>@<40>@<40>@ ',0
aVxvevub@b@B@ db '<27>x<EFBFBD><78><EFBFBD><EFBFBD><EFBFBD>@<40>@ <20>@',0
aVmvpb@b@B@ db '<27>m<EFBFBD><6D><EFBFBD>@<40>@ <20>@ ',0
aVxvevub@b@c@ db '<27>x<EFBFBD><78><EFBFBD><EFBFBD><EFBFBD>@<40>@<40>@ ',0
aVmvpb@b@c@ db '<27>m<EFBFBD><6D><EFBFBD>@<40>@<40>@ ',0
; char path[]
path db 'REIIDEN',0
; char aVvvtbV[]
aVvvtbV db '<27><><EFBFBD><EFBFBD><EFBFBD>[<5B><><EFBFBD>A<EFBFBD>q<EFBFBD>[<5B>v<EFBFBD><76><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȃ<EFBFBD><C882><EFBFBD>',0
; char aS[3]
aS db '%s',0
; char aFp[]
aFp db ' : [%Fp] -> ',0
aGqbGvvkvVViv db '<27>q<EFBFBD>[<5B>v<EFBFBD><76><EFBFBD>݂‚<DD82><C282><EFBFBD><EFBFBD>Ȃ<EFBFBD><C882>患',0
aGqbGvvkfji db '<27>q<EFBFBD>[<5B>v<EFBFBD><76><EFBFBD>j<EFBFBD>󂳂<EFBFBD><F382B382>Ă<EFBFBD><C482>킟',0
aGmbGhvkvVViv db '<27>m<EFBFBD>[<5B>h<EFBFBD><68><EFBFBD>݂‚<DD82><C282><EFBFBD><EFBFBD>Ȃ<EFBFBD><C882><EFBFBD>',0
aVVVL db '<27><><EFBFBD><EFBFBD><EFBFBD>͋󂫃u<F382AB83><75><EFBFBD>b<EFBFBD>N<EFBFBD>ł<EFBFBD><C582><EFBFBD>',0
; char s[]
s db '<27><><EFBFBD>ݎg<DD8E>p<EFBFBD><70><EFBFBD>̃u<CC83><75><EFBFBD>b<EFBFBD>N<EFBFBD><4E>',0
; char aB[]
aB@b@b@vVVriCVi db '<27>@<40>@<40>@<40><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>^<5E><><EFBFBD><EFBFBD>...',0Ah,0
; char aOldCoreleft7lu[]
aOldCoreleft7lu db 'old coreleft %7lu bytes free',0Ah,0
; char aCoreleft7luByt[]
aCoreleft7luByt db ' coreleft %7lu bytes free',0Ah,0
; char aKabe_nD[]
aKabe_nD db ' kabe_n = %d',0Ah,0
; char aPnl_nD[]
aPnl_nD db ' pnl_n = %d',0Ah,0
; char aPnl_nBuf7lu[]
aPnl_nBuf7lu db ' pnl_n buf = %7lu',0Ah,0
; char aB[]
aB@b@ptnD7lu db '<27>@<40>@ptn %d = %7lu',0Ah,0
; char aAllPtn7lu[]
aAllPtn7lu db 'all ptn = %7lu',0Ah,0
; char aKabeMem7lu[]
aKabeMem7lu db 'kabe mem = %7lu',0Ah,0
; char aMaskMem7u[]
aMaskMem7u db 'mask mem = %7u',0Ah,0
; char aOldPtn7lu[]
aOldPtn7lu db 'old - ptn = %7lu',0Ah,0
; char aEtcMem7ld[]
aEtcMem7ld db 'etc mem = %7ld',0Ah
db 0Ah,0
; char aZPtnFreeXBossF[]
aZPtnFreeXBossF db 'Z = PTN FREE, X = BOSS FREE, UP = TAMA DEL, DOWN = REWIRTE, ret = NODE CHEAK',0
aPtn db 'PTN ',0
aMask db 'MASK',0
aKabe db 'KABE',0
_esc_cursor_to_x0_y2 db 1Bh,'[3;0H',0
_esc_cursor_to_x59_y2 db 1Bh,'[3;60H',0
; char aHeapCheak[]
aHeapCheak db 'HEAP Cheak ',0
aEmpty db 'EMPTY ',0
; char aOk[]
aOk db 'OK ',0
; char aCorrupt[]
aCorrupt db 'CORRUPT ',0
_esc_cursor_to_x0_y1 db 1Bh,'[2;0H',0
; char aGx3d[]
aGx3d db 'gx = %3d',0
_esc_cursor_to_x0_y3 db 1Bh,'[4;0H',0
; char aKbhitDDirDSpDS[]
aKbhitDDirDSpDS db ' kbhit:%d,dir:%d, sp:%d, sh:%d, exit:%d, end:%d',0Ah,0
_esc_cursor_to_x0_y4 db 1Bh,'[5;0H',0
; char aMain7luRand7lu[]
aMain7luRand7lu db ' main:%7lu, rand:%7lu, bomb:%d, timer:%7lu',0Ah,0
; char aGogbgGtg[]
aGogbgGtg@gcglv db '<27>o<EFBFBD>b<EFBFBD>`<60>t<EFBFBD>@<40>C<EFBFBD><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>N<EFBFBD><4E><EFBFBD><EFBFBD><EFBFBD>Ă<EFBFBD>',0
; char aCGzgmgngg[]
aCGzgmgngg db '<27>ʃZ<CA83><5A><EFBFBD>N<EFBFBD>g',0Ah,0
; char aCRf[]
aCRf db '<27>ʐ<EFBFBD>',0
; char aD[]
aD db '%d',0
; char aSelect_flag[]
aSelect_flag db 'select_flag',0
; char aGegxgggvbGhbib[]
aGegxgggvbGhbib db '<27>e<EFBFBD>X<EFBFBD>g<EFBFBD><67><EFBFBD>[<5B>h<EFBFBD>I<EFBFBD>I',0Ah,0
; char aGfgogbgogvbGhb[]
aGfgogbgogvbGhb db '<27>f<EFBFBD>o<EFBFBD>b<EFBFBD>O<EFBFBD><4F><EFBFBD>[<5B>h<EFBFBD>I<EFBFBD>I',0Ah,0
aUmx db '<27><><EFBFBD><EFBFBD><EFBFBD>ˈ<EFBFBD>.<2E>`',0
; char aInit_mdt[]
aInit_mdt db 'init.mdt',0
; char aZigoku_mde[]
aZigoku_mde db 'zigoku.mde',0
; char a2[]
a2 db '2 :',0
; char src[]
src db 'boss1.grp',0
; char aPositive_mdt[]
aPositive_mdt db 'positive.mdt',0
; char aLegend_mdt[]
aLegend_mdt db 'LEGEND.mdt',0
; char aBoss2_grp[]
aBoss2_grp db 'boss2.grp',0
; char aBoss3_grp[]
aBoss3_grp db 'boss3.grp',0
; char aKami_mdt[]
aKami_mdt db 'kami.mdt',0
; char aBoss4_grp[]
aBoss4_grp db 'boss4.grp',0
; char aKami2_mdt[]
aKami2_mdt db 'kami2.mdt',0
; char aBoss5_grp[]
aBoss5_grp db 'boss5.grp',0
; char aTensi_mdt[]
aTensi_mdt db 'tensi.mdt',0
; char aAlice_mdt[]
aAlice_mdt db 'alice.mdt',0
aStg_b_ptn db 'stg_b.ptn',0
; char a3[]
a3 db '3 :',0
dbl_34FF5 dq -8.0
; char aFuuin[]
aFuuin db 'fuuin',0
; char aReiiden[]
aReiiden db 'reiiden',0
include th01/hiscore/routes[data].asm
; char aOp[3]
aOp db 'op',0
db 0
include th01/hardware/vsync[data].asm
include th01/hardware/ztext[data].asm
include th01/core/initexit[data].asm
include th01/hardware/palette[data].asm
include th01/hardware/graph_r[data].asm
include th01/hardware/respal[data].asm
include th01/formats/grp_ptn[data].asm
include th01/formats/grz[data].asm
include libs/master.lib/version[data].asm
include libs/master.lib/tx[data].asm
include libs/master.lib/grp[data].asm
include libs/master.lib/pal[data].asm
include libs/master.lib/respal_exist[data].asm
include libs/master.lib/resdata[data].asm
include libs/master.lib/fil[data].asm
include libs/master.lib/keytable[data].asm
include libs/master.lib/keystart[data].asm
include libs/master.lib/keyback[data].asm
include libs/master.lib/dos_ropen[data].asm
include libs/master.lib/clip[data].asm
include libs/master.lib/sin8[data].asm
include libs/master.lib/atan8[data].asm
include libs/master.lib/rand[data].asm
include th01/sprites/pellet_c.asp
public _res_id
_res_id db 'ReiidenConfig',0
include th01/sprites/ileave_m.asp
db 0
db 0FFh
include th01/sprites/laser_s.asp
include th01/snd/mdrv2[data].asm
public _ROUTE_SEL_1, _ROUTE_SEL_2, _ROUTE_SEL_3
public _ROUTE_SEL_4, _ROUTE_SEL_5
_ROUTE_SEL_1 db '<27>q<EFBFBD>n<EFBFBD>t<EFBFBD>m<EFBFBD>c<EFBFBD>@<40>P<EFBFBD>@<40>b<EFBFBD>k<EFBFBD>d<EFBFBD>`<60>q',0
_ROUTE_SEL_2 db '<27>b<EFBFBD><62><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>I<EFBFBD>I',0
_ROUTE_SEL_3 db '<27>r<EFBFBD><72><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@<40><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@<40>q<EFBFBD><71><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>',0
_ROUTE_SEL_4 db '<27><><EFBFBD>E<EFBFBD><45>',0
_ROUTE_SEL_5 db '<27>n<EFBFBD><6E><EFBFBD><EFBFBD>',0
evendata
dword_3573A dd 0FFBBFFEEh
off_3573E dd aVo
; "<22>O"
dd aVp ; "<22>P"
dd aVq ; "<22>Q"
dd aVr ; "<22>R"
dd aVs ; "<22>S"
dd aVt ; "<22>T"
dd aVu ; "<22>U"
dd aVv ; "<22>V"
dd aVw ; "<22>W"
dd aVx ; "<22>X"
dd aB@ ; "<22>@"
aClear3_grp db 'CLEAR3.grp',0
aNumb_ptn db 'numb.ptn',0
aVo db '<27>O',0
aVp db '<27>P',0
aVq db '<27>Q',0
aVr db '<27>R',0
aVs db '<27>S',0
aVt db '<27>T',0
aVu db '<27>U',0
aVv db '<27>V',0
aVw db '<27>W',0
aVx db '<27>X',0
aB@ db '<27>@',0
aSTAGE_COMPLETE db '<27>r<EFBFBD>s<EFBFBD>`<60>f<EFBFBD>d<EFBFBD>@<40>@<40>@<40>@<40>b<EFBFBD>n<EFBFBD>l<EFBFBD>o<EFBFBD>k<EFBFBD>d<EFBFBD>s<EFBFBD>d',0
aSTAGE_COMPLETE_NUM db '<27>@<40>@<40>@<40>@<40>O<EFBFBD>@',0
aB@b@vavnvmvtvr db '<27>@<40>@<40>a<EFBFBD>n<EFBFBD>m<EFBFBD>t<EFBFBD>r',0
aB@vsvivnveb@ db ' <20>@<40>s<EFBFBD><73><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@',0
aVbvpvovfvivovx db '<27>b<EFBFBD><62><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>',0
aVavpvnvvbxvovm db '<27>a<EFBFBD><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>o<EFBFBD><6F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>',0
aB@b@vrvsvVfvd db '<27>@<40>@<40>r<EFBFBD>s<EFBFBD>`<60>f<EFBFBD>d',0
aVavnvmvtvrb@vo db '<27>a<EFBFBD>n<EFBFBD>m<EFBFBD>t<EFBFBD>r<EFBFBD>@<40>o<EFBFBD><6F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>',0
aVgvivfb@vyb@vj db '<27>g<EFBFBD><67><EFBFBD><EFBFBD><EFBFBD>@<40>y<EFBFBD>@<40>j<EFBFBD><6A><EFBFBD><EFBFBD>',0
extern _arc_key:byte
extern _card_flip_cycle:byte
extern _default_grp_fn:byte
extern _default_bgm_fn:byte
extern _game_cleared:byte
extern _unused_boss_stage_flag:word
extern _pellet_destroy_score_delta:word
_INIT_ segment word public 'INITDATA' use16
db 1
db 20h
dd sub_E319
db 1
db 20h
dd sub_1240A
_INIT_ ends
.data?
CEntities macro name:req, count:req
public name
name label byte
dw count dup(?) ; left
dw count dup(?) ; top
endm
public _credit_bombs, _player_swing_deflection_frames
_credit_bombs db ?
_player_swing_deflection_frames db ?
public _frame_rand
_frame_rand dd ?
dword_36C1A dd ?
byte_36C1E db ?
public _mode_debug
_mode_debug db ?
dword_36C20 dd ?
include th01/main/player/player[bss].asm
include th01/main/player/orb[bss].asm
STAGEOBJ_W = PTN_W
STAGEOBJ_H = PTN_H
STAGEOBJS_X = (PLAYFIELD_W / STAGEOBJ_W)
STAGEOBJS_Y = (PLAYFIELD_H / STAGEOBJ_H)
STAGEOBJS_COUNT = (STAGEOBJS_X * STAGEOBJS_Y)
STAGEDAT_STAGE_SIZE = ((STAGEOBJS_COUNT) + (STAGEOBJS_COUNT / 4) + 5)
public _scene_stage
_scene_stage db (STAGEDAT_STAGE_SIZE * STAGES_PER_SCENE) dup(?)
include th01/main/player/anim[bss].asm
include th01/main/bullet/pellets[bss].asm
include th01/main/player/shot[bss].asm
db 4 dup(?)
public _input_prev, _palette_white, _bomb_palette_flash_bright
public _bomb_white_to_blue_speed
_input_prev db 16 dup (?)
_palette_white palette_t <?>
_bomb_palette_flash_bright palette_t <?>
_bomb_white_to_blue_speed db ?
KUJI_COUNT = 9
KUJI_RINGS = 2
public _bomb_entity
_bomb_entity label byte
dw ((KUJI_COUNT * KUJI_RINGS) + 9) dup (?) ; left
dw ((KUJI_COUNT * KUJI_RINGS) + 9) dup (?) ; top
db ? ; angle
include th01/main/player/inv_spr[bss].asm
dword_3880A dd ?
word_3880E dw ?
public _player_left_prev
_player_left_prev dw ?
include th01/hardware/vsync[bss].asm
db 256 dup(?)
include th01/core/initexit[bss].asm
include th01/hardware/graph[bss].asm
include th01/hardware/vram_planes[bss].asm
db 80 dup(?)
include th01/formats/grp_palette[bss].asm
include th01/formats/ptn_grz[bss].asm
include th01/formats/grp_buf[bss].asm
include libs/master.lib/pal[bss].asm
include libs/master.lib/fil[bss].asm
include libs/master.lib/keystart[bss].asm
include libs/master.lib/clip[bss].asm
public _resident
_resident dd ?
include th01/main/bullet/laser_s[bss].asm
include th01/hiscore/hiscore[bss].asm
db 4 dup(?)
CCards struc
C_left dd ?
C_top dd ?
C_flag dd ?
C_count dw ?
C_flip_frames dd ?
C_hp dd ?
CCards ends
CObstacles struc
O_left dd ?
O_top dd ?
O_type dd ?
O_frames dd ?
O_count dw ?
CObstacles ends
extern _stage_palette:palette_t
extern _hud_bg:dword
extern _hud_bg_size:word
extern _stage_timer:word
extern _stageobj_bgs:dword
extern _stageobj_bgs_size:dword
extern _cards:CCards
extern _obstacles:CObstacles
extern _cards_score:dword
extern _route:byte
end