; ; +-------------------------------------------------------------------------+ ; | This file has been generated by The Interactive Disassembler (IDA) | ; | Copyright (c) 2009 by Hex-Rays, | ; +-------------------------------------------------------------------------+ ; ; 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 ; "‚o‚`‚t‚r‚d" call _graph_putsa_fx c, 256, large ((7 or FX_WEIGHT_BLACK) shl 16) or 144, offset aB@nKjb@b@pic, ds ; "@ÄŠJ@@I—¹" call _graph_putsa_fx c, 256, large (7 shl 16) or 144, offset aBB@b@b@b@b@b@, ds ; "œ@@@@@@" 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 ; "œ" 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 ; "œ" 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 ; "–{“–‚ɏI—¹‚µ‚æ‚į‚¤‚ĢH" call _graph_putsa_fx c, 224, large ((7 or FX_WEIGHT_BLACK) shl 16) or 144, offset aB@vdvVVVgb@b@v, ds ; "@‚¤‚»‚Å‚·‚£@@‚Ķ‚¢‚Į" call _graph_putsa_fx c, 224, large (7 shl 16) or 144, offset aB, ds ; "œ" 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 ; "œ" 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 ; "œ" 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 ; "‚ƒ‚‚Ž‚”‚‰‚Ž‚•‚…H@@@ " call _graph_putsa_fx c, 0, ((FX_CLEAR_BG or (7 or FX_WEIGHT_BOLD)) shl 16) or 16, offset aVxvevub@b@B@, ds ; "‚x‚…‚“@@ @" call _graph_putsa_fx c, 0, ((FX_CLEAR_BG or (7 or FX_WEIGHT_BOLD)) shl 16) or 32, offset aVmvpb@b@B@, ds ; "‚m‚@@ @ " call _graph_putsa_fx c, 0, ((FX_CLEAR_BG or (1 or FX_WEIGHT_BOLD)) shl 16) or 48, offset aVxvevub@b@c@, ds ; "‚x‚…‚“@@@ " call _graph_putsa_fx c, 0, ((FX_CLEAR_BG or (1 or FX_WEIGHT_BOLD)) shl 16) or 64, offset aVmvpb@b@c@, ds ; "‚m‚@@@ " 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 ; "‚¢‚ā[‚ńAƒq[ƒv‚Ŗ‚½‚ń‚Č‚¢‚ķ" 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 ; "ƒq[ƒv‚Ŗ‚Ż‚Ā‚©‚ń‚Č‚¢‚ę‚£" jmp short loc_D0F1 ; --------------------------------------------------------------------------- loc_D0DB: push ds push offset aGqbGvvkfji ; "ƒq[ƒv‚Ŗ”j‰ó‚³‚ź‚Ä‚é‚ķ‚Ÿ" jmp short loc_D0F1 ; --------------------------------------------------------------------------- loc_D0E1: push ds push offset aGmbGhvkvVViv ; "ƒm[ƒh‚Ŗ‚Ż‚Ā‚©‚ń‚Č‚¢‚Ģ" jmp short loc_D0F1 ; --------------------------------------------------------------------------- loc_D0E7: push ds push offset aVVVL ; "‚±‚±‚Ķ‹ó‚«ƒuƒƒbƒN‚Å‚·‚ķ" jmp short loc_D0F1 ; --------------------------------------------------------------------------- loc_D0ED: push ds push offset s ; "Œ»ŻŽg—p’†‚ĢƒuƒƒbƒN‚ę" 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 ; "@@@‚±‚ź‚ą‰^–½‚©...\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 ; "@@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 ; "ƒoƒbƒ`ƒtƒ@ƒCƒ‹‚©‚ē‹N“®‚µ‚Ä‚ę" 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 ; "–ŹƒZƒŒƒNƒg\n" call _puts add sp, 4 push ds push offset aCRf ; "–Ź”" 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 ; "ƒeƒXƒgƒ‚[ƒhI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 ; "ƒfƒoƒbƒOƒ‚[ƒhI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 ; "“Œ•ūčĖˆŁ.“`" 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 ; "@@‚a‚n‚m‚t‚r" call _graph_putsa_fx c, 48, large ((7 or FX_WEIGHT_BOLD) shl 16) or 128, offset aB@vsvivnveb@, ds ; " @‚s‚‰‚‚…@" call _graph_putsa_fx c, 48, large ((7 or FX_WEIGHT_BOLD) shl 16) or 160, offset aVbvpvovfvivovx, ds ; "‚b‚‚Ž‚”‚‰‚Ž‚•‚‚•‚“" call _graph_putsa_fx c, 48, large ((7 or FX_WEIGHT_BOLD) shl 16) or 192, offset aVavpvnvvbxvovm, ds ; "‚a‚‚‚‚•‚o‚Œ‚‚™‚…‚’" call _graph_putsa_fx c, 48, large ((7 or FX_WEIGHT_BOLD) shl 16) or 224, offset aB@b@vrvsvVfvd, ds ; "@@‚r‚s‚`‚f‚d" call _graph_putsa_fx c, 48, large ((7 or FX_WEIGHT_BOLD) shl 16) or 256, offset aVavnvmvtvrb@vo, ds ; "‚a‚n‚m‚t‚r@‚o‚‚‰‚Ž‚”" call _graph_putsa_fx c, 160, large ((10 or FX_WEIGHT_BOLD) shl 16) or 288, offset aVgvivfb@vyb@vj, ds ; "‚g‚‰‚”@‚y@‚j‚…‚™" 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 '‚o‚`‚t‚r‚d',0 aB@nKjb@b@pic db '@ÄŠJ@@I—¹',0 aBB@b@b@b@b@b@ db 'œ@@@@@@',0 aB db 'œ',0 aCUcvPicVVVsvdv db '–{“–‚ɏI—¹‚µ‚æ‚į‚¤‚ĢH',0 aB@vdvVVVgb@b@v db '@‚¤‚»‚Å‚·‚£@@‚Ķ‚¢‚Į',0 aVgvpvovfvivovx db '‚ƒ‚‚Ž‚”‚‰‚Ž‚•‚…H@@@ ',0 aVxvevub@b@B@ db '‚x‚…‚“@@ @',0 aVmvpb@b@B@ db '‚m‚@@ @ ',0 aVxvevub@b@c@ db '‚x‚…‚“@@@ ',0 aVmvpb@b@c@ db '‚m‚@@@ ',0 ; char path[] path db 'REIIDEN',0 ; char aVvvtbV[] aVvvtbV db '‚¢‚ā[‚ńAƒq[ƒv‚Ŗ‚½‚ń‚Č‚¢‚ķ',0 ; char aS[3] aS db '%s',0 ; char aFp[] aFp db ' : [%Fp] -> ',0 aGqbGvvkvVViv db 'ƒq[ƒv‚Ŗ‚Ż‚Ā‚©‚ń‚Č‚¢‚ę‚£',0 aGqbGvvkfji db 'ƒq[ƒv‚Ŗ”j‰ó‚³‚ź‚Ä‚é‚ķ‚Ÿ',0 aGmbGhvkvVViv db 'ƒm[ƒh‚Ŗ‚Ż‚Ā‚©‚ń‚Č‚¢‚Ģ',0 aVVVL db '‚±‚±‚Ķ‹ó‚«ƒuƒƒbƒN‚Å‚·‚ķ',0 ; char s[] s db 'Œ»ŻŽg—p’†‚ĢƒuƒƒbƒN‚ę',0 ; char aB[] aB@b@b@vVVriCVi db '@@@‚±‚ź‚ą‰^–½‚©...',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 '@@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 'ƒoƒbƒ`ƒtƒ@ƒCƒ‹‚©‚ē‹N“®‚µ‚Ä‚ę',0 ; char aCGzgmgngg[] aCGzgmgngg db '–ŹƒZƒŒƒNƒg',0Ah,0 ; char aCRf[] aCRf db '–Ź”',0 ; char aD[] aD db '%d',0 ; char aSelect_flag[] aSelect_flag db 'select_flag',0 ; char aGegxgggvbGhbib[] aGegxgggvbGhbib db 'ƒeƒXƒgƒ‚[ƒhII',0Ah,0 ; char aGfgogbgogvbGhb[] aGfgogbgogvbGhb db 'ƒfƒoƒbƒOƒ‚[ƒhII',0Ah,0 aUmx db '“Œ•ūčĖˆŁ.“`',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 '‚q‚n‚t‚m‚c@‚P@‚b‚k‚d‚`‚q',0 _ROUTE_SEL_2 db '‚b‚‚Ž‚‡‚’‚‚”‚•‚Œ‚‚”‚‰‚‚ŽII',0 _ROUTE_SEL_3 db '‚r‚…‚Œ‚…‚ƒ‚”@‚Ž‚…‚˜‚”@‚q‚‚•‚Ž‚„',0 _ROUTE_SEL_4 db '–‚ŠE‚Ö',0 _ROUTE_SEL_5 db '’n–‚Ö',0 evendata dword_3573A dd 0FFBBFFEEh off_3573E dd aVo ; "‚O" dd aVp ; "‚P" dd aVq ; "‚Q" dd aVr ; "‚R" dd aVs ; "‚S" dd aVt ; "‚T" dd aVu ; "‚U" dd aVv ; "‚V" dd aVw ; "‚W" dd aVx ; "‚X" dd aB@ ; "@" aClear3_grp db 'CLEAR3.grp',0 aNumb_ptn db 'numb.ptn',0 aVo db '‚O',0 aVp db '‚P',0 aVq db '‚Q',0 aVr db '‚R',0 aVs db '‚S',0 aVt db '‚T',0 aVu db '‚U',0 aVv db '‚V',0 aVw db '‚W',0 aVx db '‚X',0 aB@ db '@',0 aSTAGE_COMPLETE db '‚r‚s‚`‚f‚d@@@@‚b‚n‚l‚o‚k‚d‚s‚d',0 aSTAGE_COMPLETE_NUM db '@@@@‚O@',0 aB@b@vavnvmvtvr db '@@‚a‚n‚m‚t‚r',0 aB@vsvivnveb@ db ' @‚s‚‰‚‚…@',0 aVbvpvovfvivovx db '‚b‚‚Ž‚”‚‰‚Ž‚•‚‚•‚“',0 aVavpvnvvbxvovm db '‚a‚‚‚‚•‚o‚Œ‚‚™‚…‚’',0 aB@b@vrvsvVfvd db '@@‚r‚s‚`‚f‚d',0 aVavnvmvtvrb@vo db '‚a‚n‚m‚t‚r@‚o‚‚‰‚Ž‚”',0 aVgvivfb@vyb@vj db '‚g‚‰‚”@‚y@‚j‚…‚™',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