; ; +-------------------------------------------------------------------------+ ; | 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/main/boss/entity_a.inc include th01/formats/cfg.inc include th01/sprites/main_grc.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 _delay: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_19 group main_19_TEXT, main_19__TEXT main_21 group main_21_TEXT, main_21__TEXT main_29 group main_29_TEXT, main_29__TEXT main_31 group main_31_TEXT, main_31__TEXT main_32 group main_32_TEXT, main_32__TEXT main_33 group main_33_TEXT, main_33__TEXT main_34 group main_34_TEXT, main_34__TEXT main_35 group main_35_TEXT, main_35__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 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame public _bomb_kuji_load _bomb_kuji_load proc far push bp mov bp, sp call _grc_load stdcall, GRC_SLOT_BOMB_KUJI_1, offset aKuzi1_grc, ds call _grc_load stdcall, GRC_SLOT_BOMB_KUJI_2, offset aKuzi2_grc, ds add sp, 0Ch pop bp retf _bomb_kuji_load endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame public _bomb_update_and_render _bomb_update_and_render proc far @@palette = byte ptr -32h var_2 = word ptr -2 @@frame = word ptr 6 enter 32h, 0 push si lea ax, [bp+@@palette] push ss push ax push ds push offset unk_34AA5 mov cx, 30h ; '0' call SCOPY@ mov _player_invincible, 1 cmp [bp+@@frame], 0 jnz loc_BF82 call @CPellets@decay$qv c, offset _Pellets, ds call _ptn_put_8 c, _player_left, (PTN_MIKO_L_CAST shl 16) or _player_top xor si, si jmp short loc_BF75 ; --------------------------------------------------------------------------- loc_BF15: mov [bp+var_2], 0 jmp short loc_BF6E ; --------------------------------------------------------------------------- loc_BF1C: mov bx, si imul bx, 3 add bx, [bp+var_2] mov al, _z_Palettes[bx] mov bx, si imul bx, 3 add bx, [bp+var_2] mov [bx+3D6Ch], al mov bx, si imul bx, 3 add bx, [bp+var_2] cbw cmp ax, 0Ah jle short loc_BF50 cmp [bp+var_2], 2 jnz short loc_BF4C mov al, 0Fh jmp short loc_BF4E ; --------------------------------------------------------------------------- loc_BF4C: mov al, 0Dh loc_BF4E: jmp short loc_BF5F ; --------------------------------------------------------------------------- loc_BF50: mov bx, si imul bx, 3 add bx, [bp+var_2] mov al, _z_Palettes[bx] add al, byte ptr [bp+var_2] loc_BF5F: mov bx, si imul bx, size rgb_t add bx, [bp+var_2] mov byte ptr palette_3873C[bx], al inc [bp+var_2] loc_BF6E: cmp [bp+var_2], size rgb_t jl short loc_BF1C inc si loc_BF75: cmp si, COLOR_COUNT jl short loc_BF15 mov byte_3876C, -1 jmp loc_C42E ; --------------------------------------------------------------------------- loc_BF82: cmp [bp+@@frame], 50 jge loc_C146 mov ax, [bp+@@frame] mov bx, 2 cwd idiv bx or dx, dx jnz short loc_BFC0 mov al, byte_38723 cbw push ax mov al, byte_38722 cbw push ax mov al, byte_3876C cbw pop dx add dx, ax push dx mov al, byte_38721 cbw push ax mov al, byte_3876C cbw pop dx add dx, ax push dx push 7 call _z_palette_set_show add sp, 8 loc_BFC0: mov ax, [bp+@@frame] mov bx, 4 cwd idiv bx or dx, dx jnz short loc_BFF1 mov ax, [bp+@@frame] mov bx, 80 cwd idiv bx mov bx, 40 mov ax, dx cwd idiv bx or ax, ax jnz short loc_BFE9 mov al, byte_3876C dec al jmp short loc_BFEE ; --------------------------------------------------------------------------- loc_BFE9: mov al, byte_3876C inc al loc_BFEE: mov byte_3876C, al loc_BFF1: mov ax, [bp+@@frame] mov bx, 2 cwd idiv bx or dx, dx jnz loc_C113 mov al, byte ptr [bp+@@frame] mov angle_387D9, al mov [bp+var_2], 0 jmp loc_C10B ; --------------------------------------------------------------------------- loc_C00E: mov si, [bp+var_2] jmp loc_C0F3 ; --------------------------------------------------------------------------- loc_C014: push (32 shl 16) or 48 mov bx, si add bx, bx push word ptr [bx+3E03h] mov bx, si add bx, bx push word ptr [bx+3DCDh] call _egc_copy_rect_1_to_0_16 add sp, 8 mov ax, [bp+var_2] imul ax, 0Ah mov dx, 1F4h sub dx, ax mov ax, [bp+@@frame] add ax, 60 shl ax, 2 sub dx, ax movsx eax, dx mov dl, angle_387D9 mov dh, 0 and dx, 255 add dx, dx mov bx, dx movsx edx, _CosTable8[bx] imul eax, edx sar eax, 8 add ax, 130h mov bx, si add bx, bx mov [bx+3DCDh], ax mov ax, [bp+var_2] imul ax, 0Ah mov dx, 1F4h sub dx, ax mov ax, [bp+@@frame] add ax, 60 shl ax, 2 sub dx, ax movsx eax, dx mov dl, angle_387D9 mov dh, 0 and dx, 255 add dx, dx mov bx, dx movsx edx, _SinTable8[bx] imul eax, edx sar eax, 8 add ax, 0B8h ; '¸' mov bx, si add bx, bx mov [bx+3E03h], ax mov ax, [bp+var_2] add ax, 8 cmp ax, si jz short loc_C0CA push 7 mov ax, si sub ax, [bp+var_2] push ax push GRC_SLOT_BOMB_KUJI_1 jmp short loc_C0D2 ; --------------------------------------------------------------------------- loc_C0CA: push 0 or (7 shl 16) ; (image) or (col) push GRC_SLOT_BOMB_KUJI_2 ; slot loc_C0D2: mov bx, si add bx, bx push word ptr [bx+3E03h] ; top mov bx, si add bx, bx push word ptr [bx+3DCDh] ; left call _grc_put_8 add sp, 0Ah inc si mov al, angle_387D9 add al, 1Ch mov angle_387D9, al loc_C0F3: mov ax, [bp+var_2] add ax, 9 cmp ax, si jg loc_C014 mov al, byte ptr [bp+@@frame] neg al mov angle_387D9, al add [bp+var_2], 9 loc_C10B: cmp [bp+var_2], 9 jle loc_C00E loc_C113: mov ax, [bp+@@frame] mov bx, 30 cwd idiv bx or dx, dx jnz short loc_C128 push 8 call _mdrv2_se_play pop cx loc_C128: mov ax, [bp+@@frame] mov bx, 10 cwd idiv bx or dx, dx jnz loc_C42E call @CPellets@decay$qv c, offset _Pellets, ds jmp loc_C42E ; --------------------------------------------------------------------------- loc_C146: cmp [bp+@@frame], 50 jnz short loc_C17C xor si, si jmp short loc_C16F ; --------------------------------------------------------------------------- loc_C150: push (32 shl 16) or 48 mov bx, si add bx, bx push word ptr [bx+3E03h] mov bx, si add bx, bx push word ptr [bx+3DCDh] call _egc_copy_rect_1_to_0_16 add sp, 8 inc si loc_C16F: cmp si, 12h jl short loc_C150 mov _bomb_damaging, 1 jmp loc_C42E ; --------------------------------------------------------------------------- loc_C17C: cmp [bp+@@frame], 50 jle loc_C3EE cmp [bp+@@frame], 140 jge loc_C3EE mov ax, [bp+@@frame] mov bx, 10 cwd idiv bx or dx, dx jnz short loc_C1A2 push 9 call _mdrv2_se_play pop cx loc_C1A2: mov ax, [bp+@@frame] mov bx, 4 cwd idiv bx or dx, dx jnz short loc_C1B6 push ss lea ax, [bp+@@palette] push ax jmp short loc_C1C8 ; --------------------------------------------------------------------------- loc_C1B6: mov ax, [bp+@@frame] mov bx, 4 cwd idiv bx cmp dx, 2 jnz short loc_C1D0 push ds push offset palette_3873C loc_C1C8: call _z_palette_set_all_show add sp, 4 loc_C1D0: mov ax, [bp+@@frame] mov bx, 16 cwd idiv bx or dx, dx jnz short loc_C1E2 push (RES_Y - 8) jmp short loc_C214 ; --------------------------------------------------------------------------- loc_C1E2: mov ax, [bp+@@frame] mov bx, 16 cwd idiv bx cmp dx, 4 jz short loc_C211 mov ax, [bp+@@frame] mov bx, 16 cwd idiv bx cmp dx, 8 jnz short loc_C203 push (RES_Y - 16) jmp short loc_C214 ; --------------------------------------------------------------------------- loc_C203: mov ax, [bp+@@frame] mov bx, 16 cwd idiv bx cmp dx, 0Ch jnz short loc_C21C loc_C211: push RES_Y loc_C214: call _z_vsync_wait_and_scrollup pop cx jmp short loc_C235 ; --------------------------------------------------------------------------- loc_C21C: mov ax, [bp+@@frame] mov bx, 8 cwd idiv bx or dx, dx jnz short loc_C235 call @CPellets@decay$qv c, offset _Pellets, ds loc_C235: xor si, si mov angle_387D9, 0 jmp loc_C38C ; --------------------------------------------------------------------------- loc_C23F: ; ... mov ax, [bp+@@frame] add ax, -50 imul ax, 6 cwde mov dl, angle_387D9 mov dh, 0 and dx, 255 add dx, dx mov bx, dx movsx edx, _CosTable8[bx] imul eax, edx sar eax, 8 add ax, 304 mov _square_left, ax mov ax, [bp+@@frame] add ax, -50 imul ax, 6 cwde mov dl, angle_387D9 mov dh, 0 and dx, 255 add dx, dx mov bx, dx movsx edx, _SinTable8[bx] imul eax, edx sar eax, 8 add ax, 184 mov _square_top, ax call @graph_invert_32x32_8$qiinuc c, _square_left, ax, large [_VRAM_PLANE_B] mov ax, [bp+@@frame] add ax, -50 imul ax, 7 cwde mov dl, angle_387D9 mov dh, 0 and dx, 255 add dx, dx mov bx, dx movsx edx, _CosTable8[bx] imul eax, edx sar eax, 8 add ax, 304 mov _square_left, ax mov ax, [bp+@@frame] add ax, -50 imul ax, 7 cwde mov dl, angle_387D9 mov dh, 0 and dx, 255 add dx, dx mov bx, dx movsx edx, _SinTable8[bx] imul eax, edx sar eax, 8 add ax, 184 mov _square_top, ax call @graph_invert_32x32_8$qiinuc c, _square_left, ax, large [_VRAM_PLANE_B] mov ax, [bp+@@frame] add ax, -50 shl ax, 3 cwde mov dl, angle_387D9 mov dh, 0 and dx, 255 add dx, dx mov bx, dx movsx edx, _CosTable8[bx] imul eax, edx sar eax, 8 add ax, 304 mov _square_left, ax mov ax, [bp+@@frame] add ax, -50 shl ax, 3 cwde mov dl, angle_387D9 mov dh, 0 and dx, 255 add dx, dx mov bx, dx movsx edx, _SinTable8[bx] imul eax, edx sar eax, 8 add ax, 184 mov _square_top, ax call @graph_invert_32x32_8$qiinuc c, _square_left, ax, large [_VRAM_PLANE_B] inc si mov al, angle_387D9 add al, 10h mov angle_387D9, al loc_C38C: cmp si, 10h jl loc_C23F mov ax, [bp+@@frame] mov bx, 20 cwd idiv bx or dx, dx jnz loc_C42E xor si, si jmp short loc_C3E7 ; --------------------------------------------------------------------------- loc_C3A6: mov [bp+var_2], 0 jmp short loc_C3E0 ; --------------------------------------------------------------------------- loc_C3AD: mov bx, si imul bx, size rgb_t add bx, [bp+var_2] mov al, byte ptr palette_3873C[bx] push ax mov bx, si imul bx, size rgb_t add bx, [bp+var_2] cbw cmp ax, 0Fh jge short loc_C3CC mov al, 1 jmp short loc_C3CE ; --------------------------------------------------------------------------- loc_C3CC: mov al, 0 loc_C3CE: pop dx add dl, al mov bx, si imul bx, size rgb_t add bx, [bp+var_2] mov byte ptr palette_3873C[bx], dl inc [bp+var_2] loc_C3E0: cmp [bp+var_2], size rgb_t jl short loc_C3AD inc si loc_C3E7: cmp si, COLOR_COUNT jl short loc_C3A6 jmp short loc_C42E ; --------------------------------------------------------------------------- loc_C3EE: cmp [bp+@@frame], 140 jnz short loc_C42E call _z_vsync_wait_and_scrollup stdcall, 0 pop cx push 1 call _graph_accesspage_func pop cx call _graph_copy_accessed_page_to_othe push 0 call _graph_accesspage_func pop cx call _z_palette_set_all_show c, offset _stage_palette, ds mov _player_invincibility_time, BOMB_INVINCIBILITY_FRAMES_AFTER mov _bomb_damaging, 0 mov ax, 1 jmp short loc_C430 ; --------------------------------------------------------------------------- loc_C42E: xor ax, ax loc_C430: pop si leave retf _bomb_update_and_render endp main_011_TEXT ends main_012_TEXT segment byte public 'CODE' use16 extern _stage_palette_set:proc extern _invincibility_sprites_update_and: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_GROUND 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 push 0 call sub_20E4C 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 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 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 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 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 c, large (128 shl 16) or 276, large (16 shl 16) or 80 call _egc_copy_rect_1_to_0_16 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 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 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 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 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 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 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 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 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 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 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 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 word_34AD4+1) mov cx, 0Ah call SCOPY@ call @items_bomb_reset$qv call @items_point_reset$qv call _ptn_put_8 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 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 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 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 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 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 _obstacle_count push ds push offset aKabe_nD ; " kabe_n = %d\n" call _printf add sp, 6 push _card_count push ds push offset aPnl_nD ; " pnl_n = %d\n" call _printf add sp, 6 movsx eax, _card_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 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 stdcall, si pop cx cmp si, 4 jge short loc_D4A8 call _bos_entity_free 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 pop bp retf ; --------------------------------------------------------------------------- loc_D4FA: call _yuugenmagan_free pop bp retf ; --------------------------------------------------------------------------- loc_D501: call @mima_free$qv pop bp retf ; --------------------------------------------------------------------------- loc_D508: call _kikuri_free 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 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ƒ‚[ƒhII\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ƒ‚[ƒhII\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 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 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 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 stdcall, PTN_SLOT_STG pop cx call _ptn_load 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 stdcall, PTN_SLOT_STG pop cx call _ptn_load 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 stdcall, 0 pop cx call _ptn_put_8 c, _player_left, large (PTN_MIKO_L shl 16) or _player_top call _ptn_put_8 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 ; '<' push 1 call sub_20E4C 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 sub_22F4A jmp short loc_DC3A ; --------------------------------------------------------------------------- loc_DC00: call sub_1FA7B 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 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 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 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 sub_22F4A jmp short loc_DD6B ; --------------------------------------------------------------------------- loc_DD43: call sub_1BA32 jmp short loc_DD6B ; --------------------------------------------------------------------------- loc_DD4A: call sub_1FA7B jmp short loc_DD6B ; --------------------------------------------------------------------------- loc_DD51: call sub_24722 jmp short loc_DD6B ; --------------------------------------------------------------------------- loc_DD58: call sub_27C39 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 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 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 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 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_left, 0 jz short loc_DFE0 call @$bdla$qnv c, large [_cards_left] mov _cards_left, 0 jmp short $+2 loc_DFE0: cmp _cards_top, 0 jz short loc_E000 call @$bdla$qnv c, large [_cards_top] mov _cards_top, 0 jmp short $+2 loc_E000: cmp _cards_flag, 0 jz short loc_E020 call @$bdla$qnv c, large [_cards_flag] mov _cards_flag, 0 jmp short $+2 loc_E020: cmp _cards_flip_frames, 0 jz short loc_E040 call @$bdla$qnv c, large [_cards_flip_frames] mov _cards_flip_frames, 0 jmp short $+2 loc_E040: cmp _cards_hp, 0 jz short loc_E060 call @$bdla$qnv c, large [_cards_hp] mov _cards_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_left, 0 jz short loc_E0A0 call @$bdla$qnv c, large [_obstacles_left] mov _obstacles_left, 0 jmp short $+2 loc_E0A0: cmp _obstacles_top, 0 jz short loc_E0C0 call @$bdla$qnv c, large [_obstacles_top] mov _obstacles_top, 0 jmp short $+2 loc_E0C0: cmp _obstacles_type, 0 jz short loc_E0E0 call @$bdla$qnv c, large [_obstacles_type] mov _obstacles_type, 0 jmp short $+2 loc_E0E0: cmp _obstacles_type_frames, 0 jz short loc_E101 call @$bdla$qnv c, large [_obstacles_type_frames] mov _obstacles_type_frames, 0 jmp loc_D7E4 ; --------------------------------------------------------------------------- loc_E101: jmp loc_D7E4 ; --------------------------------------------------------------------------- loc_E104: cmp _cards_left, 0 jz short loc_E124 call @$bdla$qnv c, large [_cards_left] mov _cards_left, 0 jmp short $+2 loc_E124: cmp _cards_top, 0 jz short loc_E144 call @$bdla$qnv c, large [_cards_top] mov _cards_top, 0 jmp short $+2 loc_E144: cmp _cards_flag, 0 jz short loc_E164 call @$bdla$qnv c, large [_cards_flag] mov _cards_flag, 0 jmp short $+2 loc_E164: cmp _cards_flip_frames, 0 jz short loc_E184 call @$bdla$qnv c, large [_cards_flip_frames] mov _cards_flip_frames, 0 jmp short $+2 loc_E184: cmp _cards_hp, 0 jz short loc_E1A4 call @$bdla$qnv c, large [_cards_hp] mov _cards_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_left, 0 jz short loc_E1E4 call @$bdla$qnv c, large [_obstacles_left] mov _obstacles_left, 0 jmp short $+2 loc_E1E4: cmp _obstacles_top, 0 jz short loc_E204 call @$bdla$qnv c, large [_obstacles_top] mov _obstacles_top, 0 jmp short $+2 loc_E204: cmp _obstacles_type, 0 jz short loc_E224 call @$bdla$qnv c, large [_obstacles_type] mov _obstacles_type, 0 jmp short $+2 loc_E224: cmp _obstacles_type_frames, 0 jz short loc_E244 call @$bdla$qnv c, large [_obstacles_type_frames] mov _obstacles_type_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 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 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:proc extern _game_switch_binary: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 _graph_r_vline:proc extern _graph_r_line_unput:proc extern _graph_r_line_patterned:proc extern _graph_r_line: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:proc SHARED ends ; =========================================================================== ; Segment type: Pure code PTN_GRP_GRZ segment byte public 'CODE' use16 extern _ptn_load:proc extern _ptn_free:proc extern _grp_palette_load_show_sane:proc extern _grp_palette_load_show:proc extern _grp_put:proc PTN_GRP_GRZ ends ; =========================================================================== ; Segment type: Pure code main_09_TEXT segment byte public 'CODE' use16 main_09_TEXT ends ; =========================================================================== ; Segment type: Pure code main_10_TEXT segment byte public 'CODE' use16 assume cs:main_10_TEXT ;org 0Ah 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_114CA proc far @@left = word ptr 6 @@top = word ptr 8 @@right = word ptr 0Ah @@bottom = word ptr 0Ch push bp mov bp, sp call _graph_r_line_unput c, [bp+@@left], [bp+@@top], [bp+@@right], [bp+@@bottom] pop bp retf sub_114CA endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_114E3 proc far @@left = word ptr 6 @@top = word ptr 8 @@right = word ptr 0Ah @@bottom = word ptr 0Ch @@col = word ptr 0Eh push bp mov bp, sp push si push di mov si, [bp+@@right] mov di, [bp+@@bottom] call _graph_r_line c, [bp+@@left], [bp+@@top], si, di, [bp+@@col] cmp si, _player_left jle short loc_11523 mov ax, _player_left add ax, 32 cmp ax, si jle short loc_11523 cmp di, 384 jle short loc_11523 cmp _player_invincible, 0 jnz short loc_11523 mov _done, 1 loc_11523: pop di pop si pop bp retf sub_114E3 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_11527 proc far @@left = word ptr 6 @@top = word ptr 8 @@right = word ptr 0Ah @@bottom = word ptr 0Ch @@col = word ptr 0Eh @@pattern = word ptr 10h push bp mov bp, sp push si push di mov si, [bp+@@right] mov di, [bp+@@bottom] call _graph_r_line_patterned c, [bp+@@left], [bp+@@top], si, di, [bp+@@col], [bp+@@pattern] cmp si, _player_left jle short loc_1156A mov ax, _player_left add ax, 32 cmp ax, si jle short loc_1156A cmp di, 384 jle short loc_1156A loc_1155E: cmp _player_invincible, 0 loc_11563: jnz short loc_1156A mov _done, 1 loc_1156A: pop di pop si pop bp retf sub_11527 endp main_10_TEXT ends ; =========================================================================== ; Segment type: Pure code main_11_TEXT segment byte public 'CODE' use16 extern @graph_invert_32x32_8$qiinuc:proc 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 main_13_TEXT segment byte public 'CODE' use16 extern _z_vsync_wait_and_scrollup:proc extern _graph_2xscale_byterect_1_to_0_sl:proc extern _egc_wave_unput:proc main_13_TEXT ends ; =========================================================================== main_14_TEXT segment byte public 'CODE' use16 extern _vector2_between:proc extern _vector2:proc main_14_TEXT ends ; =========================================================================== ; Segment type: Pure code main_15_TEXT segment byte public 'CODE' use16 extern @CShootoutLaser@spawn$qiiiiiiii:proc extern @CShootoutLaser@update_hittest_and_render$qv:proc include th01/main/bullet/laser_s.inc 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 extern @boss_defeat_animate$qv:proc main_17_TEXT ends ; =========================================================================== ; Segment type: Pure code main_18_TEXT segment byte public 'CODE' use16 assume cs:main_18_TEXT ;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_12BAB proc near @@left = word ptr -4 var_2 = word ptr -2 @@top = word ptr 4 arg_2 = word ptr 6 arg_4 = word ptr 8 enter 4, 0 push si push di mov di, [bp+arg_4] mov [bp+var_2], 0 mov ax, [bp+arg_2] shl ax, 4 add ax, 224 mov [bp+@@left], ax mov _ptn_unput_before_alpha_put, 1 xor si, si jmp short loc_12C27 ; --------------------------------------------------------------------------- loc_12BCE: mov ax, si mov bx, 4 cwd idiv bx push dx mov ax, si mov bx, 10 cwd idiv bx mov bx, 4 mov ax, dx cwd idiv bx add ax, ((7 * PTN_IMAGES_PER_SLOT) + 10) push ax push [bp+@@top] push [bp+@@left] call _ptn_put_quarter_8 add sp, 8 mov ax, si mov bx, 10 cwd idiv bx mov ax, di push dx cwd idiv bx pop ax cmp ax, dx jnz short loc_12C0F inc [bp+var_2] loc_12C0F: cmp [bp+var_2], 2 jge short loc_12C2C push 4 call _delay push 2 call _mdrv2_se_play add sp, 4 inc si loc_12C27: cmp si, 14h jl short loc_12BCE loc_12C2C: mov ax, di mov bx, 4 cwd idiv bx push dx mov ax, di mov bx, 10 cwd idiv bx mov bx, 4 mov ax, dx cwd idiv bx add ax, ((7 * PTN_IMAGES_PER_SLOT) + 10) push ax push [bp+@@top] push [bp+@@left] call _ptn_put_quarter_8 add sp, 8 mov _ptn_unput_before_alpha_put, 0 pop di pop si leave retn 6 sub_12BAB endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_12C62 proc near var_4 = word ptr -4 var_2 = word ptr -2 arg_0 = word ptr 4 arg_2 = word ptr 6 enter 4, 0 push si push di test byte ptr [bp+arg_2], 1 jz short loc_12C80 mov ax, [bp+arg_2] imul ax, 50h add ax, 4Ch ; 'L' mov si, ax mov [bp+var_2], 0FFFCh jmp short loc_12C8D ; --------------------------------------------------------------------------- loc_12C80: mov ax, [bp+arg_2] imul ax, 50h mov si, ax mov [bp+var_2], 4 loc_12C8D: mov [bp+var_4], 0 jmp short loc_12CCC ; --------------------------------------------------------------------------- loc_12C94: add si, [bp+var_2] les bx, _VRAM_PLANE_B add bx, si mov di, es:[bx] mov ax, si sub ax, [bp+var_2] mov bx, word ptr _VRAM_PLANE_B add bx, ax mov es:[bx], di mov bx, word ptr _VRAM_PLANE_B add bx, si mov di, es:[bx+2] mov ax, si sub ax, [bp+var_2] add ax, 2 mov bx, word ptr _VRAM_PLANE_B add bx, ax mov es:[bx], di inc [bp+var_4] loc_12CCC: cmp [bp+var_4], 13h jl short loc_12C94 cmp [bp+var_2], 0 jle short loc_12CE3 mov ax, [bp+arg_2] imul ax, 50h add ax, [bp+arg_0] jmp short loc_12CEF ; --------------------------------------------------------------------------- loc_12CE3: mov ax, [bp+arg_2] imul ax, 50h add ax, 4Ch ; 'L' sub ax, [bp+arg_0] loc_12CEF: mov [bp+var_4], ax push 1 call _graph_accesspage_func les bx, _VRAM_PLANE_B add bx, [bp+var_4] mov di, es:[bx] push 0 call _graph_accesspage_func les bx, _VRAM_PLANE_B add bx, si mov es:[bx], di push 1 call _graph_accesspage_func les bx, _VRAM_PLANE_B add bx, [bp+var_4] mov di, es:[bx+2] push 0 call _graph_accesspage_func add sp, 8 les bx, _VRAM_PLANE_B add bx, si mov es:[bx+2], di pop di pop si leave retn 4 sub_12C62 endp ; =============== 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 mov ax, si add ax, ax les bx, [bp+_font] add bx, ax push word ptr es:[bx] call sub_12C62 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 stdcall, offset aClear3_grp, ds ; "CLEAR3.grp" call _ptn_load 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 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 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 push ax pushd 56h ; 'V' call sub_12BAB 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 push ax push 10056h call sub_12BAB 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 push ax push 20056h call sub_12BAB mov eax, [bp+var_6] mov ebx, 10 cdq idiv ebx mov [bp+var_6], edx push word ptr [bp+var_6] push 30056h call sub_12BAB pushd 4 push 56h ; 'V' call sub_12BAB 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 push ax pushd 6Bh ; 'k' call sub_12BAB 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 push ax push 1006Bh call sub_12BAB 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 push ax push 2006Bh call sub_12BAB mov eax, [bp+var_6] mov ebx, 10 cdq idiv ebx mov [bp+var_6], edx push word ptr [bp+var_6] push 3006Bh call sub_12BAB pushd 4 push 6Bh ; 'k' call sub_12BAB 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 push ax pushd 80h call sub_12BAB 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 push ax push 10080h call sub_12BAB 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 push ax push 20080h call sub_12BAB mov eax, [bp+var_6] mov ebx, 10 cdq idiv ebx mov [bp+var_6], edx push word ptr [bp+var_6] push 30080h call sub_12BAB pushd 4 push 80h call sub_12BAB 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 push ax push 0FFFF0095h call sub_12BAB 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 push ax pushd 95h call sub_12BAB 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 push ax push 10095h call sub_12BAB 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 push ax push 20095h call sub_12BAB pushd 3 push 95h call sub_12BAB pushd 4 push 95h call sub_12BAB 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 push ax push 0FFFF00C4h call sub_12BAB mov ax, [bp+var_2] mov bx, 10 cwd idiv bx mov [bp+var_2], dx push dx pushd 0C4h ; 'Ä' call sub_12BAB mov ax, di mov bx, 1000 cwd idiv bx push ax push 100C4h call sub_12BAB mov ax, di mov bx, 1000 cwd idiv bx mov di, dx mov ax, di mov bx, 100 cwd idiv bx push ax push 200C4h call sub_12BAB mov ax, di mov bx, 100 cwd idiv bx mov di, dx mov ax, di mov bx, 10 cwd idiv bx push ax push 300C4h call sub_12BAB mov ax, di mov bx, 10 cwd idiv bx mov di, dx push dx push 400C4h call sub_12BAB 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 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:proc extern _scoredat_hiscore_get:proc main_19_TEXT ends main_19__TEXT segment byte public 'CODE' use16 assume cs:main_19 extern _scoredat_free:proc extern _regist: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 main_19:_scoredat_load call main_19:_scoredat_hiscore_get push dx push ax pop eax les bx, _resident assume es:nothing mov es:[bx+reiidenconfig_t.hiscore], eax call _scoredat_free 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 @CBossEntity@load_inner$qxnxci:proc extern @CBossEntity@metadata_get$xqmimuct1t1:proc extern @CBossEntity@put_8$xqiii:proc extern @CBossEntity@unput_and_put_8$xqiii:proc extern @CBossEntity@wave_put$xqiiiiii:proc extern @CBossEntity@pos_set$qiiiiiii:proc extern @CBossEntity@move_lock_unput_and_put_8$qiiii:proc extern @CBossEntity@move_lock_and_put_8$qiiii:proc extern @CBossEntity@hittest_orb$xqv:proc extern _bos_entity_free:proc main_21_TEXT ends main_21__TEXT segment byte public 'CODE' use16 assume cs:main_21 ;org 4 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_17041 proc far push bp mov bp, sp CBossEntity__ctor boss_entity_0 CBossEntity__ctor boss_entity_1 CBossEntity__ctor boss_entity_2 CBossEntity__ctor boss_entity_3 CBossEntity__ctor boss_entity_4 push seg main_21 push offset sub_17096 push 5 pushd 5 push size CBossEntity push ds push offset _boss_entities_unused call @_vector_new_$qnvuiuluie ; _vector_new_(void *,uint,ulong,uint,...) add sp, 10h pop bp retf sub_17041 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_17096 proc far arg_0 = dword ptr 6 push bp mov bp, sp cmp [bp+arg_0], 0 jnz short loc_170B2 push 32h ; '2' call @$bnew$qui ; operator new(uint) pop cx mov word ptr [bp+arg_0+2], dx mov word ptr [bp+arg_0], ax or ax, dx jz short loc_170C0 loc_170B2: les bx, [bp+arg_0] mov word ptr es:[bx+2Ah], 0 mov byte ptr es:[bx+30h], 0 loc_170C0: mov dx, word ptr [bp+arg_0+2] loc_170C3: mov ax, word ptr [bp+arg_0] pop bp retf sub_17096 endp main_21__TEXT ends ; =========================================================================== ; Segment type: Pure code main_22_TEXT segment byte public 'CODE' use16 assume cs:main_22_TEXT ;org 8 assume es:nothing, ss:nothing, ds:_DATA, fs:nothing, gs:nothing include th01/formats/pf.asm main_22_TEXT ends ; =========================================================================== ; Segment type: Pure code main_23_TEXT segment byte public 'CODE' use16 extern _grc_load:proc extern _grc_put_8:proc 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_add$qi:proc extern @items_bomb_render$qv:proc extern @items_bomb_reset$qv:proc extern @items_bomb_unput_update_render$qv:proc extern @items_point_add$qi:proc extern @items_point_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:proc extern _ptn_put_8:proc extern _ptn_put_quarter_8:proc extern _player_unput_update_render:proc OR_NONE = 0 extern @orb_player_hittest$qi:proc extern _player_miss_animate_and_update:proc main_27_TEXT ends ; =========================================================================== ; Segment type: Pure code main_28_TEXT segment byte public 'CODE' use16 assume cs:main_28_TEXT ;org 0Fh assume es:nothing, ss:nothing, ds:_DATA, fs:nothing, gs:nothing eye_0 equ eye_1 equ eye_2 equ eye_3 equ eye_4 equ eye_west equ eye_east equ eye_southwest equ eye_southeast equ eye_north equ PTN_SLOT_MISSILE = PTN_SLOT_BOSS_1 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame public _yuugenmagan_load _yuugenmagan_load proc c local @@template_east:CBossEntity local @@template_southwest:CBossEntity local @@template_southeast:CBossEntity local @@template_north:CBossEntity CBossEntity__load eye_west, 0, aBoss2_bos CBossEntity__copy @@template_east, eye_west push ds push offset eye_east.BE_h push ds push offset eye_east.BE_vram_w push ds push offset eye_east.BE_bos_slot push ds push offset eye_east.BE_bos_image_count push ss lea ax, @@template_east push ax call @CBossEntity@metadata_get$xqmimuct1t1 CBossEntity__copy @@template_southwest, eye_west push ds push offset eye_southwest.BE_h push ds push offset eye_southwest.BE_vram_w push ds push offset eye_southwest.BE_bos_slot push ds push offset eye_southwest.BE_bos_image_count push ss lea ax, @@template_southwest push ax call @CBossEntity@metadata_get$xqmimuct1t1 add sp, 32h CBossEntity__copy @@template_southeast, eye_west push ds push offset eye_southeast.BE_h push ds push offset eye_southeast.BE_vram_w push ds push offset eye_southeast.BE_bos_slot push ds push offset eye_southeast.BE_bos_image_count push ss lea ax, @@template_southeast push ax call @CBossEntity@metadata_get$xqmimuct1t1 CBossEntity__copy @@template_north, eye_west push ds push offset eye_north.BE_h push ds push offset eye_north.BE_vram_w push ds push offset eye_north.BE_bos_slot push ds push offset eye_north.BE_bos_image_count push ss lea ax, @@template_north push ax call @CBossEntity@metadata_get$xqmimuct1t1 nopcall sub_1B383 call _ptn_load stdcall, PTN_SLOT_MISSILE, offset aBoss3_m_ptn, ds ; "boss3_m.ptn" mov _Missiles.MISSILE_ptn_id_base, (PTN_SLOT_MISSILE * PTN_IMAGES_PER_SLOT) call @CMissiles@reset$qv stdcall, offset _Missiles, ds add sp, 32h ret _yuugenmagan_load endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_1B383 proc far push bp mov bp, sp push si push di call _grp_palette_load_show c, offset aBoss2_grp_0, ds ; "boss2.grp" call @boss_palette_snap$qv mov eye_0.BE_bos_image, 0 mov eye_1.BE_bos_image, 0 mov eye_2.BE_bos_image, 0 mov eye_3.BE_bos_image, 0 mov eye_4.BE_bos_image, 0 xor si, si jmp short loc_1B3D8 ; --------------------------------------------------------------------------- loc_1B3BB: xor di, di jmp short loc_1B3D2 ; --------------------------------------------------------------------------- loc_1B3BF: mov bx, si imul bx, size rgb_t mov al, _z_Palettes[bx+di] mov bx, si imul bx, size rgb_t mov byte ptr _boss_post_defeat_palette[bx+di], al inc di loc_1B3D2: cmp di, size rgb_t jl short loc_1B3BF inc si loc_1B3D8: cmp si, COLOR_COUNT jl short loc_1B3BB call @CBossEntity@pos_set$qiiiiiii stdcall, offset eye_west, ds, 64, large 128 or (48 shl 16), large 0 or (736 shl 16), large 64 or (304 shl 16) call @CBossEntity@pos_set$qiiiiiii stdcall, offset eye_east, ds, 512, large 128 or (48 shl 16), large 0 or (736 shl 16), large 64 or (304 shl 16) add sp, 24h call @CBossEntity@pos_set$qiiiiiii stdcall, offset eye_southwest, ds, 192, large 176 or (48 shl 16), large 0 or (736 shl 16), large 64 or (304 shl 16) call @CBossEntity@pos_set$qiiiiiii stdcall, offset eye_southeast, ds, 384, large 176 or (48 shl 16), large 0 or (736 shl 16), large 64 or (304 shl 16) add sp, 24h call @CBossEntity@pos_set$qiiiiiii stdcall, offset eye_north, ds, 288, large 64 or (48 shl 16), large 0 or (736 shl 16), large 64 or (304 shl 16) CBossEntity__hitbox_set eye_0, 12, 12, 52, 32 CBossEntity__hitbox_set eye_1, 12, 12, 52, 32 CBossEntity__hitbox_set eye_2, 12, 12, 52, 32 CBossEntity__hitbox_set eye_3, 12, 12, 52, 32 CBossEntity__hitbox_set eye_4, 12, 12, 52, 32 mov eye_0.BE_hitbox_orb_inactive, 1 mov eye_1.BE_hitbox_orb_inactive, 1 mov eye_2.BE_hitbox_orb_inactive, 1 mov eye_3.BE_hitbox_orb_inactive, 1 mov eye_4.BE_hitbox_orb_inactive, 1 mov _boss_phase_frame, 0 mov _boss_phase, 0 mov _boss_hp, 16 mov _hud_hp_first_white, 12 mov _hud_hp_first_redwhite, 8 call @particles_unput_update_render$q17particle_origin_ti stdcall, large PO_INITIALIZE or (V_WHITE shl 16) add sp, 16h pop di pop si pop bp retf sub_1B383 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_1B53D proc far var_A = word ptr -0Ah var_8 = qword ptr -8 arg_0 = word ptr 6 arg_2 = word ptr 8 arg_4 = dword ptr 0Ah enter 0Ah, 0 mov ax, [bp+arg_2] sub ax, [bp+arg_0] mov [bp+var_A], ax fild [bp+var_A] fstp [bp+var_8] pushd 3 fwait call isqrt mov [bp+var_A], ax fild [bp+var_A] fmul [bp+var_8] fdiv flt_35B76 call ftol@ les bx, [bp+arg_4] mov es:[bx], ax leave retf sub_1B53D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame public _yuugenmagan_free _yuugenmagan_free proc far push bp mov bp, sp call _bos_entity_free stdcall, 0 call _ptn_free stdcall, PTN_SLOT_MISSILE add sp, 4 pop bp retf _yuugenmagan_free endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_1B58F proc far push bp mov bp, sp cmp _boss_phase_frame, 160 jle loc_1B6CB cmp _boss_phase_frame, 300 jge short loc_1B60E push (7 shl 16) or 398 mov ax, eye_west.BE_cur_top add ax, 28 push ax mov ax, eye_west.BE_cur_left add ax, 28 push ax call _graph_r_vline push (7 shl 16) or 398 mov ax, eye_east.BE_cur_top add ax, 28 push ax mov ax, eye_east.BE_cur_left add ax, 28 push ax call _graph_r_vline add sp, 10h mov ax, eye_west.BE_cur_left add ax, 4 cmp ax, _player_left jge short loc_1B5F1 mov ax, eye_west.BE_cur_left add ax, 20 cmp ax, _player_left jg short loc_1B609 loc_1B5F1: mov ax, eye_east.BE_cur_left add ax, 4 cmp ax, _player_left jge short loc_1B60E mov ax, eye_east.BE_cur_left add ax, 44 cmp ax, _player_left jle short loc_1B60E loc_1B609: mov _done, 1 loc_1B60E: cmp _boss_phase_frame, 180 jle loc_1B6CB cmp _boss_phase_frame, 320 jge short loc_1B68A push (7 shl 16) or 398 mov ax, eye_southwest.BE_cur_top add ax, 28 push ax mov ax, eye_southwest.BE_cur_left add ax, 28 push ax call _graph_r_vline push (7 shl 16) or 398 mov ax, eye_southeast.BE_cur_top add ax, 28 push ax mov ax, eye_southeast.BE_cur_left add ax, 28 push ax call _graph_r_vline add sp, 10h mov ax, eye_southwest.BE_cur_left add ax, 4 cmp ax, _player_left jge short loc_1B66D mov ax, eye_southwest.BE_cur_left add ax, 20 cmp ax, _player_left jg short loc_1B685 loc_1B66D: mov ax, eye_southeast.BE_cur_left add ax, 4 cmp ax, _player_left jge short loc_1B68A mov ax, eye_southeast.BE_cur_left add ax, 20 cmp ax, _player_left jle short loc_1B68A loc_1B685: mov _done, 1 loc_1B68A: cmp _boss_phase_frame, 200 jle short loc_1B6CB push (7 shl 16) or 398 mov ax, eye_north.BE_cur_top add ax, 28 push ax mov ax, eye_north.BE_cur_left add ax, 28 push ax call _graph_r_vline add sp, 8 mov ax, eye_north.BE_cur_left add ax, 4 cmp ax, _player_left jge short loc_1B6CB mov ax, eye_north.BE_cur_left add ax, 20 cmp ax, _player_left jle short loc_1B6CB mov _done, 1 loc_1B6CB: cmp _player_invincible, 0 jz short loc_1B6D7 mov _done, 0 loc_1B6D7: pop bp retf sub_1B58F endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_1B6D9 proc far push bp mov bp, sp mov ax, _boss_phase_frame cwd idiv word_39DE4 cmp dx, 10 jnz short loc_1B70E push PG_2_SPREAD_WIDE_AIMED or (((1 shl 4) + 8) shl 16) mov ax, eye_west.BE_cur_top add ax, 32 push ax mov ax, eye_west.BE_cur_left add ax, 28 push ax push ds push offset _Pellets call @CPellets@add_group$qii14pellet_group_ti add sp, 0Ch push (1 shl 4) + 8 jmp loc_1B7D1 ; --------------------------------------------------------------------------- loc_1B70E: mov ax, _boss_phase_frame cwd idiv word_39DE4 cmp dx, 25 jnz short loc_1B740 push PG_2_SPREAD_WIDE_AIMED or (((1 shl 4) + 12) shl 16) mov ax, eye_west.BE_cur_top add ax, 32 push ax mov ax, eye_west.BE_cur_left add ax, 28 push ax push ds push offset _Pellets call @CPellets@add_group$qii14pellet_group_ti add sp, 0Ch push (1 shl 4) + 12 jmp loc_1B7D1 ; --------------------------------------------------------------------------- loc_1B740: mov ax, _boss_phase_frame cwd idiv word_39DE4 cmp dx, 40 jnz short loc_1B771 push PG_2_SPREAD_WIDE_AIMED or ((2 shl 4) shl 16) mov ax, eye_west.BE_cur_top add ax, 32 push ax mov ax, eye_west.BE_cur_left add ax, 28 push ax push ds push offset _Pellets call @CPellets@add_group$qii14pellet_group_ti add sp, 0Ch push (2 shl 4) jmp short loc_1B7D1 ; --------------------------------------------------------------------------- loc_1B771: mov ax, _boss_phase_frame cwd idiv word_39DE4 cmp dx, 60 jnz short loc_1B7A2 push PG_2_SPREAD_WIDE_AIMED or (((2 shl 4) + 12) shl 16) mov ax, eye_west.BE_cur_top add ax, 32 push ax mov ax, eye_west.BE_cur_left add ax, 28 push ax push ds push offset _Pellets call @CPellets@add_group$qii14pellet_group_ti add sp, 0Ch push (2 shl 4) + 12 jmp short loc_1B7D1 ; --------------------------------------------------------------------------- loc_1B7A2: mov ax, _boss_phase_frame cwd idiv word_39DE4 cmp dx, 80 jnz short loc_1B7D5 push PG_2_SPREAD_WIDE_AIMED or (((3 shl 4) + 2) shl 16) mov ax, eye_west.BE_cur_top add ax, 32 push ax mov ax, eye_west.BE_cur_left add ax, 28 push ax push ds push offset _Pellets call @CPellets@add_group$qii14pellet_group_ti add sp, 0Ch push (3 shl 4) + 2 loc_1B7D1: push PG_2_SPREAD_WIDE_AIMED jmp short loc_1B808 ; --------------------------------------------------------------------------- loc_1B7D5: mov ax, _boss_phase_frame cwd idiv word_39DE4 cmp dx, 110 jnz short loc_1B822 push PG_1_AIMED or (((4 shl 4) + 4) shl 16) mov ax, eye_west.BE_cur_top add ax, 32 push ax mov ax, eye_west.BE_cur_left add ax, 28 push ax push ds push offset _Pellets call @CPellets@add_group$qii14pellet_group_ti add sp, 0Ch push PG_1_AIMED or (((4 shl 4) + 4) shl 16) loc_1B808: mov ax, eye_east.BE_cur_top add ax, 32 push ax mov ax, eye_east.BE_cur_left add ax, 28 push ax push ds push offset _Pellets call @CPellets@add_group$qii14pellet_group_ti add sp, 0Ch loc_1B822: pop bp retf sub_1B6D9 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_1B824 proc near var_18 = qword ptr -18h var_10 = qword ptr -10h var_6 = word ptr -6 @@vector_x = word ptr -4 @@vector_y = word ptr -2 arg_0 = word ptr 4 arg_2 = word ptr 6 enter 6, 0 push [bp+arg_2] push 8 push ss lea ax, [bp+@@vector_y] push ax push ss lea ax, [bp+@@vector_x] push ax call _vector2 add sp, 0Ch push 0 ; char mov ax, [bp+@@vector_y] mov [bp+var_6], ax fild [bp+var_6] sub sp, 8 fstp [bp+var_10] fwait mov ax, [bp+@@vector_x] mov [bp+var_6], ax fild [bp+var_6] sub sp, 8 fstp [bp+var_18] fwait mov ax, eye_southwest.BE_cur_top add ax, 28 push ax ; int mov ax, eye_southwest.BE_cur_left add ax, 28 push ax ; int push ds push offset _Missiles ; this call sub_21C0D add sp, 1Ah push [bp+arg_0] push 8 push ss lea ax, [bp+@@vector_y] push ax push ss lea ax, [bp+@@vector_x] push ax call _vector2 add sp, 0Ch push 0 ; char mov ax, [bp+@@vector_y] mov [bp+var_6], ax fild [bp+var_6] sub sp, 8 fstp [bp+var_10] fwait mov ax, [bp+@@vector_x] mov [bp+var_6], ax fild [bp+var_6] sub sp, 8 fstp [bp+var_18] fwait mov ax, eye_southeast.BE_cur_top add ax, 28 push ax ; int mov ax, eye_southeast.BE_cur_left add ax, 28 push ax ; int push ds push offset _Missiles ; this call sub_21C0D add sp, 1Ah leave retn 4 sub_1B824 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_1B8DE proc near arg_0 = word ptr 4 push bp mov bp, sp push si push di mov di, [bp+arg_0] call sub_114CA stdcall, x_39DE6, y_39DF0, x_39DEA, y_39DF4 call sub_114CA stdcall, x_39DEA, y_39DF4, x_39DEE, y_39DF8 call sub_114CA stdcall, x_39DEE, y_39DF8, x_39DE8, y_39DF2 call sub_114CA stdcall, x_39DE8, y_39DF2, x_39DEC, y_39DF6 call sub_114CA stdcall, x_39DEC, y_39DF6, x_39DE6, y_39DF0 add sp, 28h xor si, si jmp short loc_1B9B1 ; --------------------------------------------------------------------------- loc_1B956: movsx eax, word_39DFA mov bx, si imul bx, 33h add bx, di and bx, 255 add bx, bx movsx edx, _CosTable8[bx] imul eax, edx sar eax, 8 add ax, point_39DFC.x mov bx, si add bx, bx mov [bx+5446h], ax movsx eax, word_39DFA mov bx, si imul bx, 33h add bx, di and bx, 255 add bx, bx movsx edx, _SinTable8[bx] imul eax, edx sar eax, 8 add ax, point_39DFC.y mov bx, si add bx, bx mov [bx+5450h], ax inc si loc_1B9B1: cmp si, 5 jl short loc_1B956 call sub_114E3 stdcall, x_39DE6, y_39DF0, x_39DEA, y_39DF4, 7 call sub_114E3 stdcall, x_39DEA, y_39DF4, x_39DEE, y_39DF8, 7 call sub_114E3 stdcall, x_39DEE, y_39DF8, x_39DE8, y_39DF2, 7 call sub_114E3 stdcall, x_39DE8, y_39DF2, x_39DEC, y_39DF6, 7 call sub_114E3 stdcall, x_39DEC, y_39DF6, x_39DE6, y_39DF0, 7 add sp, 32h pop di pop si pop bp retn 2 sub_1B8DE endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_1BA32 proc far var_32 = word ptr -32h var_30 = word ptr -30h var_2E = word ptr -2Eh var_2C = word ptr -2Ch var_2A = word ptr -2Ah var_28 = word ptr -28h var_26 = word ptr -26h var_24 = word ptr -24h var_22 = word ptr -22h var_20 = word ptr -20h var_1E = word ptr -1Eh var_1C = word ptr -1Ch @@left = word ptr -1Ah var_18 = word ptr -18h var_16 = word ptr -16h var_14 = word ptr -14h 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 = word ptr -8 var_6 = word ptr -6 var_4 = word ptr -4 @@invincibility_flash_colors = word ptr -2 enter 32h, 0 push si mov ax, word ptr _yuugenmagan_invincibility_flash_colors mov [bp+@@invincibility_flash_colors], ax call @CMissiles@unput_update_render$qv c, offset _Missiles, ds cmp _boss_phase, 0 jnz loc_1BEC0 cmp _yuugenmagan_initial_hp_rendered, 0 jnz short loc_1BA6C call @hud_hp_render$qii c, _boss_hp, _boss_phase_frame mov _yuugenmagan_initial_hp_rendered, al loc_1BA6C: inc _boss_phase_frame call @CBossEntity@move_lock_unput_and_put_8$qiiii stdcall, offset eye_0, ds, large 0 or (0 shl 16), large 0 or (3 shl 16) call @CBossEntity@move_lock_unput_and_put_8$qiiii stdcall, offset eye_1, ds, large 0 or (0 shl 16), large 0 or (3 shl 16) call @CBossEntity@move_lock_unput_and_put_8$qiiii stdcall, offset eye_2, ds, large 0 or (0 shl 16), large 0 or (3 shl 16) call @CBossEntity@move_lock_unput_and_put_8$qiiii stdcall, offset eye_3, ds, large 0 or (0 shl 16), large 0 or (3 shl 16) add sp, 30h call @CBossEntity@move_lock_unput_and_put_8$qiiii c, offset eye_4, ds, large 0 or (0 shl 16), large 0 or (3 shl 16) call sub_1B58F mov ax, _boss_phase_frame mov bx, 40 cwd idiv bx or dx, dx jnz short loc_1BAFD inc _z_Palettes[15 * 3].r inc _z_Palettes[15 * 3].g inc _stage_palette[15 * size rgb_t].r inc _stage_palette[15 * size rgb_t].g call _z_palette_set_all_show c, offset _stage_palette, ds loc_1BAFD: cmp _boss_phase_frame, 100 jnz short loc_1BB1F mov eye_west.BE_bos_image, 1 mov eye_east.BE_bos_image, 1 mov eye_west.BE_hitbox_orb_inactive, 0 mov eye_east.BE_hitbox_orb_inactive, 0 jmp loc_1DFFC ; --------------------------------------------------------------------------- loc_1BB1F: cmp _boss_phase_frame, 120 jnz short loc_1BB4D mov eye_west.BE_bos_image, 2 mov eye_east.BE_bos_image, 2 mov eye_southwest.BE_bos_image, 1 mov eye_southeast.BE_bos_image, 1 mov eye_southwest.BE_hitbox_orb_inactive, 0 mov eye_southeast.BE_hitbox_orb_inactive, 0 jmp loc_1DFFC ; --------------------------------------------------------------------------- loc_1BB4D: cmp _boss_phase_frame, 140 jnz short loc_1BB7C mov eye_west.BE_bos_image, 6 mov eye_east.BE_bos_image, 6 mov eye_southwest.BE_bos_image, 2 mov eye_southeast.BE_bos_image, 2 mov eye_north.BE_bos_image, 1 mov eye_north.BE_hitbox_orb_inactive, 0 jmp loc_1DFFC ; --------------------------------------------------------------------------- loc_1BB7C: cmp _boss_phase_frame, 160 jnz short loc_1BBA5 mov eye_west.BE_bos_image, 3 mov eye_east.BE_bos_image, 3 mov eye_southwest.BE_bos_image, 6 mov eye_southeast.BE_bos_image, 6 mov eye_north.BE_bos_image, 2 jmp loc_1DFFC ; --------------------------------------------------------------------------- loc_1BBA5: cmp _boss_phase_frame, 180 jnz short loc_1BBC2 mov eye_southwest.BE_bos_image, 3 mov eye_southeast.BE_bos_image, 3 mov eye_north.BE_bos_image, 6 jmp loc_1DFFC ; --------------------------------------------------------------------------- loc_1BBC2: cmp _boss_phase_frame, 200 jnz short loc_1BBD3 mov eye_north.BE_bos_image, 3 jmp loc_1DFFC ; --------------------------------------------------------------------------- loc_1BBD3: cmp _boss_phase_frame, 240 jnz loc_1BC8C mov eye_0.BE_bos_image, 2 mov eye_1.BE_bos_image, 2 mov eye_2.BE_bos_image, 2 mov eye_3.BE_bos_image, 2 mov eye_4.BE_bos_image, 2 mov eye_0.BE_hitbox_orb_inactive, 1 mov eye_1.BE_hitbox_orb_inactive, 1 mov eye_2.BE_hitbox_orb_inactive, 1 mov eye_3.BE_hitbox_orb_inactive, 1 mov eye_4.BE_hitbox_orb_inactive, 1 mov al, _rank cbw cmp ax, 2 jnz loc_1DFFC push PG_5_SPREAD_WIDE_AIMED or (((3 shl 4) + 6) shl 16) mov ax, eye_north.BE_cur_top add ax, 28 push ax mov ax, eye_north.BE_cur_left add ax, 28 push ax push ds push offset _Pellets call @CPellets@add_group$qii14pellet_group_ti push PG_5_SPREAD_WIDE_AIMED or (((3 shl 4) + 6) shl 16) mov ax, eye_southeast.BE_cur_top add ax, 28 push ax mov ax, eye_southeast.BE_cur_left add ax, 28 push ax push ds push offset _Pellets call @CPellets@add_group$qii14pellet_group_ti push PG_5_SPREAD_WIDE_AIMED or (((3 shl 4) + 6) shl 16) mov ax, eye_southwest.BE_cur_top add ax, 28 push ax mov ax, eye_southwest.BE_cur_left add ax, 28 push ax push ds push offset _Pellets call @CPellets@add_group$qii14pellet_group_ti add sp, 24h mov al, _rank cbw cmp ax, 3 jnz loc_1DFFC jmp loc_1BD19 ; --------------------------------------------------------------------------- loc_1BC8C: cmp _boss_phase_frame, 260 jnz loc_1BD59 mov eye_west.BE_bos_image, 1 mov eye_east.BE_bos_image, 1 mov eye_southwest.BE_bos_image, 1 mov eye_southeast.BE_bos_image, 1 mov eye_north.BE_bos_image, 1 mov al, _rank cbw cmp ax, 3 jnz loc_1DFFC push PG_5_SPREAD_WIDE_AIMED or (((3 shl 4) + 6) shl 16) mov ax, eye_north.BE_cur_top add ax, 28 push ax mov ax, eye_north.BE_cur_left add ax, 28 push ax push ds push offset _Pellets call @CPellets@add_group$qii14pellet_group_ti push PG_5_SPREAD_WIDE_AIMED or (((3 shl 4) + 6) shl 16) mov ax, eye_southeast.BE_cur_top add ax, 28 push ax mov ax, eye_southeast.BE_cur_left add ax, 28 push ax push ds push offset _Pellets call @CPellets@add_group$qii14pellet_group_ti push PG_5_SPREAD_WIDE_AIMED or (((3 shl 4) + 6) shl 16) mov ax, eye_southwest.BE_cur_top add ax, 28 push ax mov ax, eye_southwest.BE_cur_left add ax, 28 push ax push ds push offset _Pellets call @CPellets@add_group$qii14pellet_group_ti add sp, 24h loc_1BD19: push PG_5_SPREAD_WIDE_AIMED or (((3 shl 4) + 6) shl 16) mov ax, eye_west.BE_cur_top add ax, 28 push ax mov ax, eye_west.BE_cur_left add ax, 28 push ax push ds push offset _Pellets call @CPellets@add_group$qii14pellet_group_ti push PG_5_SPREAD_WIDE_AIMED or (((3 shl 4) + 6) shl 16) mov ax, eye_east.BE_cur_top add ax, 28 push ax mov ax, eye_east.BE_cur_left add ax, 28 push ax push ds push offset _Pellets call @CPellets@add_group$qii14pellet_group_ti add sp, 18h jmp loc_1DFFC ; --------------------------------------------------------------------------- loc_1BD59: cmp _boss_phase_frame, 280 jnz short loc_1BD82 mov eye_west.BE_bos_image, 0 mov eye_east.BE_bos_image, 0 mov eye_southwest.BE_bos_image, 0 mov eye_southeast.BE_bos_image, 0 mov eye_north.BE_bos_image, 0 jmp loc_1DFFC ; --------------------------------------------------------------------------- loc_1BD82: cmp _boss_phase_frame, 300 jnz short loc_1BDCD mov eye_west.BE_bos_image, 1 mov eye_east.BE_bos_image, 1 push RES_Y mov ax, eye_west.BE_cur_left add ax, 28 push ax mov ax, eye_west.BE_cur_top add ax, 28 push ax mov ax, eye_west.BE_cur_left add ax, 28 push ax call _graph_r_line_unput add sp, 8 push RES_Y mov ax, eye_east.BE_cur_left add ax, 28 push ax mov ax, eye_east.BE_cur_top add ax, 28 push ax mov ax, eye_east.BE_cur_left jmp loc_1BEB1 ; --------------------------------------------------------------------------- loc_1BDCD: cmp _boss_phase_frame, 320 jnz short loc_1BE24 mov eye_west.BE_bos_image, 2 mov eye_east.BE_bos_image, 2 mov eye_west.BE_hitbox_orb_inactive, 0 mov eye_east.BE_hitbox_orb_inactive, 0 push RES_Y mov ax, eye_southwest.BE_cur_left add ax, 28 push ax mov ax, eye_southwest.BE_cur_top add ax, 28 push ax mov ax, eye_southwest.BE_cur_left add ax, 28 push ax call _graph_r_line_unput add sp, 8 push RES_Y mov ax, eye_southeast.BE_cur_left add ax, 28 push ax mov ax, eye_southeast.BE_cur_top add ax, 28 push ax mov ax, eye_southeast.BE_cur_left jmp loc_1BEB1 ; --------------------------------------------------------------------------- loc_1BE24: cmp _boss_phase_frame, 330 jle loc_1DFFC mov _boss_phase, 1 mov _yuugenmagan_invincible, 0 mov _boss_phase_frame, 0 call _z_palette_set_all_show c, offset _stage_palette, ds call @boss_palette_snap$qv mov _yuugenmagan_initial_hp_rendered, 0 mov eye_west.BE_bos_image, 4 mov eye_east.BE_bos_image, 3 cmp _rank, RANK_EASY jnz short loc_1BE6D mov ax, 15Eh jmp short loc_1BE9A ; --------------------------------------------------------------------------- loc_1BE6D: mov al, _rank cbw cmp ax, 1 jnz short loc_1BE7B mov ax, 12Ch jmp short loc_1BE9A ; --------------------------------------------------------------------------- loc_1BE7B: mov al, _rank cbw cmp ax, 2 jnz short loc_1BE89 mov ax, 0C8h ; '?' jmp short loc_1BE9A ; --------------------------------------------------------------------------- loc_1BE89: mov al, _rank cbw cmp ax, 3 jnz short loc_1BE97 mov ax, 130 jmp short loc_1BE9A ; --------------------------------------------------------------------------- loc_1BE97: mov ax, 300 loc_1BE9A: mov word_39DE4, ax push RES_Y mov ax, eye_north.BE_cur_left add ax, 28 push ax mov ax, eye_north.BE_cur_top add ax, 28 push ax mov ax, eye_north.BE_cur_left loc_1BEB1: add ax, 28 push ax call _graph_r_line_unput add sp, 8 jmp loc_1DFFC ; --------------------------------------------------------------------------- loc_1BEC0: mov al, _boss_phase cbw cmp ax, 1 jnz loc_1C02D inc _boss_phase_frame inc _yuugenmagan_invincibility_frame call @CBossEntity@move_lock_unput_and_put_8$qiiii stdcall, offset eye_west, ds, large 0, large 0 or (3 shl 16) call @CBossEntity@move_lock_unput_and_put_8$qiiii stdcall, offset eye_east, ds, large 0, large 0 or (3 shl 16) add sp, 18h mov ax, eye_west.BE_cur_left add ax, 32 sub ax, _player_left cmp ax, 32 jle short loc_1BF11 mov eye_west.BE_bos_image, 4 jmp short loc_1BF30 ; --------------------------------------------------------------------------- loc_1BF11: mov ax, eye_west.BE_cur_left add ax, 32 mov dx, _player_left sub dx, ax cmp dx, 32 jle short loc_1BF2A mov eye_west.BE_bos_image, 5 jmp short loc_1BF30 ; --------------------------------------------------------------------------- loc_1BF2A: mov eye_west.BE_bos_image, 3 loc_1BF30: mov ax, eye_east.BE_cur_left add ax, 32 sub ax, _player_left cmp ax, 32 jle short loc_1BF47 mov eye_east.BE_bos_image, 4 jmp short loc_1BF66 ; --------------------------------------------------------------------------- loc_1BF47: mov ax, eye_east.BE_cur_left add ax, 32 mov dx, _player_left sub dx, ax cmp dx, 32 jle short loc_1BF60 mov eye_east.BE_bos_image, 5 jmp short loc_1BF66 ; --------------------------------------------------------------------------- loc_1BF60: mov eye_east.BE_bos_image, 3 loc_1BF66: call sub_1B6D9 pushd 0 or (0 shl 16) ; (hitbox_w) or (hitbox_h) pushd 0 or (0 shl 16) ; (hitbox_left) or (hitbox_top) call @CBossEntity@hittest_orb$xqv c, offset eye_west, ds cmp ax, 1 jnz short loc_1BF88 cmp eye_west.BE_bos_image, 0 jnz short loc_1BFE8 loc_1BF88: call @CBossEntity@hittest_orb$xqv c, offset eye_east, ds cmp ax, 1 jnz short loc_1BFA0 cmp eye_east.BE_bos_image, 0 jnz short loc_1BFE8 loc_1BFA0: call @CBossEntity@hittest_orb$xqv c, offset eye_southwest, ds cmp ax, 1 jnz short loc_1BFB8 cmp eye_southwest.BE_bos_image, 0 jnz short loc_1BFE8 loc_1BFB8: call @CBossEntity@hittest_orb$xqv c, offset eye_southeast, ds cmp ax, 1 jnz short loc_1BFD0 cmp eye_southeast.BE_bos_image, 0 jnz short loc_1BFE8 loc_1BFD0: call @CBossEntity@hittest_orb$xqv c, offset eye_north, ds cmp ax, 1 jnz short loc_1BFED cmp eye_north.BE_bos_image, 0 jz short loc_1BFED loc_1BFE8: mov ax, 1 jmp short loc_1BFEF ; --------------------------------------------------------------------------- loc_1BFED: xor ax, ax loc_1BFEF: push ax ; colliding_with_orb push seg main_32_TEXT ; hit_callback (segment) push offset @boss_nop$qv ; hit_callback (offset) push 5000 ; hit_score push 2 ; invincibility_flash_colors_count push ss ; invincibility_flash_colors (segment) lea ax, [bp+@@invincibility_flash_colors] push ax ; invincibility_flash_colors (offset) push ds ; hp (segment) push offset _boss_hp ; hp (offset) push ds ; is_invincible (segment) push offset _yuugenmagan_invincible ; is_invincible (offset) push ds ; invincibility_frame (segment) push offset _yuugenmagan_invincibility_frame ; invincibility_frame (offset) call @boss_hit_update_and_render$qmit1t1xnxucucinqv$vuciiii add sp, 22h cmp _boss_hp, 15 jle short loc_1C025 cmp _boss_phase_frame, 1100 jle loc_1DFFC loc_1C025: mov _boss_phase, 2 jmp loc_1CAF9 ; --------------------------------------------------------------------------- loc_1C02D: mov al, _boss_phase cbw cmp ax, 2 jnz loc_1C0CA push ds push offset _boss_phase_frame push 20000h push 0Ch push 3 nopcall sub_1DFFF add sp, 0Ch cmp _boss_phase_frame, 70 jl loc_1DFFC mov _boss_phase, 3 mov word_39E08, 0 mov byte_39E14, 0 mov _boss_phase_frame, 0 mov _yuugenmagan_invincibility_frame, 0 mov x_39E06, 0 call _z_palette_set_all_show c, offset _stage_palette, ds call @boss_palette_snap$qv cmp _rank, RANK_EASY jnz short loc_1C097 mov ax, 8 jmp loc_1D84C ; --------------------------------------------------------------------------- loc_1C097: mov al, _rank cbw cmp ax, RANK_NORMAL jnz short loc_1C0A6 mov ax, 0Ch jmp loc_1D84C ; --------------------------------------------------------------------------- loc_1C0A6: mov al, _rank cbw cmp ax, RANK_HARD jnz short loc_1C0B5 mov ax, 10h jmp loc_1D84C ; --------------------------------------------------------------------------- loc_1C0B5: mov al, _rank cbw cmp ax, RANK_LUNATIC jnz short loc_1C0C4 mov ax, 14h jmp loc_1D84C ; --------------------------------------------------------------------------- loc_1C0C4: mov ax, 0Ch jmp loc_1D84C ; --------------------------------------------------------------------------- loc_1C0CA: mov al, _boss_phase cbw cmp ax, 3 jnz loc_1C3EB inc _boss_phase_frame inc _yuugenmagan_invincibility_frame call @CBossEntity@move_lock_unput_and_put_8$qiiii stdcall, offset eye_southwest, ds, large 0, large 0 or (3 shl 16) call @CBossEntity@move_lock_unput_and_put_8$qiiii stdcall, offset eye_southeast, ds, large 0, large 0 or (3 shl 16) add sp, 18h mov ax, eye_southwest.BE_cur_left.x add ax, 32 sub ax, _player_left cmp ax, 32 jle short loc_1C11B mov eye_southwest.BE_bos_image, 4 jmp short loc_1C13A ; --------------------------------------------------------------------------- loc_1C11B: mov ax, eye_southwest.BE_cur_left add ax, 32 mov dx, _player_left sub dx, ax cmp dx, 32 jle short loc_1C134 mov eye_southwest.BE_bos_image, 5 jmp short loc_1C13A ; --------------------------------------------------------------------------- loc_1C134: mov eye_southwest.BE_bos_image, 3 loc_1C13A: mov ax, eye_southeast.BE_cur_left add ax, 32 sub ax, _player_left cmp ax, 32 jle short loc_1C151 mov eye_southeast.BE_bos_image, 4 jmp short loc_1C170 ; --------------------------------------------------------------------------- loc_1C151: mov ax, eye_southeast.BE_cur_left add ax, 32 mov dx, _player_left sub dx, ax cmp dx, 32 jle short loc_1C16A mov eye_southeast.BE_bos_image, 5 jmp short loc_1C170 ; --------------------------------------------------------------------------- loc_1C16A: mov eye_southeast.BE_bos_image, 3 loc_1C170: cmp _boss_phase_frame, 90 jl short loc_1C191 cmp word_39E08, 0 jz short loc_1C185 cmp word_39E08, 4 jnz short loc_1C191 loc_1C185: mov eye_southwest.BE_bos_image, 1 mov eye_southeast.BE_bos_image, 1 loc_1C191: cmp _boss_phase_frame, 100 jz short loc_1C1AF cmp word_39E08, 1 jz short loc_1C1AF cmp word_39E08, 5 jz short loc_1C1AF cmp word_39E08, 9 jnz loc_1C248 loc_1C1AF: cmp word_39E08, 0 jnz short loc_1C21E call IRand mov bx, 3 cwd idiv bx shl dx, 2 inc dx mov word_39E08, dx mov ax, _player_left add ax, -8 mov word_39E0A, ax mov ax, RES_Y sub ax, eye_southwest.BE_cur_top add ax, 28 push ax mov ax, word_39E0A sub ax, eye_southwest.BE_cur_left add ax, 28 push ax call iatan2 mov angle_39E16, al mov ax, RES_Y sub ax, eye_southeast.BE_cur_top add ax, 28 push ax mov ax, word_39E0A sub ax, eye_southeast.BE_cur_left add ax, 28 push ax call iatan2 mov angle_39E17, al mov al, angle_39E16 add al, -10h mov angle_39E16, al mov al, angle_39E17 add al, 10h mov angle_39E17, al loc_1C21E: mov ax, _boss_phase_frame mov bx, 8 cwd idiv bx or dx, dx jnz short loc_1C236 push word ptr angle_39E16 push word ptr angle_39E17 call sub_1B824 loc_1C236: cmp _boss_phase_frame, 200 jnz short loc_1C248 inc word_39E08 mov x_39E06, 0 loc_1C248: cmp word_39E08, 2 jz short loc_1C25D cmp word_39E08, 6 jz short loc_1C25D cmp word_39E08, 0Ah jnz short loc_1C2A2 loc_1C25D: mov ax, _boss_phase_frame mov bx, 8 cwd idiv bx cmp dx, 1 jnz loc_1C327 inc x_39E06 mov al, angle_39E16 add al, -2 mov angle_39E16, al mov al, angle_39E17 add al, 2 mov angle_39E17, al push word ptr angle_39E16 push word ptr angle_39E17 call sub_1B824 cmp x_39E06, 10 jle loc_1C327 inc word_39E08 mov x_39E06, 0 jmp loc_1C327 ; --------------------------------------------------------------------------- loc_1C2A2: cmp word_39E08, 3 jz short loc_1C2B7 cmp word_39E08, 7 jz short loc_1C2B7 cmp word_39E08, 0Bh jnz short loc_1C327 loc_1C2B7: mov ax, _boss_phase_frame mov bx, 8 cwd idiv bx cmp dx, 1 jnz short loc_1C327 inc x_39E06 cmp word_39E08, 3 jnz short loc_1C2DA mov al, angle_39E16 add al, 4 mov angle_39E16, al jmp short loc_1C2FF ; --------------------------------------------------------------------------- loc_1C2DA: cmp word_39E08, 7 jnz short loc_1C2E8 mov al, angle_39E17 add al, -4 jmp short loc_1C2FC ; --------------------------------------------------------------------------- loc_1C2E8: cmp word_39E08, 0Bh jnz short loc_1C2FF mov al, angle_39E16 add al, 2 mov angle_39E16, al mov al, angle_39E17 add al, -2 loc_1C2FC: mov angle_39E17, al loc_1C2FF: push word ptr angle_39E16 push word ptr angle_39E17 call sub_1B824 cmp x_39E06, 10 jle short loc_1C327 mov word_39E08, 0 mov x_39E06, 0 mov _boss_phase_frame, 0 inc byte_39E14 loc_1C327: pushd 0 or (0 shl 16) ; (hitbox_w) or (hitbox_h) pushd 0 or (0 shl 16) ; (hitbox_left) or (hitbox_top) call @CBossEntity@hittest_orb$xqv c, offset eye_west, ds cmp ax, 1 jnz short loc_1C345 cmp eye_west.BE_bos_image, 0 jnz short loc_1C3A5 loc_1C345: call @CBossEntity@hittest_orb$xqv c, offset eye_east, ds cmp ax, 1 jnz short loc_1C35D cmp eye_east.BE_bos_image, 0 jnz short loc_1C3A5 loc_1C35D: call @CBossEntity@hittest_orb$xqv c, offset eye_southwest, ds cmp ax, 1 jnz short loc_1C375 cmp eye_southwest.BE_bos_image, 0 jnz short loc_1C3A5 loc_1C375: call @CBossEntity@hittest_orb$xqv c, offset eye_southeast, ds cmp ax, 1 jnz short loc_1C38D cmp eye_southeast.BE_bos_image, 0 jnz short loc_1C3A5 loc_1C38D: call @CBossEntity@hittest_orb$xqv c, offset eye_north, ds cmp ax, 1 jnz short loc_1C3AA cmp eye_north.BE_bos_image, 0 jz short loc_1C3AA loc_1C3A5: mov ax, 1 jmp short loc_1C3AC ; --------------------------------------------------------------------------- loc_1C3AA: xor ax, ax loc_1C3AC: push ax ; colliding_with_orb push seg main_32_TEXT ; hit_callback (segment) push offset @boss_nop$qv ; hit_callback (offset) push 5000 ; hit_score push 2 ; invincibility_flash_colors_count push ss ; invincibility_flash_colors (segment) lea ax, [bp+@@invincibility_flash_colors] push ax ; invincibility_flash_colors (offset) push ds ; hp (segment) push offset _boss_hp ; hp (offset) push ds ; is_invincible (segment) push offset _yuugenmagan_invincible ; is_invincible (offset) push ds ; invincibility_frame (segment) push offset _yuugenmagan_invincibility_frame ; invincibility_frame (offset) call @boss_hit_update_and_render$qmit1t1xnxucucinqv$vuciiii add sp, 22h cmp _boss_hp, 12 jle short loc_1C3E3 mov al, byte_39E14 cbw cmp ax, 5 jl loc_1DFFC loc_1C3E3: mov _boss_phase, 4 jmp loc_1CAF9 ; --------------------------------------------------------------------------- loc_1C3EB: mov al, _boss_phase cbw cmp ax, 4 jnz loc_1C493 push ds push offset _boss_phase_frame pushd 1 push 3 push 0Ch nopcall sub_1DFFF add sp, 0Ch cmp _boss_phase_frame, 70 jl loc_1DFFC mov _boss_phase, 5 mov word_39E08, 0 mov byte_39E14, 0 mov _boss_phase_frame, 0 mov _yuugenmagan_invincibility_frame, 0 mov x_39E06, 0 call _z_palette_set_all_show c, offset _stage_palette, ds call @boss_palette_snap$qv mov ax, RES_Y sub ax, eye_west.BE_cur_top mov y_39E0C, ax cmp _rank, RANK_EASY jnz short loc_1C45B mov ax, 0Ch jmp short loc_1C488 ; --------------------------------------------------------------------------- loc_1C45B: mov al, _rank cbw cmp ax, RANK_NORMAL jnz short loc_1C469 mov ax, 8 jmp short loc_1C488 ; --------------------------------------------------------------------------- loc_1C469: mov al, _rank cbw cmp ax, RANK_HARD jnz short loc_1C477 mov ax, 4 jmp short loc_1C488 ; --------------------------------------------------------------------------- loc_1C477: mov al, _rank cbw cmp ax, RANK_LUNATIC jnz short loc_1C485 mov ax, 2 jmp short loc_1C488 ; --------------------------------------------------------------------------- loc_1C485: mov ax, 8 loc_1C488: mov word_39DE4, ax mov angle_39E16, 0 jmp loc_1DFFC ; --------------------------------------------------------------------------- loc_1C493: mov al, _boss_phase cbw cmp ax, 5 jnz loc_1C741 inc _boss_phase_frame inc _yuugenmagan_invincibility_frame inc x_39E06 dec angle_39E16 call @CBossEntity@move_lock_unput_and_put_8$qiiii stdcall, offset eye_west, ds, large 0, large 0 or (3 shl 16) call @CBossEntity@move_lock_unput_and_put_8$qiiii stdcall, offset eye_east, ds, large 0, large 0 or (3 shl 16) add sp, 18h mov ax, eye_west.BE_cur_left add ax, 32 sub ax, _player_left cmp ax, 32 jle short loc_1C4EC mov eye_west.BE_bos_image, 4 jmp short loc_1C50B ; --------------------------------------------------------------------------- loc_1C4EC: mov ax, eye_west.BE_cur_left add ax, 32 mov dx, _player_left sub dx, ax cmp dx, 32 jle short loc_1C505 mov eye_west.BE_bos_image, 5 jmp short loc_1C50B ; --------------------------------------------------------------------------- loc_1C505: mov eye_west.BE_bos_image, 3 loc_1C50B: mov ax, eye_east.BE_cur_left add ax, 32 sub ax, _player_left cmp ax, 32 jle short loc_1C522 mov eye_east.BE_bos_image, 4 jmp short loc_1C541 ; --------------------------------------------------------------------------- loc_1C522: mov ax, eye_east.BE_cur_left add ax, 32 mov dx, _player_left sub dx, ax cmp dx, 32 jle short loc_1C53B mov eye_east.BE_bos_image, 5 jmp short loc_1C541 ; --------------------------------------------------------------------------- loc_1C53B: mov eye_east.BE_bos_image, 3 loc_1C541: cmp _boss_phase_frame, 100 jnz short loc_1C55B cmp word_39E08, 0 jnz short loc_1C55B mov x_39E06, 0 mov word_39E08, 1 loc_1C55B: cmp word_39E08, 1 jnz short loc_1C5D4 mov ax, x_39E06 cwd idiv word_39DE4 or dx, dx jnz short loc_1C5BA pushd 0 or (0 shl 16) pushd PM_REGULAR or (0 shl 16) push (4 shl 4) mov al, 80h sub al, angle_39E16 push ax mov ax, eye_west.BE_cur_top add ax, 32 push ax mov ax, eye_west.BE_cur_left add ax, 28 push ax push ds push offset _Pellets call @CPellets@add_single$qiiuci15pellet_motion_tiii pushd 0 or (0 shl 16) pushd PM_REGULAR or (0 shl 16) push (4 shl 4) push word ptr angle_39E16 mov ax, eye_east.BE_cur_top add ax, 32 push ax mov ax, eye_east.BE_cur_left add ax, 28 push ax push ds push offset _Pellets call @CPellets@add_single$qiiuci15pellet_motion_tiii add sp, 28h loc_1C5BA: mov ax, x_39E06 mov bx, 5 cwd idiv bx cmp ax, 36 jl short loc_1C5D4 mov word_39E08, 2 mov _boss_phase_frame, 0 loc_1C5D4: cmp word_39E08, 2 jnz short loc_1C5F3 cmp _boss_phase_frame, 50 jle short loc_1C5F3 mov x_39E06, -15 mov word_39E08, 3 mov angle_39E16, 80h loc_1C5F3: cmp word_39E08, 3 jnz loc_1C67D mov ax, x_39E06 cwd idiv word_39DE4 or dx, dx jnz short loc_1C65A pushd 0 or (0 shl 16) push PM_FALL_STRAIGHT_FROM_TOP_THEN_NORMAL or ((4 shl 4) shl 16) push (4 shl 4) mov al, 80h sub al, angle_39E16 push ax mov ax, eye_west.BE_cur_top add ax, 32 push ax mov ax, eye_west.BE_cur_left add ax, 28 push ax push ds push offset _Pellets call @CPellets@add_single$qiiuci15pellet_motion_tiii pushd 0 or (0 shl 16) push PM_FALL_STRAIGHT_FROM_TOP_THEN_NORMAL or ((4 shl 4) shl 16) push (4 shl 4) push word ptr angle_39E16 mov ax, eye_east.BE_cur_top add ax, 32 push ax mov ax, eye_east.BE_cur_left add ax, 28 push ax push ds push offset _Pellets call @CPellets@add_single$qiiuci15pellet_motion_tiii add sp, 28h loc_1C65A: mov ax, x_39E06 mov bx, 5 cwd idiv bx cmp ax, 20 jl short loc_1C67D mov word_39E08, 0 mov _boss_phase_frame, 0 inc byte_39E14 mov angle_39E16, 0 loc_1C67D: pushd 0 or (0 shl 16) ; (hitbox_w) or (hitbox_h) pushd 0 or (0 shl 16) ; (hitbox_left) or (hitbox_top) call @CBossEntity@hittest_orb$xqv c, offset eye_west, ds cmp ax, 1 jnz short loc_1C69B cmp eye_west.BE_bos_image, 0 jnz short loc_1C6FB loc_1C69B: call @CBossEntity@hittest_orb$xqv c, offset eye_east, ds cmp ax, 1 jnz short loc_1C6B3 cmp eye_east.BE_bos_image, 0 jnz short loc_1C6FB loc_1C6B3: call @CBossEntity@hittest_orb$xqv c, offset eye_southwest, ds cmp ax, 1 jnz short loc_1C6CB cmp eye_southwest.BE_bos_image, 0 jnz short loc_1C6FB loc_1C6CB: call @CBossEntity@hittest_orb$xqv c, offset eye_southeast, ds cmp ax, 1 jnz short loc_1C6E3 cmp eye_southeast.BE_bos_image, 0 jnz short loc_1C6FB loc_1C6E3: call @CBossEntity@hittest_orb$xqv c, offset eye_north, ds cmp ax, 1 jnz short loc_1C700 cmp eye_north.BE_bos_image, 0 jz short loc_1C700 loc_1C6FB: mov ax, 1 jmp short loc_1C702 ; --------------------------------------------------------------------------- loc_1C700: xor ax, ax loc_1C702: push ax ; colliding_with_orb push seg main_32_TEXT ; hit_callback (segment) push offset @boss_nop$qv ; hit_callback (offset) push 5000 ; hit_score push 2 ; invincibility_flash_colors_count push ss ; invincibility_flash_colors (segment) lea ax, [bp+@@invincibility_flash_colors] push ax ; invincibility_flash_colors (offset) push ds ; hp (segment) push offset _boss_hp ; hp (offset) push ds ; is_invincible (segment) push offset _yuugenmagan_invincible ; is_invincible (offset) push ds ; invincibility_frame (segment) push offset _yuugenmagan_invincibility_frame ; invincibility_frame (offset) call @boss_hit_update_and_render$qmit1t1xnxucucinqv$vuciiii add sp, 22h cmp _boss_hp, 10 jle short loc_1C739 mov al, byte_39E14 cbw cmp ax, 4 jle loc_1DFFC loc_1C739: mov _boss_phase, 6 jmp loc_1CAF9 ; --------------------------------------------------------------------------- loc_1C741: mov al, _boss_phase cbw cmp ax, 6 jnz loc_1C7E4 push ds push offset _boss_phase_frame push 30000h push 0Ch push 3 nopcall sub_1DFFF add sp, 0Ch cmp _boss_phase_frame, 70 jl loc_1DFFC mov _boss_phase, 7 mov word_39E08, 0 mov byte_39E14, 0 mov _boss_phase_frame, 0 mov _yuugenmagan_invincibility_frame, 0 mov x_39E06, 0 mov word_39E12, 0 call _z_palette_set_all_show c, offset _stage_palette, ds call @boss_palette_snap$qv cmp _rank, RANK_EASY jnz short loc_1C7B1 mov ax, 0Ah jmp loc_1D84C ; --------------------------------------------------------------------------- loc_1C7B1: mov al, _rank cbw cmp ax, RANK_NORMAL jnz short loc_1C7C0 mov ax, 10h jmp loc_1D84C ; --------------------------------------------------------------------------- loc_1C7C0: mov al, _rank cbw cmp ax, RANK_HARD jnz short loc_1C7CF mov ax, 14h jmp loc_1D84C ; --------------------------------------------------------------------------- loc_1C7CF: mov al, _rank cbw cmp ax, RANK_LUNATIC jnz short loc_1C7DE mov ax, 18h jmp loc_1D84C ; --------------------------------------------------------------------------- loc_1C7DE: mov ax, 10h jmp loc_1D84C ; --------------------------------------------------------------------------- loc_1C7E4: mov al, _boss_phase cbw cmp ax, 7 jnz loc_1CB08 inc _boss_phase_frame inc _yuugenmagan_invincibility_frame call @CBossEntity@move_lock_unput_and_put_8$qiiii stdcall, offset eye_southwest, ds, large 0, large 0 or (3 shl 16) call @CBossEntity@move_lock_unput_and_put_8$qiiii stdcall, offset eye_southeast, ds, large 0, large 0 or (3 shl 16) add sp, 18h mov ax, eye_southwest.BE_cur_left add ax, 32 sub ax, _player_left cmp ax, 32 jle short loc_1C835 mov eye_southwest.BE_bos_image, 4 jmp short loc_1C854 ; --------------------------------------------------------------------------- loc_1C835: mov ax, eye_southwest.BE_cur_left add ax, 32 mov dx, _player_left sub dx, ax cmp dx, 32 jle short loc_1C84E mov eye_southwest.BE_bos_image, 5 jmp short loc_1C854 ; --------------------------------------------------------------------------- loc_1C84E: mov eye_southwest.BE_bos_image, 3 loc_1C854: mov ax, eye_southeast.BE_cur_left add ax, 32 sub ax, _player_left cmp ax, 32 jle short loc_1C86B mov eye_southeast.BE_bos_image, 4 jmp short loc_1C88A ; --------------------------------------------------------------------------- loc_1C86B: mov ax, eye_southeast.BE_cur_left add ax, 32 mov dx, _player_left sub dx, ax cmp dx, 32 jle short loc_1C884 mov eye_southeast.BE_bos_image, 5 jmp short loc_1C88A ; --------------------------------------------------------------------------- loc_1C884: mov eye_southeast.BE_bos_image, 3 loc_1C88A: cmp _boss_phase_frame, 90 jl short loc_1C8AB cmp word_39E08, 0 jz short loc_1C89F cmp word_39E08, 4 jnz short loc_1C8AB loc_1C89F: mov eye_southwest.BE_bos_image, 1 mov eye_southeast.BE_bos_image, 1 loc_1C8AB: cmp _boss_phase_frame, 100 jz short loc_1C8C2 cmp word_39E08, 1 jz short loc_1C8C2 cmp word_39E08, 5 jnz loc_1C95B loc_1C8C2: cmp word_39E08, 0 jnz short loc_1C931 call IRand mov bx, 2 cwd idiv bx shl dx, 2 inc dx mov word_39E08, dx mov ax, _player_left add ax, -8 mov word_39E0A, ax mov ax, RES_Y sub ax, eye_southwest.BE_cur_top add ax, 28 push ax mov ax, word_39E0A sub ax, eye_southwest.BE_cur_left add ax, 28 push ax call iatan2 mov angle_39E16, al mov ax, RES_Y sub ax, eye_southeast.BE_cur_top add ax, 28 push ax mov ax, word_39E0A sub ax, eye_southeast.BE_cur_left add ax, 28 push ax call iatan2 mov angle_39E17, al mov al, angle_39E16 add al, -10h mov angle_39E16, al mov al, angle_39E17 add al, 10h mov angle_39E17, al loc_1C931: mov ax, _boss_phase_frame mov bx, 8 cwd idiv bx or dx, dx jnz short loc_1C949 push word ptr angle_39E16 push word ptr angle_39E17 call sub_1B824 loc_1C949: cmp _boss_phase_frame, 200 jnz short loc_1C95B inc word_39E08 mov x_39E06, 0 loc_1C95B: cmp word_39E08, 2 jz short loc_1C969 cmp word_39E08, 6 jnz short loc_1C9C3 loc_1C969: mov ax, _boss_phase_frame mov bx, 8 cwd idiv bx cmp dx, 1 jnz loc_1CA38 inc x_39E06 cmp word_39E08, 2 jnz short loc_1C993 mov al, angle_39E16 add al, -2 mov angle_39E16, al mov al, angle_39E17 add al, -2 jmp short loc_1C9A0 ; --------------------------------------------------------------------------- loc_1C993: mov al, angle_39E16 add al, 2 mov angle_39E16, al mov al, angle_39E17 add al, 2 loc_1C9A0: mov angle_39E17, al push word ptr angle_39E16 push word ptr angle_39E17 call sub_1B824 cmp x_39E06, 10 jle loc_1CA38 inc word_39E08 mov x_39E06, 0 jmp short loc_1CA38 ; --------------------------------------------------------------------------- loc_1C9C3: cmp word_39E08, 3 jz short loc_1C9D1 cmp word_39E08, 7 jnz short loc_1CA38 loc_1C9D1: mov ax, _boss_phase_frame mov bx, 8 cwd idiv bx cmp dx, 1 jnz short loc_1CA38 inc x_39E06 cmp word_39E08, 3 jnz short loc_1C9F9 mov al, angle_39E16 add al, 3 mov angle_39E16, al mov al, angle_39E17 add al, 3 jmp short loc_1CA0D ; --------------------------------------------------------------------------- loc_1C9F9: cmp word_39E08, 7 jnz short loc_1CA10 mov al, angle_39E16 add al, -3 mov angle_39E16, al mov al, angle_39E17 add al, -3 loc_1CA0D: mov angle_39E17, al loc_1CA10: push word ptr angle_39E16 push word ptr angle_39E17 call sub_1B824 cmp x_39E06, 10 jle short loc_1CA38 mov word_39E08, 0 mov x_39E06, 0 mov _boss_phase_frame, 0 inc byte_39E14 loc_1CA38: pushd 0 or (0 shl 16) ; (hitbox_w) or (hitbox_h) pushd 0 or (0 shl 16) ; (hitbox_left) or (hitbox_top) call @CBossEntity@hittest_orb$xqv c, offset eye_west, ds cmp ax, 1 jnz short loc_1CA56 cmp eye_west.BE_bos_image, 0 jnz short loc_1CAB6 loc_1CA56: call @CBossEntity@hittest_orb$xqv c, offset eye_east, ds cmp ax, 1 jnz short loc_1CA6E cmp eye_east.BE_bos_image, 0 jnz short loc_1CAB6 loc_1CA6E: call @CBossEntity@hittest_orb$xqv c, offset eye_southwest, ds cmp ax, 1 jnz short loc_1CA86 cmp eye_southwest.BE_bos_image, 0 jnz short loc_1CAB6 loc_1CA86: call @CBossEntity@hittest_orb$xqv c, offset eye_southeast, ds cmp ax, 1 jnz short loc_1CA9E cmp eye_southeast.BE_bos_image, 0 jnz short loc_1CAB6 loc_1CA9E: call @CBossEntity@hittest_orb$xqv c, offset eye_north, ds cmp ax, 1 jnz short loc_1CABB cmp eye_north.BE_bos_image, 0 jz short loc_1CABB loc_1CAB6: mov ax, 1 jmp short loc_1CABD ; --------------------------------------------------------------------------- loc_1CABB: xor ax, ax loc_1CABD: push ax ; colliding_with_orb push seg main_32_TEXT ; hit_callback (segment) push offset @boss_nop$qv ; hit_callback (offset) push 5000 ; hit_score push 2 ; invincibility_flash_colors_count push ss ; invincibility_flash_colors (segment) lea ax, [bp+@@invincibility_flash_colors] push ax ; invincibility_flash_colors (offset) push ds ; hp (segment) push offset _boss_hp ; hp (offset) push ds ; is_invincible (segment) push offset _yuugenmagan_invincible ; is_invincible (offset) push ds ; invincibility_frame (segment) push offset _yuugenmagan_invincibility_frame ; invincibility_frame (offset) call @boss_hit_update_and_render$qmit1t1xnxucucinqv$vuciiii add sp, 22h cmp _boss_hp, 8 jle short loc_1CAF4 mov al, byte_39E14 cbw cmp ax, 4 jle loc_1DFFC loc_1CAF4: mov _boss_phase, 8 loc_1CAF9: mov _boss_phase_frame, 0 mov _yuugenmagan_invincibility_frame, 0 jmp loc_1DFFC ; --------------------------------------------------------------------------- loc_1CB08: mov al, _boss_phase cbw cmp ax, 8 jnz short loc_1CB3E push ds push offset _boss_phase_frame push 10002h push 10h push 0Ch nopcall sub_1DFFF add sp, 0Ch cmp _boss_phase_frame, 70 jl loc_1DFFC mov _boss_phase, 9 mov word_39E08, 0 jmp loc_1D071 ; --------------------------------------------------------------------------- loc_1CB3E: mov al, _boss_phase cbw cmp ax, 9 jnz loc_1D036 inc _boss_phase_frame inc _yuugenmagan_invincibility_frame call @CBossEntity@move_lock_unput_and_put_8$qiiii c, offset eye_north, ds, large 0, large 0 or (3 shl 16) cmp _boss_phase_frame, 30 jl short loc_1CB88 cmp word_39E08, 0 jz short loc_1CB82 cmp word_39E08, 2 jz short loc_1CB82 cmp word_39E08, 4 jnz short loc_1CB88 loc_1CB82: mov eye_north.BE_bos_image, 1 loc_1CB88: cmp _boss_phase_frame, 40 jnz short loc_1CB96 cmp word_39E08, 0 jz short loc_1CB9F loc_1CB96: cmp word_39E08, 1 jnz loc_1CC8B loc_1CB9F: cmp word_39E08, 0 jnz short loc_1CBB2 mov word_39E08, 1 mov word_39E12, 0 loc_1CBB2: mov ax, _boss_phase_frame mov bx, 4 cwd idiv bx cmp dx, 1 jnz loc_1CF57 cmp x_39E06, 256 jg short loc_1CBD2 mov eye_north.BE_bos_image, 4 jmp short loc_1CBE8 ; --------------------------------------------------------------------------- loc_1CBD2: cmp x_39E06, 384 jl short loc_1CBE2 mov eye_north.BE_bos_image, 5 jmp short loc_1CBE8 ; --------------------------------------------------------------------------- loc_1CBE2: mov eye_north.BE_bos_image, 3 loc_1CBE8: mov ax, x_39E06 mov [bp+var_4], ax mov ax, eye_north.BE_cur_top add ax, 28 mov [bp+var_6], ax mov ax, eye_north.BE_cur_left add ax, 28 mov [bp+var_8], ax mov ax, x_39E06 add ax, -16 mov [bp+var_A], ax mov ax, eye_north.BE_cur_top add ax, 28 mov [bp+var_C], ax mov ax, eye_north.BE_cur_left add ax, 28 mov [bp+var_E], ax call sub_114CA stdcall, ax, [bp+var_C], [bp+var_A], RES_Y call sub_11527 stdcall, [bp+var_8], [bp+var_6], [bp+var_4], RES_Y, large (224 shl 16) or 7 add sp, 14h cmp x_39E06, 592 jl loc_1CF52 push RES_Y push x_39E06 mov ax, eye_north.BE_cur_top add ax, 28 push ax mov ax, eye_north.BE_cur_left add ax, 28 push ax call sub_114CA add sp, 8 mov word_39E08, 2 mov _boss_phase_frame, 0 mov x_39E06, 0 mov al, _rank cbw cmp ax, RANK_NORMAL jle loc_1CF52 jmp loc_1CD9D ; --------------------------------------------------------------------------- loc_1CC8B: cmp _boss_phase_frame, 40 jnz short loc_1CC99 cmp word_39E08, 2 jz short loc_1CCA2 loc_1CC99: cmp word_39E08, 3 jnz loc_1CDA6 loc_1CCA2: cmp word_39E08, 2 jnz short loc_1CCBB mov word_39E08, 3 mov word_39E12, 0 mov x_39E06, 0 loc_1CCBB: mov ax, _boss_phase_frame mov bx, 4 cwd idiv bx cmp dx, 1 jnz loc_1CF57 cmp x_39E06, 256 jg short loc_1CCDB mov eye_north.BE_bos_image, 5 jmp short loc_1CCF1 ; --------------------------------------------------------------------------- loc_1CCDB: cmp x_39E06, 384 jl short loc_1CCEB mov eye_north.BE_bos_image, 4 jmp short loc_1CCF1 ; --------------------------------------------------------------------------- loc_1CCEB: mov eye_north.BE_bos_image, 3 loc_1CCF1: mov ax, RES_X sub ax, x_39E06 mov [bp+var_10], ax mov ax, eye_north.BE_cur_top add ax, 28 mov [bp+var_12], ax mov ax, eye_north.BE_cur_left add ax, 28 mov [bp+var_14], ax mov ax, RES_X sub ax, x_39E06 add ax, 16 mov [bp+var_16], ax mov ax, eye_north.BE_cur_top add ax, 28 mov [bp+var_18], ax mov ax, eye_north.BE_cur_left add ax, 28 mov [bp+@@left], ax call sub_114CA stdcall, ax, [bp+var_18], [bp+var_16], RES_Y call sub_11527 stdcall, [bp+var_14], [bp+var_12], [bp+var_10], RES_Y, large (224 shl 16) or 7 add sp, 14h cmp x_39E06, 592 jl loc_1CF52 push RES_Y mov ax, RES_X sub ax, x_39E06 push ax mov ax, eye_north.BE_cur_top add ax, 28 push ax mov ax, eye_north.BE_cur_left add ax, 28 push ax call sub_114CA add sp, 8 mov word_39E08, 4 mov _boss_phase_frame, 0 mov x_39E06, 0 mov al, _rank cbw cmp ax, RANK_NORMAL jle loc_1CF52 loc_1CD9D: push PG_3_SPREAD_NARROW_AIMED or (3 shl 16) jmp loc_1CF38 ; --------------------------------------------------------------------------- loc_1CDA6: cmp _boss_phase_frame, 40 jnz short loc_1CDB4 cmp word_39E08, 4 jz short loc_1CDBD loc_1CDB4: cmp word_39E08, 5 jnz loc_1CF57 loc_1CDBD: cmp word_39E08, 4 jnz short loc_1CDD6 mov word_39E08, 5 mov word_39E12, 0 mov x_39E06, 0 loc_1CDD6: mov ax, _boss_phase_frame mov bx, 4 cwd idiv bx cmp dx, 1 jnz loc_1CF57 mov eye_north.BE_bos_image, 6 mov ax, x_39E06 mov [bp+var_1C], ax mov ax, eye_north.BE_cur_top add ax, 28 mov [bp+var_1E], ax mov ax, eye_north.BE_cur_left add ax, 28 mov [bp+var_20], ax mov ax, x_39E06 add ax, -16 mov [bp+var_22], ax mov ax, eye_north.BE_cur_top add ax, 28 mov [bp+var_24], ax mov ax, eye_north.BE_cur_left add ax, 28 mov [bp+var_26], ax call sub_114CA stdcall, ax, [bp+var_24], [bp+var_22], RES_Y call sub_11527 stdcall, [bp+var_20], [bp+var_1E], [bp+var_1C], RES_Y, large (224 shl 16) or 7 mov ax, RES_X sub ax, x_39E06 mov [bp+var_28], ax mov ax, eye_north.BE_cur_top add ax, 28 mov [bp+var_2A], ax mov ax, eye_north.BE_cur_left add ax, 28 mov [bp+var_2C], ax mov ax, RES_X sub ax, x_39E06 add ax, 16 mov [bp+var_2E], ax mov ax, eye_north.BE_cur_top add ax, 28 mov [bp+var_30], ax mov ax, eye_north.BE_cur_left add ax, 28 mov [bp+var_32], ax call sub_114CA stdcall, ax, [bp+var_30], [bp+var_2E], RES_Y call sub_11527 stdcall, [bp+var_2C], [bp+var_2A], [bp+var_28], RES_Y, (224 shl 16) or 7 add sp, 28h cmp x_39E06, 288 jl loc_1CF52 push RES_Y push x_39E06 mov ax, eye_north.BE_cur_top add ax, 28 push ax mov ax, eye_north.BE_cur_left add ax, 28 push ax call sub_114CA push RES_Y mov ax, RES_X sub ax, x_39E06 push ax mov ax, eye_north.BE_cur_top add ax, 28 push ax mov ax, eye_north.BE_cur_left add ax, 28 push ax call sub_114CA add sp, 10h mov word_39E08, 6 mov _boss_phase_frame, 0 mov x_39E06, 0 mov al, _rank cbw cmp ax, RANK_HARD jnz short loc_1CF29 push PG_3_SPREAD_NARROW_AIMED or (3 shl 16) mov ax, eye_north.BE_cur_top add ax, 28 push ax mov ax, eye_north.BE_cur_left add ax, 28 push ax push ds push offset _Pellets call @CPellets@add_group$qii14pellet_group_ti add sp, 0Ch loc_1CF29: mov al, _rank cbw cmp ax, RANK_LUNATIC jnz short loc_1CF52 push PG_5_SPREAD_NARROW_AIMED or (4 shl 16) loc_1CF38: mov ax, eye_north.BE_cur_top add ax, 28 push ax mov ax, eye_north.BE_cur_left add ax, 28 push ax push ds push offset _Pellets call @CPellets@add_group$qii14pellet_group_ti add sp, 0Ch loc_1CF52: add x_39E06, 16 loc_1CF57: pushd 0 or (0 shl 16) ; (hitbox_w) or (hitbox_h) pushd 0 or (0 shl 16) ; (hitbox_left) or (hitbox_top) call @CBossEntity@hittest_orb$xqv c, offset eye_west, ds cmp ax, 1 jnz short loc_1CF75 cmp eye_west.BE_bos_image, 0 jnz short loc_1CFD5 loc_1CF75: call @CBossEntity@hittest_orb$xqv c, offset eye_east, ds cmp ax, 1 jnz short loc_1CF8D cmp eye_east.BE_bos_image, 0 jnz short loc_1CFD5 loc_1CF8D: call @CBossEntity@hittest_orb$xqv c, offset eye_southwest, ds cmp ax, 1 jnz short loc_1CFA5 cmp eye_southwest.BE_bos_image, 0 jnz short loc_1CFD5 loc_1CFA5: call @CBossEntity@hittest_orb$xqv c, offset eye_southeast, ds cmp ax, 1 jnz short loc_1CFBD cmp eye_southeast.BE_bos_image, 0 jnz short loc_1CFD5 loc_1CFBD: call @CBossEntity@hittest_orb$xqv c, offset eye_north, ds cmp ax, 1 jnz short loc_1CFDA cmp eye_north.BE_bos_image, 0 jz short loc_1CFDA loc_1CFD5: mov ax, 1 jmp short loc_1CFDC ; --------------------------------------------------------------------------- loc_1CFDA: xor ax, ax loc_1CFDC: push ax ; colliding_with_orb push seg main_32_TEXT ; hit_callback (segment) push offset @boss_nop$qv ; hit_callback (offset) push 5000 ; hit_score push 2 ; invincibility_flash_colors_count push ss ; invincibility_flash_colors (segment) lea ax, [bp+@@invincibility_flash_colors] push ax ; invincibility_flash_colors (offset) push ds ; hp (segment) push offset _boss_hp ; hp (offset) push ds ; is_invincible (segment) push offset _yuugenmagan_invincible ; is_invincible (offset) push ds ; invincibility_frame (segment) push offset _yuugenmagan_invincibility_frame ; invincibility_frame (offset) call @boss_hit_update_and_render$qmit1t1xnxucucinqv$vuciiii add sp, 22h cmp _boss_hp, 2 jle short loc_1D011 cmp word_39E08, 6 jnz loc_1DFFC loc_1D011: mov _boss_phase, 10 mov _boss_phase_frame, 0 mov _yuugenmagan_invincibility_frame, 0 mov word_39E08, 1 mov byte_39E14, 0 mov word_39E10, 0 jmp loc_1DFFC ; --------------------------------------------------------------------------- loc_1D036: mov al, _boss_phase cbw cmp ax, 10 jnz short loc_1D08C push ds push offset _boss_phase_frame mov al, byte_39E14 cbw push ax push word_39E08 push 1Fh push 0 nopcall sub_1DFFF add sp, 0Ch cmp _boss_phase_frame, 70 jl loc_1DFFC mov _boss_phase, 11 mov word_39E08, 0 mov byte_39E14, 1Fh loc_1D071: mov _boss_phase_frame, 0 mov _yuugenmagan_invincibility_frame, 0 mov x_39E06, 0 mov word_39E12, 0 jmp loc_1D8C1 ; --------------------------------------------------------------------------- loc_1D08C: mov al, _boss_phase cbw cmp ax, 11 jnz loc_1D852 inc _boss_phase_frame inc _yuugenmagan_invincibility_frame call @CBossEntity@move_lock_unput_and_put_8$qiiii stdcall, offset eye_west, ds, large 0, large 0 or (3 shl 16) call @CBossEntity@move_lock_unput_and_put_8$qiiii stdcall, offset eye_east, ds, large 0, large 0 or (3 shl 16) call @CBossEntity@move_lock_unput_and_put_8$qiiii stdcall, offset eye_southwest, ds, large 0, large 0 or (3 shl 16) call @CBossEntity@move_lock_unput_and_put_8$qiiii stdcall, offset eye_southeast, ds, large 0, large 0 or (3 shl 16) add sp, 30h call @CBossEntity@move_lock_unput_and_put_8$qiiii c, offset eye_north, ds, large 0, large 0 or (3 shl 16) mov ax, eye_west.BE_cur_left add ax, 32 sub ax, _player_left cmp ax, 32 jle short loc_1D116 mov eye_west.BE_bos_image, 4 jmp short loc_1D135 ; --------------------------------------------------------------------------- loc_1D116: mov ax, eye_west.BE_cur_left add ax, 32 mov dx, _player_left sub dx, ax cmp dx, 32 jle short loc_1D12F mov eye_west.BE_bos_image, 5 jmp short loc_1D135 ; --------------------------------------------------------------------------- loc_1D12F: mov eye_west.BE_bos_image, 3 loc_1D135: mov ax, eye_east.BE_cur_left add ax, 32 sub ax, _player_left cmp ax, 32 jle short loc_1D14C mov eye_east.BE_bos_image, 4 jmp short loc_1D16B ; --------------------------------------------------------------------------- loc_1D14C: mov ax, eye_east.BE_cur_left add ax, 32 mov dx, _player_left sub dx, ax cmp dx, 32 jle short loc_1D165 mov eye_east.BE_bos_image, 5 jmp short loc_1D16B ; --------------------------------------------------------------------------- loc_1D165: mov eye_east.BE_bos_image, 3 loc_1D16B: mov ax, eye_southwest.BE_cur_left add ax, 32 sub ax, _player_left cmp ax, 32 jle short loc_1D182 mov eye_southwest.BE_bos_image, 4 jmp short loc_1D1A1 ; --------------------------------------------------------------------------- loc_1D182: mov ax, eye_southwest.BE_cur_left add ax, 32 mov dx, _player_left sub dx, ax cmp dx, 32 jle short loc_1D19B mov eye_southwest.BE_bos_image, 5 jmp short loc_1D1A1 ; --------------------------------------------------------------------------- loc_1D19B: mov eye_southwest.BE_bos_image, 3 loc_1D1A1: mov ax, eye_southeast.BE_cur_left add ax, 32 sub ax, _player_left cmp ax, 32 jle short loc_1D1B8 mov eye_southeast.BE_bos_image, 4 jmp short loc_1D1D7 ; --------------------------------------------------------------------------- loc_1D1B8: mov ax, eye_southeast.BE_cur_left add ax, 32 mov dx, _player_left sub dx, ax cmp dx, 32 jle short loc_1D1D1 mov eye_southeast.BE_bos_image, 5 jmp short loc_1D1D7 ; --------------------------------------------------------------------------- loc_1D1D1: mov eye_southeast.BE_bos_image, 3 loc_1D1D7: mov ax, eye_north.BE_cur_left add ax, 32 sub ax, _player_left cmp ax, 32 jle short loc_1D1EE mov eye_north.BE_bos_image, 4 jmp short loc_1D20D ; --------------------------------------------------------------------------- loc_1D1EE: mov ax, eye_north.BE_cur_left add ax, 32 mov dx, _player_left sub dx, ax cmp dx, 32 jle short loc_1D207 mov eye_north.BE_bos_image, 5 jmp short loc_1D20D ; --------------------------------------------------------------------------- loc_1D207: mov eye_north.BE_bos_image, 3 loc_1D20D: cmp _boss_phase_frame, 100 jz short loc_1D21D cmp word_39E08, 1 jnz loc_1D2F6 loc_1D21D: cmp word_39E08, 0 jnz short loc_1D230 mov word_39E08, 1 mov ax, _player_left mov word_39E0A, ax loc_1D230: push 7 mov ax, eye_southwest.BE_cur_top add ax, 28 push ax mov ax, eye_southwest.BE_cur_left add ax, 28 push ax mov ax, eye_north.BE_cur_top add ax, 28 push ax mov ax, eye_north.BE_cur_left add ax, 28 push ax call sub_114E3 push 7 mov ax, eye_east.BE_cur_top add ax, 28 push ax mov ax, eye_east.BE_cur_left add ax, 28 push ax mov ax, eye_southwest.BE_cur_top add ax, 28 push ax mov ax, eye_southwest.BE_cur_left add ax, 28 push ax call sub_114E3 push 7 mov ax, eye_west.BE_cur_top add ax, 28 push ax mov ax, eye_west.BE_cur_left add ax, 28 push ax mov ax, eye_east.BE_cur_top add ax, 28 push ax mov ax, eye_east.BE_cur_left add ax, 28 push ax call sub_114E3 push 7 mov ax, eye_southeast.BE_cur_top add ax, 28 push ax mov ax, eye_southeast.BE_cur_left add ax, 28 push ax mov ax, eye_west.BE_cur_top add ax, 28 push ax mov ax, eye_west.BE_cur_left add ax, 28 push ax call sub_114E3 push 7 mov ax, eye_north.BE_cur_top add ax, 28 push ax mov ax, eye_north.BE_cur_left add ax, 28 push ax mov ax, eye_southeast.BE_cur_top add ax, 28 push ax mov ax, eye_southeast.BE_cur_left add ax, 28 push ax call sub_114E3 add sp, 32h cmp _boss_phase_frame, 140 jnz short loc_1D2F6 mov word_39E08, 2 mov x_39E06, 0 loc_1D2F6: cmp word_39E08, 2 jnz loc_1D63F mov ax, _boss_phase_frame mov bx, 4 cwd idiv bx cmp dx, 1 jnz loc_1D63F mov ax, x_39E06 cwd sub ax, dx sar ax, 1 add ax, eye_southwest.BE_cur_top add ax, 28 push ax mov ax, x_39E06 mov bx, 3 cwd idiv bx add ax, eye_southwest.BE_cur_left add ax, 28 push ax mov ax, x_39E06 cwd sub ax, dx sar ax, 1 add ax, eye_north.BE_cur_top add ax, 28 push ax mov ax, eye_north.BE_cur_left add ax, 28 push ax call sub_114CA mov ax, x_39E06 mov bx, 3 cwd idiv bx add ax, eye_east.BE_cur_top add ax, 28 push ax mov ax, eye_east.BE_cur_left add ax, 28 sub ax, x_39E06 push ax mov ax, x_39E06 cwd sub ax, dx sar ax, 1 add ax, eye_southwest.BE_cur_top add ax, 28 push ax mov ax, x_39E06 cwd idiv bx add ax, eye_southwest.BE_cur_left add ax, 28 push ax call sub_114CA mov ax, x_39E06 mov bx, 3 cwd idiv bx add ax, eye_west.BE_cur_top add ax, 28 push ax mov ax, eye_west.BE_cur_left add ax, x_39E06 add ax, 28 push ax mov ax, x_39E06 cwd idiv bx add ax, eye_east.BE_cur_top add ax, 28 push ax mov ax, eye_east.BE_cur_left add ax, 28 sub ax, x_39E06 push ax call sub_114CA mov ax, x_39E06 cwd sub ax, dx sar ax, 1 add ax, eye_southeast.BE_cur_top add ax, 28 push ax mov ax, x_39E06 mov bx, 3 cwd idiv bx mov dx, eye_southeast.BE_cur_left add dx, 28 sub dx, ax push dx mov ax, x_39E06 cwd idiv bx add ax, eye_west.BE_cur_top add ax, 28 push ax mov ax, eye_west.BE_cur_left add ax, x_39E06 add ax, 28 push ax call sub_114CA mov ax, x_39E06 cwd sub ax, dx sar ax, 1 add ax, eye_north.BE_cur_top add ax, 28 push ax mov ax, eye_north.BE_cur_left add ax, 28 push ax mov ax, x_39E06 cwd sub ax, dx sar ax, 1 add ax, eye_southeast.BE_cur_top add ax, 28 push ax mov ax, x_39E06 mov bx, 3 cwd idiv bx mov dx, eye_southeast.BE_cur_left add dx, 28 sub dx, ax push dx call sub_114CA add x_39E06, 8 push 7 mov ax, x_39E06 cwd sub ax, dx sar ax, 1 add ax, eye_southwest.BE_cur_top add ax, 28 push ax mov ax, x_39E06 mov bx, 3 cwd idiv bx add ax, eye_southwest.BE_cur_left add ax, 28 push ax mov ax, x_39E06 cwd sub ax, dx sar ax, 1 add ax, eye_north.BE_cur_top add ax, 28 push ax mov ax, eye_north.BE_cur_left add ax, 28 push ax call sub_114E3 add sp, 32h push 7 mov ax, x_39E06 mov bx, 3 cwd idiv bx add ax, eye_east.BE_cur_top add ax, 28 push ax mov ax, eye_east.BE_cur_left add ax, 28 sub ax, x_39E06 push ax mov ax, x_39E06 cwd sub ax, dx sar ax, 1 add ax, eye_southwest.BE_cur_top add ax, 28 push ax mov ax, x_39E06 cwd idiv bx add ax, eye_southwest.BE_cur_left add ax, 28 push ax call sub_114E3 push 7 mov ax, x_39E06 mov bx, 3 cwd idiv bx add ax, eye_west.BE_cur_top add ax, 28 push ax mov ax, eye_west.BE_cur_left add ax, x_39E06 add ax, 28 push ax mov ax, x_39E06 cwd idiv bx add ax, eye_east.BE_cur_top add ax, 28 push ax mov ax, eye_east.BE_cur_left add ax, 28 sub ax, x_39E06 push ax call sub_114E3 push 7 mov ax, x_39E06 cwd sub ax, dx sar ax, 1 add ax, eye_southeast.BE_cur_top add ax, 28 push ax mov ax, x_39E06 mov bx, 3 cwd idiv bx mov dx, eye_southeast.BE_cur_left add dx, 28 sub dx, ax push dx mov ax, x_39E06 cwd idiv bx add ax, eye_west.BE_cur_top add ax, 28 push ax mov ax, eye_west.BE_cur_left add ax, x_39E06 add ax, 28 push ax call sub_114E3 push 7 mov ax, x_39E06 cwd sub ax, dx sar ax, 1 add ax, eye_north.BE_cur_top add ax, 28 push ax mov ax, eye_north.BE_cur_left add ax, 28 push ax mov ax, x_39E06 cwd sub ax, dx sar ax, 1 add ax, eye_southeast.BE_cur_top add ax, 28 push ax mov ax, x_39E06 mov bx, 3 cwd idiv bx mov dx, eye_southeast.BE_cur_left add dx, 28 sub dx, ax push dx call sub_114E3 add sp, 28h cmp x_39E06, 160 jle loc_1D63F mov ax, eye_north.BE_cur_left add ax, 28 mov x_39DE6, ax mov ax, x_39E06 cwd sub ax, dx sar ax, 1 add ax, eye_north.BE_cur_top add ax, 28 mov y_39DF0, ax mov ax, x_39E06 mov bx, 3 cwd idiv bx add ax, eye_southwest.BE_cur_left add ax, 28 mov x_39DE8, ax mov ax, x_39E06 cwd sub ax, dx sar ax, 1 add ax, eye_southwest.BE_cur_top add ax, 28 mov y_39DF2, ax mov ax, eye_east.BE_cur_left add ax, 28 sub ax, x_39E06 mov x_39DEA, ax mov ax, x_39E06 cwd idiv bx add ax, eye_east.y add ax, 28 mov y_39DF4, ax mov ax, eye_west.BE_cur_left add ax, x_39E06 add ax, 28 mov x_39DEC, ax mov ax, x_39E06 cwd idiv bx add ax, eye_west.BE_cur_top add ax, 28 mov y_39DF6, ax mov ax, x_39E06 cwd idiv bx mov dx, eye_southeast.BE_cur_left add dx, 28 sub dx, ax mov x_39DEE, dx mov ax, x_39E06 cwd sub ax, dx sar ax, 1 add ax, eye_southeast.BE_cur_top add ax, 28 mov y_39DF8, ax mov word_39E08, 3 loc_1D63F: pushd 0 or (0 shl 16) ; (hitbox_w) or (hitbox_h) pushd 0 or (0 shl 16) ; (hitbox_left) or (hitbox_top) call @CBossEntity@hittest_orb$xqv c, offset eye_west, ds cmp ax, 1 jnz short loc_1D65D cmp eye_west.BE_bos_image, 0 jnz short loc_1D6BD loc_1D65D: call @CBossEntity@hittest_orb$xqv c, offset eye_east, ds cmp ax, 1 jnz short loc_1D675 cmp eye_east.BE_bos_image, 0 jnz short loc_1D6BD loc_1D675: call @CBossEntity@hittest_orb$xqv c, offset eye_southwest, ds cmp ax, 1 jnz short loc_1D68D cmp eye_southwest.BE_bos_image, 0 jnz short loc_1D6BD loc_1D68D: call @CBossEntity@hittest_orb$xqv c, offset eye_southeast, ds cmp ax, 1 jnz short loc_1D6A5 cmp eye_southeast.BE_bos_image, 0 jnz short loc_1D6BD loc_1D6A5: call @CBossEntity@hittest_orb$xqv c, offset eye_north, ds cmp ax, 1 jnz short loc_1D6C2 cmp eye_north.BE_bos_image, 0 jz short loc_1D6C2 loc_1D6BD: mov ax, 1 jmp short loc_1D6C4 ; --------------------------------------------------------------------------- loc_1D6C2: xor ax, ax loc_1D6C4: push ax ; colliding_with_orb push seg main_32_TEXT ; hit_callback (segment) push offset @boss_nop$qv ; hit_callback (offset) push 5000 ; hit_score push 2 ; invincibility_flash_colors_count push ss ; invincibility_flash_colors (segment) lea ax, [bp+@@invincibility_flash_colors] push ax ; invincibility_flash_colors (offset) push ds ; hp (segment) push offset _boss_hp ; hp (offset) push ds ; is_invincible (segment) push offset _yuugenmagan_invincible ; is_invincible (offset) push ds ; invincibility_frame (segment) push offset _yuugenmagan_invincibility_frame ; invincibility_frame (offset) call @boss_hit_update_and_render$qmit1t1xnxucucinqv$vuciiii add sp, 22h cmp _boss_hp, 0 jg short loc_1D75D call _mdrv2_bgm_fade_out_nonblock call @CPellets@unput_and_reset$qv c, offset _Pellets, ds xor si, si jmp short loc_1D74B ; --------------------------------------------------------------------------- loc_1D705: shootout_laser_unput_and_reset_broken si inc si loc_1D74B: cmp si, 5 jl short loc_1D705 call @boss_defeat_animate$qv call @scene_init_and_load$quc stdcall, 3 pop cx loc_1D75D: cmp _boss_hp, 0 jle short loc_1D76D cmp word_39E08, 3 jnz loc_1DFFC loc_1D76D: cmp _yuugenmagan_invincible, 0 jnz loc_1DFFC mov _boss_phase, 12 mov word_39E08, 0 mov byte_39E14, 1 mov _boss_phase_frame, 0 mov _yuugenmagan_invincibility_frame, 0 mov x_39E06, 0 mov ax, y_39DF0 add ax, 64 mov point_39DFC.y, ax mov ax, x_39DE6 mov point_39DFC.x, ax mov word_39DFA, 40h xor si, si jmp short loc_1D808 ; --------------------------------------------------------------------------- loc_1D7B1: movsx eax, word_39DFA mov bx, si imul bx, 33h and bx, 255 add bx, bx movsx edx, _CosTable8[bx] imul eax, edx sar eax, 8 add ax, point_39DFC.x mov bx, si add bx, bx mov [bx+5446h], ax movsx eax, word_39DFA mov bx, si imul bx, 33h and bx, 255 add bx, bx movsx edx, _SinTable8[bx] imul eax, edx sar eax, 8 add ax, point_39DFC.y mov bx, si add bx, bx mov [bx+5450h], ax inc si loc_1D808: cmp si, 5 jl short loc_1D7B1 mov ax, y_39DF8 mov y_39DF2, ax cmp _rank, RANK_EASY jnz short loc_1D81F mov ax, 18h jmp short loc_1D84C ; --------------------------------------------------------------------------- loc_1D81F: mov al, _rank cbw cmp ax, RANK_NORMAL jnz short loc_1D82D mov ax, 0Eh jmp short loc_1D84C ; --------------------------------------------------------------------------- loc_1D82D: mov al, _rank cbw cmp ax, RANK_HARD jnz short loc_1D83B mov ax, 0Ah jmp short loc_1D84C ; --------------------------------------------------------------------------- loc_1D83B: mov al, _rank cbw cmp ax, RANK_LUNATIC jnz short loc_1D849 mov ax, 8 jmp short loc_1D84C ; --------------------------------------------------------------------------- loc_1D849: mov ax, 14 loc_1D84C: mov word_39DE4, ax jmp loc_1DFFC ; --------------------------------------------------------------------------- loc_1D852: mov al, _boss_phase cbw cmp ax, 12 jnz short loc_1D8D5 inc _yuugenmagan_invincibility_frame push ds push offset _boss_phase_frame pushd 1 push 1 push 1Eh nopcall sub_1DFFF add sp, 0Ch mov ax, _yuugenmagan_invincibility_frame mov bx, 4 cwd idiv bx or dx, dx jnz short loc_1D88A sub point_39DFC.y, 3 push 0C0h ; '?' call sub_1B8DE loc_1D88A: cmp _boss_phase_frame, 70 jl loc_1DFFC mov _boss_phase, 13 mov word_39E08, 0 mov byte_39E14, 1 mov _boss_phase_frame, 0 mov _yuugenmagan_invincibility_frame, 0 mov x_39E06, 0 mov word_39E12, 0 mov word_39E0E, 0 loc_1D8C1: call _z_palette_set_all_show c, offset _stage_palette, ds call @boss_palette_snap$qv jmp loc_1DFFC ; --------------------------------------------------------------------------- loc_1D8D5: mov al, _boss_phase cbw cmp ax, 13 jnz loc_1DFFC inc _boss_phase_frame inc _yuugenmagan_invincibility_frame inc x_39E06 mov al, byte_39E14 cbw and ax, 1 cmp ax, 1 jnz short loc_1D90D call @CBossEntity@move_lock_unput_and_put_8$qiiii c, offset eye_west, ds, large 0, large 0 or (3 shl 16) loc_1D90D: mov al, byte_39E14 cbw and ax, 2 cmp ax, 2 jnz short loc_1D92E call @CBossEntity@move_lock_unput_and_put_8$qiiii c, offset eye_east, ds, large 0, large 0 or (3 shl 16) loc_1D92E: mov al, byte_39E14 cbw and ax, 4 cmp ax, 4 jnz short loc_1D94F call @CBossEntity@move_lock_unput_and_put_8$qiiii c, offset eye_southwest, ds, large 0, large 0 or (3 shl 16) loc_1D94F: mov al, byte_39E14 cbw and ax, 8 cmp ax, 8 jnz short loc_1D970 call @CBossEntity@move_lock_unput_and_put_8$qiiii c, offset eye_southeast, ds, large 0, large 0 or (3 shl 16) loc_1D970: mov al, byte_39E14 cbw and ax, 10h cmp ax, 10h jnz short loc_1D991 call @CBossEntity@move_lock_unput_and_put_8$qiiii c, offset eye_north, ds, large 0, large 0 or (3 shl 16) loc_1D991: cmp _yuugenmagan_invincible, 0 jz short loc_1D9BC cmp word_39E0E, 0 jnz short loc_1D9BC shl byte_39E14, 1 mov word_39E0E, 1 mov al, byte_39E14 cbw cmp ax, 20h ; ' ' jnz loc_1DB36 mov byte_39E14, 1 jmp loc_1DB36 ; --------------------------------------------------------------------------- loc_1D9BC: cmp word_39E0E, 0 jle short loc_1DA05 push ds push offset word_39E0E push 30003h push word ptr byte_39E14 mov al, byte_39E14 cbw cmp ax, 1 jnz short loc_1D9DE mov al, 10h jmp short loc_1D9E4 ; --------------------------------------------------------------------------- loc_1D9DE: mov al, byte_39E14 cbw sar ax, 1 loc_1D9E4: push ax nopcall sub_1DFFF add sp, 0Ch cmp word_39E0E, 46h ; 'F' jl loc_1DB36 mov word_39E0E, 0 mov x_39E06, 0 jmp loc_1DB36 ; --------------------------------------------------------------------------- loc_1DA05: test byte_39E14, 1 jz short loc_1DA42 mov ax, eye_west.BE_cur_left add ax, 32 sub ax, _player_left cmp ax, 32 jle short loc_1DA23 mov eye_west.BE_bos_image, 4 jmp short loc_1DA42 ; --------------------------------------------------------------------------- loc_1DA23: mov ax, eye_west.BE_cur_left add ax, 32 mov dx, _player_left sub dx, ax cmp dx, 32 jle short loc_1DA3C mov eye_west.BE_bos_image, 5 jmp short loc_1DA42 ; --------------------------------------------------------------------------- loc_1DA3C: mov eye_west.BE_bos_image, 3 loc_1DA42: test byte_39E14, 2 jz short loc_1DA7F mov ax, eye_east.BE_cur_left add ax, 32 sub ax, _player_left cmp ax, 32 jle short loc_1DA60 mov eye_east.BE_bos_image, 4 jmp short loc_1DA7F ; --------------------------------------------------------------------------- loc_1DA60: mov ax, eye_east.BE_cur_left add ax, 32 mov dx, _player_left sub dx, ax cmp dx, 32 jle short loc_1DA79 mov eye_east.BE_bos_image, 5 jmp short loc_1DA7F ; --------------------------------------------------------------------------- loc_1DA79: mov eye_east.BE_bos_image, 3 loc_1DA7F: test byte_39E14, 4 jz short loc_1DABC mov ax, eye_southwest.BE_cur_left add ax, 32 sub ax, _player_left cmp ax, 32 jle short loc_1DA9D mov eye_southwest.BE_bos_image, 4 jmp short loc_1DABC ; --------------------------------------------------------------------------- loc_1DA9D: mov ax, eye_southwest.BE_cur_left add ax, 32 mov dx, _player_left sub dx, ax cmp dx, 32 jle short loc_1DAB6 mov eye_southwest.BE_bos_image, 5 jmp short loc_1DABC ; --------------------------------------------------------------------------- loc_1DAB6: mov eye_southwest.BE_bos_image, 3 loc_1DABC: test byte_39E14, 8 jz short loc_1DAF9 mov ax, eye_southeast.BE_cur_left add ax, 32 sub ax, _player_left cmp ax, 32 jle short loc_1DADA mov eye_southeast.BE_bos_image, 4 jmp short loc_1DAF9 ; --------------------------------------------------------------------------- loc_1DADA: mov ax, eye_southeast.BE_cur_left add ax, 32 mov dx, _player_left sub dx, ax cmp dx, 32 jle short loc_1DAF3 mov eye_southeast.BE_bos_image, 5 jmp short loc_1DAF9 ; --------------------------------------------------------------------------- loc_1DAF3: mov eye_southeast.BE_bos_image, 3 loc_1DAF9: test byte_39E14, 10h jz short loc_1DB36 mov ax, eye_north.BE_cur_left add ax, 32 sub ax, _player_left cmp ax, 32 jle short loc_1DB17 mov eye_north.BE_bos_image, 4 jmp short loc_1DB36 ; --------------------------------------------------------------------------- loc_1DB17: mov ax, eye_north.BE_cur_left add ax, 32 mov dx, _player_left sub dx, ax cmp dx, 32 jle short loc_1DB30 mov eye_north.BE_bos_image, 5 jmp short loc_1DB36 ; --------------------------------------------------------------------------- loc_1DB30: mov eye_north.BE_bos_image, 3 loc_1DB36: cmp word_39E08, 0 jnz short loc_1DBAB mov ax, _boss_phase_frame cwd idiv word_39DE4 or dx, dx jnz short loc_1DBAB cmp word_39E10, 6 jz short loc_1DBAB cmp word_39E10, 9 jz short loc_1DBAB xor si, si jmp short loc_1DBA6 ; --------------------------------------------------------------------------- loc_1DB5B: mov bx, si add bx, bx mov ax, [bx+5450h] sub ax, point_39DFC.y push ax mov bx, si add bx, bx mov ax, [bx+5446h] sub ax, point_39DFC.x push ax call iatan2 mov angle_39E16, al pushd 0 or (0 shl 16) pushd PM_REGULAR or (0 shl 16) push (3 shl 4) push word ptr angle_39E16 mov bx, si add bx, bx push word ptr [bx+5450h] mov bx, si add bx, bx push word ptr [bx+5446h] push ds push offset _Pellets call @CPellets@add_single$qiiuci15pellet_motion_tiii add sp, 14h inc si loc_1DBA6: cmp si, 5 jl short loc_1DB5B loc_1DBAB: cmp _boss_phase_frame, 100 jnz short loc_1DBC5 cmp word_39E10, 0 jnz short loc_1DBC5 mov word_39E10, 1 mov _boss_phase_frame, 0 loc_1DBC5: cmp _boss_phase_frame, 100 jnz short loc_1DBDF cmp word_39E10, 7 jnz short loc_1DBDF mov word_39E10, 8 mov _boss_phase_frame, 0 loc_1DBDF: cmp word_39E10, 1 jz short loc_1DBF4 cmp word_39E10, 3 jz short loc_1DBF4 cmp word_39E10, 5 jnz short loc_1DC2A loc_1DBF4: mov ax, _boss_phase_frame mov bx, 4 cwd idiv bx or dx, dx jnz short loc_1DC18 mov ax, _boss_phase_frame mov bx, 64 cwd idiv bx add ax, 2 add word_39E12, ax push word_39E12 call sub_1B8DE loc_1DC18: cmp _boss_phase_frame, 200 jl short loc_1DC2A inc word_39E10 mov _boss_phase_frame, 0 loc_1DC2A: cmp word_39E10, 2 jz short loc_1DC38 cmp word_39E10, 4 jnz short loc_1DC6D loc_1DC38: mov ax, _boss_phase_frame mov bx, 4 cwd idiv bx or dx, dx jnz short loc_1DC5C mov ax, _boss_phase_frame mov bx, 64 cwd idiv bx add ax, 2 sub word_39E12, ax push word_39E12 call sub_1B8DE loc_1DC5C: cmp _boss_phase_frame, 200 jl loc_1DDD4 inc word_39E10 jmp loc_1DDAD ; --------------------------------------------------------------------------- loc_1DC6D: cmp word_39E10, 6 jnz loc_1DD70 mov ax, _boss_phase_frame mov bx, 4 cwd idiv bx or dx, dx jnz short loc_1DCD0 cmp point_39DFC.y, 300 jge short loc_1DCAB call _vector2_between c, point_39DFC.x, point_39DFC.y, _player_left, RES_Y, offset x_39E02, ds, offset y_39E00, ds, bx loc_1DCAB: mov ax, _boss_phase_frame mov bx, 64 cwd idiv bx add ax, 2 add word_39E12, ax mov ax, y_39E00 add point_39DFC.y, ax mov ax, x_39E02 add point_39DFC.x, ax push word_39E12 call sub_1B8DE loc_1DCD0: cmp point_39DFC.y, 420 jl loc_1DDD4 mov _boss_phase_frame, 0 mov _boss_phase, 10 mov word_39E08, 3 mov byte_39E14, 3 mov word_39E10, 7 mov _yuugenmagan_invincibility_frame, 0 mov x_39E06, 0 call sub_114CA stdcall, x_39DE6, y_39DF0, x_39DEA, y_39DF4 call sub_114CA stdcall, x_39DEA, y_39DF4, x_39DEE, y_39DF8 call sub_114CA stdcall, x_39DEE, y_39DF8, x_39DE8, y_39DF2 call sub_114CA stdcall, x_39DE8, y_39DF2, x_39DEC, y_39DF6 call sub_114CA stdcall, x_39DEC, y_39DF6, x_39DE6, y_39DF0 add sp, 28h jmp short loc_1DDD4 ; --------------------------------------------------------------------------- loc_1DD70: cmp word_39E10, 8 jnz short loc_1DDD4 mov ax, _boss_phase_frame mov bx, 4 cwd idiv bx or dx, dx jnz short loc_1DD9F inc word_39DFA mov ax, _boss_phase_frame mov bx, 64 cwd idiv bx add ax, 2 add word_39E12, ax push word_39E12 call sub_1B8DE loc_1DD9F: cmp _boss_phase_frame, 200 jl short loc_1DDD4 mov word_39E10, 9 loc_1DDAD: mov _boss_phase_frame, 0 call _vector2_between c, point_39DFC.x, point_39DFC.y, _player_left, RES_Y, offset x_39E02, ds, offset y_39E00, ds, 4 loc_1DDD4: cmp word_39E10, 9 jnz loc_1DED5 mov ax, _boss_phase_frame mov bx, 4 cwd idiv bx or dx, dx jnz short loc_1DE37 cmp point_39DFC.y, 260 jge short loc_1DE12 call _vector2_between c, point_39DFC.x, point_39DFC.y, _player_left, RES_Y, offset x_39E02, ds, offset y_39E00, ds, bx loc_1DE12: mov ax, y_39E00 add point_39DFC.y, ax mov ax, x_39E02 add point_39DFC.x, ax mov ax, _boss_phase_frame mov bx, 64 cwd idiv bx add ax, 2 add word_39E12, ax push word_39E12 call sub_1B8DE loc_1DE37: cmp point_39DFC.y, 420 jl loc_1DED5 mov word_39E10, 0 mov _boss_phase_frame, 0 mov _boss_phase, 10 mov word_39E08, 3 mov byte_39E14, 3 mov _yuugenmagan_invincibility_frame, 0 mov x_39E06, 0 call sub_114CA stdcall, x_39DE6, y_39DF0, x_39DEA, y_39DF4 call sub_114CA stdcall, x_39DEA, y_39DF4, x_39DEE, y_39DF8 call sub_114CA stdcall, x_39DEE, y_39DF8, x_39DE8, y_39DF2 call sub_114CA stdcall, x_39DE8, y_39DF2, x_39DEC, y_39DF6 call sub_114CA stdcall, x_39DEC, y_39DF6, x_39DE6, y_39DF0 add sp, 28h loc_1DED5: pushd 0 or (0 shl 16) ; (hitbox_w) or (hitbox_h) pushd 0 or (0 shl 16) ; (hitbox_left) or (hitbox_top) call @CBossEntity@hittest_orb$xqv c, offset eye_west, ds cmp ax, 1 jnz short loc_1DEF3 cmp eye_west.BE_bos_image, 0 jnz short loc_1DF53 loc_1DEF3: call @CBossEntity@hittest_orb$xqv c, offset eye_east, ds cmp ax, 1 jnz short loc_1DF0B cmp eye_east.BE_bos_image, 0 jnz short loc_1DF53 loc_1DF0B: call @CBossEntity@hittest_orb$xqv c, offset eye_southwest, ds cmp ax, 1 jnz short loc_1DF23 cmp eye_southwest.BE_bos_image, 0 jnz short loc_1DF53 loc_1DF23: call @CBossEntity@hittest_orb$xqv c, offset eye_southeast, ds cmp ax, 1 jnz short loc_1DF3B cmp eye_southeast.BE_bos_image, 0 jnz short loc_1DF53 loc_1DF3B: call @CBossEntity@hittest_orb$xqv c, offset eye_north, ds cmp ax, 1 jnz short loc_1DF58 cmp eye_north.BE_bos_image, 0 jz short loc_1DF58 loc_1DF53: mov ax, 1 jmp short loc_1DF5A ; --------------------------------------------------------------------------- loc_1DF58: xor ax, ax loc_1DF5A: push ax ; colliding_with_orb push seg main_32_TEXT ; hit_callback (segment) push offset @boss_nop$qv ; hit_callback (offset) push 5000 ; hit_score push 2 ; invincibility_flash_colors_count push ss ; invincibility_flash_colors (segment) lea ax, [bp+@@invincibility_flash_colors] push ax ; invincibility_flash_colors (offset) push ds ; hp (segment) push offset _boss_hp ; hp (offset) push ds ; is_invincible (segment) push offset _yuugenmagan_invincible ; is_invincible (offset) push ds ; invincibility_frame (segment) push offset _yuugenmagan_invincibility_frame ; invincibility_frame (offset) call @boss_hit_update_and_render$qmit1t1xnxucucinqv$vuciiii add sp, 22h cmp _boss_hp, 0 jg short loc_1DFFC call _mdrv2_bgm_fade_out_nonblock call @CPellets@unput_and_reset$qv stdcall, offset _Pellets, ds call @CMissiles@reset$qv stdcall, offset _Missiles, ds add sp, 8 xor si, si jmp short loc_1DFEA ; --------------------------------------------------------------------------- loc_1DFA4: shootout_laser_unput_and_reset_broken si inc si loc_1DFEA: cmp si, 5 jl short loc_1DFA4 call @boss_defeat_animate$qv call @scene_init_and_load$quc stdcall, 3 pop cx loc_1DFFC: pop si leave retf sub_1BA32 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_1DFFF proc far arg_0 = byte ptr 6 arg_2 = byte ptr 8 arg_4 = word ptr 0Ah arg_6 = word ptr 0Ch arg_8 = dword ptr 0Eh push bp mov bp, sp push si push di mov si, [bp+arg_4] mov di, [bp+arg_6] mov al, [bp+arg_0] cbw and ax, 1 cmp ax, 1 jz short loc_1E022 mov al, [bp+arg_2] cbw and ax, 1 cmp ax, 1 jnz short loc_1E037 loc_1E022: call @CBossEntity@move_lock_unput_and_put_8$qiiii c, offset eye_west, ds, large 0, large 0 or (3 shl 16) loc_1E037: mov al, [bp+arg_0] cbw and ax, 2 cmp ax, 2 jz short loc_1E04F mov al, [bp+arg_2] cbw and ax, 2 cmp ax, 2 jnz short loc_1E064 loc_1E04F: call @CBossEntity@move_lock_unput_and_put_8$qiiii c, offset eye_east, ds, large 0, large 0 or (3 shl 16) loc_1E064: mov al, [bp+arg_0] cbw and ax, 4 cmp ax, 4 jz short loc_1E07C mov al, [bp+arg_2] cbw and ax, 4 cmp ax, 4 jnz short loc_1E091 loc_1E07C: call @CBossEntity@move_lock_unput_and_put_8$qiiii c, offset eye_southwest, ds, large 0, large 0 or (3 shl 16) loc_1E091: mov al, [bp+arg_0] cbw and ax, 8 cmp ax, 8 jz short loc_1E0A9 mov al, [bp+arg_2] cbw and ax, 8 cmp ax, 8 jnz short loc_1E0BE loc_1E0A9: call @CBossEntity@move_lock_unput_and_put_8$qiiii c, offset eye_southeast, ds, large 0, large 0 or (3 shl 16) loc_1E0BE: mov al, [bp+arg_0] cbw and ax, 10h cmp ax, 10h jz short loc_1E0D6 mov al, [bp+arg_2] cbw and ax, 10h cmp ax, 10h jnz short loc_1E0EB loc_1E0D6: call @CBossEntity@move_lock_unput_and_put_8$qiiii c, offset eye_north, ds, large 0, large 0 or (3 shl 16) loc_1E0EB: les bx, [bp+arg_8] inc word ptr es:[bx] mov ax, es:[bx] mov bx, 10 cwd idiv bx or dx, dx jz short loc_1E12D cmp si, 3 jge short loc_1E114 mov al, _z_Palettes[15 * 3][si] cbw or ax, ax jle short loc_1E114 dec _z_Palettes[15 * 3][si] dec byte ptr _stage_palette[15 * size rgb_t][si] loc_1E114: cmp di, size rgb_t jge short loc_1E121 inc _z_Palettes[15 * 3][di] inc byte ptr _stage_palette[15 * size rgb_t][di] loc_1E121: call _z_palette_set_all_show c, offset _stage_palette, ds loc_1E12D: les bx, [bp+arg_8] cmp word ptr es:[bx], 14h jnz loc_1E1F1 test [bp+arg_0], 1 jz short loc_1E144 mov eye_west.BE_bos_image, 2 loc_1E144: test [bp+arg_0], 2 jz short loc_1E150 mov eye_east.BE_bos_image, 2 loc_1E150: test [bp+arg_0], 4 jz short loc_1E15C mov eye_southwest.BE_bos_image, 2 loc_1E15C: test [bp+arg_0], 8 jz short loc_1E168 mov eye_southeast.BE_bos_image, 2 loc_1E168: test [bp+arg_0], 10h jz short loc_1E174 mov eye_north.BE_bos_image, 2 loc_1E174: test [bp+arg_2], 1 jz short loc_1E180 mov eye_west.BE_bos_image, 1 loc_1E180: test [bp+arg_2], 2 jz short loc_1E18C mov eye_east.BE_bos_image, 1 loc_1E18C: test [bp+arg_2], 4 jz short loc_1E198 mov eye_southwest.BE_bos_image, 1 loc_1E198: test [bp+arg_2], 8 jz short loc_1E1A4 mov eye_southeast.BE_bos_image, 1 loc_1E1A4: test [bp+arg_2], 10h jz short loc_1E1B0 mov eye_north.BE_bos_image, 1 loc_1E1B0: test [bp+arg_2], 1 jz short loc_1E1BC mov eye_west.BE_hitbox_orb_inactive, 0 loc_1E1BC: test [bp+arg_2], 2 jz short loc_1E1C8 mov eye_east.BE_hitbox_orb_inactive, 0 loc_1E1C8: test [bp+arg_2], 4 jz short loc_1E1D4 mov eye_southwest.BE_hitbox_orb_inactive, 0 loc_1E1D4: test [bp+arg_2], 8 jz short loc_1E1E0 mov eye_southeast.BE_hitbox_orb_inactive, 0 loc_1E1E0: test [bp+arg_2], 10h jz loc_1E336 mov eye_north.BE_hitbox_orb_inactive, 0 jmp loc_1E336 ; --------------------------------------------------------------------------- loc_1E1F1: les bx, [bp+arg_8] cmp word ptr es:[bx], 28h ; '(' jnz loc_1E2B5 test [bp+arg_0], 1 jz short loc_1E208 mov eye_west.BE_bos_image, 1 loc_1E208: test [bp+arg_0], 2 jz short loc_1E214 mov eye_east.BE_bos_image, 1 loc_1E214: test [bp+arg_0], 4 jz short loc_1E220 mov eye_southwest.BE_bos_image, 1 loc_1E220: test [bp+arg_0], 8 jz short loc_1E22C mov eye_southeast.BE_bos_image, 1 loc_1E22C: test [bp+arg_0], 10h jz short loc_1E238 mov eye_north.BE_bos_image, 1 loc_1E238: test [bp+arg_2], 1 jz short loc_1E244 mov eye_west.BE_bos_image, 2 loc_1E244: test [bp+arg_2], 2 jz short loc_1E250 mov eye_east.BE_bos_image, 2 loc_1E250: test [bp+arg_2], 4 jz short loc_1E25C mov eye_southwest.BE_bos_image, 2 loc_1E25C: test [bp+arg_2], 8 jz short loc_1E268 mov eye_southeast.BE_bos_image, 2 loc_1E268: test [bp+arg_2], 10h jz short loc_1E274 mov eye_north.BE_bos_image, 2 loc_1E274: test [bp+arg_0], 1 jz short loc_1E280 mov eye_west.BE_hitbox_orb_inactive, 1 loc_1E280: test [bp+arg_0], 2 jz short loc_1E28C mov eye_east.BE_hitbox_orb_inactive, 1 loc_1E28C: test [bp+arg_0], 4 jz short loc_1E298 mov eye_southwest.BE_hitbox_orb_inactive, 1 loc_1E298: test [bp+arg_0], 8 jz short loc_1E2A4 mov eye_southeast.BE_hitbox_orb_inactive, 1 loc_1E2A4: test [bp+arg_0], 10h jz loc_1E336 mov eye_north.BE_hitbox_orb_inactive, 1 jmp loc_1E336 ; --------------------------------------------------------------------------- loc_1E2B5: les bx, [bp+arg_8] cmp word ptr es:[bx], 3Ch ; '<' jnz short loc_1E336 test [bp+arg_0], 1 jz short loc_1E2CA mov eye_west.BE_bos_image, 0 loc_1E2CA: test [bp+arg_0], 2 jz short loc_1E2D6 mov eye_east.BE_bos_image, 0 loc_1E2D6: test [bp+arg_0], 4 jz short loc_1E2E2 mov eye_southwest.BE_bos_image, 0 loc_1E2E2: test [bp+arg_0], 8 jz short loc_1E2EE mov eye_southeast.BE_bos_image, 0 loc_1E2EE: test [bp+arg_0], 10h jz short loc_1E2FA mov eye_north.BE_bos_image, 0 loc_1E2FA: test [bp+arg_2], 1 jz short loc_1E306 mov eye_west.BE_bos_image, 6 loc_1E306: test [bp+arg_2], 2 jz short loc_1E312 mov eye_east.BE_bos_image, 6 loc_1E312: test [bp+arg_2], 4 jz short loc_1E31E mov eye_southwest.BE_bos_image, 6 loc_1E31E: test [bp+arg_2], 8 jz short loc_1E32A mov eye_southeast.BE_bos_image, 6 loc_1E32A: test [bp+arg_2], 10h jz short loc_1E336 loc_1E330: mov eye_north.BE_bos_image, 6 loc_1E336: pop di pop si pop bp retf sub_1DFFF endp eye_west equ <> eye_east equ <> eye_southwest equ <> eye_southeast equ <> eye_center equ <> eye_0 equ <> eye_1 equ <> eye_2 equ <> eye_3 equ <> eye_4 equ <> main_28_TEXT ends ; =========================================================================== ; Segment type: Pure code main_29_TEXT segment byte public 'CODE' use16 assume cs:main_29 ;org 0Ah assume es:nothing, ss:nothing, ds:_DATA, fs:nothing, gs:nothing mima_still equ extern @mima_load$qv:proc extern @meteor_put$qv:proc extern @mima_put_cast_both$qv:proc extern @meteor_activate$qv:proc extern @mima_bg_snap$qv:proc extern @mima_unput$qi:proc extern @spreadin_unput_and_put$qii:proc extern @mima_vertical_sprite_transition_$qv:proc extern @mima_setup$qv:proc extern @mima_free$qv:proc extern @mima_select_for_rank$qmiiiii:proc main_29_TEXT ends main_29__TEXT segment byte public 'CODE' use16 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_1E886 proc near arg_0 = word ptr 4 @@angle = byte ptr 6 arg_4 = word ptr 8 arg_6 = word ptr 0Ah arg_8 = word ptr 0Ch arg_A = dword ptr 0Eh arg_E = dword ptr 12h push bp mov bp, sp push si push di mov si, [bp+arg_4] mov di, [bp+arg_0] xor cx, cx jmp short loc_1E8FE ; --------------------------------------------------------------------------- loc_1E895: movsx eax, si mov dl, [bp+@@angle] mov dh, 0 and dx, 255 add dx, dx mov bx, dx movsx edx, _CosTable8[bx] imul eax, edx sar eax, 8 add ax, [bp+arg_8] mov dx, cx add dx, dx les bx, [bp+arg_E] add bx, dx mov es:[bx], ax movsx eax, si mov dl, [bp+@@angle] mov dh, 0 and dx, 255 add dx, dx mov bx, dx movsx edx, _SinTable8[bx] imul eax, edx sar eax, 8 add ax, [bp+arg_6] mov dx, cx add dx, dx les bx, [bp+arg_A] add bx, dx mov es:[bx], ax mov ax, 256 cwd idiv di add al, [bp+@@angle] mov [bp+@@angle], al inc cx loc_1E8FE: cmp cx, di jl short loc_1E895 pop di pop si pop bp retn 12h sub_1E886 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_1E908 proc far @@angle = byte ptr -13h var_12 = word ptr -12h @@y = byte ptr -10h @@x = byte ptr -8 enter 14h, 0 push si push di cmp _boss_phase_frame, 100 jl loc_1EB20 cmp _boss_phase_frame, 100 jnz short loc_1E947 mov word_39E1A+1, 20h ; ' ' mov byte ptr word_39E1A, 0 call @mima_select_for_rank$qmiiiii stdcall, offset speed_39E18, ds, large 40h or (48h shl 16), large 50h or (58h shl 16) push 8 call _mdrv2_se_play add sp, 0Eh loc_1E947: mov ax, _boss_phase_frame mov bx, 8 cwd idiv bx or dx, dx jnz loc_1EAD2 mov ax, mima_still.BE_cur_left add ax, 64 mov di, ax mov ax, mima_still.BE_cur_top add ax, 80 mov [bp+var_12], ax push ss lea ax, [bp+@@x] push ax push ss lea ax, [bp+@@y] push ax push di push [bp+var_12] push word_39E1A+1 push word_39E1A push 4 call sub_1E886 push 4 ; point_count push ss lea ax, [bp+@@y] push ax push ss lea ax, [bp+@@x] push ax call _graph_r_lineloop_unput add sp, 0Ah cmp _boss_phase_frame, 260 jge short loc_1E9A2 mov al, 0Ch jmp short loc_1E9A4 ; --------------------------------------------------------------------------- loc_1E9A2: mov al, 0F4h loc_1E9A4: add al, byte ptr word_39E1A mov byte ptr word_39E1A, al cmp word_39E1A+1, 70h ; 'p' jge short loc_1E9BA add word_39E1A+1, 8 jmp loc_1EA9F ; --------------------------------------------------------------------------- loc_1E9BA: cmp _boss_phase_frame, 280 jle short loc_1EA2D xor si, si jmp short loc_1EA26 ; --------------------------------------------------------------------------- loc_1E9C6: mov bx, si add bx, bx lea ax, [bp+@@y] add bx, ax mov ax, ss:[bx] sub ax, [bp+var_12] push ax mov bx, si add bx, bx lea ax, [bp+@@x] add bx, ax mov ax, ss:[bx] sub ax, di push ax call iatan2 mov [bp+@@angle], al pushd 0 or (0 shl 16) pushd PM_REGULAR or (0 shl 16) push speed_39E18 push word ptr [bp+@@angle] mov bx, si add bx, bx lea ax, [bp+@@y] add bx, ax push word ptr ss:[bx] mov bx, si add bx, bx lea ax, [bp+@@x] add bx, ax push word ptr ss:[bx] push ds push offset _Pellets call @CPellets@add_single$qiiuci15pellet_motion_tiii push 7 call _mdrv2_se_play add sp, 16h inc si loc_1EA26: cmp si, 4 jl short loc_1E9C6 jmp short loc_1EA9F ; --------------------------------------------------------------------------- loc_1EA2D: xor si, si jmp short loc_1EA9A ; --------------------------------------------------------------------------- loc_1EA31: mov bx, si add bx, bx lea ax, [bp+@@y] add bx, ax mov ax, 384 sub ax, ss:[bx] push ax mov bx, si add bx, bx lea ax, [bp+@@x] add bx, ax mov ax, _player_left add ax, 12 sub ax, ss:[bx] push ax call iatan2 mov [bp+@@angle], al pushd 0 or (0 shl 16) pushd PM_REGULAR or (0 shl 16) mov ax, speed_39E18 cwd sub ax, dx sar ax, 1 push ax push word ptr [bp+@@angle] mov bx, si add bx, bx lea ax, [bp+@@y] add bx, ax push word ptr ss:[bx] mov bx, si add bx, bx lea ax, [bp+@@x] add bx, ax push word ptr ss:[bx] push ds push offset _Pellets call @CPellets@add_single$qiiuci15pellet_motion_tiii push 7 call _mdrv2_se_play add sp, 16h inc si loc_1EA9A: cmp si, 4 jl short loc_1EA31 loc_1EA9F: push ss lea ax, [bp+@@x] push ax push ss lea ax, [bp+@@y] push ax push di push [bp+var_12] push word_39E1A+1 push word_39E1A push 4 call sub_1E886 push 4 or (7 shl 16) ; (point_count) or (col shl 16) push ss lea ax, [bp+@@y] push ax push ss lea ax, [bp+@@x] push ax call _graph_r_lineloop_put add sp, 0Ch loc_1EAD2: cmp _boss_phase_frame, 360 jle short loc_1EB20 mov ax, mima_still.BE_cur_left add ax, 64 mov di, ax mov ax, mima_still.BE_cur_top add ax, 80 mov [bp+var_12], ax push ss lea ax, [bp+@@x] push ax push ss lea ax, [bp+@@y] push ax push di push [bp+var_12] push word_39E1A+1 push word_39E1A push 4 call sub_1E886 push 4 ; point_count push ss lea ax, [bp+@@y] push ax push ss lea ax, [bp+@@x] push ax call _graph_r_lineloop_unput add sp, 0Ah mov _boss_phase_frame, 0 loc_1EB20: pop di pop si leave retf sub_1E908 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_1EB24 proc far var_2E = qword ptr -2Eh var_26 = qword ptr -26h var_18 = word ptr -18h @@vector_y = word ptr -16h @@vector_x = word ptr -14h var_12 = word ptr -12h @@y = byte ptr -10h @@x = byte ptr -8 enter 18h, 0 push si push di cmp _boss_phase_frame, 100 jl loc_1ECEC cmp _boss_phase_frame, 100 jnz short loc_1EB64 mov word_39E1D+1, 20h ; ' ' mov byte ptr word_39E1D, 0 call @mima_select_for_rank$qmiiiii c, offset speed_39E18, ds, large 60h or (68h shl 16), large 70h or (76h shl 16) push 8 call _mdrv2_se_play pop cx loc_1EB64: mov ax, _boss_phase_frame mov bx, 8 cwd idiv bx or dx, dx jnz loc_1ECA1 mov ax, mima_still.BE_cur_left add ax, 64 mov si, ax mov ax, mima_still.BE_cur_top add ax, 80 mov di, ax push ss lea ax, [bp+@@x] push ax push ss lea ax, [bp+@@y] push ax push si push di push word_39E1D+1 push word_39E1D push 4 call sub_1E886 push 4 ; point_count push ss lea ax, [bp+@@y] push ax push ss lea ax, [bp+@@x] push ax call _graph_r_lineloop_unput add sp, 0Ah mov al, byte ptr word_39E1D add al, 0F4h mov byte ptr word_39E1D, al cmp word_39E1D+1, 50h ; 'P' jge short loc_1EBC7 add word_39E1D+1, 8 jmp loc_1EC70 ; --------------------------------------------------------------------------- loc_1EBC7: cmp _boss_phase_frame, 224 jnz short loc_1EBD8 mov ax, _player_left mov x_39E20, ax jmp loc_1EC70 ; --------------------------------------------------------------------------- loc_1EBD8: cmp _boss_phase_frame, 240 jle loc_1EC70 push speed_39E18 push ss lea ax, [bp+@@vector_y] push ax push ss lea ax, [bp+@@vector_x] push ax push 384 mov ax, x_39E20 add ax, 8 push ax push di push si call _vector2_between add sp, 12h mov [bp+var_12], 0 jmp short loc_1EC62 ; --------------------------------------------------------------------------- loc_1EC0B: push 0 ; char mov ax, [bp+@@vector_y] sar ax, 4 mov [bp+var_18], ax fild [bp+var_18] sub sp, 8 fstp [bp+var_26] fwait mov ax, [bp+@@vector_x] sar ax, 4 mov [bp+var_18], ax fild [bp+var_18] sub sp, 8 fstp [bp+var_2E] fwait mov bx, [bp+var_12] add bx, bx lea ax, [bp+@@y] add bx, ax push word ptr ss:[bx] ; int mov bx, [bp+var_12] add bx, bx lea ax, [bp+@@x] add bx, ax push word ptr ss:[bx] ; int push ds push offset _Missiles ; this call sub_21C0D add sp, 1Ah inc [bp+var_12] loc_1EC62: cmp [bp+var_12], 4 jl short loc_1EC0B push 6 call _mdrv2_se_play pop cx loc_1EC70: push ss lea ax, [bp+@@x] push ax push ss lea ax, [bp+@@y] push ax push si push di push word_39E1D+1 push word_39E1D push 4 call sub_1E886 push 4 or (7 shl 16) ; (point_count) or (col shl 16) push ss lea ax, [bp+@@y] push ax push ss lea ax, [bp+@@x] push ax call _graph_r_lineloop_put add sp, 0Ch loc_1ECA1: cmp _boss_phase_frame, 320 jle short loc_1ECEC mov ax, mima_still.BE_cur_left add ax, 64 mov si, ax mov ax, mima_still.BE_cur_top add ax, 80 mov di, ax push ss lea ax, [bp+@@x] push ax push ss lea ax, [bp+@@y] push ax push si push di push word_39E1D+1 push word_39E1D push 4 call sub_1E886 push 4 ; point_count push ss lea ax, [bp+@@y] push ax push ss lea ax, [bp+@@x] push ax call _graph_r_lineloop_unput add sp, 0Ah mov _boss_phase_frame, 0 loc_1ECEC: pop di pop si leave retf sub_1EB24 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_1ECF0 proc far @@angle = byte ptr -23h var_22 = word ptr -22h var_20 = byte ptr -20h var_18 = byte ptr -18h var_10 = byte ptr -10h var_8 = byte ptr -8 enter 24h, 0 push si push di cmp _boss_phase_frame, 50 jnz short loc_1ED01 call @mima_put_cast_both$qv loc_1ED01: cmp _boss_phase_frame, 100 jl loc_1EF81 cmp _boss_phase_frame, 100 jnz short loc_1ED3A mov word_39E22+1, 20h ; ' ' mov byte ptr word_39E22, 0 call @mima_select_for_rank$qmiiiii stdcall, offset speed_39E18, ds, large 40h or (48h shl 16), large 50h or (58h shl 16) push 8 call _mdrv2_se_play add sp, 0Eh loc_1ED3A: mov ax, _boss_phase_frame mov bx, 8 cwd idiv bx or dx, dx jnz loc_1EF00 mov ax, mima_still.BE_cur_left add ax, 64 mov di, ax mov ax, mima_still.BE_cur_top add ax, 80 mov [bp+var_22], ax push ss lea ax, [bp+var_8] push ax push ss lea ax, [bp+var_10] push ax push di push [bp+var_22] push word_39E22+1 push word_39E22 push 4 call sub_1E886 push ss lea ax, [bp+var_18] push ax push ss lea ax, [bp+var_20] push ax push di push [bp+var_22] push word_39E22+1 mov al, 0 sub al, byte ptr word_39E22 push ax push 4 call sub_1E886 push 4 ; point_count push ss lea ax, [bp+var_10] push ax push ss lea ax, [bp+var_8] push ax call _graph_r_lineloop_unput push 4 ; point_count push ss lea ax, [bp+var_20] push ax push ss lea ax, [bp+var_18] push ax call _graph_r_lineloop_unput add sp, 14h mov al, byte ptr word_39E22 add al, 0FAh mov byte ptr word_39E22, al mov _Pellets.PELLET_spawn_with_cloud, 1 cmp word_39E22+1, 70h ; 'p' jge short loc_1EDD4 add word_39E22+1, 8 jmp loc_1EE95 ; --------------------------------------------------------------------------- loc_1EDD4: xor si, si jmp loc_1EE8E ; --------------------------------------------------------------------------- loc_1EDD9: mov bx, si add bx, bx lea ax, [bp+var_10] add bx, ax mov ax, ss:[bx] sub ax, [bp+var_22] push ax mov bx, si add bx, bx lea ax, [bp+var_8] add bx, ax mov ax, ss:[bx] sub ax, di push ax call iatan2 mov [bp+@@angle], al pushd 0 or (0 shl 16) pushd PM_REGULAR or (0 shl 16) push speed_39E18 push word ptr [bp+@@angle] mov bx, si add bx, bx lea ax, [bp+var_10] add bx, ax push word ptr ss:[bx] mov bx, si add bx, bx lea ax, [bp+var_8] add bx, ax push word ptr ss:[bx] push ds push offset _Pellets call @CPellets@add_single$qiiuci15pellet_motion_tiii mov bx, si add bx, bx lea ax, [bp+var_20] add bx, ax mov ax, ss:[bx] sub ax, [bp+var_22] push ax mov bx, si add bx, bx lea ax, [bp+var_18] add bx, ax mov ax, ss:[bx] sub ax, di push ax call iatan2 mov [bp+@@angle], al pushd 0 or (0 shl 16) pushd PM_REGULAR or (0 shl 16) push speed_39E18 push word ptr [bp+@@angle] mov bx, si add bx, bx lea ax, [bp+var_20] add bx, ax push word ptr ss:[bx] mov bx, si add bx, bx lea ax, [bp+var_18] add bx, ax push word ptr ss:[bx] push ds push offset _Pellets call @CPellets@add_single$qiiuci15pellet_motion_tiii push 7 call _mdrv2_se_play add sp, 2Ah inc si loc_1EE8E: cmp si, 4 jl loc_1EDD9 loc_1EE95: push ss lea ax, [bp+var_8] push ax push ss lea ax, [bp+var_10] push ax push di push [bp+var_22] push word_39E22+1 push word_39E22 push 4 call sub_1E886 push ss lea ax, [bp+var_18] push ax push ss lea ax, [bp+var_20] push ax push di push [bp+var_22] push word_39E22+1 mov al, 0 sub al, byte ptr word_39E22 push ax push 4 call sub_1E886 push 4 or (7 shl 16) ; (point_count) or (col shl 16) push ss lea ax, [bp+var_10] push ax push ss lea ax, [bp+var_8] push ax call _graph_r_lineloop_put push 4 or (7 shl 16) ; (point_count) or (col shl 16) push ss lea ax, [bp+var_20] push ax push ss lea ax, [bp+var_18] push ax call _graph_r_lineloop_put add sp, 18h mov _Pellets.PELLET_spawn_with_cloud, 0 loc_1EF00: cmp _boss_phase_frame, 320 jle short loc_1EF81 mov ax, mima_still.BE_cur_left add ax, 64 mov di, ax mov ax, mima_still.BE_cur_top add ax, 80 mov [bp+var_22], ax push ss lea ax, [bp+var_8] push ax push ss lea ax, [bp+var_10] push ax push di push [bp+var_22] push word_39E22+1 push word_39E22 push 4 call sub_1E886 push ss lea ax, [bp+var_18] push ax push ss lea ax, [bp+var_20] push ax push di push [bp+var_22] push word_39E22+1 mov al, 0 sub al, byte ptr word_39E22 push ax push 4 call sub_1E886 push 4 ; point_count push ss lea ax, [bp+var_10] push ax push ss lea ax, [bp+var_8] push ax call _graph_r_lineloop_unput push 4 ; point_count push ss lea ax, [bp+var_20] push ax push ss lea ax, [bp+var_18] push ax call _graph_r_lineloop_unput add sp, 14h mov _boss_phase_frame, 0 call @meteor_activate$qv loc_1EF81: pop di pop si leave retf sub_1ECF0 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_1EF85 proc far var_6 = word ptr -6 @@angle = byte ptr -3 var_2 = word ptr -2 arg_0 = word ptr 6 enter 6, 0 push si cmp [bp+arg_0], 0 jnz short loc_1EFB1 mov byte_39E25, -1 mov _mima_spreadin_interval, 4 call IRand mov bx, 2 cwd idiv bx mov byte_39E26, dl mov _mima_spreadin_speed, 16 jmp loc_1F19B ; --------------------------------------------------------------------------- loc_1EFB1: cmp byte_39E25, -1 jnz short loc_1EFE5 push 1 call _graph_accesspage_func call @mima_unput$qi stdcall, 0 push 0 call _graph_accesspage_func call @mima_unput$qi stdcall, 0 add sp, 8 mov _mima_meteor_active, 0 mov byte_39E25, 0 mov _boss_phase_frame, 1 loc_1EFE5: cmp byte_39E25, 0 jnz short loc_1EFF8 mov mima_still.BE_hitbox_orb_inactive, 1 call @mima_vertical_sprite_transition_$qv jmp short loc_1F051 ; --------------------------------------------------------------------------- loc_1EFF8: cmp _boss_phase_frame, 4 jnz short loc_1F030 cmp byte_39E26, 0 jnz short loc_1F011 mov al, byte_39E25 mov ah, 0 dec ax shl ax, 7 jmp short loc_1F020 ; --------------------------------------------------------------------------- loc_1F011: mov al, byte_39E25 mov ah, 0 shl ax, 7 push ax mov ax, 280h pop dx sub ax, dx loc_1F020: mov [bp+var_6], ax mov mima_still.BE_cur_left, ax mov mima_still.BE_cur_top, 96 call @mima_bg_snap$qv loc_1F030: cmp _boss_phase_frame, 12 jge short loc_1F03F mov mima_still.BE_hitbox_orb_inactive, 1 jmp short loc_1F045 ; --------------------------------------------------------------------------- loc_1F03F: mov mima_still.BE_hitbox_orb_inactive, 0 loc_1F045: call @spreadin_unput_and_put$qii c, large [dword ptr mima_still.BE_cur_left] loc_1F051: cmp _boss_phase_frame, 0 jnz loc_1F19B cmp byte_39E25, 0 jz loc_1F0F8 cmp byte_39E25, 4 jz short loc_1F087 push 1 call _graph_accesspage_func call @mima_unput$qi stdcall, 0 push 0 call _graph_accesspage_func call @mima_unput$qi stdcall, 0 add sp, 8 loc_1F087: call @mima_select_for_rank$qmiiiii stdcall, offset speed_39E18, ds, large 1Eh or (23h shl 16), large 28h or (2Dh shl 16) push 10 or (12 shl 16) ; (for_hard) or (for_lunatic) push 5 or (8 shl 16) ; (for_easy) or (for_normal) push ss lea ax, [bp+var_2] push ax ; ret (offset) call @mima_select_for_rank$qmiiiii add sp, 18h xor si, si mov [bp+@@angle], 0 jmp short loc_1F0F3 ; --------------------------------------------------------------------------- loc_1F0BB: pushd 0 or (0 shl 16) push speed_39E18 push PM_CHASE push speed_39E18 push word ptr [bp+@@angle] mov ax, mima_still.BE_cur_top add ax, 80 push ax mov ax, mima_still.BE_cur_left add ax, 64 push ax push ds push offset _Pellets call @CPellets@add_single$qiiuci15pellet_motion_tiii add sp, 14h inc si mov ax, 256 cwd idiv [bp+var_2] add al, [bp+@@angle] mov [bp+@@angle], al loc_1F0F3: cmp si, [bp+var_2] jl short loc_1F0BB loc_1F0F8: cmp byte_39E25, 4 jb short loc_1F154 push 1 call _graph_accesspage_func call @CBossEntity@put_8$xqiii stdcall, offset mima_still, ds, large [dword ptr mima_still.BE_cur_left], 0 push 0 call _graph_accesspage_func call @CBossEntity@put_8$xqiii stdcall, offset mima_still, ds, large [dword ptr mima_still.BE_cur_left], 0 call _z_palette_set_all_show stdcall, offset _stage_palette, ds add sp, 1Ch mov byte_39E25, -1 mov al, 1 sub al, byte_39E26 mov byte_39E26, al mov _mima_meteor_active, 1 mov _boss_phase_frame, 0 jmp short loc_1F19B ; --------------------------------------------------------------------------- loc_1F154: xor si, si jmp short loc_1F18C ; --------------------------------------------------------------------------- loc_1F158: mov bx, si imul bx, 3 mov al, _z_Palettes[bx].b cbw add ax, -4 push ax mov bx, si imul bx, 3 mov al, _z_Palettes[bx].g cbw add ax, -4 push ax mov bx, si imul bx, 3 mov al, _z_Palettes[bx].r cbw add ax, -4 push ax push si call _z_palette_set_show add sp, 8 inc si loc_1F18C: cmp si, COLOR_COUNT jl short loc_1F158 inc byte_39E25 mov _boss_phase_frame, 1 loc_1F19B: pop si leave retf sub_1EF85 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_1F19E proc far arg_0 = word ptr 6 arg_2 = word ptr 8 arg_4 = word ptr 0Ah push bp mov bp, sp push si push di mov ax, [bp+arg_0] sar ax, 3 mov dx, [bp+arg_2] shl dx, 6 add ax, dx mov dx, [bp+arg_2] shl dx, 4 add ax, dx mov di, ax call _grcg_setcolor_rmw stdcall, 10 pop cx xor si, si jmp short loc_1F1EA ; --------------------------------------------------------------------------- loc_1F1C7: mov ax, si mov bx, 8 cwd idiv bx mov bx, 7 sub bx, dx shl bx, 2 mov eax, [bx+11DDh] les bx, _VRAM_PLANE_B add bx, di mov es:[bx], eax inc si sub di, 50h ; 'P' loc_1F1EA: mov ax, [bp+arg_4] add ax, 0FFF8h cmp ax, si jg short loc_1F1C7 xor si, si jmp short loc_1F21B ; --------------------------------------------------------------------------- loc_1F1F8: mov ax, si mov bx, 8 cwd idiv bx mov bx, 7 sub bx, dx shl bx, 2 mov eax, [bx+11FDh] les bx, _VRAM_PLANE_B add bx, di mov es:[bx], eax inc si sub di, 50h ; 'P' loc_1F21B: cmp si, 8 jl short loc_1F1F8 call _grcg_off_func pop di pop si pop bp retf sub_1F19E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_1F229 proc far push bp mov bp, sp push si cmp _boss_phase_frame, 50 jnz short loc_1F238 call @mima_put_cast_both$qv loc_1F238: cmp _boss_phase_frame, 100 jl loc_1F596 cmp _boss_phase_frame, 100 jnz loc_1F31E xor si, si jmp short loc_1F263 ; --------------------------------------------------------------------------- loc_1F24E: mov bx, si add bx, bx mov word ptr [bx+5487h], 80h ; '?' mov bx, si add bx, bx mov word ptr [bx+54A7h], 190h inc si loc_1F263: cmp si, 8 jl short loc_1F24E call IRand mov bx, 48 cwd idiv bx add dx, 16 mov word_39E37, dx call IRand mov bx, 48 cwd idiv bx mov ax, 608 sub ax, dx add ax, 16 mov word_39E39, ax call IRand mov bx, 224 cwd idiv bx add dx, 64 mov word_39E3B, dx call IRand mov bx, 224 cwd idiv bx add dx, 336 mov word_39E3D, dx call IRand mov bx, 160 cwd idiv bx add dx, 128 mov word_39E3F, dx call IRand mov bx, 160 cwd idiv bx add dx, 336 mov word_39E41, dx call IRand mov bx, 224 cwd idiv bx add dx, 64 mov word_39E43, dx call IRand mov bx, 224 cwd idiv bx add dx, 336 mov word_39E45, dx call @mima_select_for_rank$qmiiiii stdcall, offset speed_39E18, ds, large 28h or (2Dh shl 16), large 32h or (37h shl 16) push 8 call _mdrv2_se_play add sp, 0Eh loc_1F31E: xor si, si jmp short loc_1F381 ; --------------------------------------------------------------------------- loc_1F322: mov ax, _boss_phase_frame mov bx, 8 cwd idiv bx cmp dx, si jnz short loc_1F380 mov ax, si imul ax, 20 add ax, 100 cmp ax, _boss_phase_frame jge short loc_1F380 mov bx, si add bx, bx cmp word ptr [bx+5487h], 20h ; ' ' jle short loc_1F380 push 255 ; angle_end push 0 ; angle_start push 4 ; angle_step mov bx, si add bx, bx push word ptr [bx+5487h] ; radius_y mov bx, si add bx, bx push word ptr [bx+5487h] ; radius_x mov bx, si add bx, bx push word ptr [bx+54A7h] ; center_y mov bx, si add bx, bx push word ptr [bx+5497h] ; center_x call @shape_ellipse_arc_sloppy_unput$qiiiiucucuc add sp, 0Eh mov bx, si add bx, bx sub word ptr [bx+5487h], 8 loc_1F380: inc si loc_1F381: cmp si, 8 jl short loc_1F322 cmp _boss_phase_frame, 100 jz short loc_1F3C4 cmp _boss_phase_frame, 120 jz short loc_1F3C4 cmp _boss_phase_frame, 140 jz short loc_1F3C4 cmp _boss_phase_frame, 160 jz short loc_1F3C4 cmp _boss_phase_frame, 180 jz short loc_1F3C4 cmp _boss_phase_frame, 200 jz short loc_1F3C4 cmp _boss_phase_frame, 220 jz short loc_1F3C4 cmp _boss_phase_frame, 240 jnz short loc_1F3CC loc_1F3C4: push 0Ch call _mdrv2_se_play pop cx loc_1F3CC: cmp _boss_phase_frame, 240 jnz short loc_1F3D8 call @meteor_activate$qv loc_1F3D8: xor si, si jmp loc_1F549 ; --------------------------------------------------------------------------- loc_1F3DD: mov ax, _boss_phase_frame mov bx, 8 cwd idiv bx cmp dx, si jnz loc_1F548 mov ax, si imul ax, 20 add ax, 100 cmp ax, _boss_phase_frame jge loc_1F548 mov bx, si add bx, bx cmp word ptr [bx+5487h], 20h ; ' ' jle short loc_1F458 push 255 ; angle_end push 0 ; angle_start push 4 ; angle_step push 7 ; col mov bx, si add bx, bx push word ptr [bx+5487h] ; radius_y mov bx, si add bx, bx push word ptr [bx+5487h] ; radius_x mov bx, si add bx, bx push word ptr [bx+54A7h] ; center_y mov bx, si add bx, bx push word ptr [bx+5497h] ; center_x call @shape_ellipse_arc_put$qiiiiiucucuc push 1 mov bx, si add bx, bx push word ptr [bx+54A7h] mov bx, si add bx, bx push word ptr [bx+5497h] push ((RES_Y / 2) shl 16) or (RES_X / 2) call _graph_r_line add sp, 1Ah jmp loc_1F548 ; --------------------------------------------------------------------------- loc_1F458: mov bx, si add bx, bx cmp word ptr [bx+5487h], 10h jle loc_1F4F8 mov bx, si add bx, bx cmp word ptr [bx+5487h], 20h ; ' ' jnz short loc_1F495 push 7 call _mdrv2_se_play mov bx, si add bx, bx push word ptr [bx+54A7h] mov bx, si add bx, bx push word ptr [bx+5497h] push (200 shl 16) or 320 call _graph_r_line_unput add sp, 0Ah loc_1F495: mov bx, si add bx, bx mov ax, 22h ; '"' sub ax, [bx+5487h] shl ax, 4 push ax mov bx, si add bx, bx push word ptr [bx+54A7h] mov bx, si add bx, bx mov ax, [bx+5497h] add ax, 0FFF0h push ax call sub_1F19E add sp, 6 cmp _player_invincible, 0 jnz short loc_1F4ED mov bx, si add bx, bx mov ax, [bx+5497h] add ax, -40 cmp ax, _player_left jge short loc_1F4ED mov bx, si add bx, bx mov ax, [bx+5497h] add ax, 8 cmp ax, _player_left jle short loc_1F4ED mov _done, 1 loc_1F4ED: mov bx, si add bx, bx sub word ptr [bx+5487h], 8 jmp short loc_1F548 ; --------------------------------------------------------------------------- loc_1F4F8: mov bx, si add bx, bx cmp word ptr [bx+5487h], 0FC19h jz short loc_1F548 push PG_3_SPREAD_WIDE_AIMED or (((2 shl 4) + 4) shl 16) mov ax, mima_still.BE_cur_top add ax, 80 push ax mov ax, mima_still.BE_cur_left add ax, 64 push ax push ds push offset _Pellets call @CPellets@add_group$qii14pellet_group_ti push (224 shl 16) or 32 push 176 mov bx, si add bx, bx mov ax, [bx+5497h] add ax, -16 push ax call _egc_copy_rect_1_to_0_16 add sp, 14h mov bx, si add bx, bx mov word ptr [bx+5487h], 0FC19h loc_1F548: inc si loc_1F549: cmp si, 8 jl loc_1F3DD cmp word_39E27, 0FC19h jnz short loc_1F596 cmp word_39E29, 0FC19h jnz short loc_1F596 cmp word_39E2B, 0FC19h jnz short loc_1F596 cmp word_39E2D, 0FC19h jnz short loc_1F596 cmp word_39E2F, 0FC19h jnz short loc_1F596 cmp word_39E31, 0FC19h jnz short loc_1F596 cmp word_39E33, 0FC19h jnz short loc_1F596 cmp word_39E35, 0FC19h jnz short loc_1F596 mov _boss_phase_frame, 0 loc_1F596: pop si pop bp retf sub_1F229 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_1F599 proc far var_2E = qword ptr -2Eh var_26 = qword ptr -26h var_18 = word ptr -18h @@vector_y = word ptr -16h @@vector_x = word ptr -14h var_12 = word ptr -12h var_10 = byte ptr -10h var_8 = byte ptr -8 enter 18h, 0 push si push di cmp _boss_phase_frame, 100 jl loc_1F765 cmp _boss_phase_frame, 100 jnz short loc_1F5DE mov word_39E57+1, 20h ; ' ' mov byte ptr word_39E57, 0 mov byte ptr word_39E5A, 0 call @mima_select_for_rank$qmiiiii c, offset speed_39E18, ds, large 28h or (2Dh shl 16), large 32h or (37h shl 16) push 8 call _mdrv2_se_play pop cx loc_1F5DE: mov ax, _boss_phase_frame mov bx, 8 cwd idiv bx or dx, dx jnz loc_1F717 mov ax, mima_still.BE_cur_left add ax, 64 mov di, ax mov ax, mima_still.BE_cur_top add ax, 80 mov [bp+var_12], ax push ss lea ax, [bp+var_8] push ax push ss lea ax, [bp+var_10] push ax push di push [bp+var_12] push word_39E57+1 push word_39E57 push 4 call sub_1E886 push 4 ; point_count push ss lea ax, [bp+var_10] push ax push ss lea ax, [bp+var_8] push ax call _graph_r_lineloop_unput add sp, 0Ah mov al, byte ptr word_39E57 add al, 0F4h mov byte ptr word_39E57, al cmp word_39E57+1, 50h ; 'P' jge short loc_1F644 add word_39E57+1, 8 jmp loc_1F6E4 ; --------------------------------------------------------------------------- loc_1F644: cmp _boss_phase_frame, 180 jle loc_1F6E4 mov ax, _boss_phase_frame mov bx, 16 cwd idiv bx cmp dx, 8 jnz loc_1F6E4 push word_39E5A mov ax, speed_39E18 mov bx, 10 cwd idiv bx push ax push ss lea ax, [bp+@@vector_y] push ax push ss lea ax, [bp+@@vector_x] push ax call _vector2 add sp, 0Ch xor si, si jmp short loc_1F6CF ; --------------------------------------------------------------------------- loc_1F682: push 0 ; char mov ax, [bp+@@vector_y] mov [bp+var_18], ax fild [bp+var_18] sub sp, 8 fstp [bp+var_26] fwait mov ax, [bp+@@vector_x] mov [bp+var_18], ax fild [bp+var_18] sub sp, 8 fstp [bp+var_2E] mov bx, si add bx, bx fwait lea ax, [bp+var_10] add bx, ax push word ptr ss:[bx] ; int mov bx, si add bx, bx lea ax, [bp+var_8] add bx, ax push word ptr ss:[bx] ; int push ds push offset _Missiles ; this call sub_21C0D add sp, 1Ah inc si loc_1F6CF: cmp si, 4 jl short loc_1F682 push 6 call _mdrv2_se_play pop cx mov al, byte ptr word_39E5A add al, 0Dh mov byte ptr word_39E5A, al loc_1F6E4: push ss lea ax, [bp+var_8] push ax push ss lea ax, [bp+var_10] push ax push di push [bp+var_12] push word_39E57+1 push word_39E57 push 4 call sub_1E886 push 4 or (7 shl 16) ; (point_count) or (col shl 16) push ss lea ax, [bp+var_10] push ax push ss lea ax, [bp+var_8] push ax call _graph_r_lineloop_put add sp, 0Ch loc_1F717: cmp _boss_phase_frame, 340 jle short loc_1F765 mov ax, mima_still.BE_cur_left add ax, 64 mov di, ax mov ax, mima_still.BE_cur_top add ax, 80 mov [bp+var_12], ax push ss lea ax, [bp+var_8] push ax push ss lea ax, [bp+var_10] push ax push di push [bp+var_12] push word_39E57+1 push word_39E57 push 4 call sub_1E886 push 4 ; point_count push ss lea ax, [bp+var_10] push ax push ss lea ax, [bp+var_8] push ax call _graph_r_lineloop_unput add sp, 0Ah mov _boss_phase_frame, 0 loc_1F765: pop di pop si leave retf sub_1F599 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_1F769 proc far var_12 = word ptr -12h var_10 = byte ptr -10h var_8 = byte ptr -8 enter 12h, 0 push si push di cmp _boss_phase_frame, 100 jl loc_1F905 cmp _boss_phase_frame, 100 jnz short loc_1F7AD mov word_39E5C, 20h ; ' ' mov byte ptr word_39E5A+1, 0 mov angle_39E5E, 80h call @mima_select_for_rank$qmiiiii stdcall, offset speed_39E18, ds, large 20h or (28h shl 16), large 30h or (38h shl 16) push 8 call _mdrv2_se_play add sp, 0Eh loc_1F7AD: mov ax, _boss_phase_frame mov bx, 8 cwd idiv bx or dx, dx jnz loc_1F8B7 mov ax, mima_still.BE_cur_left add ax, 64 mov di, ax mov ax, mima_still.BE_cur_top add ax, 80 mov [bp+var_12], ax push ss lea ax, [bp+var_8] push ax push ss lea ax, [bp+var_10] push ax push di push [bp+var_12] push word_39E5C push word_39E5A+1 push 4 call sub_1E886 push 4 ; point_count push ss lea ax, [bp+var_10] push ax push ss lea ax, [bp+var_8] push ax call _graph_r_lineloop_unput add sp, 0Ah cmp _boss_phase_frame, 270 jle short loc_1F80B mov al, byte ptr word_39E5A+1 add al, 0Ch jmp short loc_1F810 ; --------------------------------------------------------------------------- loc_1F80B: mov al, byte ptr word_39E5A+1 add al, 0F4h loc_1F810: mov byte ptr word_39E5A+1, al cmp word_39E5C, 50h ; 'P' jge short loc_1F821 add word_39E5C, 8 jmp short loc_1F884 ; --------------------------------------------------------------------------- loc_1F821: cmp _boss_phase_frame, 180 jle short loc_1F884 cmp _boss_phase_frame, 270 jle short loc_1F838 mov al, angle_39E5E add al, 0Ch jmp short loc_1F83D ; --------------------------------------------------------------------------- loc_1F838: mov al, angle_39E5E add al, -0Ch loc_1F83D: mov angle_39E5E, al xor si, si jmp short loc_1F877 ; --------------------------------------------------------------------------- loc_1F844: pushd 0 or (0 shl 16) pushd PM_REGULAR or (0 shl 16) push speed_39E18 push word ptr angle_39E5E mov bx, si add bx, bx lea ax, [bp+var_10] add bx, ax push word ptr ss:[bx] mov bx, si add bx, bx lea ax, [bp+var_8] add bx, ax push word ptr ss:[bx] push ds push offset _Pellets call @CPellets@add_single$qiiuci15pellet_motion_tiii add sp, 14h inc si loc_1F877: cmp si, 4 jl short loc_1F844 push 6 call _mdrv2_se_play pop cx loc_1F884: push ss lea ax, [bp+var_8] push ax push ss lea ax, [bp+var_10] push ax push di push [bp+var_12] push word_39E5C push word_39E5A+1 push 4 call sub_1E886 push 4 or (7 shl 16) ; (point_count) or (col shl 16) push ss lea ax, [bp+var_10] push ax push ss lea ax, [bp+var_8] push ax call _graph_r_lineloop_put add sp, 0Ch loc_1F8B7: cmp _boss_phase_frame, 370 jle short loc_1F905 mov ax, mima_still.BE_cur_left add ax, 64 mov di, ax mov ax, mima_still.BE_cur_top add ax, 80 mov [bp+var_12], ax push ss lea ax, [bp+var_8] push ax push ss lea ax, [bp+var_10] push ax push di push [bp+var_12] push word_39E5C push word_39E5A+1 push 4 call sub_1E886 push 4 ; point_count push ss lea ax, [bp+var_10] push ax push ss lea ax, [bp+var_8] push ax call _graph_r_lineloop_unput add sp, 0Ah mov _boss_phase_frame, 0 loc_1F905: pop di pop si leave retf sub_1F769 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_1F909 proc far @@laser_i = word ptr -2 enter 2, 0 push si push di cmp _boss_phase_frame, 50 jnz short loc_1F91A call @mima_put_cast_both$qv loc_1F91A: cmp _boss_phase_frame, 100 jl loc_1FA77 cmp _boss_phase_frame, 100 jnz short loc_1F953 mov word_39E60, 20h ; ' ' mov byte_39E5F, 0 call @mima_select_for_rank$qmiiiii stdcall, offset speed_39E18, ds, large 32h or (36h shl 16), large 3Ah or (3Eh shl 16) push 8 call _mdrv2_se_play add sp, 0Eh loc_1F953: mov ax, _boss_phase_frame mov bx, 8 cwd idiv bx or dx, dx jnz short loc_1F9DA mov ax, mima_still.BE_cur_left add ax, 64 mov si, ax mov ax, mima_still.BE_cur_top add ax, 80 mov di, ax push ds push offset left_39E64 push ds push offset top_39E6C push si push ax push word_39E60 push word ptr byte_39E5F push 4 call sub_1E886 push 4 ; point_count push ds push offset top_39E6C push ds push offset left_39E64 call _graph_r_lineloop_unput add sp, 0Ah mov al, byte_39E5F add al, 3 mov byte_39E5F, al cmp word_39E60, 50h ; 'P' jge short loc_1F9AD add word_39E60, 8 loc_1F9AD: push ds push offset left_39E64 push ds push offset top_39E6C push si push di push word_39E60 push word ptr byte_39E5F push 4 call sub_1E886 push 4 or (7 shl 16) ; (point_count) or (col shl 16) push ds push offset top_39E6C push ds push offset left_39E64 call _graph_r_lineloop_put add sp, 0Ch loc_1F9DA: cmp _boss_phase_frame, 180 jle short loc_1FA30 cmp _boss_phase_frame, 300 jge short loc_1FA30 mov ax, _boss_phase_frame mov bx, 4 cwd idiv bx mov [bp+@@laser_i], dx push bx ; w push 7 or (20 shl 16) ; (col) or (moveout_at_age shl 16) push speed_39E18 ; speed_multiplied_by_8 push PLAYFIELD_BOTTOM ; target_y mov ax, _player_left add ax, 14 push ax ; target_left mov bx, [bp+@@laser_i] add bx, bx push top_39E6C[bx] ; origin_y mov bx, [bp+@@laser_i] add bx, bx push left_39E64[bx] ; origin_left mov ax, [bp+@@laser_i] imul ax, size CShootoutLaser add ax, offset _shootout_lasers push ds ; this (segment) push ax ; this (offset) call @CShootoutLaser@spawn$qiiiiiiii add sp, 14h loc_1FA30: cmp _boss_phase_frame, 300 jle short loc_1FA77 mov ax, mima_still.BE_cur_left add ax, 64 mov si, ax mov ax, mima_still.BE_cur_top add ax, 80 mov di, ax push ds push offset left_39E64 push ds push offset top_39E6C push si push ax push word_39E60 push word ptr byte_39E5F push 4 call sub_1E886 push 4 ; point_count push ds push offset top_39E6C push ds push offset left_39E64 call _graph_r_lineloop_unput add sp, 0Ah mov _boss_phase_frame, 0 loc_1FA77: pop di pop si leave retf sub_1F909 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_1FA7B proc far @@invincibility_flash_colors = word ptr -2 enter 2, 0 push si push di mov ax, word ptr _mima_invincibility_flash_colors mov [bp+@@invincibility_flash_colors], ax call @CMissiles@unput_update_render$qv stdcall, offset _Missiles, ds call @particles_unput_update_render$q17particle_origin_ti stdcall, large PO_TOP_RIGHT or (V_WHITE shl 16) add sp, 8 cmp _boss_phase, 0 jnz short loc_1FB20 push 0 call _graph_accesspage_func pop cx mov _boss_phase_frame, 0 mov mima_still.BE_hitbox_orb_inactive, 0 xor di, di mov _mima_spreadin_interval, 1 mov _mima_spreadin_speed, 2 mov _mima_meteor_active, 1 loc_1FACA: inc _boss_phase_frame or di, di jnz short loc_1FADF call @spreadin_unput_and_put$qii c, 256 or (120 shl 16) loc_1FADF: cmp _boss_phase_frame, 0 jnz short loc_1FAE7 inc di loc_1FAE7: cmp di, 1 jz short loc_1FAF6 push 2 call _frame_delay pop cx jmp short loc_1FACA ; --------------------------------------------------------------------------- loc_1FAF6: mov _boss_phase, 1 mov word_39E78, 0 mov _mima_initial_hp_rendered, 0 call _stage_palette_set c, offset _z_Palettes, ds call @boss_palette_snap$qv push 0 call sub_1EF85 jmp loc_1FDCE ; --------------------------------------------------------------------------- loc_1FB20: mov al, _boss_phase cbw cmp ax, 1 jnz loc_1FC54 cmp _mima_initial_hp_rendered, 0 jnz short loc_1FB45 call @hud_hp_render$qii c, _boss_hp, _boss_phase_frame mov _mima_initial_hp_rendered, al loc_1FB45: inc _boss_phase_frame inc _mima_invincibility_frame call @meteor_put$qv cmp word_39E78, 0 jnz short loc_1FB5E call sub_1E908 jmp short loc_1FB86 ; --------------------------------------------------------------------------- loc_1FB5E: cmp word_39E78, 1 jnz short loc_1FB6B call sub_1EB24 jmp short loc_1FB86 ; --------------------------------------------------------------------------- loc_1FB6B: cmp word_39E78, 2 jnz short loc_1FB78 call sub_1ECF0 jmp short loc_1FB86 ; --------------------------------------------------------------------------- loc_1FB78: cmp word_39E78, 3 jnz short loc_1FB86 push 1 call sub_1EF85 pop cx loc_1FB86: cmp _boss_phase_frame, 0 jnz short loc_1FBAC cmp word_39E78, 3 jnz short loc_1FB98 xor ax, ax jmp short loc_1FB9C ; --------------------------------------------------------------------------- loc_1FB98: mov ax, word_39E78 inc ax loc_1FB9C: mov word_39E78, ax cmp _boss_hp, 6 jg short loc_1FBAC mov word_39E78, 63h ; 'c' loc_1FBAC: push (48 shl 16) or 96 ; (hitbox_w) or (hitbox_h) mov ax, mima_still.BE_cur_top add ax, 48 push ax ; hitbox_top mov ax, mima_still.BE_cur_left add ax, 16 push ax ; hitbox_left call @CBossEntity@hittest_orb$xqv c, offset mima_still, ds push ax ; colliding_with_orb push seg main_32_TEXT ; hit_callback (segment) push offset @boss_nop$qv ; hit_callback (offset) push 5000 ; hit_score push 2 ; invincibility_flash_colors_count push ss ; invincibility_flash_colors (segment) lea ax, [bp+@@invincibility_flash_colors] push ax ; invincibility_flash_colors (offset) push ds ; hp (segment) push offset _boss_hp ; hp (offset) push ds ; is_invincible (segment) push offset _mima_invincible ; is_invincible (offset) push ds ; invincibility_frame (segment) push offset _mima_invincibility_frame ; invincibility_frame (offset) call @boss_hit_update_and_render$qmit1t1xnxucucinqv$vuciiii add sp, 22h cmp word_39E78, 63h ; 'c' jnz loc_1FDCF cmp _mima_invincible, 0 jnz loc_1FDCF push 1 call _graph_accesspage_func call @mima_unput$qi stdcall, 0 push 0 call _graph_accesspage_func call @mima_unput$qi stdcall, 0 add sp, 8 mov _mima_spreadin_interval, 4 mov _mima_spreadin_speed, 8 mov mima_still.BE_cur_left, 256 mov mima_still.BE_cur_top, 120 call @mima_bg_snap$qv mov _boss_phase, 2 mov _boss_phase_frame, 0 mov _mima_invincibility_frame, 0 mov word_39E78, 0 jmp loc_1FDCF ; --------------------------------------------------------------------------- loc_1FC54: mov al, _boss_phase cbw cmp ax, 2 jnz short loc_1FC95 inc _boss_phase_frame inc _mima_invincibility_frame call @spreadin_unput_and_put$qii c, 256 or (120 shl 16) cmp _boss_phase_frame, 0 jnz loc_1FDCF mov _boss_phase, 3 mov _boss_phase_frame, 0 mov _mima_invincibility_frame, 0 mov word_39E78, 0 jmp loc_1FDCF ; --------------------------------------------------------------------------- loc_1FC95: mov al, _boss_phase cbw cmp ax, 3 jnz loc_1FDCF inc _boss_phase_frame inc _mima_invincibility_frame call @meteor_put$qv cmp word_39E78, 0 jnz short loc_1FCB9 call sub_1F229 jmp short loc_1FCDE ; --------------------------------------------------------------------------- loc_1FCB9: cmp word_39E78, 1 jnz short loc_1FCC6 call sub_1F599 jmp short loc_1FCDE ; --------------------------------------------------------------------------- loc_1FCC6: cmp word_39E78, 2 jnz short loc_1FCD3 call sub_1F769 jmp short loc_1FCDE ; --------------------------------------------------------------------------- loc_1FCD3: cmp word_39E78, 3 jnz short loc_1FCDE call sub_1F909 loc_1FCDE: cmp _boss_phase_frame, 0 jnz short loc_1FCF7 cmp word_39E78, 3 jnz short loc_1FCF0 xor ax, ax jmp short loc_1FCF4 ; --------------------------------------------------------------------------- loc_1FCF0: mov ax, word_39E78 inc ax loc_1FCF4: mov word_39E78, ax loc_1FCF7: push (48 shl 16) or 96 ; (hitbox_w) or (hitbox_h) mov ax, mima_still.BE_cur_top add ax, 48 push ax ; hitbox_top mov ax, mima_still.BE_cur_left add ax, 16 push ax ; hitbox_left call @CBossEntity@hittest_orb$xqv c, offset mima_still, ds push ax ; colliding_with_orb push seg main_32_TEXT ; hit_callback (segment) push offset @boss_nop$qv ; hit_callback (offset) push 5000 ; hit_score push 2 ; invincibility_flash_colors_count push ss ; invincibility_flash_colors (segment) lea ax, [bp+@@invincibility_flash_colors] push ax ; invincibility_flash_colors (offset) push ds ; hp (segment) push offset _boss_hp ; hp (offset) push ds ; is_invincible (segment) push offset _mima_invincible ; is_invincible (offset) push ds ; invincibility_frame (segment) push offset _mima_invincibility_frame ; invincibility_frame (offset) call @boss_hit_update_and_render$qmit1t1xnxucucinqv$vuciiii add sp, 22h cmp _boss_hp, 0 jg loc_1FDCF push 1 call _graph_accesspage_func call @mima_unput$qi stdcall, 0 push 0 call _graph_accesspage_func call _mdrv2_bgm_fade_out_nonblock call @CPellets@unput_and_reset$qv stdcall, offset _Pellets, ds call @CMissiles@reset$qv stdcall, offset _Missiles, ds add sp, 0Eh xor si, si jmp short loc_1FDBD ; --------------------------------------------------------------------------- loc_1FD77: shootout_laser_unput_and_reset_broken si inc si loc_1FDBD: cmp si, 5 jl short loc_1FD77 call @boss_defeat_animate$qv call @scene_init_and_load$quc stdcall, 4 loc_1FDCE: pop cx loc_1FDCF: pop di pop si leave retf sub_1FA7B endp mima_still equ <> mima_animated equ <> 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 main_31_TEXT ends main_31__TEXT segment byte public 'CODE' use16 assume cs:main_31 ;org 9 assume es:nothing, ss:nothing, ds:_DATA, fs:nothing, gs:nothing OT_NONE = 0 OT_BUMPER = 1 OT_TURRET = 2 OT_TURRET_SLOW_1_AIMED = OT_TURRET OT_TURRET_SLOW_1_RANDOM_NARROW_AIMED = 3 OT_TURRET_SLOW_2_SPREAD_WIDE_AIMED = 4 OT_TURRET_SLOW_3_SPREAD_WIDE_AIMED = 5 OT_TURRET_SLOW_4_SPREAD_WIDE_AIMED = 6 OT_TURRET_SLOW_5_SPREAD_WIDE_AIMED = 7 OT_TURRET_QUICK_1_AIMED = 8 OT_TURRET_QUICK_1_RANDOM_NARROW_AIMED = 9 OT_TURRET_QUICK_2_SPREAD_WIDE_AIMED = 10 OT_TURRET_QUICK_3_SPREAD_WIDE_AIMED = 11 OT_TURRET_QUICK_4_SPREAD_WIDE_AIMED = 12 OT_TURRET_QUICK_5_SPREAD_WIDE_AIMED = 13 OT_ACTUALLY_A_CARD = 14 OT_ACTUALLY_A_2FLIP_CARD = OT_ACTUALLY_A_CARD OT_ACTUALLY_A_3FLIP_CARD = 15 OT_ACTUALLY_A_4FLIP_CARD = 16 OT_PORTAL = 17 OT_BAR_TOP = 18 OT_BAR_BOTTOM = 19 OT_BAR_LEFT = 20 OT_BAR_RIGHT = 21 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_20E4C proc far var_1A = qword ptr -1Ah var_C = word ptr -0Ch var_A = word ptr -0Ah var_8 = word ptr -8 var_6 = word ptr -6 var_4 = word ptr -4 var_2 = word ptr -2 arg_0 = word ptr 6 enter 0Ch, 0 push si push di mov di, [bp+arg_0] cmp di, 1 jnz short loc_20E5F mov byte_39EB2, 0 loc_20E5F: xor si, si jmp loc_212CB ; --------------------------------------------------------------------------- loc_20E64: mov ax, si add ax, ax les bx, _obstacles_left add bx, ax mov ax, es:[bx] sub ax, _orb_cur_left mov [bp+var_A], ax cwd xor ax, dx sub ax, dx mov [bp+var_2], ax mov ax, si add ax, ax les bx, _obstacles_top add bx, ax mov ax, es:[bx] sub ax, _orb_cur_top mov [bp+var_C], ax cwd xor ax, dx sub ax, dx mov [bp+var_4], ax mov ax, si add ax, ax les bx, _obstacles_left add bx, ax mov ax, _orb_cur_left sub ax, es:[bx] mov [bp+var_6], ax mov ax, si add ax, ax les bx, _obstacles_top add bx, ax mov ax, _orb_cur_top sub ax, es:[bx] mov [bp+var_8], ax les bx, _obstacles_type mov al, es:[bx+si] cbw dec ax mov bx, ax cmp bx, (OT_BAR_RIGHT - 1) ja @@card add bx, bx jmp cs:off_212D7[bx] @@bumper: cmp [bp+var_2], 18h jnb loc_20F67 cmp [bp+var_4], 18h jnb short loc_20F67 mov ax, si add ax, ax les bx, _obstacles_type_frames add bx, ax cmp word ptr es:[bx], 0 jnz short loc_20F67 inc word ptr es:[bx] cmp [bp+var_8], 0 jg short loc_20F14 mov ax, si add ax, ax les bx, _obstacles_top add bx, ax mov ax, es:[bx] add ax, -24 jmp short loc_20F24 ; --------------------------------------------------------------------------- loc_20F14: mov ax, si add ax, ax les bx, _obstacles_top add bx, ax mov ax, es:[bx] add ax, 24 loc_20F24: mov _orb_cur_top, ax cmp _orb_velocity_x, OVX_4_RIGHT jnz short loc_20F3C cmp [bp+var_6], 0 jge short loc_20F3C mov _orb_velocity_x, OVX_4_LEFT jmp short loc_20F4F ; --------------------------------------------------------------------------- loc_20F3C: cmp _orb_velocity_x, OVX_4_LEFT jnz short loc_20F4F cmp [bp+var_6], 0 jle short loc_20F4F mov _orb_velocity_x, OVX_4_RIGHT loc_20F4F: push OF_BOUNCE_FROM_GROUND fld flt_35C9A sub sp, 8 fstp [bp+var_1A] fwait call @orb_force_new$qd11orb_force_t add sp, 0Ah loc_20F67: mov ax, si add ax, ax les bx, _obstacles_type_frames add bx, ax cmp word ptr es:[bx], 0 jz short loc_20F85 inc word ptr es:[bx] cmp word ptr es:[bx], 8 jl short loc_20F85 mov word ptr es:[bx], 0 loc_20F85: cmp di, 1 jnz @@card jmp loc_212BB ; --------------------------------------------------------------------------- @@turret_slow: cmp _rank, RANK_EASY jz short loc_20FA3 mov ax, si add ax, ax les bx, _obstacles_type_frames add bx, ax inc word ptr es:[bx] loc_20FA3: mov ax, si add ax, ax les bx, _obstacles_type_frames add bx, ax cmp word ptr es:[bx], 200 jl short loc_20FBF push 0 push si nopcall sub_21301 add sp, 4 loc_20FBF: cmp di, 1 jnz @@card jmp short loc_20FFE ; --------------------------------------------------------------------------- @@turret_quick: cmp _rank, RANK_EASY jz short loc_20FDC mov ax, si add ax, ax les bx, _obstacles_type_frames add bx, ax inc word ptr es:[bx] loc_20FDC: mov ax, si add ax, ax les bx, _obstacles_type_frames add bx, ax cmp word ptr es:[bx], 100 jl short loc_20FF7 push 0 push si nopcall sub_21301 add sp, 4 loc_20FF7: cmp di, 1 jnz @@card loc_20FFE: mov ax, si add ax, ax les bx, _obstacles_type_frames add bx, ax mov word ptr es:[bx], 0 push di push si nopcall sub_21301 jmp short loc_2105A ; --------------------------------------------------------------------------- @@portal: cmp [bp+var_2], 18h jnb short loc_21022 cmp [bp+var_4], 18h jb short loc_21032 loc_21022: mov ax, si add ax, ax les bx, _obstacles_type_frames add bx, ax cmp word ptr es:[bx], 0 jz short loc_2103D loc_21032: push 0 push si nopcall sub_21577 add sp, 4 loc_2103D: cmp di, 1 jnz @@card mov ax, si add ax, ax les bx, _obstacles_type_frames add bx, ax mov word ptr es:[bx], 0 push di push si nopcall sub_21577 loc_2105A: add sp, 4 jmp @@card ; --------------------------------------------------------------------------- @@bar_bottom: cmp [bp+var_2], 20h ; ' ' jnb short loc_210B1 mov ax, si add ax, ax les bx, _obstacles_top add bx, ax mov ax, _orb_cur_top sub ax, es:[bx] cmp ax, 32 jg short loc_210B1 mov ax, _orb_cur_top sub ax, es:[bx] jle short loc_210B1 mov ax, si add ax, ax les bx, _obstacles_type_frames add bx, ax cmp word ptr es:[bx], 0 jnz short loc_210B1 inc word ptr es:[bx] push OF_IMMEDIATE fld _orb_velocity_y fchs sub sp, 8 fstp [bp+var_1A] fwait call @orb_force_new$qd11orb_force_t add sp, 0Ah loc_210B1: mov ax, si add ax, ax les bx, _obstacles_type_frames add bx, ax cmp word ptr es:[bx], 0 jz @@card jmp loc_21293 ; --------------------------------------------------------------------------- @@bar_top: cmp [bp+var_2], 20h ; ' ' jnb short loc_21117 mov ax, si add ax, ax les bx, _obstacles_top add bx, ax mov ax, _orb_cur_top sub ax, es:[bx] jge short loc_21117 mov ax, _orb_cur_top sub ax, es:[bx] cmp ax, -32 jl short loc_21117 mov ax, si add ax, ax les bx, _obstacles_type_frames add bx, ax cmp word ptr es:[bx], 0 jnz short loc_21117 inc word ptr es:[bx] push OF_IMMEDIATE fld _orb_velocity_y fchs sub sp, 8 fstp [bp+var_1A] fwait call @orb_force_new$qd11orb_force_t add sp, 0Ah loc_21117: mov ax, si add ax, ax les bx, _obstacles_type_frames add bx, ax cmp word ptr es:[bx], 0 jz @@card jmp loc_21293 ; --------------------------------------------------------------------------- @@bar_left: cmp [bp+var_4], 20h ; ' ' jnb loc_211CD mov ax, si add ax, ax les bx, _obstacles_left add bx, ax mov ax, es:[bx] sub ax, _orb_cur_left cmp ax, 32 jg loc_211CD mov ax, es:[bx] sub ax, _orb_cur_left jl short loc_211CD mov ax, si add ax, ax les bx, _obstacles_type_frames add bx, ax cmp word ptr es:[bx], 0 jnz short loc_211CD cmp byte_39EB2, 0 jnz short loc_211CD inc word ptr es:[bx] mov byte_39EB2, 1 cmp _orb_velocity_x, OVX_0 jnz short loc_21198 push OF_IMMEDIATE fld _orb_velocity_y fchs sub sp, 8 fstp [bp+var_1A] fwait call @orb_force_new$qd11orb_force_t add sp, 0Ah jmp short loc_211CD ; --------------------------------------------------------------------------- loc_21198: cmp _orb_velocity_x, OVX_4_LEFT jnz short loc_211A4 mov ax, 2 jmp short loc_211CA ; --------------------------------------------------------------------------- loc_211A4: cmp _orb_velocity_x, OVX_4_RIGHT jnz short loc_211B0 mov ax, 1 jmp short loc_211CA ; --------------------------------------------------------------------------- loc_211B0: cmp _orb_velocity_x, OVX_8_LEFT jnz short loc_211BC mov ax, 4 jmp short loc_211CA ; --------------------------------------------------------------------------- loc_211BC: cmp _orb_velocity_x, OVX_8_RIGHT jnz short loc_211C8 mov ax, 3 jmp short loc_211CA ; --------------------------------------------------------------------------- loc_211C8: xor ax, ax loc_211CA: mov _orb_velocity_x, ax loc_211CD: mov ax, si add ax, ax les bx, _obstacles_type_frames add bx, ax cmp word ptr es:[bx], 0 jz @@card jmp loc_21293 ; --------------------------------------------------------------------------- @@bar_right: cmp [bp+var_4], 20h ; ' ' jnb loc_21283 mov ax, si add ax, ax les bx, _obstacles_left add bx, ax mov ax, es:[bx] sub ax, _orb_cur_left jg loc_21283 mov ax, es:[bx] sub ax, _orb_cur_left cmp ax, -32 jl short loc_21283 mov ax, si add ax, ax les bx, _obstacles_type_frames add bx, ax cmp word ptr es:[bx], 0 jnz short loc_21283 cmp byte_39EB2, 0 jnz short loc_21283 inc word ptr es:[bx] mov byte_39EB2, 1 cmp _orb_velocity_x, OVX_0 jnz short loc_2124E push OF_IMMEDIATE fld _orb_velocity_y fchs sub sp, 8 fstp [bp+var_1A] fwait call @orb_force_new$qd11orb_force_t add sp, 0Ah jmp short loc_21283 ; --------------------------------------------------------------------------- loc_2124E: cmp _orb_velocity_x, OVX_4_LEFT jnz short loc_2125A mov ax, 2 jmp short loc_21280 ; --------------------------------------------------------------------------- loc_2125A: cmp _orb_velocity_x, OVX_4_RIGHT jnz short loc_21266 mov ax, 1 jmp short loc_21280 ; --------------------------------------------------------------------------- loc_21266: cmp _orb_velocity_x, OVX_8_LEFT jnz short loc_21272 mov ax, 4 jmp short loc_21280 ; --------------------------------------------------------------------------- loc_21272: cmp _orb_velocity_x, OVX_8_RIGHT jnz short loc_2127E mov ax, 3 jmp short loc_21280 ; --------------------------------------------------------------------------- loc_2127E: xor ax, ax loc_21280: mov _orb_velocity_x, ax loc_21283: mov ax, si add ax, ax les bx, _obstacles_type_frames add bx, ax cmp word ptr es:[bx], 0 jz short @@card loc_21293: mov ax, si add ax, ax les bx, _obstacles_type_frames add bx, ax cmp word ptr es:[bx], 0 jz short loc_212B6 inc word ptr es:[bx] cmp word ptr es:[bx], 8 jl short loc_212B6 mov word ptr es:[bx], 0 mov byte_39EB2, 0 loc_212B6: cmp di, 1 jnz short @@card loc_212BB: mov ax, si add ax, ax les bx, _obstacles_type_frames add bx, ax mov word ptr es:[bx], 0 @@card: inc si loc_212CB: cmp si, _obstacle_count jb loc_20E64 pop di pop si leave retf ; --------------------------------------------------------------------------- off_212D7 dw offset @@bumper dw offset @@turret_slow dw offset @@turret_slow dw offset @@turret_slow dw offset @@turret_slow dw offset @@turret_slow dw offset @@turret_slow dw offset @@turret_quick dw offset @@turret_quick dw offset @@turret_quick dw offset @@turret_quick dw offset @@turret_quick dw offset @@turret_quick dw offset @@card dw offset @@card dw offset @@card dw offset @@portal dw offset @@bar_top dw offset @@bar_bottom dw offset @@bar_left dw offset @@bar_right sub_20E4C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_21301 proc far @@group = byte ptr -1 arg_0 = word ptr 6 arg_2 = word ptr 8 enter 2, 0 push si mov si, [bp+arg_0] cmp [bp+arg_2], 1 jnz short loc_21364 cmp off_39EB3, 0 jz short loc_2132D pushd [off_39EB3] ; font call @$bdla$qnv add sp, 4 mov off_39EB3, 0 loc_2132D: cmp _obstacle_count, 0 jz short loc_21347 mov ax, _obstacle_count add ax, ax push ax call @$bnwa$qui pop cx mov word ptr off_39EB3+2, dx mov word ptr off_39EB3, ax loc_21347: xor si, si jmp short loc_2135B ; --------------------------------------------------------------------------- loc_2134B: mov ax, si add ax, ax les bx, off_39EB3 add bx, ax mov word ptr es:[bx], 0 inc si loc_2135B: cmp si, _obstacle_count jl short loc_2134B jmp loc_2155C ; --------------------------------------------------------------------------- loc_21364: mov ax, si add ax, ax les bx, off_39EB3 add bx, ax cmp word ptr es:[bx], 0 jnz short loc_213DE push 1 call _graph_accesspage_func pop cx push PTN_TURRET_FIRING mov ax, si add ax, ax les bx, _obstacles_top add bx, ax push word ptr es:[bx] mov ax, si add ax, ax les bx, _obstacles_left add bx, ax push word ptr es:[bx] call _ptn_put_8 add sp, 6 push 0 call _graph_accesspage_func pop cx push PTN_TURRET_FIRING mov ax, si add ax, ax les bx, _obstacles_top add bx, ax push word ptr es:[bx] mov ax, si add ax, ax les bx, _obstacles_left add bx, ax push word ptr es:[bx] call _ptn_put_8 add sp, 6 mov ax, si add ax, ax les bx, off_39EB3 add bx, ax mov word ptr es:[bx], 1 jmp loc_2155C ; --------------------------------------------------------------------------- loc_213DE: mov ax, si add ax, ax les bx, off_39EB3 add bx, ax cmp word ptr es:[bx], 1 jnz short loc_2141A mov ax, si add ax, ax les bx, _obstacles_type_frames add bx, ax mov ax, es:[bx] mov bx, 10 cwd idiv bx cmp dx, 9 jnz loc_2155C mov ax, si add ax, ax les bx, off_39EB3 add bx, ax mov word ptr es:[bx], 2 jmp loc_2155C ; --------------------------------------------------------------------------- loc_2141A: mov ax, si add ax, ax les bx, off_39EB3 add bx, ax cmp word ptr es:[bx], 2 jnz loc_214D3 les bx, _obstacles_type mov al, es:[bx+si] cbw sub ax, OT_TURRET mov bx, ax cmp bx, (OT_TURRET_QUICK_5_SPREAD_WIDE_AIMED - OT_TURRET) ja short loc_21467 add bx, bx jmp cs:off_2155F[bx] @@1_aimed: mov [bp+@@group], PG_1_AIMED jmp short loc_21467 ; --------------------------------------------------------------------------- @@1_random_narrow_aimed: mov [bp+@@group], PG_1_RANDOM_NARROW_AIMED jmp short loc_21467 ; --------------------------------------------------------------------------- @@2_spread_wide_aimed: mov [bp+@@group], PG_2_SPREAD_WIDE_AIMED jmp short loc_21467 ; --------------------------------------------------------------------------- @@3_spread_wide_aimed: mov [bp+@@group], PG_3_SPREAD_WIDE_AIMED jmp short loc_21467 ; --------------------------------------------------------------------------- @@4_spread_wide_aimed: mov [bp+@@group], PG_4_SPREAD_WIDE_AIMED jmp short loc_21467 ; --------------------------------------------------------------------------- @@5_spread_wide_aimed: mov [bp+@@group], PG_5_SPREAD_WIDE_AIMED loc_21467: push (3 shl 4) + 8 mov al, [bp+@@group] mov ah, 0 push ax mov ax, si add ax, ax les bx, _obstacles_top add bx, ax mov ax, es:[bx] add ax, 12 push ax mov ax, si add ax, ax les bx, _obstacles_left add bx, ax mov ax, es:[bx] add ax, 12 push ax push ds push offset _Pellets call @CPellets@add_group$qii14pellet_group_ti add sp, 0Ch push PTN_TURRET_FIRING mov ax, si add ax, ax les bx, _obstacles_top add bx, ax push word ptr es:[bx] mov ax, si add ax, ax les bx, _obstacles_left add bx, ax push word ptr es:[bx] call _ptn_put_8 add sp, 6 mov ax, si add ax, ax les bx, off_39EB3 add bx, ax mov word ptr es:[bx], 3 jmp loc_2155C ; --------------------------------------------------------------------------- loc_214D3: mov ax, si add ax, ax les bx, off_39EB3 add bx, ax inc word ptr es:[bx] cmp word ptr es:[bx], 0Ah jl short loc_2155C push 1 call _graph_accesspage_func pop cx push PTN_TURRET mov ax, si add ax, ax les bx, _obstacles_top add bx, ax push word ptr es:[bx] mov ax, si add ax, ax les bx, _obstacles_left add bx, ax push word ptr es:[bx] call _ptn_put_8 add sp, 6 push 0 call _graph_accesspage_func pop cx push PTN_TURRET mov ax, si add ax, ax les bx, _obstacles_top add bx, ax push word ptr es:[bx] mov ax, si add ax, ax les bx, _obstacles_left add bx, ax push word ptr es:[bx] call _ptn_put_8 add sp, 6 mov ax, si add ax, ax les bx, off_39EB3 add bx, ax mov word ptr es:[bx], 0 mov ax, si add ax, ax les bx, _obstacles_type_frames add bx, ax mov word ptr es:[bx], 0 loc_2155C: pop si leave retf ; --------------------------------------------------------------------------- off_2155F dw offset @@1_aimed dw offset @@1_random_narrow_aimed dw offset @@2_spread_wide_aimed dw offset @@3_spread_wide_aimed dw offset @@4_spread_wide_aimed dw offset @@5_spread_wide_aimed dw offset @@1_aimed dw offset @@1_random_narrow_aimed dw offset @@2_spread_wide_aimed dw offset @@3_spread_wide_aimed dw offset @@4_spread_wide_aimed dw offset @@5_spread_wide_aimed sub_21301 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_21577 proc far var_12 = qword ptr -12h var_4 = word ptr -4 var_2 = word ptr -2 arg_0 = word ptr 6 arg_2 = word ptr 8 enter 4, 0 push si push di mov si, [bp+arg_0] cmp [bp+arg_2], 1 jnz short loc_215B0 mov word_39EB7, 0 mov _portals_blocked, 0 cmp _orb_in_portal, 0 jz loc_21815 call _ptn_put_8 c, _portal_dst_left, _portal_dst_top, PTN_PORTAL jmp loc_217F2 ; --------------------------------------------------------------------------- loc_215B0: cmp _portals_blocked, 1 jnz short loc_215BF cmp word_39EB7, si jnz loc_21815 loc_215BF: mov ax, si add ax, ax les bx, _obstacles_type_frames add bx, ax cmp word ptr es:[bx], 0 jz short loc_215D2 inc word ptr es:[bx] loc_215D2: mov ax, si add ax, ax les bx, _obstacles_type_frames add bx, ax cmp word ptr es:[bx], 0 jnz short loc_21634 mov _orb_in_portal, 1 mov word ptr es:[bx], 1 mov word_39EB7, si mov _portals_blocked, 1 call _egc_copy_rect_1_to_0_16 c, _orb_prev_left, _orb_prev_top, large ORB_W or (ORB_H shl 16) push (PTN_PORTAL_ANIM + 0) loc_2160F: mov ax, si add ax, ax les bx, _obstacles_top add bx, ax push word ptr es:[bx] mov ax, si add ax, ax les bx, _obstacles_left add bx, ax push word ptr es:[bx] loc_21629: call _ptn_put_8 add sp, 6 jmp loc_21815 ; --------------------------------------------------------------------------- loc_21634: mov ax, si add ax, ax les bx, _obstacles_type_frames add bx, ax cmp word ptr es:[bx], 10 jnz short loc_21670 push (32 shl 16) or 32 mov ax, si add ax, ax les bx, _obstacles_top add bx, ax push word ptr es:[bx] mov ax, si add ax, ax les bx, _obstacles_left add bx, ax push word ptr es:[bx] call _egc_copy_rect_1_to_0_16 add sp, 8 push (PTN_PORTAL_ANIM + 1) jmp short loc_2160F ; --------------------------------------------------------------------------- loc_21670: mov ax, si add ax, ax les bx, _obstacles_type_frames add bx, ax cmp word ptr es:[bx], 20 jnz loc_2174D push (32 shl 16) or 32 mov ax, si add ax, ax les bx, _obstacles_top add bx, ax push word ptr es:[bx] mov ax, si add ax, ax les bx, _obstacles_left add bx, ax push word ptr es:[bx] call _egc_copy_rect_1_to_0_16 add sp, 8 push PTN_PORTAL mov ax, si add ax, ax les bx, _obstacles_top add bx, ax push word ptr es:[bx] mov ax, si add ax, ax les bx, _obstacles_left add bx, ax push word ptr es:[bx] call _ptn_put_8 add sp, 6 xor di, di mov [bp+var_2], 0 loc_216D5: les bx, _obstacles_type mov al, es:[bx+di] cbw cmp ax, OT_PORTAL jnz short loc_216F5 call IRand mov bx, 4 cwd idiv bx or dx, dx jnz short loc_216F5 cmp di, si jnz short loc_2170D loc_216F5: inc di cmp [bp+var_2], 0Fh jle short loc_21700 mov di, si jmp short loc_2170D ; --------------------------------------------------------------------------- loc_21700: cmp di, _obstacle_count jl short loc_216D5 xor di, di inc [bp+var_2] jmp short loc_216D5 ; --------------------------------------------------------------------------- loc_2170D: mov ax, di add ax, ax les bx, _obstacles_left add bx, ax mov ax, es:[bx] mov _portal_dst_left, ax mov ax, di add ax, ax les bx, _obstacles_top add bx, ax mov ax, es:[bx] mov _portal_dst_top, ax call _egc_copy_rect_1_to_0_16 c, _portal_dst_left, ax, large (32 shl 16) or 32 push (PTN_PORTAL_ANIM + 1) loc_21742: push _portal_dst_top push _portal_dst_left jmp loc_21629 ; --------------------------------------------------------------------------- loc_2174D: mov ax, si add ax, ax les bx, _obstacles_type_frames add bx, ax cmp word ptr es:[bx], 30 jnz short loc_21777 call _egc_copy_rect_1_to_0_16 c, _portal_dst_left, _portal_dst_top, large (32 shl 16) or 32 push (PTN_PORTAL_ANIM + 0) jmp short loc_21742 ; --------------------------------------------------------------------------- loc_21777: mov ax, si add ax, ax les bx, _obstacles_type_frames add bx, ax cmp word ptr es:[bx], 40 jnz short loc_217FA call _egc_copy_rect_1_to_0_16 c, _portal_dst_left, _portal_dst_top, large (32 shl 16) or 32 call _ptn_put_8 c, _portal_dst_left, _portal_dst_top, PTN_PORTAL call IRand mov bx, 5 cwd idiv bx mov _orb_velocity_x, dx push OF_IMMEDIATE call IRand mov bx, 19 cwd idiv bx add dx, -9 mov [bp+var_4], dx fild [bp+var_4] sub sp, 8 fstp [bp+var_12] fwait call @orb_force_new$qd11orb_force_t add sp, 0Ah mov ax, _portal_dst_left mov _orb_cur_left, ax mov ax, _portal_dst_top mov _orb_cur_top, ax loc_217F2: mov _orb_in_portal, 0 jmp short loc_21815 ; --------------------------------------------------------------------------- loc_217FA: mov ax, si add ax, ax les bx, _obstacles_type_frames add bx, ax cmp word ptr es:[bx], 60 jnz short loc_21815 mov word ptr es:[bx], 0 mov _portals_blocked, 0 loc_21815: pop di pop si leave retf sub_21577 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_21819 proc far push bp mov bp, sp mov _card_count, 1 mov _cards_left, 0 mov _cards_top, 0 mov _cards_flag, 0 mov _cards_flip_frames, 0 mov _cards_hp, 0 mov _cards_score, 0 mov _obstacle_count, 1 mov _obstacles_left, 0 mov _obstacles_top, 0 mov _obstacles_type, 0 mov _obstacles_type_frames, 0 pop bp retf sub_21819 endp main_31__TEXT ends ; =========================================================================== ; Segment type: Pure code main_32_TEXT segment byte public 'CODE' use16 extern @BOSS_NOP$QV:proc extern @hud_hp_render$qii:proc extern @boss_hit_update_and_render$qmit1t1xnxucucinqv$vuciiii:proc main_32_TEXT ends main_32__TEXT segment byte public 'CODE' use16 assume cs:main_32 ;org 4 assume es:nothing, ss:nothing, ds:_DATA, fs:nothing, gs:nothing MISSILE_NEW = -1 MF_FREE = 0 MF_MOVING = 1 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl __far sub_21C0D(__int32, int, int, double, double, char) sub_21C0D proc far @@this = dword ptr 6 arg_4 = word ptr 0Ah arg_6 = word ptr 0Ch arg_8 = qword ptr 0Eh arg_10 = qword ptr 16h arg_18 = byte ptr 1Eh push bp mov bp, sp push si xor si, si jmp loc_21C99 ; --------------------------------------------------------------------------- loc_21C16: les bx, [bp+@@this] add bx, si cmp es:[bx+CMissiles.MISSILE_flag], MF_FREE jnz short loc_21C98 mov ax, [bp+arg_4] shl ax, 4 mov dx, si add dx, dx les bx, [bp+@@this] add bx, dx mov es:[bx+CMissiles.MISSILE_cur_left], ax mov ax, [bp+arg_6] shl ax, 4 mov es:[bx+CMissiles.MISSILE_cur_top], ax mov es:[bx+CMissiles.MISSILE_prev_left], MISSILE_NEW fld [bp+arg_8] fmul flt_35C9E call ftol@ mov dx, si add dx, dx les bx, [bp+@@this] add bx, dx mov es:[bx+CMissiles.MISSILE_velocity_x], ax fld [bp+arg_10] fmul flt_35C9E call ftol@ mov dx, si add dx, dx les bx, [bp+@@this] add bx, dx mov es:[bx+CMissiles.MISSILE_velocity_y], ax mov bx, word ptr [bp+@@this] add bx, si mov al, [bp+arg_18] mov es:[bx+CMissiles.MISSILE_unknown], al mov bx, word ptr [bp+@@this] add bx, si mov es:[bx+CMissiles.MISSILE_flag], MF_MOVING jmp short loc_21CA0 ; --------------------------------------------------------------------------- loc_21C98: inc si loc_21C99: cmp si, MISSILE_COUNT jl loc_21C16 loc_21CA0: pop si pop bp retf sub_21C0D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame public @ptn_cel_for$qm9CMissilesim13main_ptn_id_tmi @ptn_cel_for$qm9CMissilesim13main_ptn_id_tmi proc far var_A = word ptr -0Ah var_8 = qword ptr -8 @@this = dword ptr 6 arg_4 = word ptr 0Ah arg_6 = dword ptr 0Ch arg_A = dword ptr 10h enter 0Ah, 0 push si mov si, [bp+arg_4] mov ax, si add ax, ax les bx, [bp+@@this] add bx, ax push es:[bx+CMissiles.MISSILE_velocity_y] push es:[bx+CMissiles.MISSILE_velocity_x] call iatan2 mov [bp+var_A], ax fild [bp+var_A] fstp [bp+var_8] fld [bp+var_8] fcomp flt_35CA2 fstsw [bp+var_A] fwait mov ax, [bp+var_A] sahf jnb short loc_21CE7 xor ax, ax jmp short loc_21D37 ; --------------------------------------------------------------------------- loc_21CE7: fld [bp+var_8] fcomp flt_35CA6 fstsw [bp+var_A] fwait mov ax, [bp+var_A] sahf jnb short loc_21D01 mov ax, 1 jmp short loc_21D37 ; --------------------------------------------------------------------------- loc_21D01: fld [bp+var_8] fcomp flt_35CAA fstsw [bp+var_A] fwait mov ax, [bp+var_A] sahf jnb short loc_21D1B mov ax, 2 jmp short loc_21D37 ; --------------------------------------------------------------------------- loc_21D1B: fld [bp+var_8] fcomp flt_35CAE fstsw [bp+var_A] fwait mov ax, [bp+var_A] sahf jnb short loc_21D35 mov ax, 3 jmp short loc_21D37 ; --------------------------------------------------------------------------- loc_21D35: xor ax, ax loc_21D37: les bx, [bp+arg_6] mov es:[bx], ax les bx, [bp+@@this] mov al, es:[bx+CMissiles.MISSILE_ptn_id_base] mov ah, 0 les bx, [bp+arg_6] add es:[bx], ax fld [bp+var_8] fcomp flt_35C9E fstsw [bp+var_A] fwait mov ax, [bp+var_A] sahf jnb short loc_21D67 xor ax, ax jmp loc_21EF6 ; --------------------------------------------------------------------------- loc_21D67: fld [bp+var_8] fcomp flt_35CB2 fstsw [bp+var_A] fwait mov ax, [bp+var_A] sahf jnb short loc_21D82 mov ax, 1 jmp loc_21EF6 ; --------------------------------------------------------------------------- loc_21D82: fld [bp+var_8] fcomp flt_35CB6 fstsw [bp+var_A] fwait mov ax, [bp+var_A] sahf jnb short loc_21D9D mov ax, 2 jmp loc_21EF6 ; --------------------------------------------------------------------------- loc_21D9D: fld [bp+var_8] fcomp flt_35CA2 fstsw [bp+var_A] fwait mov ax, [bp+var_A] sahf jnb short loc_21DB8 mov ax, 3 jmp loc_21EF6 ; --------------------------------------------------------------------------- loc_21DB8: fld [bp+var_8] fcomp flt_35CBA fstsw [bp+var_A] fwait mov ax, [bp+var_A] sahf jnb short loc_21DD2 xor ax, ax jmp loc_21EF6 ; --------------------------------------------------------------------------- loc_21DD2: fld [bp+var_8] fcomp flt_35CBE fstsw [bp+var_A] fwait mov ax, [bp+var_A] sahf jnb short loc_21DED mov ax, 1 jmp loc_21EF6 ; --------------------------------------------------------------------------- loc_21DED: fld [bp+var_8] fcomp flt_35CC2 fstsw [bp+var_A] fwait mov ax, [bp+var_A] sahf jnb short loc_21E08 mov ax, 2 jmp loc_21EF6 ; --------------------------------------------------------------------------- loc_21E08: fld [bp+var_8] fcomp flt_35CA6 fstsw [bp+var_A] fwait mov ax, [bp+var_A] sahf jnb short loc_21E23 mov ax, 3 jmp loc_21EF6 ; --------------------------------------------------------------------------- loc_21E23: fld [bp+var_8] fcomp flt_35CC6 fstsw [bp+var_A] fwait mov ax, [bp+var_A] sahf jnb short loc_21E3D xor ax, ax jmp loc_21EF6 ; --------------------------------------------------------------------------- loc_21E3D: fld [bp+var_8] fcomp flt_35CCA fstsw [bp+var_A] fwait mov ax, [bp+var_A] sahf jnb short loc_21E58 mov ax, 1 jmp loc_21EF6 ; --------------------------------------------------------------------------- loc_21E58: fld [bp+var_8] fcomp flt_35CCE fstsw [bp+var_A] fwait mov ax, [bp+var_A] sahf jnb short loc_21E73 mov ax, 2 jmp loc_21EF6 ; --------------------------------------------------------------------------- loc_21E73: fld [bp+var_8] fcomp flt_35CAA fstsw [bp+var_A] fwait mov ax, [bp+var_A] sahf jnb short loc_21E8D mov ax, 3 jmp short loc_21EF6 ; --------------------------------------------------------------------------- loc_21E8D: fld [bp+var_8] fcomp flt_35CD2 fstsw [bp+var_A] fwait mov ax, [bp+var_A] sahf jnb short loc_21EA6 xor ax, ax jmp short loc_21EF6 ; --------------------------------------------------------------------------- loc_21EA6: fld [bp+var_8] fcomp flt_35CD6 fstsw [bp+var_A] fwait mov ax, [bp+var_A] sahf jnb short loc_21EC0 mov ax, 1 jmp short loc_21EF6 ; --------------------------------------------------------------------------- loc_21EC0: fld [bp+var_8] fcomp flt_35CDA fstsw [bp+var_A] fwait mov ax, [bp+var_A] sahf jnb short loc_21EDA mov ax, 2 jmp short loc_21EF6 ; --------------------------------------------------------------------------- loc_21EDA: fld [bp+var_8] fcomp flt_35CAE fstsw [bp+var_A] fwait mov ax, [bp+var_A] sahf jnb short loc_21EF4 mov ax, 3 jmp short loc_21EF6 ; --------------------------------------------------------------------------- loc_21EF4: xor ax, ax loc_21EF6: les bx, [bp+arg_A] mov es:[bx], ax pop si leave retf @ptn_cel_for$qm9CMissilesim13main_ptn_id_tmi endp extern @CMissiles@reset$qv:proc extern @CMissiles@unput_update_render$qv:proc extern @particles_unput_update_render$q17particle_origin_ti:proc main_32__TEXT ends ; =========================================================================== ; Segment type: Pure code main_33_TEXT segment byte public 'CODE' use16 assume cs:main_33 ;org 4 assume es:nothing, ss:nothing, ds:_DATA, fs:nothing, gs:nothing singyoku_sphere equ singyoku_flash equ singyoku_person equ ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame public _singyoku_load _singyoku_load proc far push bp mov bp, sp push si push di CBossEntity__load singyoku_sphere, 0, aBoss1_bos CBossEntity__load singyoku_flash, 1, aBoss1_2_bos CBossEntity__load singyoku_person, 2, aBoss1_3_bos call _grp_palette_load_show_sane stdcall, offset aBoss1_grp_0, ds ; "boss1.grp" add sp, 22h xor si, si jmp short loc_22717 ; --------------------------------------------------------------------------- loc_226FA: xor di, di jmp short loc_22711 ; --------------------------------------------------------------------------- loc_226FE: mov bx, si imul bx, size rgb_t mov al, _z_Palettes[bx+di] mov bx, si imul bx, size rgb_t mov byte ptr _boss_post_defeat_palette[bx+di], al inc di loc_22711: cmp di, size rgb_t jl short loc_226FE inc si loc_22717: cmp si, COLOR_COUNT jl short loc_226FA call _stage_palette_set c, offset _boss_post_defeat_palette, ds nopcall sub_22731 pop di pop si pop bp retf _singyoku_load endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_22731 proc far push bp mov bp, sp call @boss_palette_snap$qv call _z_palette_set_all_show stdcall, offset _z_Palettes, ds call @CBossEntity@pos_set$qiiiiiii stdcall, offset singyoku_sphere, ds, 640, large 64 or (32 shl 16), large 0 or (736 shl 16), large 64 or (304 shl 16) CBossEntity__hitbox_set singyoku_sphere, 24, 24, 72, 72 mov singyoku_sphere.BE_hitbox_orb_inactive, 0 mov singyoku_sphere.BE_bos_image, 0 mov _singyoku_hp, 8 mov _hud_hp_first_white, 6 mov _hud_hp_first_redwhite, 2 mov byte_35CDE, 0 call @particles_unput_update_render$q17particle_origin_ti stdcall, large PO_INITIALIZE or (V_WHITE shl 16) add sp, 1Ah pop bp retf sub_22731 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame public _singyoku_free _singyoku_free proc far push bp mov bp, sp call _bos_entity_free stdcall, 0 call _bos_entity_free stdcall, 1 call _bos_entity_free stdcall, 2 add sp, 6 pop bp retf _singyoku_free endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_227C8 proc far var_4 = word ptr -4 var_1 = byte ptr -1 arg_0 = word ptr 6 arg_2 = byte ptr 8 enter 4, 0 mov ax, _singyoku_phase_frame cwd idiv [bp+arg_0] or dx, dx jnz short locret_22818 mov ax, singyoku_sphere.BE_bos_image add al, [bp+arg_2] mov [bp+var_1], al cbw cmp ax, 7 jle short loc_227EC mov [bp+var_1], 0 jmp short loc_227F8 ; --------------------------------------------------------------------------- loc_227EC: mov al, [bp+var_1] cbw or ax, ax jge short loc_227F8 mov [bp+var_1], 7 loc_227F8: mov al, [bp+var_1] cbw mov [bp+var_4], ax mov singyoku_sphere.BE_bos_image, ax mov al, [bp+var_1] cbw call @CBossEntity@unput_and_put_8$xqiii c, offset singyoku_sphere, ds, large [dword ptr singyoku_sphere.BE_cur_left], ax locret_22818: leave retf sub_227C8 endp extern @singyoku_select_for_rank$qmiiiii:proc main_33_TEXT ends main_33__TEXT segment byte public 'CODE' use16 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_2285F proc far arg_0 = word ptr 6 push bp mov bp, sp cmp _singyoku_phase_frame, 50 jge short loc_22895 mov singyoku_sphere.BE_bos_image, 0 mov ax, _singyoku_phase_frame mov bx, 4 cwd idiv bx or dx, dx jnz loc_2290A call @CBossEntity@unput_and_put_8$xqiii c, offset singyoku_sphere, ds, large [dword ptr singyoku_sphere.BE_cur_left], singyoku_sphere.BE_bos_image pop bp retf ; --------------------------------------------------------------------------- loc_22895: cmp _singyoku_phase_frame, 50 jnz short loc_228A4 push 8 call _mdrv2_se_play pop cx loc_228A4: cmp _singyoku_phase_frame, 100 jge short loc_2290A mov ax, _singyoku_phase_frame mov bx, 4 cwd idiv bx or dx, dx jnz short loc_2290A call @CBossEntity@unput_and_put_8$xqiii c, offset singyoku_sphere, ds, large [dword ptr singyoku_sphere.BE_cur_left], singyoku_sphere.BE_bos_image cmp _singyoku_phase_frame, 50 jz short loc_228FE cmp _singyoku_phase_frame, 60 jz short loc_228FE cmp _singyoku_phase_frame, 68 jz short loc_228FE cmp _singyoku_phase_frame, 74 jz short loc_228FE cmp _singyoku_phase_frame, 78 jz short loc_228FE cmp _singyoku_phase_frame, 82 jz short loc_228FE cmp _singyoku_phase_frame, 82 jle short loc_2290A loc_228FE: push [bp+arg_0] push 1 call sub_227C8 add sp, 4 loc_2290A: pop bp retf sub_2285F endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_2290C proc far var_4 = word ptr -4 var_2 = word ptr -2 arg_0 = word ptr 6 arg_2 = word ptr 8 arg_4 = word ptr 0Ah arg_6 = word ptr 0Ch enter 4, 0 push si push di mov di, [bp+arg_0] mov si, [bp+arg_2] or si, si jge short loc_2292E mov ax, si neg ax push ax push 96 mov ax, singyoku_sphere.BE_cur_top add ax, si add ax, 96 push ax jmp short loc_22939 ; --------------------------------------------------------------------------- loc_2292E: or si, si jle short loc_22945 push si push 96 push singyoku_sphere.BE_cur_top loc_22939: push singyoku_sphere.BE_cur_left call _egc_copy_rect_1_to_0_16 add sp, 8 loc_22945: or di, di jle short loc_22956 push (96 shl 16) or 8 pushd [dword ptr singyoku_sphere.BE_cur_left] jmp short loc_2296D ; --------------------------------------------------------------------------- loc_22956: or di, di jge short loc_22975 push (96 shl 16) or 8 push singyoku_sphere.BE_cur_top mov ax, singyoku_sphere.BE_cur_left add ax, 96 sub ax, si push ax loc_2296D: call _egc_copy_rect_1_to_0_16 add sp, 8 loc_22975: mov ax, singyoku_sphere.BE_cur_top add ax, si mov [bp+var_2], ax mov ax, singyoku_sphere.BE_cur_left add ax, di jge short loc_22988 xor ax, ax jmp short loc_2298D ; --------------------------------------------------------------------------- loc_22988: mov ax, singyoku_sphere.BE_cur_left add ax, di loc_2298D: cmp ax, 544 jle short loc_22997 mov ax, 544 jmp short loc_229A7 ; --------------------------------------------------------------------------- loc_22997: mov ax, singyoku_sphere.BE_cur_left add ax, di jge short loc_229A2 xor ax, ax jmp short loc_229A7 ; --------------------------------------------------------------------------- loc_229A2: mov ax, singyoku_sphere.BE_cur_left add ax, di loc_229A7: mov [bp+var_4], ax mov singyoku_sphere.BE_cur_left, ax mov ax, [bp+var_2] mov singyoku_sphere.BE_cur_top, ax mov ax, _singyoku_phase_frame mov bx, 2 cwd idiv bx or dx, dx jnz short loc_229CD push [bp+arg_6] push [bp+arg_4] call sub_227C8 add sp, 4 loc_229CD: pop di pop si leave retf sub_2290C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_229D1 proc far push bp mov bp, sp cmp _singyoku_phase_frame, 10 jnz short loc_229F4 call IRand mov bx, 2 cwd idiv bx cmp dx, 1 jnz short loc_229EF mov al, 1 jmp short loc_229F1 ; --------------------------------------------------------------------------- loc_229EF: mov al, -1 loc_229F1: mov byte_3A388, al loc_229F4: cmp _singyoku_phase_frame, 100 jge short loc_22A07 mov al, byte_3A388 cbw push ax call sub_2285F pop cx pop bp retf ; --------------------------------------------------------------------------- loc_22A07: cmp _singyoku_phase_frame, 100 jnz short loc_22A37 call @singyoku_select_for_rank$qmiiiii c, offset speed_3A385, ds, large 0Ah or (0Fh shl 16), large 14h or (1Eh shl 16) mov al, byte_3A388 cbw cmp ax, 0FFFFh jnz short loc_22A32 mov al, 0 jmp short loc_22A34 ; --------------------------------------------------------------------------- loc_22A32: mov al, 80h loc_22A34: mov angle_3A387, al loc_22A37: cmp _singyoku_phase_frame, 160 jge short loc_22A9F push 1 mov al, byte_3A388 cbw push ax call sub_227C8 add sp, 4 mov ax, 3Ch ; '<' cwd idiv speed_3A385 push ax mov ax, _singyoku_phase_frame cwd pop bx idiv bx or dx, dx jnz short loc_22AA5 pushd 0 or (0 shl 16) pushd PM_REGULAR or (0 shl 16) push (3 shl 4) + 2 push word ptr angle_3A387 mov ax, singyoku_sphere.BE_cur_top add ax, 44 push ax mov ax, singyoku_sphere.BE_cur_left add ax, 44 push ax push ds push offset _Pellets call @CPellets@add_single$qiiuci15pellet_motion_tiii add sp, 14h mov al, byte_3A388 cbw shl ax, 7 cwd idiv speed_3A385 mov dl, angle_3A387 sub dl, al mov angle_3A387, dl pop bp retf ; --------------------------------------------------------------------------- loc_22A9F: mov _singyoku_phase_frame, 0 loc_22AA5: pop bp retf sub_229D1 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_22AA7 proc far push bp mov bp, sp cmp _singyoku_phase_frame, 100 jge short loc_22ABA push 1 call sub_2285F pop cx pop bp retf ; --------------------------------------------------------------------------- loc_22ABA: cmp _singyoku_phase_frame, 100 jnz short loc_22AFE call @singyoku_select_for_rank$qmiiiii stdcall, offset speed_3A385, ds, large 04h or (04h shl 16), large 05h or (06h shl 16) push speed_3A385 push ds push offset point_3A389.y push ds push offset point_3A389.x push 368 push _player_left mov ax, singyoku_sphere.BE_cur_top add ax, 32 push ax mov ax, singyoku_sphere.BE_cur_left add ax, 32 push ax call _vector2_between add sp, 1Eh loc_22AFE: cmp point_3A389.x, 999 jz short loc_22B31 push 10001h push point_3A389.y push point_3A389.x call sub_2290C add sp, 8 cmp singyoku_sphere.BE_cur_top, 304 jle short loc_22B60 mov point_3A389.x, 999 mov point_3A389.y, -4 jmp short loc_22B60 ; --------------------------------------------------------------------------- loc_22B31: cmp point_3A389.y, -4 jnz short loc_22B5A push 10001h push point_3A389.y push 0 call sub_2290C add sp, 8 cmp singyoku_sphere.BE_cur_top, 96 jge short loc_22B60 mov point_3A389.y, 0 jmp short loc_22B60 ; --------------------------------------------------------------------------- loc_22B5A: mov _singyoku_phase_frame, 0 loc_22B60: cmp _player_invincible, 0 jnz short loc_22B86 mov ax, singyoku_sphere.BE_cur_left cmp ax, _player_left jg short loc_22B86 add ax, 64 cmp ax, _player_left jl short loc_22B86 cmp singyoku_sphere.BE_cur_top, 272 jl short loc_22B86 mov _done, 1 loc_22B86: pop bp retf sub_22AA7 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_22B88 proc far var_6 = word ptr -6 var_4 = word ptr -4 var_2 = word ptr -2 arg_0 = word ptr 6 arg_2 = dword ptr 8 arg_6 = dword ptr 0Ch arg_A = dword ptr 10h enter 6, 0 push si mov si, [bp+arg_0] cmp _singyoku_phase_frame, 100 jge short loc_22BA1 push 1 call sub_2285F pop cx jmp loc_22CF3 ; --------------------------------------------------------------------------- loc_22BA1: cmp _singyoku_phase_frame, 100 jz loc_22C9C cmp _singyoku_phase_frame, 105 jz loc_22C7D cmp _singyoku_phase_frame, 110 jz loc_22C7D cmp _singyoku_phase_frame, 115 jnz short loc_22BD5 mov ax, si imul ax, 3 push ax pushd [dword ptr singyoku_sphere.BE_cur_left] push ds push offset singyoku_person jmp loc_22C8A ; --------------------------------------------------------------------------- loc_22BD5: cmp _singyoku_phase_frame, 135 jnz short loc_22C07 mov ax, si imul ax, 3 inc ax mov [bp+var_2], ax mov singyoku_person.BE_bos_image, ax mov ax, si imul ax, 3 inc ax call @CBossEntity@unput_and_put_8$xqiii c, offset singyoku_person, ds, large [dword ptr singyoku_sphere.BE_cur_left], ax call [bp+arg_2] jmp loc_22CC1 ; --------------------------------------------------------------------------- loc_22C07: cmp _singyoku_phase_frame, 160 jnz short loc_22C3E mov ax, si imul ax, 3 add ax, 2 mov [bp+var_4], ax mov singyoku_person.BE_bos_image, ax or si, si jnz short loc_22C25 push 2 jmp short loc_22C27 ; --------------------------------------------------------------------------- loc_22C25: push 4 loc_22C27: pushd [dword ptr singyoku_sphere.BE_cur_left] push ds push offset singyoku_person call @CBossEntity@unput_and_put_8$xqiii add sp, 0Ah call [bp+arg_6] jmp loc_22CC1 ; --------------------------------------------------------------------------- loc_22C3E: cmp _singyoku_phase_frame, 185 jnz short loc_22C6D mov ax, si imul ax, 3 mov [bp+var_6], ax mov singyoku_person.BE_bos_image, ax mov ax, si imul ax, 3 call @CBossEntity@unput_and_put_8$xqiii c, offset singyoku_person, ds, large [dword ptr singyoku_sphere.BE_cur_left], ax call [bp+arg_A] jmp short loc_22CC1 ; --------------------------------------------------------------------------- loc_22C6D: cmp _singyoku_phase_frame, 240 jz short loc_22C7D cmp _singyoku_phase_frame, 245 jnz short loc_22C94 loc_22C7D: lea ax, [si+1] push ax loc_22C81: pushd [dword ptr singyoku_sphere.BE_cur_left] push ds push offset singyoku_flash loc_22C8A: call @CBossEntity@unput_and_put_8$xqiii add sp, 0Ah jmp short loc_22CC1 ; --------------------------------------------------------------------------- loc_22C94: cmp _singyoku_phase_frame, 250 jnz short loc_22CA0 loc_22C9C: push 0 jmp short loc_22C81 ; --------------------------------------------------------------------------- loc_22CA0: cmp _singyoku_phase_frame, 260 jnz short loc_22CC1 call @CBossEntity@unput_and_put_8$xqiii c, offset singyoku_sphere, ds, large [dword ptr singyoku_sphere.BE_cur_left], 0 mov _singyoku_phase_frame, 0 loc_22CC1: cmp _singyoku_phase_frame, 135 jle short loc_22CF3 cmp _singyoku_phase_frame, 240 jge short loc_22CF3 mov ax, _singyoku_phase_frame mov bx, 4 cwd idiv bx or dx, dx jnz short loc_22CF3 call @CBossEntity@unput_and_put_8$xqiii c, offset singyoku_person, ds, large [dword ptr singyoku_sphere.BE_cur_left], singyoku_person.BE_bos_image loc_22CF3: pop si leave retf sub_22B88 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_22CF6 proc far @@chase_speed = word ptr -2 enter 2, 0 push 3Eh or (41h shl 16) ; (for_hard) or (for_lunatic) push 37h or (3Ah shl 16) ; (for_easy) or (for_normal) push ss ; ret (segment) lea ax, [bp+@@chase_speed] push ax ; ret (offset) call @singyoku_select_for_rank$qmiiiii pushd 0 or (0 shl 16) push [bp+@@chase_speed] push (1 shl 4) or (PM_CHASE shl 16) push (-10h and 255) mov ax, singyoku_sphere.BE_cur_top add ax, 44 push ax mov ax, singyoku_sphere.BE_cur_left add ax, 44 push ax push ds push offset _Pellets call @CPellets@add_single$qiiuci15pellet_motion_tiii add sp, 20h pushd 0 or (0 shl 16) push [bp+@@chase_speed] push (1 shl 4) or (PM_CHASE shl 16) push (-70h and 255) mov ax, singyoku_sphere.BE_cur_top add ax, 44 push ax mov ax, singyoku_sphere.BE_cur_left add ax, 44 push ax push ds push offset _Pellets call @CPellets@add_single$qiiuci15pellet_motion_tiii add sp, 14h leave retf sub_22CF6 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_22D63 proc far @@speed = word ptr -2 enter 2, 0 push 4Bh or (50h shl 16) ; (for_hard) or (for_lunatic) push 3Ch or (46h shl 16) ; (for_easy) or (for_normal) push ss ; ret (segment) lea ax, [bp+@@speed] push ax ; ret (offset) call @singyoku_select_for_rank$qmiiiii pushd 0 or (0 shl 16) pushd PM_REGULAR or (0 shl 16) push [bp+@@speed] push 30h mov ax, singyoku_sphere.BE_cur_top add ax, 44 push ax mov ax, singyoku_sphere.BE_cur_left add ax, 12 push ax push ds push offset _Pellets call @CPellets@add_single$qiiuci15pellet_motion_tiii add sp, 20h pushd 0 or (0 shl 16) pushd PM_REGULAR or (0 shl 16) push [bp+@@speed] push 50h mov ax, singyoku_sphere.BE_cur_top add ax, 44 push ax mov ax, singyoku_sphere.BE_cur_left add ax, 84 push ax push ds push offset _Pellets call @CPellets@add_single$qiiuci15pellet_motion_tiii add sp, 14h leave retf sub_22D63 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_22DC8 proc far push bp mov bp, sp push seg main_32_TEXT push offset @boss_nop$qv push seg main_32_TEXT push offset @boss_nop$qv push seg main_32_TEXT push offset @boss_nop$qv push 0 call sub_22B88 add sp, 0Eh cmp _singyoku_phase_frame, 140 jle short loc_22E07 mov ax, _singyoku_phase_frame mov bx, 8 cwd idiv bx or dx, dx jnz short loc_22E07 cmp _singyoku_phase_frame, 220 jg short loc_22E07 call sub_22CF6 loc_22E07: pop bp retf sub_22DC8 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_22E09 proc far push bp mov bp, sp push seg main_32_TEXT push offset @boss_nop$qv push seg main_32_TEXT push offset @boss_nop$qv push seg main_32_TEXT push offset @boss_nop$qv push 0 call sub_22B88 add sp, 0Eh cmp _singyoku_phase_frame, 140 jle short loc_22E40 mov ax, _singyoku_phase_frame mov bx, 8 cwd idiv bx or dx, dx jnz short loc_22E40 call sub_22D63 loc_22E40: pop bp retf sub_22E09 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_22E42 proc far @@angle = byte ptr -1 enter 2, 0 push si call @singyoku_select_for_rank$qmiiiii c, offset speed_3A385, ds, large 30h or (36h shl 16), large 3Ch or (42h shl 16) xor si, si jmp short loc_22E94 ; --------------------------------------------------------------------------- loc_22E62: call IRand and al, 7Fh mov [bp+@@angle], al pushd 0 or (0 shl 16) pushd PM_REGULAR or (0 shl 16) push speed_3A385 push word ptr [bp+@@angle] mov ax, singyoku_sphere.BE_cur_top add ax, 44 push ax mov ax, singyoku_sphere.BE_cur_left add ax, 44 push ax push ds push offset _Pellets call @CPellets@add_single$qiiuci15pellet_motion_tiii add sp, 14h inc si loc_22E94: cmp si, 0Ah jl short loc_22E62 pop si leave retf sub_22E42 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_22E9C proc far var_4 = word ptr -4 var_2 = word ptr -2 enter 4, 0 push si call @singyoku_select_for_rank$qmiiiii c, offset speed_3A385, ds, large 30h or (40h shl 16), large 50h or (60h shl 16) xor si, si jmp short loc_22F02 ; --------------------------------------------------------------------------- loc_22EBC: call IRand mov bx, 60h cwd idiv bx mov [bp+var_2], dx call IRand mov bx, 60h cwd idiv bx mov [bp+var_4], dx pushd 0 or (0 shl 16) push speed_3A385 push (0 shl 4) or (PM_SLING_AIMED shl 16) push 0 mov ax, singyoku_sphere.BE_cur_top add ax, [bp+var_4] push ax mov ax, singyoku_sphere.BE_cur_left add ax, [bp+var_2] push ax push ds push offset _Pellets call @CPellets@add_single$qiiuci15pellet_motion_tiii add sp, 14h inc si loc_22F02: cmp si, 0Ah jl short loc_22EBC pop si leave retf sub_22E9C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_22F0A proc far push bp mov bp, sp push seg main_33 push offset sub_22E42 push seg main_33 push offset sub_22E42 push seg main_33 push offset sub_22E42 push 1 call sub_22B88 add sp, 0Eh pop bp retf sub_22F0A endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_22F2A proc far push bp mov bp, sp push seg main_33 push offset sub_22E9C push seg main_33 push offset sub_22E9C push seg main_33 push offset sub_22E9C push 1 call sub_22B88 add sp, 0Eh pop bp retf sub_22F2A endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_22F4A proc far @@invincibility_flash_colors = byte ptr -2 enter 2, 0 push si push di mov al, _singyoku_invincibility_flash_colors mov [bp+@@invincibility_flash_colors], al cmp byte_35CDE, 0 jnz loc_230BA mov singyoku_sphere.BE_cur_left, 272 mov singyoku_sphere.BE_cur_top, 96 pushd (0 shl 16) or 0 pushd (0 shl 16) or 5 call _z_palette_set_show pushd (0 shl 16) or 0 pushd (0 shl 16) or 9 call _z_palette_set_show pushd (0 shl 16) or 0 pushd (0 shl 16) or 0Fh call _z_palette_set_show add sp, 18h xor si, si mov di, 12h mov _singyoku_phase_frame, 0 jmp loc_2302C ; --------------------------------------------------------------------------- loc_22F9D: call @CBossEntity@move_lock_unput_and_put_8$qiiii c, offset singyoku_sphere, ds, large 0, large 0 or (3 shl 16) inc _singyoku_phase_frame mov ax, _singyoku_phase_frame cwd idiv di or dx, dx jnz short loc_22FD7 push 10001h call sub_227C8 add sp, 4 sub di, 2 or di, di jg short loc_22FD7 mov di, 1 loc_22FD7: mov ax, _singyoku_phase_frame mov bx, 20 cwd idiv bx or dx, dx jnz short loc_23024 xor si, si jmp short loc_23013 ; --------------------------------------------------------------------------- loc_22FE8: mov al, _z_Palettes[5 * 3][si] cmp al, byte ptr _stage_palette[5 * size rgb_t][si] jge short loc_22FF6 inc _z_Palettes[5 * 3][si] loc_22FF6: mov al, _z_Palettes[9 * 3][si] cmp al, byte ptr _stage_palette[9 * size rgb_t][si] jge short loc_23004 inc _z_Palettes[9 * 3][si] loc_23004: mov al, _z_Palettes[15 * 3][si] cmp al, byte ptr _stage_palette[15 * size rgb_t][si] jge short loc_23012 inc _z_Palettes[15 * 3][si] loc_23012: inc si loc_23013: cmp si, size rgb_t jl short loc_22FE8 call _z_palette_set_all_show c, offset _z_Palettes, ds loc_23024: push 1 call _frame_delay pop cx loc_2302C: cmp _singyoku_phase_frame, 200 jl loc_22F9D mov byte_35CDE, 1 mov word_35CE0, 0 mov word_35CE2, 0 mov _singyoku_invincible, 0 mov _singyoku_phase_frame, 0 mov _singyoku_initial_hp_rendered, 0 call @boss_palette_show$qv call _stage_palette_set c, offset _z_Palettes, ds call @boss_palette_snap$qv mov singyoku_sphere.BE_hitbox_orb_inactive, 0 mov _singyoku_invincibility_frame, 0 cmp _rank, RANK_EASY jnz short loc_23087 mov ax, 46h ; 'F' jmp short loc_230B4 ; --------------------------------------------------------------------------- loc_23087: mov al, _rank cbw cmp ax, RANK_NORMAL jnz short loc_23095 mov ax, 32h ; '2' jmp short loc_230B4 ; --------------------------------------------------------------------------- loc_23095: mov al, _rank cbw cmp ax, RANK_HARD jnz short loc_230A3 mov ax, 1Eh jmp short loc_230B4 ; --------------------------------------------------------------------------- loc_230A3: mov al, _rank cbw cmp ax, RANK_LUNATIC jnz short loc_230B1 mov ax, 10 jmp short loc_230B4 ; --------------------------------------------------------------------------- loc_230B1: mov ax, (3 shl 4) + 2 loc_230B4: mov speed_3A385, ax jmp loc_232A0 ; --------------------------------------------------------------------------- loc_230BA: mov al, byte_35CDE cbw cmp ax, 1 jnz loc_23198 cmp _singyoku_initial_hp_rendered, 0 jnz short loc_230DF call @hud_hp_render$qii c, _singyoku_hp, _singyoku_invincibility_frame mov _singyoku_initial_hp_rendered, ax loc_230DF: inc _singyoku_phase_frame inc _singyoku_invincibility_frame cmp word_35CE0, 0 jnz short loc_230F4 call sub_229D1 jmp short loc_230FF ; --------------------------------------------------------------------------- loc_230F4: cmp word_35CE0, 1 jnz short loc_230FF call sub_22AA7 loc_230FF: cmp _singyoku_phase_frame, 0 jnz short loc_23118 cmp word_35CE0, 1 jnz short loc_23111 xor ax, ax jmp short loc_23115 ; --------------------------------------------------------------------------- loc_23111: mov ax, word_35CE0 inc ax loc_23115: mov word_35CE0, ax loc_23118: push (48 shl 16) or 96 ; (hitbox_w) or (hitbox_h) mov ax, singyoku_sphere.BE_cur_top add ax, 32 push ax ; hitbox_top mov ax, singyoku_sphere.BE_cur_left add ax, 16 push ax ; hitbox_left call @CBossEntity@hittest_orb$xqv c, offset singyoku_sphere, ds push ax ; colliding_with_orb push seg main_32_TEXT ; hit_callback (segment) push offset @boss_nop$qv ; hit_callback (offset) push 3000 ; hit_score push 1 ; invincibility_flash_colors_count push ss ; invincibility_flash_colors (segment) lea ax, [bp+@@invincibility_flash_colors] push ax ; invincibility_flash_colors (offset) push ds ; hp (segment) push offset _singyoku_hp ; hp (offset) push ds ; is_invincible (segment) push offset _singyoku_invincible ; is_invincible (offset) push ds ; invincibility_frame (segment) push offset _singyoku_invincibility_frame ; invincibility_frame (offset) call @boss_hit_update_and_render$qmit1t1xnxucucinqv$vuciiii add sp, 22h cmp _singyoku_hp, 6 jg loc_232A0 cmp _singyoku_invincible, 0 jnz loc_232A0 cmp word_35CE0, 1 jz loc_232A0 mov byte_35CDE, 2 mov word_35CE2, 0 mov word_35CE0, 0 mov _singyoku_phase_frame, 0 mov _singyoku_invincibility_frame, 0 jmp loc_232A0 ; --------------------------------------------------------------------------- loc_23198: mov al, byte_35CDE cbw cmp ax, 2 jnz loc_2326F inc _singyoku_phase_frame inc _singyoku_invincibility_frame cmp word_35CE0, 0 jnz short loc_231B8 call sub_22DC8 jmp short loc_231EA ; --------------------------------------------------------------------------- loc_231B8: cmp word_35CE0, 1 jnz short loc_231C5 call sub_22F0A jmp short loc_231EA ; --------------------------------------------------------------------------- loc_231C5: cmp word_35CE0, 2 jnz short loc_231D2 call sub_22E09 jmp short loc_231EA ; --------------------------------------------------------------------------- loc_231D2: cmp word_35CE0, 3 jnz short loc_231DF call sub_22F2A jmp short loc_231EA ; --------------------------------------------------------------------------- loc_231DF: cmp word_35CE0, 4 jnz short loc_231EA call sub_22AA7 loc_231EA: cmp _singyoku_phase_frame, 0 jnz short loc_2320E cmp word_35CE0, 4 jnz short loc_23205 call IRand mov bx, 4 cwd idiv bx jmp short loc_2320A ; --------------------------------------------------------------------------- loc_23205: mov ax, 4 mov dx, ax loc_2320A: mov word_35CE0, dx loc_2320E: push (48 shl 16) or 96 ; (hitbox_w) or (hitbox_h) mov ax, singyoku_sphere.BE_cur_top add ax, 32 push ax ; hitbox_top mov ax, singyoku_sphere.BE_cur_left add ax, 16 push ax ; hitbox_left call @CBossEntity@hittest_orb$xqv c, offset singyoku_sphere, ds push ax ; colliding_with_orb push seg main_32_TEXT ; hit_callback (segment) push offset @boss_nop$qv ; hit_callback (offset) push 3000 ; hit_score push 1 ; invincibility_flash_colors_count push ss ; invincibility_flash_colors (segment) lea ax, [bp+@@invincibility_flash_colors] push ax ; invincibility_flash_colors (offset) push ds ; hp (segment) push offset _singyoku_hp ; hp (offset) push ds ; is_invincible (segment) push offset _singyoku_invincible ; is_invincible (offset) push ds ; invincibility_frame (segment) push offset _singyoku_invincibility_frame ; invincibility_frame (offset) call @boss_hit_update_and_render$qmit1t1xnxucucinqv$vuciiii add sp, 22h cmp _singyoku_hp, 0 jg short loc_232A0 mov byte_35CDE, 8 push 5 call _mdrv2_se_play pop cx mov _singyoku_phase_frame, 0 jmp short loc_232A0 ; --------------------------------------------------------------------------- loc_2326F: mov al, byte_35CDE cbw cmp ax, 8 jnz short loc_232A0 call @CBossEntity@put_8$xqiii stdcall, offset singyoku_sphere, ds, large [dword ptr singyoku_sphere.BE_cur_left], singyoku_sphere.BE_bos_image call _mdrv2_bgm_fade_out_nonblock call @CPellets@unput_and_reset$qv stdcall, offset _Pellets, ds add sp, 0Eh call @singyoku_defeat_animate_and_sele$qv loc_232A0: pop di pop si leave retf sub_22F4A endp singyoku_sphere equ <> singyoku_flash equ <> singyoku_person equ <> main_33__TEXT ends ; =========================================================================== ; Segment type: Pure code main_34_TEXT segment byte public 'CODE' use16 extern @boss_palette_snap$qv:proc extern @boss_palette_show$qv:proc extern @kikuri_select_for_rank$qmiiiii:proc PTN_SLOT_WAVE = PTN_SLOT_BOSS_1 main_34_TEXT ends main_34__TEXT segment byte public 'CODE' use16 assume cs:main_34 ;org 4 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 public _kikuri_load _kikuri_load proc c local @@template_soul:CBossEntity, @@template_tear:CBossEntity push si push di mov _pellet_interlace, 1 mov _Pellets.PELLET_unknown_seven, 7 xor si, si jmp short loc_2335B ; --------------------------------------------------------------------------- loc_2333E: xor di, di jmp short loc_23355 ; --------------------------------------------------------------------------- loc_23342: mov bx, si imul bx, size rgb_t mov al, _z_Palettes[bx+di] mov bx, si imul bx, size rgb_t mov byte ptr _boss_palette[bx+di], al inc di loc_23355: cmp di, size rgb_t jl short loc_23342 inc si loc_2335B: cmp si, COLOR_COUNT jl short loc_2333E xor si, si jmp short loc_2336A ; --------------------------------------------------------------------------- loc_23364: mov byte ptr [si+5A1Fh], 0 inc si loc_2336A: cmp si, KIKURI_TEAR_COUNT jl short loc_23364 CBossEntity__load kikuri_soul_0, 0, aTamasii_bos CBossEntity__copy @@template_soul, kikuri_soul_0 push ds push offset kikuri_soul_1.BE_h push ds push offset kikuri_soul_1.BE_vram_w push ds push offset kikuri_soul_1.BE_bos_slot push ds push offset kikuri_soul_1.BE_bos_image_count push ss lea ax, @@template_soul push ax call @CBossEntity@metadata_get$xqmimuct1t1 CBossEntity__load kikuri_tear_0, 1, aTamasii2_bos call _ptn_load stdcall, PTN_SLOT_WAVE, offset aTamayen_ptn, ds ; "tamayen.ptn" add sp, 2Eh mov si, 1 jmp loc_23541 ; --------------------------------------------------------------------------- loc_2346F: CBossEntity__copy @@template_tear, _kikuri_tears mov ax, si imul ax, size CBossEntity add ax, offset _kikuri_tears.BE_h push ds push ax mov ax, si imul ax, size CBossEntity add ax, offset _kikuri_tears.BE_vram_w push ds push ax mov ax, si imul ax, size CBossEntity add ax, offset _kikuri_tears.BE_bos_slot push ds push ax mov ax, si imul ax, size CBossEntity add ax, offset _kikuri_tears.BE_bos_image_count push ds push ax push ss lea ax, @@template_tear push ax call @CBossEntity@metadata_get$xqmimuct1t1 add sp, 14h inc si loc_23541: cmp si, KIKURI_TEAR_COUNT jl loc_2346F nopcall sub_2355F call @particles_unput_update_render$q17particle_origin_ti c, large PO_INITIALIZE or (V_WHITE shl 16) pop di pop si ret _kikuri_load endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_2355F proc far push bp mov bp, sp push si push di mov byte_3A3BE, 0 mov _boss_phase_frame, 0 mov _boss_hp, 14 mov _hud_hp_first_white, 10 mov _hud_hp_first_redwhite, 6 call @CBossEntity@pos_set$qiiiiiii stdcall, offset kikuri_soul_0, ds, 0, large 0 or (50 shl 16), large 32 or (576 shl 16), large 64 or (400 shl 16) call @CBossEntity@pos_set$qiiiiiii stdcall, offset kikuri_soul_1, ds, 0, large 0 or (50 shl 16), large 32 or (576 shl 16), large 64 or (400 shl 16) add sp, 24h xor si, si jmp short loc_235D7 ; --------------------------------------------------------------------------- loc_235C2: xor di, di jmp short loc_235D1 ; --------------------------------------------------------------------------- loc_235C6: mov bx, si imul bx, size rgb_t mov byte ptr _boss_post_defeat_palette[bx+di], 0 inc di loc_235D1: cmp di, size rgb_t jl short loc_235C6 inc si loc_235D7: cmp si, COLOR_COUNT jl short loc_235C2 pop di pop si pop bp retf sub_2355F endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame public _kikuri_free _kikuri_free proc far push bp mov bp, sp call _bos_entity_free stdcall, 0 call _bos_entity_free stdcall, 1 call _ptn_free stdcall, PTN_SLOT_WAVE add sp, 6 pop bp retf _kikuri_free endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_235FD proc near push bp mov bp, sp cmp _orb_cur_left, 256 jle short loc_23625 cmp _orb_cur_left, 352 jge short loc_23625 cmp _orb_cur_top, 132 jge short loc_23625 cmp _orb_cur_top, 180 jge short loc_23625 mov ax, 1 pop bp retn ; --------------------------------------------------------------------------- loc_23625: xor ax, ax pop bp retn sub_235FD endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame _kikuri_soul_move_and_render proc near @@image_new = word ptr -2 @@delta_y = word ptr 4 @@delta_x = word ptr 6 @@soul = word ptr 8 enter 2, 0 push si mov si, [bp+@@soul] push 1 ; lock_frames push [bp+@@delta_y] ; delta_y push [bp+@@delta_x] ; delta_x push 0 ; unused mov ax, si imul ax, size CBossEntity add ax, offset _kikuri_souls push ds ; this (segment) push ax ; this (offset) call @CBossEntity@move_lock_unput_and_put_8$qiiii add sp, 0Ch mov ax, _boss_phase_frame mov bx, 12 cwd idiv bx or dx, dx jnz short loc_23689 mov bx, si imul bx, size CBossEntity cmp _kikuri_souls[bx].BE_bos_image, 2 jl short loc_23673 mov bx, si imul bx, size CBossEntity mov _kikuri_souls[bx].BE_bos_image, 0 jmp short loc_23689 ; --------------------------------------------------------------------------- loc_23673: mov bx, si imul bx, size CBossEntity mov ax, _kikuri_souls[bx].BE_bos_image inc ax mov [bp+@@image_new], ax mov bx, si imul bx, size CBossEntity mov _kikuri_souls[bx].BE_bos_image, ax loc_23689: pop si leave retn 6 _kikuri_soul_move_and_render endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_2368E proc near @@top = word ptr 4 @@left = word ptr 6 push bp mov bp, sp push si xor si, si jmp short loc_236D6 ; --------------------------------------------------------------------------- loc_23696: cmp byte ptr [si+5A1Fh], 0 jnz short loc_236D5 push 64 or (400 shl 16) ; (move_clamp_top) or (move_clamp_bottom) push 32 or (576 shl 16) ; (move_clamp_left) or (move_clamp_right) push 50 ; unknown push [bp+@@top] push [bp+@@left] mov ax, si imul ax, size CBossEntity add ax, offset _kikuri_tears push ds ; this (segment) push ax ; this (offset) call @CBossEntity@pos_set$qiiiiiii add sp, 12h mov bx, si imul bx, size CBossEntity mov _kikuri_tears[bx].BE_bos_image, 0 mov byte ptr [si+5A1Fh], 1 jmp short loc_236DB ; --------------------------------------------------------------------------- loc_236D5: inc si loc_236D6: cmp si, KIKURI_TEAR_COUNT jl short loc_23696 loc_236DB: pop si pop bp retn 4 sub_2368E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_236E0 proc near arg_0 = word ptr 4 arg_2 = word ptr 6 push bp mov bp, sp mov dx, [bp+arg_2] cmp _player_invincible, 1 jz short loc_2370F mov ax, dx add ax, -16 cmp ax, _player_left jg short loc_2370F mov ax, dx add ax, [bp+arg_0] cmp ax, _player_left jl short loc_2370F mov _done, 1 mov ax, 1 pop bp retn 4 ; --------------------------------------------------------------------------- loc_2370F: xor ax, ax pop bp retn 4 sub_236E0 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_23715 proc near push bp mov bp, sp push si xor si, si jmp short loc_23765 ; --------------------------------------------------------------------------- loc_2371D: cmp byte ptr [si+5A1Fh], 0 jz short loc_23764 mov bx, si imul bx, size CBossEntity cmp _kikuri_tears[bx].BE_cur_top, 384 jg short loc_2374E push 8 or (1 shl 16) ; (delta_y) or (lock_frames) pushd 0 or (0 shl 16) ; (unused) or (delta_x) mov ax, si imul ax, size CBossEntity add ax, offset _kikuri_tears push ds ; this (segment) push ax ; this (offset) call @CBossEntity@move_lock_unput_and_put_8$qiiii add sp, 0Ch jmp short loc_23764 ; --------------------------------------------------------------------------- loc_2374E: mov bx, si imul bx, size CBossEntity push _kikuri_tears[bx].BE_cur_left push 384 push ds mov ax, si add ax, 5A1Fh push ax call sub_2379B loc_23764: inc si loc_23765: cmp si, 0Ah jl short loc_2371D pop si pop bp retn sub_23715 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_2376D proc near @@quarter = word ptr 4 @@ptn_id = word ptr 6 @@top = word ptr 8 @@left = word ptr 0Ah push bp mov bp, sp push si push di mov si, [bp+@@left] mov di, [bp+@@top] push (16 shl 16) or 16 push di push si call _egc_copy_rect_1_to_0_16 call _ptn_put_quarter_8 stdcall, si, di, [bp+@@ptn_id], [bp+@@quarter] add sp, 10h pop di pop si pop bp retn 8 sub_2376D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_2379B proc near arg_0 = dword ptr 4 arg_4 = word ptr 8 arg_6 = word ptr 0Ah push bp mov bp, sp push si push di mov si, [bp+arg_6] mov di, [bp+arg_4] les bx, [bp+arg_0] inc byte ptr es:[bx] mov _ptn_unput_before_alpha_put, 1 mov al, es:[bx] cbw cmp ax, 5 jge short loc_237DA call _ptn_put_quarter_8 stdcall, si, di, large 80h or (0 shl 16) push si push 0 call sub_236E0 push 7 call _mdrv2_se_play add sp, 0Ah jmp loc_23C44 ; --------------------------------------------------------------------------- loc_237DA: les bx, [bp+arg_0] mov al, es:[bx] cbw cmp ax, 0Ah jge short loc_237FF call _ptn_put_quarter_8 c, si, di, large 80h or (1 shl 16) push si push 0 call sub_236E0 jmp loc_23C44 ; --------------------------------------------------------------------------- loc_237FF: les bx, [bp+arg_0] mov al, es:[bx] cbw cmp ax, 0Fh jge short loc_2383B lea ax, [si-16] push ax push 20h ; ' ' call sub_236E0 push 80h or (1 shl 16) lea ax, [di-8] push ax push si call _ptn_put_quarter_8 pushd 80h or (0 shl 16) push di lea ax, [si-16] push ax call _ptn_put_quarter_8 add sp, 10h push 0 jmp short loc_23875 ; --------------------------------------------------------------------------- loc_2383B: les bx, [bp+arg_0] mov al, es:[bx] cbw cmp ax, 14h jge short loc_23881 lea ax, [si-16] push ax push 20h ; ' ' call sub_236E0 push 80h or (1 shl 16) lea ax, [di-16] push ax push si call _ptn_put_quarter_8 push 80h or (1 shl 16) push di lea ax, [si-16] push ax call _ptn_put_quarter_8 add sp, 10h push 1 loc_23875: push 80h push di mov ax, si add ax, 10h jmp loc_23A96 ; --------------------------------------------------------------------------- loc_23881: les bx, [bp+arg_0] mov al, es:[bx] cbw cmp ax, 19h jge short loc_238E7 lea ax, [si-20h] push ax push 40h call sub_236E0 push 80h or (1 shl 16) lea ax, [di-24] push ax push si call _ptn_put_quarter_8 push 80h or (1 shl 16) lea ax, [di-8] push ax lea ax, [si-16] push ax call _ptn_put_quarter_8 push 80h or (1 shl 16) lea ax, [di-8] push ax lea ax, [si+16] push ax call _ptn_put_quarter_8 add sp, 18h loc_238CF: pushd 80h or (0 shl 16) push di lea ax, [si-32] push ax call _ptn_put_quarter_8 add sp, 8 push 0 jmp loc_23C36 ; --------------------------------------------------------------------------- loc_238E7: les bx, [bp+arg_0] mov al, es:[bx] cbw cmp ax, 1Eh jge short loc_2394A lea ax, [si-20h] push ax push 40h call sub_236E0 pushd 80h or (0 shl 16) lea ax, [di-32] push ax push si call _ptn_put_quarter_8 push 80h or (1 shl 16) lea ax, [di-16] push ax lea ax, [si-16] push ax call _ptn_put_quarter_8 push 80h or (1 shl 16) lea ax, [di-16] push ax lea ax, [si+16] push ax call _ptn_put_quarter_8 push 80h or (1 shl 16) push di lea ax, [si-32] push ax call _ptn_put_quarter_8 add sp, 20h push 1 jmp loc_23C36 ; --------------------------------------------------------------------------- loc_2394A: les bx, [bp+arg_0] mov al, es:[bx] cbw cmp ax, 23h ; '#' jge short loc_239B8 lea ax, [si-20h] push ax push 40h call sub_236E0 pushd 80h or (0 shl 16) lea ax, [di-24] push ax push si call _ptn_put_quarter_8 push 80h or (1 shl 16) lea ax, [di-24] push ax lea ax, [si-16] push ax call _ptn_put_quarter_8 push 80h or (1 shl 16) lea ax, [di-24] push ax lea ax, [si+16] push ax call _ptn_put_quarter_8 push 80h or (1 shl 16) lea ax, [di-8] push ax lea ax, [si-32] push ax call _ptn_put_quarter_8 add sp, 20h push 1 loc_239AD: push 80h ; '?' mov ax, di add ax, 0FFF8h jmp loc_23A90 ; --------------------------------------------------------------------------- loc_239B8: les bx, [bp+arg_0] mov al, es:[bx] cbw cmp ax, 28h ; '(' jge short loc_23A25 lea ax, [si-20h] push ax push 40h call sub_236E0 pushd 80h or (0 shl 16) lea ax, [di-16] push ax push si call _ptn_put_quarter_8 pushd 80h or (0 shl 16) lea ax, [di-32] push ax lea ax, [si-16] push ax call _ptn_put_quarter_8 pushd 80h or (0 shl 16) lea ax, [di-32] push ax lea ax, [si+16] push ax call _ptn_put_quarter_8 push 80h or (1 shl 16) lea ax, [di-16] push ax lea ax, [si-32] push ax call _ptn_put_quarter_8 add sp, 20h push 1 loc_23A1B: push 80h ; '?' mov ax, di add ax, 0FFF0h jmp short loc_23A90 ; --------------------------------------------------------------------------- loc_23A25: les bx, [bp+arg_0] mov al, es:[bx] cbw cmp ax, 2Dh ; '-' jge short loc_23AA2 lea ax, [si-20h] push ax push 40h call sub_236E0 pushd 80h or (0 shl 16) lea ax, [di-8] push ax push si call _ptn_put_quarter_8 pushd 80h or (0 shl 16) lea ax, [di-24] push ax lea ax, [si-16] push ax call _ptn_put_quarter_8 pushd 80h or (0 shl 16) lea ax, [di-24] push ax lea ax, [si+16] push ax call _ptn_put_quarter_8 push 80h or (1 shl 16) lea ax, [di-24] push ax lea ax, [si-32] push ax call _ptn_put_quarter_8 add sp, 20h push 1 loc_23A88: push 80h mov ax, di add ax, -24 loc_23A90: push ax loc_23A91: mov ax, si add ax, 32 loc_23A96: push ax call _ptn_put_quarter_8 add sp, 8 jmp loc_23C44 ; --------------------------------------------------------------------------- loc_23AA2: les bx, [bp+arg_0] mov al, es:[bx] cbw cmp ax, 32h ; '2' jge short loc_23B0D lea ax, [si-20h] push ax push 40h call sub_236E0 pushd 80h or (0 shl 16) push di push si call _ptn_put_quarter_8 pushd 80h or (0 shl 16) lea ax, [di-16] push ax lea ax, [si-16] push ax call _ptn_put_quarter_8 pushd 80h or (0 shl 16) lea ax, [di-16] push ax lea ax, [si+16] push ax call _ptn_put_quarter_8 pushd 80h or (0 shl 16) lea ax, [di-32] push ax lea ax, [si-32] push ax call _ptn_put_quarter_8 add sp, 20h pushd 80h or (0 shl 16) mov ax, di add ax, -32 jmp short loc_23A90 ; --------------------------------------------------------------------------- loc_23B0D: les bx, [bp+arg_0] mov al, es:[bx] cbw cmp ax, 37h ; '7' jge short loc_23B70 lea ax, [si-20h] push ax push 40h call sub_236E0 call _ptn_put_quarter_8 stdcall, si, di, 80h or (3 shl 16) pushd 80h ; '?' lea ax, [di-8] push ax lea ax, [si-16] push ax call _ptn_put_quarter_8 pushd 80h or (0 shl 16) lea ax, [di-8] push ax lea ax, [si+16] push ax call _ptn_put_quarter_8 pushd 80h or (0 shl 16) lea ax, [di-24] push ax lea ax, [si-32] push ax call _ptn_put_quarter_8 add sp, 20h push 0 jmp loc_23A88 ; --------------------------------------------------------------------------- loc_23B70: les bx, [bp+arg_0] mov al, es:[bx] cbw cmp ax, 3Ch ; '<' jge short loc_23BC0 lea ax, [si-20h] push ax push 40h call sub_236E0 pushd 80h or (0 shl 16) push di lea ax, [si-16] push ax call _ptn_put_quarter_8 pushd 80h ; '?' push di lea ax, [si+16] push ax call _ptn_put_quarter_8 pushd 80h or (0 shl 16) lea ax, [di-16] push ax lea ax, [si-32] push ax call _ptn_put_quarter_8 add sp, 18h push 0 jmp loc_23A1B ; --------------------------------------------------------------------------- loc_23BC0: les bx, [bp+arg_0] mov al, es:[bx] cbw cmp ax, 41h ; 'A' jge short loc_23C07 push 80h or (3 shl 16) push di lea ax, [si-16] push ax call _ptn_put_quarter_8 push 80h or (3 shl 16) push di lea ax, [si+16] push ax call _ptn_put_quarter_8 pushd 80h or (0 shl 16) lea ax, [di-8] push ax lea ax, [si-32] push ax call _ptn_put_quarter_8 add sp, 18h push 0 jmp loc_239AD ; --------------------------------------------------------------------------- loc_23C07: les bx, [bp+arg_0] mov al, es:[bx] cbw cmp ax, 46h ; 'F' jl loc_238CF les bx, [bp+arg_0] mov al, es:[bx] cbw cmp ax, 4Bh ; 'K' jge short loc_23C3D push 80h or (3 shl 16) push di lea ax, [si-32] push ax call _ptn_put_quarter_8 add sp, 8 push 3 loc_23C36: push 80h push di jmp loc_23A91 ; --------------------------------------------------------------------------- loc_23C3D: les bx, [bp+arg_0] mov byte ptr es:[bx], 0 loc_23C44: mov _ptn_unput_before_alpha_put, 0 pop di pop si pop bp retn 8 sub_2379B endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_23C4F proc near var_2 = word ptr -2 arg_0 = word ptr 4 arg_2 = word ptr 6 enter 2, 0 push si push di mov ax, [bp+arg_2] imul ax, 50h mov si, ax cmp [bp+arg_2], 0 jl loc_23D13 cmp [bp+arg_2], 18Fh jg loc_23D13 mov [bp+var_2], 0 jmp loc_23D0B ; --------------------------------------------------------------------------- loc_23C76: push 1 call _graph_accesspage_func mov ax, 0A800h mov es, ax assume es:nothing mov ax, es:[si] and ax, [bp+arg_0] mov di, ax push 0 call _graph_accesspage_func mov ax, 0A800h mov es, ax mov es:[si], di push 1 call _graph_accesspage_func mov ax, 0B000h mov es, ax assume es:nothing mov ax, es:[si] and ax, [bp+arg_0] mov di, ax push 0 call _graph_accesspage_func mov ax, 0B000h mov es, ax mov es:[si], di push 1 call _graph_accesspage_func mov ax, 0B800h mov es, ax assume es:nothing mov ax, es:[si] and ax, [bp+arg_0] mov di, ax push 0 call _graph_accesspage_func mov ax, 0B800h mov es, ax mov es:[si], di push 1 call _graph_accesspage_func mov ax, 0E000h mov es, ax assume es:nothing mov ax, es:[si] and ax, [bp+arg_0] mov di, ax push 0 call _graph_accesspage_func add sp, 10h mov ax, 0E000h mov es, ax mov es:[si], di add si, 2 inc [bp+var_2] loc_23D0B: cmp [bp+var_2], 28h ; '(' jl loc_23C76 loc_23D13: pop di pop si leave retn 4 sub_23C4F endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_23D19 proc near push bp mov bp, sp push si push di cmp _boss_phase_frame, 100 jl loc_23E6A cmp _boss_phase_frame, 100 jnz short loc_23D63 mov angle_3A6B9, 0 mov angle_3A6BA, 0 call @kikuri_select_for_rank$qmiiiii stdcall, offset speed_3A6B7, ds, large 04h or (03h shl 16), large 02h or (01h shl 16) call @kikuri_select_for_rank$qmiiiii stdcall, offset word_3A6BB, ds, large 90 or (90 shl 16), large 90 or (50 shl 16) add sp, 18h loc_23D63: mov ax, _boss_phase_frame cwd idiv speed_3A6B7 or dx, dx jnz loc_23E6A movsx eax, word_3A6BB mov dl, angle_3A6B9 mov dh, 0 and dx, 255 add dx, dx mov bx, dx movsx edx, _CosTable8[bx] imul eax, edx sar eax, 8 add ax, 320 mov si, ax movsx eax, word_3A6BB mov dl, angle_3A6B9 mov dh, 0 and dx, 255 add dx, dx mov bx, dx movsx edx, _SinTable8[bx] imul eax, edx sar eax, 8 add ax, 180 mov di, ax pushd 0 or (0 shl 16) pushd PM_REGULAR or (0 shl 16) push (3 shl 4) + 2 mov al, angle_3A6B9 add al, angle_3A6BA push ax push di push si push ds push offset _Pellets call @CPellets@add_single$qiiuci15pellet_motion_tiii movsx eax, word_3A6BB mov dl, angle_3A6B9 mov dh, 0 add dx, 80h and dx, 255 add dx, dx mov bx, dx movsx edx, _CosTable8[bx] imul eax, edx sar eax, 8 add ax, 320 mov si, ax movsx eax, word_3A6BB mov dl, angle_3A6B9 mov dh, 0 add dx, 80h and dx, 255 add dx, dx mov bx, dx movsx edx, _SinTable8[bx] imul eax, edx sar eax, 8 add ax, 180 mov di, ax pushd 0 or (0 shl 16) pushd PM_REGULAR or (0 shl 16) push (3 shl 4) + 2 mov al, angle_3A6B9 add al, angle_3A6BA add al, 80h push ax push di push si push ds push offset _Pellets call @CPellets@add_single$qiiuci15pellet_motion_tiii add sp, 28h cmp _boss_phase_frame, 900 jl short loc_23E5E mov _boss_phase_frame, 0 loc_23E5E: mov al, angle_3A6B9 add al, -8 mov angle_3A6B9, al inc angle_3A6BA loc_23E6A: pop di pop si pop bp retn sub_23D19 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_23E6E proc near @@angle = byte ptr -7 var_6 = word ptr -6 @@top = word ptr -4 @@left = word ptr -2 enter 8, 0 push si push 55 or (50 shl 16) ; (for_hard) or (for_lunatic) push 80 or (60 shl 16) ; (for_easy) or (for_normal) push ss ; ret (segment) lea ax, [bp+var_6] push ax ; ret (offset) call @kikuri_select_for_rank$qmiiiii add sp, 0Ch mov ax, _boss_phase_frame cwd idiv [bp+var_6] or dx, dx jnz short loc_23F13 xor si, si jmp short loc_23F0E ; --------------------------------------------------------------------------- loc_23E9A: mov bx, si shl bx, 5 and bx, 255 add bx, bx movsx eax, _CosTable8[bx] shl eax, 4 sar eax, 8 add ax, 316 mov [bp+@@left], ax mov bx, si shl bx, 5 and bx, 255 add bx, bx movsx eax, _SinTable8[bx] shl eax, 4 sar eax, 8 add ax, 224 mov [bp+@@top], ax push 164 mov ax, _player_left add ax, -300 push ax call iatan2 mov [bp+@@angle], al call @CPellets@add_single$qiiuci15pellet_motion_tiii c, offset _Pellets, ds, [bp+@@left], [bp+@@top], word ptr [bp+@@angle], (3 shl 4), large PM_SPIN or ((2 shl 4) shl 16), large 312 or (224 shl 16) inc si loc_23F0E: cmp si, 8 jl short loc_23E9A loc_23F13: pop si leave retn sub_23E6E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_23F16 proc near push bp mov bp, sp cmp _boss_phase_frame, 200 jnz short loc_23F62 call @CBossEntity@pos_set$qiiiiiii stdcall, offset kikuri_soul_0, ds, 304, large 208 or (50 shl 16), large 32 or (576 shl 16), large 64 or (400 shl 16) call @CBossEntity@pos_set$qiiiiiii stdcall, offset kikuri_soul_1, ds, 304, large 208 or (50 shl 16), large 32 or (576 shl 16), large 64 or (400 shl 16) add sp, 24h jmp short loc_23F99 ; --------------------------------------------------------------------------- loc_23F62: cmp _boss_phase_frame, 200 jle short loc_23F99 mov ax, _boss_phase_frame mov bx, 2 cwd idiv bx or dx, dx jnz short loc_23F99 call _kikuri_soul_move_and_render stdcall, -3, large (-4 and 0FFFFh) or (0 shl 16) call _kikuri_soul_move_and_render stdcall, -3, large ( 4 and 0FFFFh) or (1 shl 16) cmp kikuri_soul_0.BE_cur_top, 96 jge short loc_23F99 mov ax, 1 pop bp retn ; --------------------------------------------------------------------------- loc_23F99: xor ax, ax pop bp retn sub_23F16 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_23F9D proc near @@group = word ptr -8 var_6 = byte ptr -6 @@top = word ptr -4 @@left = word ptr -2 enter 8, 0 push si call _kikuri_soul_move_and_render stdcall, 0, large 0 or (0 shl 16) call _kikuri_soul_move_and_render stdcall, 0, large 0 or (1 shl 16) push 70 or (60 shl 16) ; (for_hard) or (for_lunatic) push 100 or (80 shl 16) ; (for_easy) or (for_normal) push ss ; ret (segment) lea ax, [bp+var_6] push ax ; ret (offset) call @kikuri_select_for_rank$qmiiiii add sp, 0Ch mov ax, _boss_phase_frame mov bx, 80 cwd idiv bx or dx, dx jnz short loc_2402E xor si, si jmp short loc_24029 ; --------------------------------------------------------------------------- loc_23FDE: mov bx, si imul bx, size CBossEntity mov ax, _kikuri_souls[bx].BE_cur_left add ax, 12 mov [bp+@@left], ax mov bx, si imul bx, size CBossEntity mov ax, _kikuri_souls[bx].BE_cur_top add ax, 8 mov [bp+@@top], ax push PG_5_SPREAD_WIDE_AIMED or (PG_5_SPREAD_WIDE shl 16) ; (for_hard) or (for_lunatic) push PG_2_SPREAD_WIDE_AIMED or (PG_3_SPREAD_WIDE_AIMED shl 16) ; (for_easy) or (for_normal) push ss ; ret (segment) lea ax, [bp+@@group] push ax ; ret (offset) call @kikuri_select_for_rank$qmiiiii call @CPellets@add_group$qii14pellet_group_ti stdcall, offset _Pellets, ds, [bp+@@left], [bp+@@top], [bp+@@group], (3 shl 4) + 7 add sp, 18h inc si loc_24029: cmp si, 2 jl short loc_23FDE loc_2402E: cmp _boss_phase_frame, 600 jle short loc_2403B mov ax, 2 jmp short loc_2403E ; --------------------------------------------------------------------------- loc_2403B: mov ax, 1 loc_2403E: pop si leave retn sub_23F9D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_24041 proc near push bp mov bp, sp push si push di cmp _boss_phase_frame, 10 jge short loc_24064 call @kikuri_select_for_rank$qmiiiii c, offset speed_3A6B7, ds, large 0C8h or (0A0h shl 16), large 8Ch or (78h shl 16) loc_24064: mov ax, _boss_phase_frame cwd idiv speed_3A6B7 or dx, dx jnz short loc_24092 mov ax, kikuri_soul_0.BE_cur_left add ax, 12 push ax mov ax, kikuri_soul_0.BE_cur_top add ax, 8 push ax call sub_2368E mov ax, kikuri_soul_1.BE_cur_left add ax, 12 push ax mov ax, kikuri_soul_1.BE_cur_top add ax, 8 push ax call sub_2368E loc_24092: mov bx, _boss_phase_frame and bx, 255 add bx, bx movsx eax, _CosTable8[bx] imul eax, 6 sar eax, 8 mov si, ax mov bx, _boss_phase_frame and bx, 255 add bx, bx movsx eax, _CosTable8[bx] shl eax, 1 sar eax, 8 mov di, ax call sub_23715 call _kikuri_soul_move_and_render stdcall, di, si, 0 push 1 mov ax, si neg ax push ax push di call _kikuri_soul_move_and_render pop di pop si pop bp retn sub_24041 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_240DE proc near push bp mov bp, sp cmp _boss_phase_frame, 200 jle short loc_2414A mov ax, _boss_phase_frame mov bx, 200 cwd idiv bx or dx, dx jnz short loc_2414A push 20 or (8 shl 16) ; (moveout_at_age) or (w shl 16) push ((6 * 8) + 2) or (10 shl 16) ; (speed_multiplied_by_8) or (col shl 16) push PLAYFIELD_BOTTOM ; target_y mov ax, _player_left add ax, 60 push ax ; target_left push 307 or (147 shl 16) ; (origin_left) or (origin_y shl 16) push ds ; this (segment) push offset shootout_laser_0 ; this (offset) call @CShootoutLaser@spawn$qiiiiiiii push 20 or (8 shl 16) ; (moveout_at_age) or (w shl 16) push ((6 * 8) + 2) or (10 shl 16) ; (speed_multiplied_by_8) or (col shl 16) push PLAYFIELD_BOTTOM ; target_y mov ax, _player_left add ax, -60 push ax ; target_left push 336 or (147 shl 16) ; (origin_left) or (origin_y shl 16) push ds ; this (segment) push offset shootout_laser_1 ; this (offset) call @CShootoutLaser@spawn$qiiiiiiii push 6 call _mdrv2_se_play add sp, 2Ah loc_2414A: pop bp retn sub_240DE endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_2414C proc near push bp mov bp, sp push si push di mov ax, _boss_phase_frame mov bx, 200 cwd idiv bx or dx, dx jnz short loc_2419B push PG_1_AIMED or (((2 shl 4) + 8) shl 16) mov ax, kikuri_soul_0.BE_cur_top add ax, 12 push ax mov ax, kikuri_soul_0.BE_cur_left add ax, 12 push ax push ds push offset _Pellets call @CPellets@add_group$qii14pellet_group_ti push PG_1_AIMED or (((2 shl 4) + 8) shl 16) mov ax, kikuri_soul_1.BE_cur_top add ax, 12 push ax mov ax, kikuri_soul_1.BE_cur_left add ax, 12 push ax push ds push offset _Pellets call @CPellets@add_group$qii14pellet_group_ti add sp, 18h loc_2419B: mov bx, _boss_phase_frame and bx, 255 add bx, bx movsx eax, _CosTable8[bx] shl eax, 2 sar eax, 8 mov si, ax mov bx, _boss_phase_frame and bx, 255 add bx, bx movsx eax, _CosTable8[bx] shl eax, 1 sar eax, 8 mov di, ax call sub_23715 call _kikuri_soul_move_and_render stdcall, di, si, 0 push 1 mov ax, si neg ax push ax push di call _kikuri_soul_move_and_render pop di pop si pop bp retn sub_2414C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_241E7 proc near @@top = word ptr -2 enter 2, 0 push si push di cmp _boss_phase_frame, 100 jl loc_24310 cmp _boss_phase_frame, 100 jnz short loc_24219 mov angle_3A6BD, 20h call @kikuri_select_for_rank$qmiiiii c, offset speed_3A6B7, ds, large 0Eh or (08h shl 16), large 06h or (04h shl 16) loc_24219: mov ax, _boss_phase_frame cwd idiv speed_3A6B7 or dx, dx jnz loc_24310 xor si, si jmp loc_242EC ; --------------------------------------------------------------------------- loc_2422C: mov bx, _boss_phase_frame shl bx, 2 mov ax, si shl ax, 7 add bx, ax and bx, 255 add bx, bx movsx eax, _CosTable8[bx] imul eax, 90 sar eax, 8 add ax, 320 mov di, ax mov bx, _boss_phase_frame shl bx, 2 mov ax, si shl ax, 7 add bx, ax and bx, 255 add bx, bx movsx eax, _SinTable8[bx] imul eax, 90 sar eax, 8 add ax, 180 mov [bp+@@top], ax call @CPellets@add_single$qiiuci15pellet_motion_tiii stdcall, offset _Pellets, ds, di, ax, word ptr angle_3A6BD, (2 shl 4) + 4, large PM_REGULAR or (0 shl 16), large 0 or (0 shl 16) pushd 0 or (0 shl 16) pushd PM_REGULAR or (0 shl 16) push (2 shl 4) + 4 mov al, angle_3A6BD add al, 40h push ax push [bp+@@top] push di push ds push offset _Pellets call @CPellets@add_single$qiiuci15pellet_motion_tiii add sp, 28h pushd 0 or (0 shl 16) pushd PM_REGULAR or (0 shl 16) push (2 shl 4) + 4 mov al, angle_3A6BD add al, 80h push ax push [bp+@@top] push di push ds push offset _Pellets call @CPellets@add_single$qiiuci15pellet_motion_tiii pushd 0 or (0 shl 16) pushd PM_REGULAR or (0 shl 16) push (2 shl 4) + 4 mov al, angle_3A6BD add al, -40h push ax push [bp+@@top] push di push ds push offset _Pellets call @CPellets@add_single$qiiuci15pellet_motion_tiii add sp, 28h add si, 2 loc_242EC: cmp si, 4 jl loc_2422C cmp _boss_phase_frame, 600 jg short loc_24305 mov al, angle_3A6BD add al, -5 mov angle_3A6BD, al jmp short loc_24310 ; --------------------------------------------------------------------------- loc_24305: mov _boss_phase_frame, 0 mov ax, 1 jmp short loc_24312 ; --------------------------------------------------------------------------- loc_24310: xor ax, ax loc_24312: pop di pop si leave retn sub_241E7 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_24316 proc near push bp mov bp, sp cmp _boss_phase_frame, 200 jle loc_244C9 cmp _boss_phase_frame, 250 jnz short loc_24378 call @kikuri_select_for_rank$qmiiiii stdcall, offset speed_3A6B7, ds, large 34h or (38h shl 16), large 3Ch or (40h shl 16) push 6 call _mdrv2_se_play add sp, 0Eh push 20 or (4 shl 16) ; (moveout_at_age) or (w shl 16) push 10 ; col push speed_3A6B7 ; speed_multiplied_by_8 push PLAYFIELD_BOTTOM ; target_y call IRand mov bx, 120 cwd idiv bx add dx, _player_left add dx, -60 push dx ; target_left push 307 or (147 shl 16) ; (origin_left) or (origin_y shl 16) push ds ; this (segment) push offset shootout_laser_0 ; this (offset) jmp loc_244AE ; --------------------------------------------------------------------------- loc_24378: cmp _boss_phase_frame, 280 jnz short loc_243B7 push 6 call _mdrv2_se_play pop cx push 20 or (4 shl 16) ; (moveout_at_age) or (w shl 16) push 10 ; col push speed_3A6B7 ; speed_multiplied_by_8 push PLAYFIELD_BOTTOM ; target_y call IRand mov bx, 120 cwd idiv bx add dx, _player_left add dx, -60 push dx ; target_left push 307 or (147 shl 16) ; (origin_left) or (origin_y shl 16) push ds ; this (segment) push offset shootout_laser_1 ; this (offset) jmp loc_244AE ; --------------------------------------------------------------------------- loc_243B7: cmp _boss_phase_frame, 310 jnz short loc_243F6 push 6 call _mdrv2_se_play pop cx push 20 or (4 shl 16) ; (moveout_at_age) or (w shl 16) push 10 ; col push speed_3A6B7 ; speed_multiplied_by_8 push PLAYFIELD_BOTTOM ; target_y call IRand mov bx, 120 cwd idiv bx add dx, _player_left add dx, -60 push dx ; target_left push 307 or (147 shl 16) ; (origin_left) or (origin_y shl 16) push ds ; this (segment) push offset shootout_laser_2 ; this (offset) jmp loc_244AE ; --------------------------------------------------------------------------- loc_243F6: cmp _boss_phase_frame, 340 jnz short loc_24434 push 6 call _mdrv2_se_play pop cx push 20 or (4 shl 16) ; (moveout_at_age) or (w shl 16) push 10 ; col push speed_3A6B7 ; speed_multiplied_by_8 push PLAYFIELD_BOTTOM ; target_y call IRand mov bx, 120 cwd idiv bx add dx, _player_left add dx, -60 push dx ; target_left push 307 or (147 shl 16) ; (origin_left) or (origin_y shl 16) push ds ; this (segment) push offset shootout_laser_3 ; this (offset) jmp short loc_244AE ; --------------------------------------------------------------------------- loc_24434: cmp _boss_phase_frame, 370 jnz short loc_24472 push 6 call _mdrv2_se_play pop cx push 20 or (4 shl 16) ; (moveout_at_age) or (w shl 16) push 10 ; col push speed_3A6B7 ; speed_multiplied_by_8 push PLAYFIELD_BOTTOM ; target_y call IRand mov bx, 120 cwd idiv bx add dx, _player_left add dx, -60 push dx ; target_left push 307 or (147 shl 16) ; (origin_left) or (origin_y shl 16) push ds ; this (segment) push offset shootout_laser_4 ; this (offset) jmp short loc_244AE ; --------------------------------------------------------------------------- loc_24472: cmp _boss_phase_frame, 400 jnz short loc_244B6 push 6 call _mdrv2_se_play pop cx push 20 or (4 shl 16) ; (moveout_at_age) or (w shl 16) push 10 ; col push speed_3A6B7 ; speed_multiplied_by_8 push PLAYFIELD_BOTTOM ; target_y call IRand mov bx, 120 cwd idiv bx add dx, _player_left add dx, -60 push dx ; target_left push 307 or (147 shl 16) ; (origin_left) or (origin_y shl 16) push ds ; this (segment) push offset shootout_laser_5 ; this (offset) loc_244AE: call @CShootoutLaser@spawn$qiiiiiiii add sp, 14h loc_244B6: cmp _boss_phase_frame, 500 jle short loc_244C9 mov _boss_phase_frame, 0 mov ax, 2 pop bp retn ; --------------------------------------------------------------------------- loc_244C9: mov ax, 1 pop bp retn sub_24316 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_244CE proc near push bp mov bp, sp push si cmp _boss_phase_frame, 100 jle loc_24647 cmp _boss_phase_frame, 100 jnz short loc_244F9 call @kikuri_select_for_rank$qmiiiii c, offset speed_3A6B7, ds, large 23h or (19h shl 16), large 17h or (16h shl 16) loc_244F9: mov ax, _boss_phase_frame cwd idiv speed_3A6B7 or dx, dx jnz loc_24647 xor si, si jmp loc_24640 ; --------------------------------------------------------------------------- loc_2450C: pushd 0 or (0 shl 16) push PM_GRAVITY or (1 shl 16) push (3 shl 4) push 0 mov bx, si imul bx, size CBossEntity mov ax, _kikuri_souls[bx].BE_cur_top add ax, 12 push ax mov bx, si imul bx, size CBossEntity mov ax, _kikuri_souls[bx].BE_cur_left add ax, 12 push ax push ds push offset _Pellets call @CPellets@add_single$qiiuci15pellet_motion_tiii pushd 0 or (0 shl 16) push PM_GRAVITY or (1 shl 16) push (2 shl 4) push 0 mov bx, si imul bx, size CBossEntity mov ax, _kikuri_souls[bx].BE_cur_top add ax, 12 push ax mov bx, si imul bx, size CBossEntity mov ax, _kikuri_souls[bx].BE_cur_left add ax, 12 push ax push ds push offset _Pellets call @CPellets@add_single$qiiuci15pellet_motion_tiii add sp, 28h pushd 0 or (0 shl 16) push PM_GRAVITY or (1 shl 16) push (1 shl 4) push 0 mov bx, si imul bx, size CBossEntity mov ax, _kikuri_souls[bx].BE_cur_top add ax, 12 push ax mov bx, si imul bx, size CBossEntity mov ax, _kikuri_souls[bx].BE_cur_left add ax, 12 push ax push ds push offset _Pellets call @CPellets@add_single$qiiuci15pellet_motion_tiii pushd 0 or (0 shl 16) push PM_GRAVITY or (1 shl 16) push (1 shl 4) push 80h mov bx, si imul bx, size CBossEntity mov ax, _kikuri_souls[bx].BE_cur_top add ax, 12 push ax mov bx, si imul bx, size CBossEntity mov ax, _kikuri_souls[bx].BE_cur_left add ax, 12 push ax push ds push offset _Pellets call @CPellets@add_single$qiiuci15pellet_motion_tiii add sp, 28h pushd 0 or (0 shl 16) push PM_GRAVITY or (1 shl 16) push (2 shl 4) push 80h mov bx, si imul bx, size CBossEntity mov ax, _kikuri_souls[bx].BE_cur_top add ax, 12 push ax mov bx, si imul bx, size CBossEntity mov ax, _kikuri_souls[bx].BE_cur_left add ax, 12 push ax push ds push offset _Pellets call @CPellets@add_single$qiiuci15pellet_motion_tiii pushd 0 or (0 shl 16) push PM_GRAVITY or (1 shl 16) push (3 shl 4) push 80h mov bx, si imul bx, size CBossEntity mov ax, _kikuri_souls[bx].BE_cur_top add ax, 12 push ax mov bx, si imul bx, size CBossEntity mov ax, _kikuri_souls[bx].BE_cur_left add ax, 12 push ax push ds push offset _Pellets call @CPellets@add_single$qiiuci15pellet_motion_tiii push 7 call _mdrv2_se_play add sp, 2Ah inc si loc_24640: cmp si, 2 jl loc_2450C loc_24647: cmp _boss_phase_frame, 250 jle short loc_2465A mov _boss_phase_frame, 0 mov ax, 3 jmp short loc_2465D ; --------------------------------------------------------------------------- loc_2465A: mov ax, 2 loc_2465D: pop si pop bp retn sub_244CE endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_24660 proc near push bp mov bp, sp push si push di cmp _boss_phase_frame, 100 jl loc_2471B cmp _boss_phase_frame, 100 jnz short loc_246A0 call @kikuri_select_for_rank$qmiiiii stdcall, offset speed_3A6B7, ds, large 3Ch or (40h shl 16), large 44h or (48h shl 16) call @kikuri_select_for_rank$qmiiiii stdcall, offset word_3A6BE, ds, large 0 or (10 shl 16), large 16 or (20 shl 16) add sp, 18h loc_246A0: mov ax, _boss_phase_frame mov bx, 10 cwd idiv bx or dx, dx jnz short loc_24709 mov ax, _boss_phase_frame add ax, -100 cwd idiv bx mov si, ax call IRand mov dx, word_3A6BE add dx, dx inc dx push dx cwd pop bx idiv bx sub dx, word_3A6BE mov di, dx push 20 or (8 shl 16) ; (moveout_at_age) or (w shl 16) push 10 ; col push speed_3A6B7 ; speed_multiplied_by_8 push PLAYFIELD_BOTTOM ; target_y mov ax, si shl ax, 6 add ax, di push ax ; target_left push 64 ; origin_y mov ax, si shl ax, 6 add ax, di push ax ; origin_left mov ax, si imul ax, size CShootoutLaser add ax, offset _shootout_lasers push ds ; this (segment) push ax ; this (offset) call @CShootoutLaser@spawn$qiiiiiiii push 6 call _mdrv2_se_play add sp, 16h loc_24709: cmp _boss_phase_frame, 190 jl short loc_2471B mov _boss_phase_frame, 0 xor ax, ax jmp short loc_2471E ; --------------------------------------------------------------------------- loc_2471B: mov ax, 3 loc_2471E: pop di pop si pop bp retn sub_24660 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_24722 proc far @@invincibility_flash_colors = dword ptr -4 enter 4, 0 push si push di mov eax, dword ptr _kikuri_invincibility_flash_colors mov [bp+@@invincibility_flash_colors], eax cmp byte_3A3BE, 0 jnz loc_24B19 mov _boss_phase_frame, 0 mov _kikuri_invincibility_frame, 0 mov _kikuri_invincible, 0 call @boss_palette_snap$qv push (0Fh shl 16) or 0Fh push (0Fh shl 16) or 02h call _z_palette_set_show push (0Fh shl 16) or 0Fh push (0Fh shl 16) or 06h call _z_palette_set_show push (0Fh shl 16) or 0Fh push (0Fh shl 16) or 08h call _z_palette_set_show push (0Fh shl 16) or 0Fh push (0Fh shl 16) or 0Bh call _z_palette_set_show add sp, 20h loc_24796: inc _boss_phase_frame mov ax, _boss_phase_frame mov bx, 3 cwd idiv bx or dx, dx jnz loc_24871 cmp _kikuri_invincibility_frame, 200 jge short loc_247C9 push _kikuri_invincibility_frame push 2222h call sub_23C4F mov ax, 399 sub ax, _kikuri_invincibility_frame push ax push 2222h call sub_23C4F loc_247C9: mov ax, _boss_phase_frame add ax, ax cmp ax, 8 jle short loc_247F9 cmp _kikuri_invincibility_frame, 208 jge short loc_247F9 mov ax, _kikuri_invincibility_frame add ax, -8 push ax push 0AAAAh call sub_23C4F mov ax, 399 sub ax, _kikuri_invincibility_frame add ax, 8 push ax push 0AAAAh call sub_23C4F loc_247F9: mov ax, _boss_phase_frame add ax, ax cmp ax, 16 jle short loc_24829 cmp _kikuri_invincibility_frame, 216 jge short loc_24829 mov ax, _kikuri_invincibility_frame add ax, -16 push ax push 0EEEEh call sub_23C4F mov ax, 18Fh sub ax, _kikuri_invincibility_frame add ax, 16 push ax push 0EEEEh call sub_23C4F loc_24829: mov ax, _boss_phase_frame add ax, ax cmp ax, 24 jle short loc_24857 cmp _kikuri_invincibility_frame, 224 jg short loc_24857 mov ax, _kikuri_invincibility_frame add ax, -24 push ax push 0FFFFh call sub_23C4F mov ax, 399 sub ax, _kikuri_invincibility_frame add ax, 18h push ax push 0FFFFh call sub_23C4F loc_24857: inc _kikuri_invincibility_frame cmp _kikuri_invincibility_frame, 224 jle short loc_24871 mov _kikuri_invincibility_frame, 0 mov _boss_phase_frame, 0 jmp short loc_2489C ; --------------------------------------------------------------------------- loc_24871: call _ptn_put_8 stdcall, _player_left, (PTN_MIKO_L shl 16) or _player_top call _ptn_put_8 stdcall, _orb_cur_left, _orb_cur_top, PTN_ORB push 1 call _frame_delay add sp, 0Eh jmp loc_24796 ; --------------------------------------------------------------------------- loc_2489C: inc _boss_phase_frame cmp _boss_phase_frame, 70 jnz short loc_248B0 mov _kikuri_entrance_ring_radius_base, 0 jmp loc_24A9D ; --------------------------------------------------------------------------- loc_248B0: cmp _boss_phase_frame, 71 jnz loc_24941 mov si, (1 * 32) jmp short loc_24938 ; --------------------------------------------------------------------------- loc_248BE: pushd [_VRAM_PLANE_R] ; plane movsx eax, _kikuri_entrance_ring_radius_base push eax mov ax, si mov bx, 32 cwd idiv bx cwde pop edx imul edx, eax mov bx, si shl bx, 3 and bx, 255 add bx, bx movsx eax, _CosTable8[bx] imul edx, eax sar edx, 8 add dx, 180 push dx ; top movsx eax, _kikuri_entrance_ring_radius_base push eax mov ax, si mov bx, 32 cwd idiv bx cwde pop edx imul edx, eax mov bx, si shl bx, 3 and bx, 255 add bx, bx movsx eax, _SinTable8[bx] imul edx, eax sar edx, 8 add dx, 304 push dx ; left call @graph_invert_32x32_8$qiinuc add sp, 8 inc si loc_24938: cmp si, (5 * 32) ; Hack (jl short loc_248BE) (1 byte too much for JWasm) db 07ch, 080h jmp loc_24A9D ; --------------------------------------------------------------------------- loc_24941: cmp _boss_phase_frame, 71 jle loc_24A9D mov ax, _boss_phase_frame mov bx, 4 cwd idiv bx or dx, dx jnz loc_24A9D mov si, (1 * 32) jmp short loc_249D8 ; --------------------------------------------------------------------------- loc_2495E: pushd [_VRAM_PLANE_R] ; plane movsx eax, _kikuri_entrance_ring_radius_base push eax mov ax, si mov bx, 32 cwd idiv bx cwde pop edx imul edx, eax mov bx, si shl bx, 3 and bx, 255 add bx, bx movsx eax, _CosTable8[bx] imul edx, eax sar edx, 8 add dx, 180 push dx ; top movsx eax, _kikuri_entrance_ring_radius_base push eax mov ax, si mov bx, 32 cwd idiv bx cwde pop edx imul edx, eax mov bx, si shl bx, 3 and bx, 255 add bx, bx movsx eax, _SinTable8[bx] imul edx, eax sar edx, 8 add dx, 304 push dx ; left call @graph_invert_32x32_8$qiinuc add sp, 8 inc si loc_249D8: cmp si, (5 * 32) ; Hack (jl short loc_2495E) (1 byte too much for JWasm) db 07ch, 080h add _kikuri_entrance_ring_radius_base, 16 xor di, di mov si, (1 * 32) jmp short loc_24A66 ; --------------------------------------------------------------------------- loc_249EA: pushd [_VRAM_PLANE_R] ; plane movsx eax, _kikuri_entrance_ring_radius_base push eax mov ax, si mov bx, 32 cwd idiv bx cwde pop edx imul edx, eax mov bx, si shl bx, 3 and bx, 255 add bx, bx movsx eax, _CosTable8[bx] imul edx, eax sar edx, 8 add dx, 180 push dx ; top movsx eax, _kikuri_entrance_ring_radius_base push eax mov ax, si mov bx, 32 cwd idiv bx cwde pop edx imul edx, eax mov bx, si shl bx, 3 and bx, 255 add bx, bx movsx eax, _SinTable8[bx] imul edx, eax sar edx, 8 add dx, 304 push dx ; left call @graph_invert_32x32_8$qiinuc add sp, 8 add di, ax inc si loc_24A66: cmp si, (5 * 32) jl loc_249EA cmp di, (4 * 32) jl short loc_24A9D mov byte_3A3BE, 2 mov word_35D16, 0 mov _boss_phase_frame, 0 call @boss_palette_show$qv mov _kikuri_initial_hp_rendered, 0 call _stage_palette_set c, offset _z_Palettes, ds jmp loc_24DFB ; --------------------------------------------------------------------------- loc_24A9D: cmp _boss_phase_frame, 71 jle short loc_24AFF mov ax, _boss_phase_frame mov bx, 30 cwd idiv bx or dx, dx jz short loc_24AFF xor si, si jmp short loc_24AEE ; --------------------------------------------------------------------------- loc_24AB5: mov al, byte ptr _boss_palette[2 * size rgb_t][si] cmp al, _z_Palettes[2 * 3][si] jge short loc_24AC3 dec _z_Palettes[2 * 3][si] loc_24AC3: mov al, byte ptr _boss_palette[6 * size rgb_t][si] cmp al, _z_Palettes[6 * 3][si] jge short loc_24AD1 dec _z_Palettes[6 * 3][si] loc_24AD1: mov al, byte ptr _boss_palette[8 * size rgb_t][si] cmp al, _z_Palettes[8 * 3][si] jge short loc_24ADF dec _z_Palettes[8 * 3][si] loc_24ADF: mov al, byte ptr _boss_palette[11 * size rgb_t][si] cmp al, _z_Palettes[11 * 3][si] jge short loc_24AED dec _z_Palettes[11 * 3][si] loc_24AED: inc si loc_24AEE: cmp si, size rgb_t jl short loc_24AB5 call _z_palette_set_all_show c, offset _z_Palettes, ds loc_24AFF: mov ax, _boss_phase_frame mov bx, 2 cwd idiv bx or dx, dx jz loc_2489C push 1 call _frame_delay pop cx jmp loc_2489C ; --------------------------------------------------------------------------- loc_24B19: mov al, byte_3A3BE cbw cmp ax, 2 jnz loc_24BA3 cmp _kikuri_initial_hp_rendered, 0 jnz short loc_24B3E call @hud_hp_render$qii c, _boss_hp, _boss_phase_frame mov _kikuri_initial_hp_rendered, al loc_24B3E: inc _boss_phase_frame inc _kikuri_invincibility_frame call sub_23D19 pushd 0 or (0 shl 16) ; (hitbox_w) or (hitbox_h) pushd 0 or (0 shl 16) ; (hitbox_left) or (hitbox_top) call sub_235FD push ax ; colliding_with_orb push seg main_32_TEXT ; hit_callback (segment) push offset @boss_nop$qv ; hit_callback (offset) push 7000 ; hit_score push 4 ; invincibility_flash_colors_count push ss ; invincibility_flash_colors (segment) lea ax, [bp+@@invincibility_flash_colors] push ax ; invincibility_flash_colors (offset) push ds ; hp (segment) push offset _boss_hp ; hp (offset) push ds ; is_invincible (segment) push offset _kikuri_invincible ; is_invincible (offset) push ds ; invincibility_frame (segment) push offset _kikuri_invincibility_frame ; invincibility_frame (offset) call @boss_hit_update_and_render$qmit1t1xnxucucinqv$vuciiii add sp, 22h cmp _boss_phase_frame, 0 jnz short loc_24B82 inc word_35D16 loc_24B82: cmp _kikuri_invincible, 0 jnz loc_24DFB cmp _boss_hp, 10 jle short loc_24B9B cmp word_35D16, 6 jl loc_24DFB loc_24B9B: mov byte_3A3BE, 3 jmp loc_24CE5 ; --------------------------------------------------------------------------- loc_24BA3: mov al, byte_3A3BE cbw cmp ax, 3 jnz short loc_24C07 inc _boss_phase_frame mov ax, _boss_phase_frame mov bx, 20 cwd idiv bx cmp dx, 13h jnz short loc_24BDA inc _z_Palettes[5 * 3].r dec _z_Palettes[5 * 3].b inc _stage_palette[5 * size rgb_t].r dec _stage_palette[5 * size rgb_t].b call _z_palette_set_all_show c, offset _stage_palette, ds loc_24BDA: cmp _boss_phase_frame, 100 jl loc_24DFB mov byte_3A3BE, 4 mov _boss_phase_frame, 0 mov word_35D14, 0 call _z_palette_set_all_show c, offset _stage_palette, ds call @boss_palette_snap$qv jmp loc_24DFB ; --------------------------------------------------------------------------- loc_24C07: mov al, byte_3A3BE cbw cmp ax, 4 jnz short loc_24C81 inc _boss_phase_frame inc _kikuri_invincibility_frame call sub_23E6E cmp word_35D14, 0 jnz short loc_24C27 call sub_23F16 jmp short loc_24C2A ; --------------------------------------------------------------------------- loc_24C27: call sub_23F9D loc_24C2A: mov word_35D14, ax pushd 0 or (0 shl 16) ; (hitbox_w) or (hitbox_h) pushd 0 or (0 shl 16) ; (hitbox_left) or (hitbox_top) call sub_235FD push ax ; colliding_with_orb push seg main_32_TEXT ; hit_callback (segment) push offset @boss_nop$qv ; hit_callback (offset) push 7000 ; hit_score push 4 ; invincibility_flash_colors_count push ss ; invincibility_flash_colors (segment) lea ax, [bp+@@invincibility_flash_colors] push ax ; invincibility_flash_colors (offset) push ds ; hp (segment) push offset _boss_hp ; hp (offset) push ds ; is_invincible (segment) push offset _kikuri_invincible ; is_invincible (offset) push ds ; invincibility_frame (segment) push offset _kikuri_invincibility_frame ; invincibility_frame (offset) call @boss_hit_update_and_render$qmit1t1xnxucucinqv$vuciiii add sp, 22h cmp _kikuri_invincible, 0 jnz loc_24DFB cmp word_35D14, 2 jnz loc_24DFB mov byte_3A3BE, 5 mov word_35D14, 0 mov _boss_phase_frame, 0 jmp loc_24DFB ; --------------------------------------------------------------------------- loc_24C81: mov al, byte_3A3BE cbw cmp ax, 5 jnz short loc_24CFA inc _boss_phase_frame inc _kikuri_invincibility_frame call sub_24041 call sub_240DE pushd 0 or (0 shl 16) pushd 0 or (0 shl 16) ; (hitbox_left) or (hitbox_top) call sub_235FD push ax ; colliding_with_orb push seg main_32_TEXT ; hit_callback (segment) push offset @boss_nop$qv ; hit_callback (offset) push 7000 ; hit_score push 4 ; invincibility_flash_colors_count push ss ; invincibility_flash_colors (segment) lea ax, [bp+@@invincibility_flash_colors] push ax ; invincibility_flash_colors (offset) push ds ; hp (segment) push offset _boss_hp ; hp (offset) push ds ; is_invincible (segment) push offset _kikuri_invincible ; is_invincible (offset) push ds ; invincibility_frame (segment) push offset _kikuri_invincibility_frame ; invincibility_frame (offset) call @boss_hit_update_and_render$qmit1t1xnxucucinqv$vuciiii add sp, 22h cmp _kikuri_invincible, 0 jnz loc_24DFB cmp _boss_hp, 6 jle short loc_24CE0 cmp _boss_phase_frame, 1600 jle loc_24DFB loc_24CE0: mov byte_3A3BE, 6 loc_24CE5: mov _boss_phase_frame, 0 mov _kikuri_invincibility_frame, 0 mov word_35D16, 0 jmp loc_24DFB ; --------------------------------------------------------------------------- loc_24CFA: mov al, byte_3A3BE cbw cmp ax, 6 jnz loc_24DFB inc _boss_phase_frame inc _kikuri_invincibility_frame call sub_2414C cmp word_35D14, 0 jnz short loc_24D1C call sub_241E7 jmp short loc_24D3E ; --------------------------------------------------------------------------- loc_24D1C: cmp word_35D14, 1 jnz short loc_24D28 call sub_24316 jmp short loc_24D3E ; --------------------------------------------------------------------------- loc_24D28: cmp word_35D14, 2 jnz short loc_24D34 call sub_244CE jmp short loc_24D3E ; --------------------------------------------------------------------------- loc_24D34: cmp word_35D14, 3 jnz short loc_24D41 call sub_24660 loc_24D3E: mov word_35D14, ax loc_24D41: cmp _boss_phase_frame, 0 jnz short loc_24D4C inc word_35D16 loc_24D4C: cmp word_35D16, 1Dh jle short loc_24D59 mov _boss_hp, 1 loc_24D59: pushd 0 or (0 shl 16) ; (hitbox_w) or (hitbox_h) pushd 0 or (0 shl 16) ; (hitbox_left) or (hitbox_top) call sub_235FD push ax ; colliding_with_orb push seg main_32_TEXT ; hit_callback (segment) push offset @boss_nop$qv ; hit_callback (offset) push 7000 ; hit_score push 4 ; invincibility_flash_colors_count push ss ; invincibility_flash_colors (segment) lea ax, [bp+@@invincibility_flash_colors] push ax ; invincibility_flash_colors (offset) push ds ; hp (segment) push offset _boss_hp ; hp (offset) push ds ; is_invincible (segment) push offset _kikuri_invincible ; is_invincible (offset) push ds ; invincibility_frame (segment) push offset _kikuri_invincibility_frame ; invincibility_frame (offset) call @boss_hit_update_and_render$qmit1t1xnxucucinqv$vuciiii add sp, 22h cmp _boss_hp, 0 jg short loc_24DFB call _mdrv2_bgm_fade_out_nonblock call @CPellets@unput_and_reset$qv c, offset _Pellets, ds xor si, si jmp short loc_24DE9 ; --------------------------------------------------------------------------- loc_24DA3: shootout_laser_unput_and_reset_broken si inc si loc_24DE9: cmp si, 4 jl short loc_24DA3 call @boss_defeat_animate$qv call @scene_init_and_load$quc stdcall, 6 pop cx loc_24DFB: pop di pop si leave retf sub_24722 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_24DFF proc far push bp mov bp, sp push seg main_21 push offset sub_17096 push 5 pushd 5 push size CBossEntity push ds push offset _kikuri_souls call @_vector_new_$qnvuiuluie ; _vector_new_(void *,uint,ulong,uint,...) push seg main_21 push offset sub_17096 push 5 pushd KIKURI_TEAR_COUNT push size CBossEntity push ds push offset _kikuri_tears call @_vector_new_$qnvuiuluie ; _vector_new_(void *,uint,ulong,uint,...) add sp, 20h pop bp retf sub_24DFF endp main_34__TEXT ends ; =========================================================================== ; Segment type: Pure code main_35_TEXT segment byte public 'CODE' use16 assume cs:main_35 ;org 3 assume es:nothing, ss:nothing, ds:_DATA, fs:nothing, gs:nothing elis_still_or_wave equ elis_attack equ elis_bat equ ELIS_GIRL_W = 128 ELIS_GIRL_H = 96 ELIS_BASE_LEFT = (PLAYFIELD_CENTER_X - (ELIS_GIRL_W / 2)) ELIS_BASE_TOP = (PLAYFIELD_TOP + ((PLAYFIELD_H / 21) * 5) - (ELIS_GIRL_H / 2)) extern @girl_bg_snap$qi:proc extern @girl_bg_put$qi:proc extern @elis_load$qv:proc extern @elis_free$qv:proc extern @wave_teleport$qii:proc extern @elis_select_for_rank$qmiiiii:proc main_35_TEXT ends main_35__TEXT segment byte public 'CODE' use16 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_253E7 proc far var_12 = word ptr -12h var_10 = qword ptr -10h var_8 = qword ptr -8 enter 12h, 0 cmp _boss_phase_frame, 50 jnz short loc_2546B call IRand mov bx, 2 cwd idiv bx mov word_3A6E5, dx push 1 call _graph_accesspage_func call @girl_bg_put$qi stdcall, 1 mov elis_still_or_wave.BE_move_lock_frame, 0 mov elis_still_or_wave.BE_bos_image, 1 call @CBossEntity@move_lock_and_put_8$qiiii stdcall, offset elis_still_or_wave, ds, large 0, large 0 or (3 shl 16) push 0 call _graph_accesspage_func mov elis_still_or_wave.BE_move_lock_frame, 0 mov elis_still_or_wave.BE_bos_image, 1 call @CBossEntity@move_lock_and_put_8$qiiii stdcall, offset elis_still_or_wave, ds, large 0, large 0 or (3 shl 16) add sp, 1Eh call @elis_select_for_rank$qmiiiii stdcall, offset word_3A6CC, ds, large 50 or (55 shl 16), large 60 or (65 shl 16) jmp loc_255B1 ; --------------------------------------------------------------------------- loc_2546B: cmp _boss_phase_frame, 60 jnz short loc_254A0 push 255 ; angle_end push 0 ; angle_start push 2 ; angle_step push 32 or (4 shl 16) ; (radius_y) or (col shl 16) push 32 ; radius_x mov ax, elis_still_or_wave.BE_cur_top add ax, 32 push ax ; center_y mov ax, elis_still_or_wave.BE_cur_left add ax, 64 push ax ; center_x call @shape_ellipse_arc_put$qiiiiiucucuc add sp, 10h mov radius_3A6E3, 32 jmp loc_255B4 ; --------------------------------------------------------------------------- loc_254A0: cmp _boss_phase_frame, 120 jge loc_25528 cmp _boss_phase_frame, 60 jle short loc_25528 mov ax, _boss_phase_frame mov bx, 2 cwd idiv bx or dx, dx jnz short loc_25528 push 255 ; angle_end push 0 ; angle_start push 2 ; angle_step push radius_3A6E3 ; radius_y push radius_3A6E3 ; radius_x mov ax, elis_still_or_wave.BE_cur_top add ax, 32 push ax ; center_y mov ax, elis_still_or_wave.BE_cur_left add ax, 64 push ax ; center_x call @shape_ellipse_arc_sloppy_unput$qiiiiucucuc add sp, 0Eh add radius_3A6E3, 8 push 255 ; angle_end push 0 ; angle_start cmp _boss_phase_frame, 100 jge short loc_254F7 mov al, 2 jmp short loc_25504 ; --------------------------------------------------------------------------- loc_254F7: cmp _boss_phase_frame, 110 jge short loc_25502 mov al, 8 jmp short loc_25504 ; --------------------------------------------------------------------------- loc_25502: mov al, 20h loc_25504: push ax ; angle_step push 4 ; col push radius_3A6E3 ; radius_y push radius_3A6E3 ; radius_x mov ax, elis_still_or_wave.BE_cur_top add ax, 32 push ax ; center_y mov ax, elis_still_or_wave.BE_cur_left add ax, 64 push ax ; center_x call @shape_ellipse_arc_put$qiiiiiucucuc add sp, 10h jmp loc_255B4 ; --------------------------------------------------------------------------- loc_25528: cmp _boss_phase_frame, 120 jnz short loc_25556 push 255 ; angle_end push 0 ; angle_start push 20h ; angle_step push radius_3A6E3 ; radius_y push radius_3A6E3 ; radius_x mov ax, elis_still_or_wave.BE_cur_top add ax, 32 push ax ; center_y mov ax, elis_still_or_wave.BE_cur_left add ax, 64 push ax ; center_x call @shape_ellipse_arc_sloppy_unput$qiiiiucucuc add sp, 0Eh jmp short loc_255B4 ; --------------------------------------------------------------------------- loc_25556: cmp _boss_phase_frame, 150 jnz short loc_255B4 push 1 call _graph_accesspage_func call @girl_bg_put$qi stdcall, 1 mov elis_still_or_wave.BE_move_lock_frame, 0 mov elis_still_or_wave.BE_bos_image, 0 call @CBossEntity@move_lock_and_put_8$qiiii stdcall, offset elis_still_or_wave, ds, large 0, large 0 or (3 shl 16) push 0 call _graph_accesspage_func add sp, 12h mov elis_still_or_wave.BE_move_lock_frame, 0 mov elis_still_or_wave.BE_bos_image, 0 call @CBossEntity@move_lock_and_put_8$qiiii stdcall, offset elis_still_or_wave, ds, large 0, large 0 or (3 shl 16) loc_255B1: add sp, 0Ch loc_255B4: cmp _boss_phase_frame, 70 jl loc_256A5 mov ax, _boss_phase_frame mov bx, 10 cwd idiv bx or dx, dx jnz loc_256A5 cmp word_3A6E5, 0 jnz short loc_255E4 mov ax, _boss_phase_frame add ax, -70 cwd idiv bx shl ax, 6 mov [bp+var_12], ax jmp short loc_255FB ; --------------------------------------------------------------------------- loc_255E4: mov ax, _boss_phase_frame add ax, -70 mov bx, 10 cwd idiv bx shl ax, 6 mov dx, 280h sub dx, ax mov [bp+var_12], dx loc_255FB: fild [bp+var_12] fstp [bp+var_8] fwait fld flt_35D8D fstp [bp+var_10] push 25 or (4 shl 16) ; (moveout_at_age) or (w shl 16) push 7 ; col fwait push word_3A6CC ; speed_multiplied_by_8 fld [bp+var_10] call ftol@ push ax ; target_y fld [bp+var_8] call ftol@ push ax ; target_left mov ax, elis_still_or_wave.BE_cur_top add ax, 28 push ax ; origin_y mov ax, elis_still_or_wave.BE_cur_left add ax, 60 push ax ; origin_left mov ax, _boss_phase_frame mov bx, 10 cwd idiv bx cwd idiv bx imul dx, size CShootoutLaser add dx, offset _shootout_lasers push ds ; this (segment) push dx ; this (offset) call @CShootoutLaser@spawn$qiiiiiiii push 6 call _mdrv2_se_play add sp, 16h cmp word_3A6E5, 0 jnz short loc_2567E fld [bp+var_8] fcomp flt_35D91 fstsw [bp+var_12] fwait mov ax, [bp+var_12] sahf jnb short loc_2569B loc_2567E: cmp word_3A6E5, 1 jnz short loc_256A5 fld [bp+var_8] fldz fcompp fstsw [bp+var_12] fwait mov ax, [bp+var_12] sahf jb short loc_256A5 loc_2569B: mov _boss_phase_frame, 0 xor ax, ax leave retf ; --------------------------------------------------------------------------- loc_256A5: mov ax, 1 leave retf sub_253E7 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_256AA proc far var_1E = qword ptr -1Eh var_16 = qword ptr -16h var_A = word ptr -0Ah @@angle = byte ptr -7 @@vector_y = word ptr -6 @@vector_x = word ptr -4 var_2 = word ptr -2 enter 0Ah, 0 push si cmp _boss_phase_frame, 50 jnz short loc_25726 push 1 call _graph_accesspage_func pop cx call @girl_bg_put$qi stdcall, 1 pop cx mov elis_still_or_wave.BE_move_lock_frame, 0 mov elis_still_or_wave.BE_bos_image, 1 call @CBossEntity@move_lock_and_put_8$qiiii c, offset elis_still_or_wave, ds, large 0, large 0 or (3 shl 16) push 0 call _graph_accesspage_func pop cx mov elis_still_or_wave.BE_move_lock_frame, 0 mov elis_still_or_wave.BE_bos_image, 1 call @CBossEntity@move_lock_and_put_8$qiiii c, offset elis_still_or_wave, ds, large 0, large 0 or (3 shl 16) call @elis_select_for_rank$qmiiiii c, offset word_3A6CC, ds, large 15 or (21 shl 16), large 25 or (29 shl 16) loc_25726: cmp _boss_phase_frame, 60 jle loc_257C3 mov ax, _boss_phase_frame mov bx, 3 cwd idiv bx or dx, dx jnz loc_257C3 call IRand mov bx, 5 cwd idiv bx mov si, dx call IRand cwd idiv word_3A6CC mov ax, word_3A6CC dec ax push dx cwd sub ax, dx sar ax, 1 pop dx sub dl, al add dl, 40h mov [bp+@@angle], dl push word ptr [bp+@@angle] push 7 push ss lea ax, [bp+@@vector_y] push ax push ss lea ax, [bp+@@vector_x] push ax call _vector2 add sp, 0Ch push 0 ; char mov ax, [bp+@@vector_y] mov [bp+var_A], ax fild [bp+var_A] sub sp, 8 fstp [bp+var_16] fwait mov ax, [bp+var_4] mov [bp+var_A], ax fild [bp+var_A] sub sp, 8 fstp [bp+var_1E] mov bx, si add bx, bx fwait push word ptr [bx+5D51h] ; int mov bx, si add bx, bx push word ptr [bx+5D47h] ; int push ds push offset _Missiles ; this call sub_21C0D add sp, 1Ah loc_257C3: cmp _boss_phase_frame, 60 jl loc_258AA cmp _boss_phase_frame, 160 jg loc_258AA mov ax, _boss_phase_frame mov bx, 4 cwd idiv bx or dx, dx jnz loc_258AA xor si, si jmp loc_2589B ; --------------------------------------------------------------------------- loc_257EA: cmp _boss_phase_frame, 60 jle short loc_2580F push (32 shl 16) or 48 mov bx, si add bx, bx push word ptr [bx+5D51h] mov bx, si add bx, bx push word ptr [bx+5D47h] call _egc_copy_rect_1_to_0_16 add sp, 8 loc_2580F: mov ax, _boss_phase_frame mov bx, 16 cwd idiv bx mov ax, si shl ax, 2 push dx cwd idiv bx pop ax cmp ax, dx jz short loc_2582D cmp _boss_phase_frame, 60 jnz short loc_25861 loc_2582D: call IRand mov bx, 192 cwd idiv bx add dx, elis_still_or_wave.BE_cur_left add dx, -32 mov bx, si add bx, bx mov [bx+5D47h], dx call IRand mov bx, 128 cwd idiv bx add dx, elis_still_or_wave.BE_cur_top add dx, -32 mov bx, si add bx, bx mov [bx+5D51h], dx loc_25861: cmp _boss_phase_frame, 160 jge short loc_2589A call IRand mov bx, 2 cwd idiv bx mov [bp+var_2], dx push 4 ; col mov ax, [bp+var_2] add ax, 4 push ax ; image push GRC_SLOT_BOSS_1 ; slot mov bx, si add bx, bx push word ptr [bx+5D51h] ; top mov bx, si add bx, bx push word ptr [bx+5D47h] ; left call _grc_put_8 add sp, 0Ah loc_2589A: inc si loc_2589B: cmp si, 5 jl loc_257EA push 7 call _mdrv2_se_play pop cx loc_258AA: cmp _boss_phase_frame, 170 jle short loc_258BC mov _boss_phase_frame, 0 xor ax, ax jmp short loc_258BF ; --------------------------------------------------------------------------- loc_258BC: mov ax, 2 loc_258BF: pop si leave retf sub_256AA endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_258C2 proc far var_6 = word ptr -6 @@top = word ptr -4 @@left = word ptr -2 enter 6, 0 push si cmp _boss_phase_frame, 10 jge short loc_258D4 mov word_3A6FC, 0 loc_258D4: cmp _boss_phase_frame, 50 jnz short loc_25947 push 1 call _graph_accesspage_func call @girl_bg_put$qi stdcall, 1 mov elis_still_or_wave.BE_move_lock_frame, 0 mov elis_still_or_wave.BE_bos_image, 1 call @CBossEntity@move_lock_and_put_8$qiiii stdcall, offset elis_still_or_wave, ds, large 0, large 0 or (3 shl 16) push 0 call _graph_accesspage_func mov elis_still_or_wave.BE_move_lock_frame, 0 mov elis_still_or_wave.BE_bos_image, 1 call @CBossEntity@move_lock_and_put_8$qiiii stdcall, offset elis_still_or_wave, ds, large 0, large 0 or (3 shl 16) mov angle_3A6FB, 0 call @elis_select_for_rank$qmiiiii stdcall, offset word_3A6CC, ds, large 12 or (29 shl 16), large 23 or (28 shl 16) add sp, 2Ah loc_25947: cmp _boss_phase_frame, 60 jl loc_25AED mov ax, _boss_phase_frame mov bx, 2 cwd idiv bx or dx, dx jnz loc_25AED cmp word_3A6FC, 0 jnz loc_25AED cmp _boss_phase_frame, 60 jnz short loc_25977 push 8 call _mdrv2_se_play pop cx loc_25977: mov al, angle_3A6FB mov ah, 0 mov [bp+var_6], ax fild [bp+var_6] fadd qword ptr dbl_35D95 call ftol@ push ax ; angle_end push word ptr angle_3A6FB ; angle_start push 1 ; angle_step push 128 or (7 shl 16) ; (radius_y) or (col shl 16) push 128 ; radius_x mov ax, elis_still_or_wave.BE_cur_top add ax, 48 push ax ; center_y mov ax, elis_still_or_wave.BE_cur_left add ax, 64 push ax ; center_x call @shape_ellipse_arc_put$qiiiiiucucuc mov al, angle_3A6FB add al, 42h push ax ; angle_end mov al, angle_3A6FB add al, 40h push ax ; angle_start push 1 ; angle_step push 128 or (7 shl 16) ; (radius_y) or (col shl 16) push 128 ; radius_x mov ax, elis_still_or_wave.BE_cur_top add ax, 48 push ax ; center_y mov ax, elis_still_or_wave.BE_cur_left add ax, 64 push ax ; center_x call @shape_ellipse_arc_put$qiiiiiucucuc mov al, angle_3A6FB add al, -7Eh push ax ; angle_end mov al, angle_3A6FB add al, 80h push ax ; angle_start push 1 ; angle_step push 128 or (7 shl 16) ; (radius_y) or (col shl 16) push 128 ; radius_x mov ax, elis_still_or_wave.BE_cur_top add ax, 48 push ax ; center_y mov ax, elis_still_or_wave.BE_cur_left add ax, 64 push ax ; center_x call @shape_ellipse_arc_put$qiiiiiucucuc add sp, 30h mov al, angle_3A6FB add al, -3Eh push ax ; angle_end mov al, angle_3A6FB add al, -40h push ax ; angle_start push 1 ; angle_step push 128 or (7 shl 16) ; (radius_y) or (col shl 16) push 128 ; radius_x mov ax, elis_still_or_wave.BE_cur_top add ax, 48 push ax ; center_y mov ax, elis_still_or_wave.BE_cur_left add ax, 64 push ax ; center_x call @shape_ellipse_arc_put$qiiiiiucucuc add sp, 10h mov al, angle_3A6FB add al, 2 mov angle_3A6FB, al cmp angle_3A6FB, 40h jb loc_25C4A push 255 ; angle_end push 0 ; angle_start push 1 ; angle_step push 128 or (128 shl 16) ; (radius_x) or (radius_y shl 16) mov ax, elis_still_or_wave.BE_cur_top add ax, 48 push ax ; center_y mov ax, elis_still_or_wave.BE_cur_left add ax, 64 push ax ; center_x call @shape_ellipse_arc_sloppy_unput$qiiiiucucuc push 255 ; angle_end push 0 ; angle_start push 1 ; angle_step push 128 or (7 shl 16) ; (radius_y) or (col shl 16) push 128 ; radius_x mov ax, elis_still_or_wave.BE_cur_top add ax, 48 push ax ; center_y mov ax, elis_still_or_wave.BE_cur_left add ax, 64 push ax ; center_x call @shape_ellipse_arc_put$qiiiiiucucuc mov word_3A6FC, 1 push 1 call _graph_accesspage_func call @girl_bg_put$qi stdcall, 1 mov elis_still_or_wave.BE_move_lock_frame, 0 mov elis_still_or_wave.BE_bos_image, 0 call @CBossEntity@move_lock_and_put_8$qiiii stdcall, offset elis_still_or_wave, ds, large 0, large 0 or (3 shl 16) push 0 call _graph_accesspage_func call @girl_bg_put$qi stdcall, 1 add sp, 32h mov elis_still_or_wave.BE_move_lock_frame, 0 mov elis_still_or_wave.BE_bos_image, 0 call @CBossEntity@move_lock_and_put_8$qiiii c, offset elis_still_or_wave, ds, large 0, large 0 or (3 shl 16) jmp loc_25C4A ; --------------------------------------------------------------------------- loc_25AED: cmp word_3A6FC, 0 jz loc_25B99 cmp word_3A6FC, 28h jge loc_25B99 inc word_3A6FC mov ax, word_3A6FC mov bx, 8 cwd idiv bx or dx, dx jnz short loc_25B3E push 255 ; angle_end push 0 ; angle_start push 1 ; angle_step push 128 or (128 shl 16) ; (radius_x) or (radius_y shl 16) mov ax, elis_still_or_wave.BE_cur_top add ax, 48 push ax ; center_y mov ax, elis_still_or_wave.BE_cur_left add ax, 64 push ax ; center_x call @shape_ellipse_arc_sloppy_unput$qiiiiucucuc add sp, 0Eh push 255 ; angle_end push 0 ; angle_start push 1 ; angle_step push 4 ; col jmp short loc_25B7A ; --------------------------------------------------------------------------- loc_25B3E: mov ax, word_3A6FC mov bx, 8 cwd idiv bx cmp dx, 4 jnz loc_25C4A push 255 ; angle_end push 0 ; angle_start push 1 ; angle_step push 128 or (128 shl 16) ; (radius_x) or (radius_y shl 16) mov ax, elis_still_or_wave.BE_cur_top add ax, 48 push ax ; center_y mov ax, elis_still_or_wave.BE_cur_left add ax, 64 push ax ; center_x call @shape_ellipse_arc_sloppy_unput$qiiiiucucuc add sp, 0Eh push 255 ; angle_end push 0 ; angle_start push 1 ; angle_step push 7 ; col loc_25B7A: push 128 or (128 shl 16) ; (radius_x) or (radius_y shl 16) mov ax, elis_still_or_wave.BE_cur_top add ax, 48 push ax ; center_y mov ax, elis_still_or_wave.BE_cur_left add ax, 64 push ax ; center_x call @shape_ellipse_arc_put$qiiiiiucucuc add sp, 10h jmp loc_25C4A ; --------------------------------------------------------------------------- loc_25B99: cmp word_3A6FC, 0 jz loc_25C4A push 255 ; angle_end push 0 ; angle_start push 1 ; angle_step push 128 or (128 shl 16) ; (radius_x) or (radius_y shl 16) mov ax, elis_still_or_wave.BE_cur_top add ax, 48 push ax ; center_y mov ax, elis_still_or_wave.BE_cur_left add ax, 64 push ax ; center_x call @shape_ellipse_arc_sloppy_unput$qiiiiucucuc add sp, 0Eh mov angle_3A6FB, 0 xor si, si jmp short loc_25C35 ; --------------------------------------------------------------------------- loc_25BCE: mov al, angle_3A6FB mov ah, 0 and ax, 255 add ax, ax mov bx, ax movsx eax, _CosTable8[bx] shl eax, 7 sar eax, 8 add ax, elis_still_or_wave.BE_cur_left add ax, 60 mov [bp+@@left], ax mov al, angle_3A6FB mov ah, 0 and ax, 255 add ax, ax mov bx, ax movsx eax, _SinTable8[bx] shl eax, 7 sar eax, 8 add ax, elis_still_or_wave.BE_cur_top add ax, 48 mov [bp+@@top], ax call @CPellets@add_group$qii14pellet_group_ti c, offset _Pellets, ds, [bp+@@left], ax, word_3A6CC, 4 mov al, angle_3A6FB add al, 8 mov angle_3A6FB, al inc si loc_25C35: cmp si, 20h ; ' ' jl short loc_25BCE mov _boss_phase_frame, 0 mov word_3A6FC, 0 xor ax, ax jmp short loc_25C4D ; --------------------------------------------------------------------------- loc_25C4A: mov ax, 3 loc_25C4D: pop si leave retf sub_258C2 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_25C50 proc near var_8 = word ptr -8 var_6 = word ptr -6 var_4 = word ptr -4 var_2 = word ptr -2 arg_0 = word ptr 4 arg_2 = byte ptr 6 arg_4 = byte ptr 8 enter 8, 0 mov al, [bp+arg_4] mov ah, 0 and ax, 255 add ax, ax mov bx, ax movsx eax, _CosTable8[bx] shl eax, 7 sar eax, 8 add ax, elis_still_or_wave.BE_cur_left add ax, 64 mov [bp+var_2], ax mov al, [bp+arg_4] mov ah, 0 and ax, 255 add ax, ax mov bx, ax movsx eax, _SinTable8[bx] shl eax, 7 sar eax, 8 add ax, elis_still_or_wave.BE_cur_top add ax, 48 mov [bp+var_4], ax mov al, [bp+arg_2] mov ah, 0 and ax, 255 add ax, ax mov bx, ax movsx eax, _CosTable8[bx] shl eax, 7 sar eax, 8 add ax, elis_still_or_wave.BE_cur_left add ax, 64 mov [bp+var_6], ax mov al, [bp+arg_2] mov ah, 0 and ax, 255 add ax, ax mov bx, ax movsx eax, _SinTable8[bx] shl eax, 7 sar eax, 8 add ax, elis_still_or_wave.BE_cur_top add ax, 48 mov [bp+var_8], ax push [bp+arg_0] push ax push [bp+var_6] push [bp+var_4] push [bp+var_2] call _graph_r_line add sp, 0Ah leave retn 6 sub_25C50 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_25CFD proc near @@bottom = word ptr -8 @@right = word ptr -6 @@top = word ptr -4 @@left = word ptr -2 arg_0 = byte ptr 4 arg_2 = byte ptr 6 enter 8, 0 mov al, [bp+arg_2] mov ah, 0 and ax, 255 add ax, ax mov bx, ax movsx eax, _CosTable8[bx] shl eax, 7 sar eax, 8 add ax, elis_still_or_wave.BE_cur_left add ax, 64 mov [bp+@@left], ax mov al, [bp+arg_2] mov ah, 0 and ax, 255 add ax, ax mov bx, ax movsx eax, _SinTable8[bx] shl eax, 7 sar eax, 8 add ax, elis_still_or_wave.BE_cur_top add ax, 48 mov [bp+@@top], ax mov al, [bp+arg_0] mov ah, 0 and ax, 255 add ax, ax mov bx, ax movsx eax, _CosTable8[bx] shl eax, 7 sar eax, 8 add ax, elis_still_or_wave.BE_cur_left add ax, 64 mov [bp+@@right], ax mov al, [bp+arg_0] mov ah, 0 and ax, 255 add ax, ax mov bx, ax movsx eax, _SinTable8[bx] shl eax, 7 sar eax, 8 add ax, elis_still_or_wave.BE_cur_top add ax, 48 mov [bp+@@bottom], ax call _graph_r_line_unput c, [bp+@@left], [bp+@@top], [bp+@@right], ax leave retn 4 sub_25CFD endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_25DA7 proc far arg_0 = word ptr 6 push bp mov bp, sp mov bx, [bp+arg_0] cmp bx, 3 ja short loc_25DDA add bx, bx jmp cs:off_25DDE[bx] loc_25DB9: call IRand mov bx, 4 cwd idiv bx mov ax, dx pop bp retf ; --------------------------------------------------------------------------- loc_25DC8: call sub_253E7 pop bp retf ; --------------------------------------------------------------------------- loc_25DCE: call sub_256AA pop bp retf ; --------------------------------------------------------------------------- loc_25DD4: call sub_258C2 pop bp retf ; --------------------------------------------------------------------------- loc_25DDA: xor ax, ax pop bp retf sub_25DA7 endp ; --------------------------------------------------------------------------- off_25DDE dw offset loc_25DB9 dw offset loc_25DC8 dw offset loc_25DCE dw offset loc_25DD4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_25DE6 proc near arg_0 = word ptr 4 push bp mov bp, sp push si mov si, [bp+arg_0] push 0C0h ; '?' push 16h push si call sub_25C50 push 0C0h ; '?' push 6Ah ; 'j' push si call sub_25C50 push 16h push 6Ah ; 'j' push si call sub_25C50 push 40h push 96h push si call sub_25C50 push 40h push 0EAh push si call sub_25C50 push 96h push 0EAh push si call sub_25C50 pop si pop bp retn 2 sub_25DE6 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_25E28 proc near push bp mov bp, sp cmp _boss_phase_frame, 5 jge short loc_25E3D mov word_3A6FF, 0 mov angle_3A6FE, 0 loc_25E3D: cmp _boss_phase_frame, 10 jl loc_260D8 cmp _boss_phase_frame, 10 jnz short loc_25EB1 push 1 call _graph_accesspage_func call @girl_bg_put$qi stdcall, 2 mov elis_attack.BE_move_lock_frame, 0 mov elis_attack.BE_bos_image, 0 call @CBossEntity@move_lock_and_put_8$qiiii stdcall, offset elis_attack, ds, large 0, large 0 or (3 shl 16) push 0 call _graph_accesspage_func call @girl_bg_put$qi stdcall, 2 mov elis_attack.BE_move_lock_frame, 0 mov elis_attack.BE_bos_image, 0 call @CBossEntity@move_lock_and_put_8$qiiii stdcall, offset elis_attack, ds, large 0, large 0 or (3 shl 16) add sp, 20h mov angle_3A6FE, 0 mov word_3A6FF, 0 loc_25EB1: cmp _boss_phase_frame, 10 jl loc_25FED mov ax, _boss_phase_frame mov bx, 2 cwd idiv bx or dx, dx jnz loc_25FED cmp word_3A6FF, 0 jnz loc_25FED cmp _boss_phase_frame, 10 jnz short loc_25EE1 push 8 call _mdrv2_se_play pop cx loc_25EE1: mov al, angle_3A6FE add al, 2 push ax ; angle_end push word ptr angle_3A6FE ; angle_start push 1 ; angle_step push 128 or (7 shl 16) ; (radius_y) or (col shl 16) push 128 ; radius_x mov ax, elis_still_or_wave.BE_cur_top add ax, 48 push ax ; center_y mov ax, elis_still_or_wave.BE_cur_left add ax, 64 push ax ; center_x call @shape_ellipse_arc_put$qiiiiiucucuc mov al, angle_3A6FE add al, 42h push ax ; angle_end mov al, angle_3A6FE add al, 40h push ax ; angle_start push 1 ; angle_step push 128 or (7 shl 16) ; (radius_y) or (col shl 16) push 128 ; radius_x mov ax, elis_still_or_wave.BE_cur_top add ax, 48 push ax ; center_y mov ax, elis_still_or_wave.BE_cur_left add ax, 64 push ax ; center_x call @shape_ellipse_arc_put$qiiiiiucucuc mov al, angle_3A6FE add al, -7Eh push ax ; angle_end mov al, angle_3A6FE add al, 80h push ax ; angle_start push 1 ; angle_step push 128 or (7 shl 16) ; (radius_y) or (col shl 16) push 128 ; radius_x mov ax, elis_still_or_wave.BE_cur_top add ax, 48 push ax ; center_y mov ax, elis_still_or_wave.BE_cur_left add ax, 64 push ax ; center_x call @shape_ellipse_arc_put$qiiiiiucucuc add sp, 30h mov al, angle_3A6FE add al, 194 push ax ; angle_end mov al, angle_3A6FE add al, -40h push ax ; angle_start push 1 ; angle_step push 128 or (7 shl 16) ; (radius_y) or (col shl 16) push 128 ; radius_x mov ax, elis_still_or_wave.BE_cur_top add ax, 48 push ax ; center_y mov ax, elis_still_or_wave.BE_cur_left add ax, 64 push ax ; center_x call @shape_ellipse_arc_put$qiiiiiucucuc add sp, 10h mov al, angle_3A6FE add al, 2 mov angle_3A6FE, al cmp angle_3A6FE, 40h jb loc_260D8 mov word_3A6FF, 1 push 255 ; angle_end push 0 ; angle_start push 1 ; angle_step push 128 or (128 shl 16) ; (radius_x) or (radius_y shl 16) mov ax, elis_still_or_wave.BE_cur_top add ax, 48 push ax ; center_y mov ax, elis_still_or_wave.BE_cur_left add ax, 64 push ax ; center_x call @shape_ellipse_arc_sloppy_unput$qiiiiucucuc push 255 ; angle_end push 0 ; angle_start push 1 ; angle_step push 128 or (7 shl 16) ; (radius_y) or (col shl 16) push 128 ; radius_x mov ax, elis_still_or_wave.BE_cur_top add ax, 48 push ax ; center_y mov ax, elis_still_or_wave.BE_cur_left add ax, 64 push ax ; center_x call @shape_ellipse_arc_put$qiiiiiucucuc add sp, 1Eh jmp loc_260D8 ; --------------------------------------------------------------------------- loc_25FED: cmp angle_3A6FE, 40h jb loc_260D8 inc word_3A6FF cmp word_3A6FF, 0Ah jnz short loc_26006 push 7 call sub_25DE6 loc_26006: cmp word_3A6FF, 14h jle short loc_26029 mov ax, word_3A6FF mov bx, 4 cwd idiv bx or dx, dx jnz short loc_26029 push bx call sub_25DE6 push 255 ; angle_end push 0 ; angle_start push 1 ; angle_step push 4 ; col jmp short loc_2604C ; --------------------------------------------------------------------------- loc_26029: cmp word_3A6FF, 14h jle short loc_26068 mov ax, word_3A6FF mov bx, 4 cwd idiv bx cmp dx, 2 jnz short loc_26068 push 7 call sub_25DE6 push 255 ; angle_end push 0 ; angle_start push 1 ; angle_step push 7 ; col loc_2604C: push 128 or (128 shl 16) ; (radius_x) or (radius_y shl 16) mov ax, elis_still_or_wave.BE_cur_top add ax, 48 push ax ; center_y mov ax, elis_still_or_wave.BE_cur_left add ax, 64 push ax ; center_x call @shape_ellipse_arc_put$qiiiiiucucuc add sp, 10h loc_26068: cmp word_3A6FF, 3Ch ; '<' jle short loc_260D8 push 0C0h ; '?' push 16h call sub_25CFD push 0C0h ; '?' push 6Ah ; 'j' call sub_25CFD push 16h push 6Ah ; 'j' call sub_25CFD push 40h push 96h call sub_25CFD push 40h push 0EAh call sub_25CFD push 96h push 0EAh call sub_25CFD push 255 ; angle_end push 0 ; angle_start push 1 ; angle_step push 128 or (128 shl 16) ; (radius_x) or (radius_y shl 16) mov ax, elis_still_or_wave.BE_cur_top add ax, 48 push ax ; center_y mov ax, elis_still_or_wave.BE_cur_left add ax, 64 push ax ; center_x call @shape_ellipse_arc_sloppy_unput$qiiiiucucuc add sp, 0Eh mov _boss_phase_frame, 0 mov angle_3A6FE, 0 mov word_3A6FF, 0 mov ax, 1 pop bp retn ; --------------------------------------------------------------------------- loc_260D8: xor ax, ax pop bp retn sub_25E28 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_260DC proc far push bp mov bp, sp push si mov ax, _boss_phase_frame mov bx, 8 cwd idiv bx or dx, dx jnz short loc_26136 push 1 call _graph_accesspage_func call @girl_bg_put$qi stdcall, 2 mov elis_attack.BE_move_lock_frame, 0 mov elis_attack.BE_bos_image, 1 call @CBossEntity@move_lock_and_put_8$qiiii stdcall, offset elis_attack, ds, large 0, large 0 or (3 shl 16) push 0 call _graph_accesspage_func call @girl_bg_put$qi stdcall, 2 add sp, 14h mov elis_attack.BE_move_lock_frame, 0 mov elis_attack.BE_bos_image, 1 jmp short loc_2617F ; --------------------------------------------------------------------------- loc_26136: mov ax, _boss_phase_frame mov bx, 8 cwd idiv bx cmp dx, 4 jnz short loc_26194 push 1 call _graph_accesspage_func mov elis_attack.BE_move_lock_frame, 0 mov elis_attack.BE_bos_image, 2 call @CBossEntity@move_lock_and_put_8$qiiii stdcall, offset elis_attack, ds, large 0, large 0 or (3 shl 16) push 0 call _graph_accesspage_func add sp, 10h mov elis_attack.BE_move_lock_frame, 0 mov elis_attack.BE_bos_image, 2 loc_2617F: call @CBossEntity@move_lock_and_put_8$qiiii c, offset elis_attack, ds, large 0, large 0 or (3 shl 16) loc_26194: cmp _boss_phase_frame, 10 jnz short loc_261ED call @elis_select_for_rank$qmiiiii c, offset word_3A6CC, ds, large 14 or (16 shl 16), large 18 or (20 shl 16) xor si, si jmp short loc_261E4 ; --------------------------------------------------------------------------- loc_261B6: pushd 0 or (0 shl 16) pushd PM_REGULAR or (0 shl 16) push (3 shl 4) mov ax, 256 cwd idiv word_3A6CC imul si push ax mov ax, elis_still_or_wave.BE_cur_top add ax, 44 push ax mov ax, elis_still_or_wave.BE_cur_left add ax, 60 push ax push ds push offset _Pellets call @CPellets@add_single$qiiuci15pellet_motion_tiii add sp, 14h inc si loc_261E4: cmp si, word_3A6CC jl short loc_261B6 jmp loc_2631C ; --------------------------------------------------------------------------- loc_261ED: cmp _boss_phase_frame, 16 jnz short loc_26231 xor si, si jmp short loc_26228 ; --------------------------------------------------------------------------- loc_261F8: pushd 0 or (0 shl 16) pushd PM_REGULAR or (0 shl 16) push (3 shl 4) + 6 mov ax, 256 cwd idiv word_3A6CC imul si add al, 2 push ax mov ax, elis_still_or_wave.BE_cur_top add ax, 44 push ax mov ax, elis_still_or_wave.BE_cur_left add ax, 60 push ax push ds push offset _Pellets call @CPellets@add_single$qiiuci15pellet_motion_tiii add sp, 14h inc si loc_26228: cmp si, word_3A6CC jl short loc_261F8 jmp loc_2631C ; --------------------------------------------------------------------------- loc_26231: cmp _boss_phase_frame, 24 jnz short loc_26275 xor si, si jmp short loc_2626C ; --------------------------------------------------------------------------- loc_2623C: pushd 0 or (0 shl 16) pushd PM_REGULAR or (0 shl 16) push (4 shl 4) mov ax, 256 cwd idiv word_3A6CC imul si add al, 4 push ax mov ax, elis_still_or_wave.BE_cur_top add ax, 44 push ax mov ax, elis_still_or_wave.BE_cur_left add ax, 60 push ax push ds push offset _Pellets call @CPellets@add_single$qiiuci15pellet_motion_tiii add sp, 14h inc si loc_2626C: cmp si, word_3A6CC jl short loc_2623C jmp loc_2631C ; --------------------------------------------------------------------------- loc_26275: cmp _boss_phase_frame, 32 jnz short loc_262B8 xor si, si jmp short loc_262B0 ; --------------------------------------------------------------------------- loc_26280: pushd 0 or (0 shl 16) pushd PM_REGULAR or (0 shl 16) push (4 shl 4) + 8 mov ax, 256 cwd idiv word_3A6CC imul si add al, 6 push ax mov ax, elis_still_or_wave.BE_cur_top add ax, 44 push ax mov ax, elis_still_or_wave.BE_cur_left add ax, 60 push ax push ds push offset _Pellets call @CPellets@add_single$qiiuci15pellet_motion_tiii add sp, 14h inc si loc_262B0: cmp si, word_3A6CC jl short loc_26280 jmp short loc_2631C ; --------------------------------------------------------------------------- loc_262B8: cmp _boss_phase_frame, 40 jnz short loc_262FB xor si, si jmp short loc_262F3 ; --------------------------------------------------------------------------- loc_262C3: pushd 0 or (0 shl 16) pushd PM_REGULAR or (0 shl 16) push (5 shl 4) mov ax, 256 cwd idiv word_3A6CC imul si add al, 8 push ax mov ax, elis_still_or_wave.BE_cur_top add ax, 44 push ax mov ax, elis_still_or_wave.BE_cur_left add ax, 60 push ax push ds push offset _Pellets call @CPellets@add_single$qiiuci15pellet_motion_tiii add sp, 14h inc si loc_262F3: cmp si, word_3A6CC jl short loc_262C3 jmp short loc_2631C ; --------------------------------------------------------------------------- loc_262FB: cmp _boss_phase_frame, 60 jle short loc_2631C mov _boss_phase_frame, 0 push 1 call _graph_accesspage_func call @girl_bg_put$qi stdcall, 2 add sp, 4 xor ax, ax jmp short loc_2631F ; --------------------------------------------------------------------------- loc_2631C: mov ax, 1 loc_2631F: pop si pop bp retf sub_260DC endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_26322 proc far @@angle = byte ptr -3 @@speed = word ptr -2 enter 4, 0 push si mov ax, _boss_phase_frame mov bx, 8 cwd idiv bx or dx, dx jnz short loc_2637D push 1 call _graph_accesspage_func call @girl_bg_put$qi stdcall, 2 mov elis_attack.BE_move_lock_frame, 0 mov elis_attack.BE_bos_image, 1 call @CBossEntity@move_lock_and_put_8$qiiii stdcall, offset elis_attack, ds, large 0, large 0 or (3 shl 16) push 0 call _graph_accesspage_func call @girl_bg_put$qi stdcall, 2 add sp, 14h mov elis_attack.BE_move_lock_frame, 0 mov elis_attack.BE_bos_image, 1 jmp short loc_263C6 ; --------------------------------------------------------------------------- loc_2637D: mov ax, _boss_phase_frame mov bx, 8 cwd idiv bx cmp dx, 4 jnz short loc_263DB push 1 call _graph_accesspage_func mov elis_attack.BE_move_lock_frame, 0 mov elis_attack.BE_bos_image, 2 call @CBossEntity@move_lock_and_put_8$qiiii stdcall, offset elis_attack, ds, large 0, large 0 or (3 shl 16) push 0 call _graph_accesspage_func add sp, 10h mov elis_attack.BE_move_lock_frame, 0 mov elis_attack.BE_bos_image, 2 loc_263C6: call @CBossEntity@move_lock_and_put_8$qiiii c, offset elis_attack, ds, large 0, large 0 or (3 shl 16) loc_263DB: cmp _boss_phase_frame, 100 jg loc_264AC mov ax, _boss_phase_frame mov bx, 10 cwd idiv bx or dx, dx jnz loc_264AC cmp elis_still_or_wave.BE_cur_left, 256 jge short loc_26407 mov ax, _boss_phase_frame cwd idiv bx push ax mov ax, 260h jmp short loc_26413 ; --------------------------------------------------------------------------- loc_26407: mov ax, _boss_phase_frame mov bx, 10 cwd idiv bx push ax xor ax, ax loc_26413: sub ax, elis_still_or_wave.BE_cur_left mov bx, 10 cwd idiv bx mov dx, ax pop ax imul dx add ax, elis_still_or_wave.BE_cur_left add ax, 48 push ax mov ax, _boss_phase_frame cwd idiv bx add ax, ax mov bx, ax pop ax mov [bx+5D5Fh], ax call IRand mov bx, RES_Y / 2 cwd idiv bx add dx, RES_Y / 2 sub dx, elis_still_or_wave.BE_cur_top mov bx, 10 mov ax, dx cwd idiv bx push ax mov ax, _boss_phase_frame cwd idiv bx mov dx, ax pop ax imul dx add ax, elis_still_or_wave.BE_cur_top add ax, 32 push ax mov ax, _boss_phase_frame cwd idiv bx add ax, ax mov bx, ax pop ax mov [bx+5D73h], ax xor si, si jmp short loc_2649C ; --------------------------------------------------------------------------- loc_2647B: push 3 or (4 shl 16) ; (image) or (col) push GRC_SLOT_BOSS_1 ; slot mov bx, si add bx, bx push word ptr [bx+5D75h] ; top mov bx, si add bx, bx push word ptr [bx+5D61h] ; left call _grc_put_8 add sp, 0Ah inc si loc_2649C: mov ax, _boss_phase_frame mov bx, 10 cwd idiv bx cmp ax, si jg short loc_2647B jmp loc_26617 ; --------------------------------------------------------------------------- loc_264AC: cmp _boss_phase_frame, 100 jle loc_26605 cmp _boss_phase_frame, 230 jg loc_26605 mov ax, _boss_phase_frame mov bx, 10 cwd idiv bx or dx, dx jnz loc_26605 cmp _boss_phase_frame, 200 jg loc_265C5 push 7 call _mdrv2_se_play push 4 or (4 shl 16) ; (image) or (col) push GRC_SLOT_BOSS_1 ; slot mov ax, _boss_phase_frame add ax, -100 mov bx, 10 cwd idiv bx add ax, ax mov bx, ax push word ptr [bx+5D73h] ; top mov ax, _boss_phase_frame add ax, -100 mov bx, 10 cwd idiv bx add ax, ax mov bx, ax push word ptr [bx+5D5Fh] ; left call _grc_put_8 add sp, 0Ch mov ax, _boss_phase_frame add ax, -100 mov bx, 10 cwd idiv bx mov si, ax jmp short loc_26548 ; --------------------------------------------------------------------------- loc_26527: push 3 or (4 shl 16) ; (image) or (col) push GRC_SLOT_BOSS_1 ; slot mov bx, si add bx, bx push word ptr [bx+5D75h] ; top mov bx, si add bx, bx push word ptr [bx+5D61h] ; left call _grc_put_8 add sp, 0Ah inc si loc_26548: cmp si, 0Ah jl short loc_26527 call @elis_select_for_rank$qmiiiii c, offset word_3A6CC, ds, large 5 or (7 shl 16), large 9 or (13 shl 16) xor si, si jmp short loc_265BF ; --------------------------------------------------------------------------- loc_26568: call IRand and al, 7Fh mov [bp+@@angle], al call IRand add ax, (1 shl 4) + 8 and ax, 3Fh mov [bp+@@speed], ax pushd 0 or (0 shl 16) pushd PM_REGULAR or (0 shl 16) push ax push word ptr [bp+@@angle] mov ax, _boss_phase_frame add ax, -100 mov bx, 10 cwd idiv bx add ax, ax mov bx, ax push word ptr [bx+5D73h] mov ax, _boss_phase_frame add ax, -100 mov bx, 10 cwd idiv bx add ax, ax mov bx, ax push word ptr [bx+5D5Fh] push ds push offset _Pellets call @CPellets@add_single$qiiuci15pellet_motion_tiii add sp, 14h inc si loc_265BF: cmp si, word_3A6CC jl short loc_26568 loc_265C5: cmp _boss_phase_frame, 130 jle short loc_26617 push (32 shl 16) or 48 mov ax, _boss_phase_frame add ax, -130 mov bx, 10 cwd idiv bx add ax, ax mov bx, ax push word ptr [bx+5D73h] mov ax, _boss_phase_frame add ax, -130 mov bx, 10 cwd idiv bx add ax, ax mov bx, ax push word ptr [bx+5D5Fh] call _egc_copy_rect_1_to_0_16 add sp, 8 jmp short loc_26617 ; --------------------------------------------------------------------------- loc_26605: cmp _boss_phase_frame, 250 jle short loc_26617 mov _boss_phase_frame, 0 xor ax, ax jmp short loc_2661A ; --------------------------------------------------------------------------- loc_26617: mov ax, 2 loc_2661A: pop si leave retf sub_26322 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_2661D proc far var_4 = byte ptr -4 @@angle = byte ptr -3 var_2 = word ptr -2 enter 4, 0 push si mov ax, _boss_phase_frame mov bx, 8 cwd idiv bx or dx, dx jnz short loc_26678 push 1 call _graph_accesspage_func call @girl_bg_put$qi stdcall, 2 mov elis_attack.BE_move_lock_frame, 0 mov elis_attack.BE_bos_image, 1 call @CBossEntity@move_lock_and_put_8$qiiii stdcall, offset elis_attack, ds, large 0, large 0 or (3 shl 16) push 0 call _graph_accesspage_func call @girl_bg_put$qi stdcall, 2 add sp, 14h mov elis_attack.BE_move_lock_frame, 0 mov elis_attack.BE_bos_image, 1 jmp short loc_266C1 ; --------------------------------------------------------------------------- loc_26678: mov ax, _boss_phase_frame mov bx, 8 cwd idiv bx cmp dx, 4 jnz short loc_266D6 push 1 call _graph_accesspage_func mov elis_attack.BE_move_lock_frame, 0 mov elis_attack.BE_bos_image, 2 call @CBossEntity@move_lock_and_put_8$qiiii stdcall, offset elis_attack, ds, large 0, large 0 or (3 shl 16) push 0 call _graph_accesspage_func add sp, 10h mov elis_attack.BE_move_lock_frame, 0 mov elis_attack.BE_bos_image, 2 loc_266C1: call @CBossEntity@move_lock_and_put_8$qiiii c, offset elis_attack, ds, large 0, large 0 or (3 shl 16) loc_266D6: cmp _boss_phase_frame, 30 jnz short loc_266F4 call @elis_select_for_rank$qmiiiii c, offset word_3A6CC, ds, large 6 or (3 shl 16), large 2 or (2 shl 16) loc_266F4: cmp _boss_phase_frame, 60 jle short loc_2672E mov ax, _boss_phase_frame cwd idiv word_3A6CC or dx, dx jnz short loc_2672E cmp _boss_phase_frame, 120 jge short loc_2672E call IRand mov bx, 5 cwd idiv bx mov si, dx call IRand mov bx, 15h cwd idiv bx add dl, 36h mov [bp+@@angle], dl jmp short loc_26791 ; --------------------------------------------------------------------------- loc_2672E: cmp _boss_phase_frame, 120 jl loc_267B8 cmp _boss_phase_frame, 200 jge short loc_267B8 call IRand mov bx, 5 cwd idiv bx mov si, dx call IRand mov bx, 15h cwd idiv bx add dl, 36h mov [bp+@@angle], dl call IRand test al, 1 jz short loc_2676D mov al, byte ptr _boss_phase_frame add al, -78h jmp short loc_26774 ; --------------------------------------------------------------------------- loc_2676D: mov al, byte ptr _boss_phase_frame add al, -78h neg al loc_26774: mov [bp+var_4], al mov al, [bp+@@angle] mov ah, 0 mov dl, [bp+var_4] mov dh, 0 push ax mov ax, dx cwd sub ax, dx sar ax, 1 mov dx, ax pop ax imul dx mov [bp+@@angle], al loc_26791: pushd 0 or (0 shl 16) pushd PM_REGULAR or (0 shl 16) push (6 shl 4) push word ptr [bp+@@angle] mov bx, si add bx, bx push word ptr [bx+5D93h] mov bx, si add bx, bx push word ptr [bx+5D89h] push ds push offset _Pellets call @CPellets@add_single$qiiuci15pellet_motion_tiii add sp, 14h loc_267B8: cmp _boss_phase_frame, 60 jl loc_2689F cmp _boss_phase_frame, 200 jg loc_2689F mov ax, _boss_phase_frame mov bx, 4 cwd idiv bx or dx, dx jnz loc_2689F xor si, si jmp loc_26890 ; --------------------------------------------------------------------------- loc_267DF: cmp _boss_phase_frame, 60 jle short loc_26804 push (32 shl 16) or 48 mov bx, si add bx, bx push word ptr [bx+5D93h] mov bx, si add bx, bx push word ptr [bx+5D89h] call _egc_copy_rect_1_to_0_16 add sp, 8 loc_26804: mov ax, _boss_phase_frame mov bx, 16 cwd idiv bx mov ax, si shl ax, 2 push dx cwd idiv bx pop ax cmp ax, dx jz short loc_26822 cmp _boss_phase_frame, 60 jnz short loc_26856 loc_26822: call IRand mov bx, 192 cwd idiv bx add dx, elis_still_or_wave.BE_cur_left add dx, -32 mov bx, si add bx, bx mov [bx+5D89h], dx call IRand mov bx, 128 cwd idiv bx add dx, elis_still_or_wave.BE_cur_top add dx, -32 mov bx, si add bx, bx mov [bx+5D93h], dx loc_26856: cmp _boss_phase_frame, 200 jge short loc_2688F call IRand mov bx, 2 cwd idiv bx mov [bp+var_2], dx push 4 ; col mov ax, [bp+var_2] add ax, 4 push ax ; image push GRC_SLOT_BOSS_1 ; slot mov bx, si add bx, bx push word ptr [bx+5D93h] ; top mov bx, si add bx, bx push word ptr [bx+5D89h] ; left call _grc_put_8 add sp, 0Ah loc_2688F: inc si loc_26890: cmp si, 5 jl loc_267DF push 7 call _mdrv2_se_play pop cx loc_2689F: cmp _boss_phase_frame, 220 jle short loc_268B1 mov _boss_phase_frame, 0 xor ax, ax jmp short loc_268B4 ; --------------------------------------------------------------------------- loc_268B1: mov ax, 3 loc_268B4: pop si leave retf sub_2661D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_268B7 proc far arg_0 = word ptr 6 push bp mov bp, sp push si mov si, [bp+arg_0] cmp si, 63h ; 'c' jnz short loc_268CB mov word_35D42, 0 jmp short loc_26933 ; --------------------------------------------------------------------------- loc_268CB: mov bx, si cmp bx, 3 ja short loc_26933 add bx, bx jmp cs:off_26938[bx] loc_268D9: call IRand mov bx, 4 cwd idiv bx mov ax, dx jmp short loc_26935 ; --------------------------------------------------------------------------- loc_268E8: cmp word_35D42, 0 jnz short loc_268FA call sub_25E28 mov word_35D42, ax mov ax, 1 jmp short loc_26935 ; --------------------------------------------------------------------------- loc_268FA: call sub_260DC jmp short loc_2692E ; --------------------------------------------------------------------------- loc_26900: cmp word_35D42, 0 jnz short loc_26912 call sub_25E28 mov word_35D42, ax mov ax, 2 jmp short loc_26935 ; --------------------------------------------------------------------------- loc_26912: call sub_26322 jmp short loc_2692E ; --------------------------------------------------------------------------- loc_26918: cmp word_35D42, 0 jnz short loc_2692A call sub_25E28 mov word_35D42, ax mov ax, 3 jmp short loc_26935 ; --------------------------------------------------------------------------- loc_2692A: call sub_2661D loc_2692E: mov word_35D42, ax jmp short loc_26935 ; --------------------------------------------------------------------------- loc_26933: xor ax, ax loc_26935: pop si pop bp retf sub_268B7 endp ; --------------------------------------------------------------------------- off_26938 dw offset loc_268D9 dw offset loc_268E8 dw offset loc_26900 dw offset loc_26918 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_26940 proc far var_6 = word ptr -6 var_4 = word ptr -4 var_2 = word ptr -2 enter 6, 0 push si cmp _boss_phase_frame, 20 jnz short loc_269A5 push 1 call _graph_accesspage_func call @girl_bg_put$qi stdcall, 2 mov elis_attack.BE_move_lock_frame, 0 mov elis_attack.BE_bos_image, 0 call @CBossEntity@move_lock_and_put_8$qiiii stdcall, offset elis_attack, ds, large 0, large 0 or (3 shl 16) push 0 call _graph_accesspage_func call @girl_bg_put$qi stdcall, 2 mov elis_attack.BE_move_lock_frame, 0 mov elis_attack.BE_bos_image, 0 call @CBossEntity@move_lock_and_put_8$qiiii stdcall, offset elis_attack, ds, large 0, large 0 or (3 shl 16) add sp, 20h loc_269A5: cmp _boss_phase_frame, 20 jl loc_26A94 cmp _boss_phase_frame, 100 jg loc_26A94 mov ax, _boss_phase_frame mov bx, 4 cwd idiv bx or dx, dx jnz loc_26A94 xor si, si jmp loc_26A85 ; --------------------------------------------------------------------------- loc_269CB: cmp _boss_phase_frame, 20 jle short loc_269F0 push (32 shl 16) or 48 mov bx, si add bx, bx push word ptr [bx+5DA7h] mov bx, si add bx, bx push word ptr [bx+5D9Dh] call _egc_copy_rect_1_to_0_16 add sp, 8 loc_269F0: mov ax, _boss_phase_frame mov bx, 16 cwd idiv bx mov ax, si shl ax, 2 push dx cwd idiv bx pop ax cmp ax, dx jz short loc_26A0E cmp _boss_phase_frame, 20 jnz short loc_26A42 loc_26A0E: call IRand mov bx, 192 cwd idiv bx add dx, elis_still_or_wave.BE_cur_left add dx, -32 mov bx, si add bx, bx mov [bx+5D9Dh], dx call IRand mov bx, 128 cwd idiv bx add dx, elis_still_or_wave.BE_cur_top add dx, -32 mov bx, si add bx, bx mov [bx+5DA7h], dx loc_26A42: cmp _boss_phase_frame, 100 jge short loc_26A84 call IRand mov bx, 2 cwd idiv bx mov [bp+var_2], dx call IRand mov bx, 16 cwd idiv bx push dx ; col mov ax, [bp+var_2] add ax, 4 push ax ; image push GRC_SLOT_BOSS_1 ; slot mov bx, si add bx, bx push word ptr [bx+5DA7h] ; top mov bx, si add bx, bx push word ptr [bx+5D9Dh] ; left call _grc_put_8 add sp, 0Ah loc_26A84: inc si loc_26A85: cmp si, 5 jl loc_269CB push 7 call _mdrv2_se_play pop cx loc_26A94: cmp _boss_phase_frame, 20 jl short loc_26ABF mov ax, _boss_phase_frame mov bx, 2 cwd idiv bx or dx, dx jnz short loc_26ABF mov ax, _boss_phase_frame mov bx, 4 cwd idiv bx add dx, dx mov ax, RES_Y sub ax, dx call _z_vsync_wait_and_scrollup stdcall, ax pop cx loc_26ABF: cmp _boss_phase_frame, 100 jle short loc_26B17 mov ax, elis_still_or_wave.BE_cur_top add ax, 32 mov [bp+var_4], ax mov ax, elis_still_or_wave.BE_cur_left add ax, 40 mov [bp+var_6], ax mov elis_bat.BE_cur_left, ax mov ax, [bp+var_4] mov elis_bat.BE_cur_top, ax mov elis_bat.BE_bos_image, 0 push 1 call _graph_accesspage_func call @girl_bg_put$qi stdcall, 2 push 0 call _graph_accesspage_func call @girl_bg_put$qi stdcall, 2 call _z_vsync_wait_and_scrollup stdcall, RES_Y add sp, 0Ah mov _boss_phase_frame, 0 mov ax, 1 jmp short loc_26B19 ; --------------------------------------------------------------------------- loc_26B17: xor ax, ax loc_26B19: pop si leave retf sub_26940 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_26B1C proc far var_8 = word ptr -8 var_6 = word ptr -6 var_4 = word ptr -4 var_2 = word ptr -2 enter 8, 0 push si push di cmp _boss_phase_frame, 20 jl loc_26C11 cmp _boss_phase_frame, 100 jg loc_26C11 mov ax, _boss_phase_frame mov bx, 4 cwd idiv bx or dx, dx jnz loc_26C11 xor si, si jmp loc_26C02 ; --------------------------------------------------------------------------- loc_26B48: cmp _boss_phase_frame, 20 jle short loc_26B6D push (32 shl 16) or 48 mov bx, si add bx, bx push word ptr [bx+5DBBh] mov bx, si add bx, bx push word ptr [bx+5DB1h] call _egc_copy_rect_1_to_0_16 add sp, 8 loc_26B6D: mov ax, _boss_phase_frame mov bx, 16 cwd idiv bx mov ax, si shl ax, 2 push dx cwd idiv bx pop ax cmp ax, dx jz short loc_26B8B cmp _boss_phase_frame, 20 jnz short loc_26BBF loc_26B8B: call IRand mov bx, 192 cwd idiv bx add dx, elis_bat.BE_cur_left add dx, -72 mov bx, si add bx, bx mov [bx+5DB1h], dx call IRand mov bx, 128 cwd idiv bx add dx, elis_bat.BE_cur_top add dx, -48 mov bx, si add bx, bx mov [bx+5DBBh], dx loc_26BBF: cmp _boss_phase_frame, 100 jge short loc_26C01 call IRand mov bx, 2 cwd idiv bx mov [bp+var_2], dx call IRand mov bx, 16 cwd idiv bx push dx ; col mov ax, [bp+var_2] add ax, 4 push ax ; image push GRC_SLOT_BOSS_1 ; slot mov bx, si add bx, bx push word ptr [bx+5DBBh] ; top mov bx, si add bx, bx push word ptr [bx+5DB1h] ; left call _grc_put_8 add sp, 0Ah loc_26C01: inc si loc_26C02: cmp si, 5 jl loc_26B48 push 7 call _mdrv2_se_play pop cx loc_26C11: cmp _boss_phase_frame, 20 jl short loc_26C3C mov ax, _boss_phase_frame mov bx, 2 cwd idiv bx or dx, dx jnz short loc_26C3C mov ax, _boss_phase_frame mov bx, 4 cwd idiv bx add dx, dx mov ax, RES_Y sub ax, dx call _z_vsync_wait_and_scrollup stdcall, ax pop cx loc_26C3C: cmp _boss_phase_frame, 100 jle loc_26D0B call _egc_copy_rect_1_to_0_16 c, [dword ptr elis_bat.BE_cur_left], (32 shl 16) or 48 mov ax, elis_bat.BE_cur_left add ax, -40 mov di, ax mov ax, elis_bat.BE_cur_top add ax, -32 mov [bp+var_4], ax or di, di jge short loc_26C71 xor di, di jmp short loc_26C7A ; --------------------------------------------------------------------------- loc_26C71: cmp di, 200h jle short loc_26C7A mov di, 200h loc_26C7A: cmp [bp+var_4], 40h jge short loc_26C85 mov [bp+var_4], 40h loc_26C85: mov ax, [bp+var_4] mov [bp+var_6], ax mov [bp+var_8], di mov ax, [bp+var_8] mov elis_still_or_wave.BE_cur_left, ax mov ax, [bp+var_6] mov elis_still_or_wave.BE_cur_top, ax call @girl_bg_snap$qi stdcall, 1 push 1 call _graph_accesspage_func call @girl_bg_put$qi stdcall, 2 mov elis_attack.BE_move_lock_frame, 0 mov elis_attack.BE_bos_image, 1 call @CBossEntity@move_lock_and_put_8$qiiii stdcall, offset elis_attack, ds, large 0, large 0 or (3 shl 16) push 0 call _graph_accesspage_func call @girl_bg_put$qi stdcall, 2 mov elis_attack.BE_move_lock_frame, 0 mov elis_attack.BE_bos_image, 1 call @CBossEntity@move_lock_and_put_8$qiiii stdcall, offset elis_attack, ds, large 0, large 0 or (3 shl 16) call _z_vsync_wait_and_scrollup stdcall, RES_Y add sp, 24h mov _boss_phase_frame, 0 xor ax, ax jmp short loc_26D0E ; --------------------------------------------------------------------------- loc_26D0B: mov ax, 1 loc_26D0E: pop di pop si leave retf sub_26B1C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_26D12 proc far var_6 = word ptr -6 var_4 = word ptr -4 var_2 = word ptr -2 arg_0 = dword ptr 6 arg_4 = dword ptr 0Ah enter 6, 0 cmp _boss_phase_frame, 3 jge short loc_26D30 les bx, [bp+arg_0] mov word ptr es:[bx], 0 les bx, [bp+arg_4] mov word ptr es:[bx], 0 jmp loc_26DFE ; --------------------------------------------------------------------------- loc_26D30: cmp _boss_phase_frame, 3 jnz loc_26DB8 loc_26D39: call IRand mov bx, 200h cwd idiv bx mov x_3A765, dx call IRand mov bx, 88h cwd idiv bx add dx, 96 mov y_3A767, dx mov ax, elis_bat.BE_cur_left sub ax, x_3A765 mov [bp+var_2], ax cwd xor ax, dx sub ax, dx cmp ax, 80h ; '?' jge short loc_26D82 mov ax, elis_bat.BE_cur_top sub ax, y_3A767 mov [bp+var_4], ax cwd xor ax, dx sub ax, dx cmp ax, 40h jl short loc_26D39 loc_26D82: call _vector2_between c, large [dword ptr elis_bat.BE_cur_left], x_3A765, y_3A767, large [bp+arg_0], large [bp+arg_4], 2 mov ax, x_3A765 sub ax, elis_bat.BE_cur_left mov [bp+var_6], ax cwd xor ax, dx sub ax, dx cwd sub ax, dx sar ax, 1 mov word_3A769, ax loc_26DB8: call IRand mov bx, 5 cwd idiv bx add dx, 0FFFEh mov bx, 0Ah mov ax, dx cwd idiv bx les bx, [bp+arg_4] add es:[bx], ax mov ax, _boss_phase_frame mov bx, 3 cwd idiv bx cmp ax, word_3A769 jl short loc_26DFE les bx, [bp+arg_0] mov word ptr es:[bx], 0 les bx, [bp+arg_4] mov word ptr es:[bx], 0 mov _boss_phase_frame, 0 mov ax, 1 leave retf ; --------------------------------------------------------------------------- loc_26DFE: xor ax, ax leave retf sub_26D12 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_26E02 proc far @@group = word ptr -2 enter 2, 0 mov ax, _boss_phase_frame mov bx, 16 cwd idiv bx or dx, dx jnz short locret_26E47 push PG_5_SPREAD_NARROW_AIMED or (PG_5_SPREAD_NARROW shl 16) ; (for_hard) or (for_lunatic) push PG_3_SPREAD_WIDE_AIMED or (PG_5_SPREAD_WIDE_AIMED shl 16) ; (for_easy) or (for_normal) push ss ; ret (segment) lea ax, [bp+@@group] push ax ; ret (offset) call @elis_select_for_rank$qmiiiii push (3 shl 4) + 8 push [bp+@@group] mov ax, elis_bat.BE_cur_top add ax, 12 push ax mov ax, elis_bat.BE_cur_left add ax, 14h push ax push ds push offset _Pellets call @CPellets@add_group$qii14pellet_group_ti add sp, 18h locret_26E47: leave retf sub_26E02 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_26E49 proc far push bp mov bp, sp mov ax, _boss_phase_frame mov bx, 4 cwd idiv bx or dx, dx jnz short loc_26E8A call IRand test al, 1 jz short loc_26E6A push PG_2_SPREAD_NARROW_AIMED or (((5 shl 4) + 8) shl 16) jmp short loc_26E70 ; --------------------------------------------------------------------------- loc_26E6A: push PG_2_SPREAD_WIDE_AIMED or (((5 shl 4) + 8) shl 16) loc_26E70: mov ax, elis_bat.BE_cur_top add ax, 12 push ax mov ax, elis_bat.BE_cur_left add ax, 20 push ax push ds push offset _Pellets call @CPellets@add_group$qii14pellet_group_ti add sp, 0Ch loc_26E8A: pop bp retf sub_26E49 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_26E8C proc far push bp mov bp, sp mov ax, _boss_phase_frame mov bx, 50 cwd idiv bx cmp dx, 10 jge short loc_26ECA mov ax, _boss_phase_frame mov bx, 4 cwd idiv bx or dx, dx jnz short loc_26ECA push PG_2_SPREAD_NARROW_AIMED or (((5 shl 4) + 5) shl 16) mov ax, elis_bat.BE_cur_top add ax, 12 push ax mov ax, elis_bat.BE_cur_left add ax, 20 push ax push ds push offset _Pellets call @CPellets@add_group$qii14pellet_group_ti add sp, 0Ch loc_26ECA: mov ax, _boss_phase_frame mov bx, 50 cwd idiv bx cmp dx, 25 jl short loc_26F10 mov ax, _boss_phase_frame cwd idiv bx cmp dx, 35 jge short loc_26F10 mov ax, _boss_phase_frame mov bx, 4 cwd idiv bx or dx, dx jnz short loc_26F10 push PG_3_SPREAD_NARROW_AIMED or (((5 shl 4) + 5) shl 16) mov ax, elis_bat.BE_cur_top add ax, 12 push ax mov ax, elis_bat.BE_cur_left add ax, 20 push ax push ds push offset _Pellets call @CPellets@add_group$qii14pellet_group_ti add sp, 0Ch loc_26F10: pop bp retf sub_26E8C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_26F12 proc far push bp mov bp, sp mov ax, _boss_phase_frame mov bx, 4 cwd idiv bx or dx, dx jnz short loc_26F4D pushd 0 or (0 shl 16) push PM_GRAVITY or (1 shl 16) push 2 call IRand push ax mov ax, elis_bat.BE_cur_top add ax, 12 push ax mov ax, elis_bat.BE_cur_left add ax, 20 push ax push ds push offset _Pellets call @CPellets@add_single$qiiuci15pellet_motion_tiii add sp, 14h loc_26F4D: pop bp retf sub_26F12 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_26F4F proc far @@angle = byte ptr -1 enter 2, 0 push si mov ax, _boss_phase_frame mov bx, 8 cwd idiv bx or dx, dx jnz short loc_26FAA push 1 call _graph_accesspage_func call @girl_bg_put$qi stdcall, 2 mov elis_attack.BE_move_lock_frame, 0 mov elis_attack.BE_bos_image, 1 call @CBossEntity@move_lock_and_put_8$qiiii stdcall, offset elis_attack, ds, large 0, large 0 or (3 shl 16) push 0 call _graph_accesspage_func call @girl_bg_put$qi stdcall, 2 add sp, 14h mov elis_attack.BE_move_lock_frame, 0 mov elis_attack.BE_bos_image, 1 jmp short loc_26FF3 ; --------------------------------------------------------------------------- loc_26FAA: mov ax, _boss_phase_frame mov bx, 8 cwd idiv bx cmp dx, 4 jnz short loc_27008 push 1 call _graph_accesspage_func mov elis_attack.BE_move_lock_frame, 0 mov elis_attack.BE_bos_image, 2 call @CBossEntity@move_lock_and_put_8$qiiii stdcall, offset elis_attack, ds, large 0, large 0 or (3 shl 16) push 0 call _graph_accesspage_func add sp, 10h mov elis_attack.BE_move_lock_frame, 0 mov elis_attack.BE_bos_image, 2 loc_26FF3: call @CBossEntity@move_lock_and_put_8$qiiii c, offset elis_attack, ds, large 0, large 0 or (3 shl 16) loc_27008: cmp _boss_phase_frame, 50 jnz short loc_27088 call @elis_select_for_rank$qmiiiii c, offset word_3A6CC, ds, large 2 or (3 shl 16), large 3 or (4 shl 16) xor si, si jmp short loc_27080 ; --------------------------------------------------------------------------- loc_2702A: pushd 0 or (0 shl 16) pushd PM_REGULAR or (0 shl 16) mov ax, si add ax, word_3A6CC shl ax, 4 push ax push 40h mov ax, elis_still_or_wave.BE_cur_top add ax, 40 push ax mov ax, elis_still_or_wave.BE_cur_left add ax, 56 push ax push ds push offset _Pellets call @CPellets@add_single$qiiuci15pellet_motion_tiii pushd 0 or (0 shl 16) pushd PM_REGULAR or (0 shl 16) mov ax, si add ax, word_3A6CC shl ax, 4 push ax push 40h mov ax, elis_still_or_wave.BE_cur_top add ax, 40 push ax mov ax, elis_still_or_wave.BE_cur_left add ax, 64 push ax push ds push offset _Pellets call @CPellets@add_single$qiiuci15pellet_motion_tiii add sp, 28h inc si loc_27080: cmp si, 4 jl short loc_2702A jmp loc_271EB ; --------------------------------------------------------------------------- loc_27088: cmp _boss_phase_frame, 60 jnz short loc_270F1 xor si, si jmp short loc_270E9 ; --------------------------------------------------------------------------- loc_27093: pushd 0 or (0 shl 16) pushd PM_REGULAR or (0 shl 16) mov ax, si add ax, word_3A6CC shl ax, 4 push ax push 50h mov ax, elis_still_or_wave.BE_cur_top add ax, 40 push ax mov ax, elis_still_or_wave.BE_cur_left add ax, 56 push ax push ds push offset _Pellets call @CPellets@add_single$qiiuci15pellet_motion_tiii pushd 0 or (0 shl 16) pushd PM_REGULAR or (0 shl 16) mov ax, si add ax, word_3A6CC shl ax, 4 push ax push 30h mov ax, elis_still_or_wave.BE_cur_top add ax, 40 push ax mov ax, elis_still_or_wave.BE_cur_left add ax, 64 push ax push ds push offset _Pellets call @CPellets@add_single$qiiuci15pellet_motion_tiii add sp, 28h inc si loc_270E9: cmp si, 4 jl short loc_27093 jmp loc_271D0 ; --------------------------------------------------------------------------- loc_270F1: cmp _boss_phase_frame, 70 jnz short loc_27159 xor si, si jmp short loc_27152 ; --------------------------------------------------------------------------- loc_270FC: pushd 0 or (0 shl 16) pushd PM_REGULAR or (0 shl 16) mov ax, si add ax, word_3A6CC shl ax, 4 push ax push 68h mov ax, elis_still_or_wave.BE_cur_top add ax, 40 push ax mov ax, elis_still_or_wave.BE_cur_left add ax, 56 push ax push ds push offset _Pellets call @CPellets@add_single$qiiuci15pellet_motion_tiii pushd 0 or (0 shl 16) pushd PM_REGULAR or (0 shl 16) mov ax, si add ax, word_3A6CC shl ax, 4 push ax push 18h mov ax, elis_still_or_wave.BE_cur_top add ax, 40 push ax mov ax, elis_still_or_wave.BE_cur_left add ax, 64 push ax push ds push offset _Pellets call @CPellets@add_single$qiiuci15pellet_motion_tiii add sp, 28h inc si loc_27152: cmp si, 4 jl short loc_270FC jmp short loc_271D0 ; --------------------------------------------------------------------------- loc_27159: cmp _boss_phase_frame, 80 jnz short loc_271DA mov [bp+@@angle], 0 xor si, si jmp short loc_271CB ; --------------------------------------------------------------------------- loc_27168: pushd 0 or (0 shl 16) pushd PM_REGULAR or (0 shl 16) mov ax, word_3A6CC add ax, 2 shl ax, 4 push ax mov al, 80h sub al, [bp+@@angle] push ax mov ax, elis_still_or_wave.BE_cur_top add ax, 40 push ax mov ax, elis_still_or_wave.BE_cur_left add ax, 56 push ax push ds push offset _Pellets call @CPellets@add_single$qiiuci15pellet_motion_tiii pushd 0 or (0 shl 16) pushd PM_REGULAR or (0 shl 16) mov ax, word_3A6CC add ax, 2 shl ax, 4 push ax push word ptr [bp+@@angle] mov ax, elis_still_or_wave.BE_cur_top add ax, 40 push ax mov ax, elis_still_or_wave.BE_cur_left add ax, 64 push ax push ds push offset _Pellets call @CPellets@add_single$qiiuci15pellet_motion_tiii add sp, 28h mov al, [bp+@@angle] add al, 6 mov [bp+@@angle], al inc si loc_271CB: cmp si, 0Ah jl short loc_27168 loc_271D0: push 7 call _mdrv2_se_play pop cx jmp short loc_271EB ; --------------------------------------------------------------------------- loc_271DA: cmp _boss_phase_frame, 120 jl short loc_271EB mov _boss_phase_frame, 0 xor ax, ax jmp short loc_271EE ; --------------------------------------------------------------------------- loc_271EB: mov ax, 1 loc_271EE: pop si leave retf sub_26F4F endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_271F1 proc far push bp mov bp, sp cmp _boss_phase_frame, 10 jge short loc_27201 mov word_3A76B, 0 loc_27201: mov ax, _boss_phase_frame mov bx, 8 cwd idiv bx or dx, dx jnz short loc_27257 push 1 call _graph_accesspage_func call @girl_bg_put$qi stdcall, 2 mov elis_attack.BE_move_lock_frame, 0 mov elis_attack.BE_bos_image, 1 call @CBossEntity@move_lock_and_put_8$qiiii stdcall, offset elis_attack, ds, large 0, large 0 or (3 shl 16) push 0 call _graph_accesspage_func call @girl_bg_put$qi stdcall, 2 add sp, 14h mov elis_attack.BE_move_lock_frame, 0 mov elis_attack.BE_bos_image, 1 jmp short loc_272A0 ; --------------------------------------------------------------------------- loc_27257: mov ax, _boss_phase_frame mov bx, 8 cwd idiv bx cmp dx, 4 jnz short loc_272B5 push 1 call _graph_accesspage_func mov elis_attack.BE_move_lock_frame, 0 mov elis_attack.BE_bos_image, 2 call @CBossEntity@move_lock_and_put_8$qiiii stdcall, offset elis_attack, ds, large 0, large 0 or (3 shl 16) push 0 call _graph_accesspage_func add sp, 10h mov elis_attack.BE_move_lock_frame, 0 mov elis_attack.BE_bos_image, 2 loc_272A0: call @CBossEntity@move_lock_and_put_8$qiiii c, offset elis_attack, ds, large 0, large 0 or (3 shl 16) loc_272B5: cmp _boss_phase_frame, 60 jl loc_275EF cmp _boss_phase_frame, 60 jnz short loc_272E1 call @elis_select_for_rank$qmiiiii c, offset word_3A6CC, ds, large 4 or (2 shl 16), large 2 or (2 shl 16) mov angle_3A76F, 0 loc_272E1: cmp _boss_phase_frame, 60 jl loc_27464 mov ax, _boss_phase_frame mov bx, 2 cwd idiv bx or dx, dx jnz loc_27464 cmp word_3A76B, 0 jnz loc_27464 cmp _boss_phase_frame, 60 jnz short loc_27317 push 8 call _mdrv2_se_play pop cx mov ax, _player_left mov word_3A76D, ax loc_27317: mov al, angle_3A76F add al, 2 push ax ; angle_end push word ptr angle_3A76F ; angle_start push 1 ; angle_step push 128 or (7 shl 16) ; (radius_y) or (col shl 16) push 384 or (128 shl 16) ; (center_y) or (radius_x shl 16) mov ax, word_3A76D add ax, 10h push ax ; center_x call @shape_ellipse_arc_put$qiiiiiucucuc mov al, angle_3A76F add al, 42h push ax ; angle_end mov al, angle_3A76F add al, 40h push ax ; angle_start push 1 ; angle_step push 128 or (7 shl 16) ; (radius_y) or (col shl 16) push 384 or (128 shl 16) ; (center_y) or (radius_x shl 16) mov ax, word_3A76D add ax, 10h push ax ; center_x call @shape_ellipse_arc_put$qiiiiiucucuc mov al, angle_3A76F add al, -7Eh push ax ; angle_end mov al, angle_3A76F add al, 80h push ax ; angle_start push 1 ; angle_step push 128 or (7 shl 16) ; (radius_y) or (col shl 16) push 384 or (128 shl 16) ; (center_y) or (radius_x shl 16) mov ax, word_3A76D add ax, 10h push ax ; center_x call @shape_ellipse_arc_put$qiiiiiucucuc add sp, 30h mov al, angle_3A76F add al, -3Eh push ax ; angle_end mov al, angle_3A76F add al, -40h push ax ; angle_start push 1 ; angle_step push 128 or (7 shl 16) ; (radius_y) or (col shl 16) push 384 or (128 shl 16) ; (center_y) or (radius_x shl 16) mov ax, word_3A76D add ax, 10h push ax ; center_x call @shape_ellipse_arc_put$qiiiiiucucuc add sp, 10h mov al, angle_3A76F add al, 2 mov angle_3A76F, al cmp angle_3A76F, 40h jb loc_275EF push 255 ; angle_end push 0 ; angle_start push 1 ; angle_step push 128 or (128 shl 16) ; (radius_x) or (radius_y shl 16) push 384 ; center_y mov ax, word_3A76D add ax, 16 push ax ; center_x call @shape_ellipse_arc_sloppy_unput$qiiiiucucuc push 255 ; angle_end push 0 ; angle_start push 1 ; angle_step push 128 or (7 shl 16) ; (radius_y) or (col shl 16) push 384 or (128 shl 16) ; (center_y) or (radius_x shl 16) mov ax, word_3A76D add ax, 10h push ax ; center_x call @shape_ellipse_arc_put$qiiiiiucucuc mov word_3A76B, 1 push 1 call _graph_accesspage_func call @girl_bg_put$qi stdcall, 1 mov elis_still_or_wave.BE_move_lock_frame, 0 mov elis_still_or_wave.BE_bos_image, 0 call @CBossEntity@move_lock_and_put_8$qiiii stdcall, offset elis_still_or_wave, ds, large 0, large 0 or (3 shl 16) push 0 call _graph_accesspage_func call @girl_bg_put$qi stdcall, 1 add sp, 32h mov elis_still_or_wave.BE_move_lock_frame, 0 mov elis_still_or_wave.BE_bos_image, 0 call @CBossEntity@move_lock_and_put_8$qiiii stdcall, offset elis_still_or_wave, ds, large 0, large 0 or (3 shl 16) loc_2745E: add sp, 0Ch jmp loc_275EF ; --------------------------------------------------------------------------- loc_27464: cmp word_3A76B, 0 jz loc_27572 cmp word_3A76B, 0C8h ; '?' jge loc_27572 inc word_3A76B mov ax, word_3A76B mov bx, 4 cwd idiv bx or dx, dx jnz short loc_274C6 push 255 ; angle_end push 0 ; angle_start push 1 ; angle_step push 128 or (128 shl 16) ; (radius_x) or (radius_y shl 16) push 384 ; center_y mov ax, word_3A76D add ax, 16 push ax ; center_x call @shape_ellipse_arc_sloppy_unput$qiiiiucucuc push 255 ; angle_end push 0 ; angle_start push 1 ; angle_step push 128 or (7 shl 16) ; (radius_y) or (col shl 16) push 384 or (128 shl 16) ; (center_y) or (radius_x shl 16) mov ax, word_3A76D add ax, 10h push ax ; center_x call @shape_ellipse_arc_put$qiiiiiucucuc add sp, 1Eh loc_274C6: cmp _player_invincible, 0 jnz short loc_274F2 mov ax, word_3A76D add ax, 104 cmp ax, _player_left jle short loc_274E5 mov ax, word_3A76D add ax, -128 cmp ax, _player_left jl short loc_274F2 loc_274E5: push 64h ; 'd' call _delay pop cx mov _done, 1 loc_274F2: cmp _done, 1 jnz short loc_274FF mov word_3A76B, 0C8h ; '?' loc_274FF: mov ax, _boss_phase_frame cwd idiv word_3A6CC or dx, dx jnz short loc_27539 push (4 shl 4) + 8 mov al, _rank cbw cmp ax, RANK_LUNATIC jnz short loc_2751B mov ax, PG_1_RANDOM_WIDE jmp short loc_2751E ; --------------------------------------------------------------------------- loc_2751B: mov ax, PG_1 loc_2751E: push ax push PLAYFIELD_TOP call IRand mov bx, 632 cwd idiv bx push dx push ds push offset _Pellets call @CPellets@add_group$qii14pellet_group_ti add sp, 0Ch loc_27539: cmp word_3A76B, 0B4h ; '?' jle loc_275EF mov ax, word_3A76B mov bx, 4 cwd idiv bx or dx, dx jnz loc_275EF push PG_1_AIMED or (((4 shl 4) + 8) shl 16) mov ax, elis_still_or_wave.BE_cur_top add ax, 44 push ax mov ax, elis_still_or_wave.BE_cur_left add ax, 60 push ax push ds push offset _Pellets call @CPellets@add_group$qii14pellet_group_ti jmp loc_2745E ; --------------------------------------------------------------------------- loc_27572: cmp word_3A76B, 0C8h ; '?' jl short loc_275EF cmp word_3A76B, 0C8h ; '?' jnz short loc_275A1 push 255 ; angle_end push 0 ; angle_start push 1 ; angle_step push 128 or (128 shl 16) ; (radius_x) or (radius_y shl 16) push 384 ; center_y mov ax, word_3A76D add ax, 16 push ax ; center_x call @shape_ellipse_arc_sloppy_unput$qiiiiucucuc add sp, 0Eh loc_275A1: inc word_3A76B mov ax, word_3A76B mov bx, 8 cwd idiv bx or dx, dx jnz short loc_275D2 push PG_1_AIMED or (((4 shl 4) + 8) shl 16) mov ax, elis_bat.BE_cur_top add ax, 44 push ax mov ax, elis_bat.BE_cur_left add ax, 60 push ax push ds push offset _Pellets call @CPellets@add_group$qii14pellet_group_ti add sp, 0Ch loc_275D2: cmp word_3A76B, 104h jle short loc_275EF mov _boss_phase_frame, 0 mov word_3A76B, 0 mov angle_3A76F, 0 xor ax, ax pop bp retf ; --------------------------------------------------------------------------- loc_275EF: mov ax, 1 pop bp retf sub_271F1 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_275F4 proc far @@top = word ptr -4 @@left = word ptr -2 enter 4, 0 push si mov ax, _boss_phase_frame mov bx, 8 cwd idiv bx or dx, dx jnz short loc_2764F push 1 call _graph_accesspage_func call @girl_bg_put$qi stdcall, 2 mov elis_attack.BE_move_lock_frame, 0 mov elis_attack.BE_bos_image, 1 call @CBossEntity@move_lock_and_put_8$qiiii stdcall, offset elis_attack, ds, large 0, large 0 or (3 shl 16) push 0 call _graph_accesspage_func call @girl_bg_put$qi stdcall, 2 add sp, 14h mov elis_attack.BE_move_lock_frame, 0 mov elis_attack.BE_bos_image, 1 jmp short loc_27698 ; --------------------------------------------------------------------------- loc_2764F: mov ax, _boss_phase_frame mov bx, 8 cwd idiv bx cmp dx, 4 jnz short loc_276AD push 1 call _graph_accesspage_func mov elis_attack.BE_move_lock_frame, 0 mov elis_attack.BE_bos_image, 2 call @CBossEntity@move_lock_and_put_8$qiiii stdcall, offset elis_attack, ds, large 0, large 0 or (3 shl 16) push 0 call _graph_accesspage_func add sp, 10h mov elis_attack.BE_move_lock_frame, 0 mov elis_attack.BE_bos_image, 2 loc_27698: call @CBossEntity@move_lock_and_put_8$qiiii c, offset elis_attack, ds, large 0, large 0 or (3 shl 16) loc_276AD: cmp _boss_phase_frame, 50 jl loc_27ABB cmp _boss_phase_frame, 50 jnz short loc_27729 push 1 call _graph_accesspage_func call @girl_bg_put$qi stdcall, 1 mov elis_still_or_wave.BE_move_lock_frame, 0 mov elis_still_or_wave.BE_bos_image, 1 call @CBossEntity@move_lock_and_put_8$qiiii stdcall, offset elis_still_or_wave, ds, large 0, large 0 or (3 shl 16) push 0 call _graph_accesspage_func mov elis_still_or_wave.BE_move_lock_frame, 0 mov elis_still_or_wave.BE_bos_image, 1 call @CBossEntity@move_lock_and_put_8$qiiii stdcall, offset elis_still_or_wave, ds, large 0, large 0 or (3 shl 16) mov angle_3A770, 0 call @elis_select_for_rank$qmiiiii stdcall, offset word_3A6CC, ds, large 40 or (30 shl 16), large 20 or (15 shl 16) add sp, 2Ah loc_27729: cmp _boss_phase_frame, 60 jl loc_278BE mov ax, _boss_phase_frame mov bx, 2 cwd idiv bx or dx, dx jnz loc_278BE cmp word_3A771, 0 jnz loc_278BE cmp _boss_phase_frame, 60 jnz short loc_27759 push 8 call _mdrv2_se_play pop cx loc_27759: mov al, angle_3A770 add al, 2 push ax ; angle_end push word ptr angle_3A770 ; angle_start push 1 ; angle_step push 128 or (7 shl 16) ; (radius_y) or (col shl 16) push 128 ; radius_x mov ax, elis_still_or_wave.BE_cur_top add ax, 48 push ax ; center_y mov ax, elis_still_or_wave.BE_cur_left add ax, 64 push ax ; center_x call @shape_ellipse_arc_put$qiiiiiucucuc mov al, angle_3A770 add al, 42h push ax ; angle_end mov al, angle_3A770 add al, 40h push ax ; angle_start push 1 ; angle_step push 128 or (7 shl 16) ; (radius_y) or (col shl 16) push 128 ; radius_x mov ax, elis_still_or_wave.BE_cur_top add ax, 48 push ax ; center_y mov ax, elis_still_or_wave.BE_cur_left add ax, 64 push ax ; center_x call @shape_ellipse_arc_put$qiiiiiucucuc mov al, angle_3A770 add al, -7Eh push ax ; angle_end mov al, angle_3A770 add al, 80h push ax ; angle_start push 1 ; angle_step push 128 or (7 shl 16) ; (radius_y) or (col shl 16) push 128 ; radius_x mov ax, elis_still_or_wave.BE_cur_top add ax, 48 push ax ; center_y mov ax, elis_still_or_wave.BE_cur_left add ax, 64 push ax ; center_x call @shape_ellipse_arc_put$qiiiiiucucuc add sp, 30h mov al, angle_3A770 add al, -3Eh push ax ; angle_end mov al, angle_3A770 add al, -40h push ax ; angle_start push 1 ; angle_step push 128 or (7 shl 16) ; (radius_y) or (col shl 16) push 128 ; radius_x mov ax, elis_still_or_wave.BE_cur_top add ax, 48 push ax ; center_y mov ax, elis_still_or_wave.BE_cur_left add ax, 64 push ax ; center_x call @shape_ellipse_arc_put$qiiiiiucucuc add sp, 10h mov al, angle_3A770 add al, 2 mov angle_3A770, al cmp angle_3A770, 40h jb loc_27A1C push 255 ; angle_end push 0 ; angle_start push 1 ; angle_step push 128 or (128 shl 16) ; (radius_x) or (radius_y shl 16) mov ax, elis_still_or_wave.BE_cur_top add ax, 48 push ax ; center_y mov ax, elis_still_or_wave.BE_cur_left add ax, 64 push ax ; center_x call @shape_ellipse_arc_sloppy_unput$qiiiiucucuc push 255 ; angle_end push 0 ; angle_start push 1 ; angle_step push 128 or (7 shl 16) ; (radius_y) or (col shl 16) push 128 ; radius_x mov ax, elis_still_or_wave.BE_cur_top add ax, 48 push ax ; center_y mov ax, elis_still_or_wave.BE_cur_left add ax, 64 push ax ; center_x call @shape_ellipse_arc_put$qiiiiiucucuc mov word_3A771, 1 push 1 call _graph_accesspage_func call @girl_bg_put$qi stdcall, 1 mov elis_still_or_wave.BE_move_lock_frame, 0 mov elis_still_or_wave.BE_bos_image, 0 call @CBossEntity@move_lock_and_put_8$qiiii stdcall, offset elis_still_or_wave, ds, large 0, large 0 or (3 shl 16) push 0 call _graph_accesspage_func call @girl_bg_put$qi stdcall, 1 add sp, 32h mov elis_still_or_wave.BE_move_lock_frame, 0 mov elis_still_or_wave.BE_bos_image, 0 call @CBossEntity@move_lock_and_put_8$qiiii c, offset elis_still_or_wave, ds, large 0, large 0 or (3 shl 16) jmp loc_27A1C ; --------------------------------------------------------------------------- loc_278BE: cmp word_3A771, 0 jz loc_2796A cmp word_3A771, 28h ; '(' jge loc_2796A inc word_3A771 mov ax, word_3A771 mov bx, 8 cwd idiv bx or dx, dx jnz short loc_2790F push 255 ; angle_end push 0 ; angle_start push 1 ; angle_step push 128 or (128 shl 16) ; (radius_x) or (radius_y shl 16) mov ax, elis_still_or_wave.BE_cur_top add ax, 48 push ax ; center_y mov ax, elis_still_or_wave.BE_cur_left add ax, 64 push ax ; center_x call @shape_ellipse_arc_sloppy_unput$qiiiiucucuc add sp, 0Eh push 255 ; angle_end push 0 ; angle_start push 1 ; angle_step push 4 ; col jmp short loc_2794B ; --------------------------------------------------------------------------- loc_2790F: mov ax, word_3A771 mov bx, 8 cwd idiv bx cmp dx, 4 jnz loc_27A1C push 255 ; angle_end push 0 ; angle_start push 1 ; angle_step push 128 or (128 shl 16) ; (radius_x) or (radius_y shl 16) mov ax, elis_still_or_wave.BE_cur_top add ax, 48 push ax ; center_y mov ax, elis_still_or_wave.BE_cur_left add ax, 64 push ax ; center_x call @shape_ellipse_arc_sloppy_unput$qiiiiucucuc add sp, 0Eh push 255 ; angle_end push 0 ; angle_start push 1 ; angle_step push 7 ; col loc_2794B: push 128 or (128 shl 16) ; (radius_x) or (radius_y shl 16) mov ax, elis_still_or_wave.BE_cur_top add ax, 48 push ax ; center_y mov ax, elis_still_or_wave.BE_cur_left add ax, 64 push ax ; center_x call @shape_ellipse_arc_put$qiiiiiucucuc add sp, 10h jmp loc_27A1C ; --------------------------------------------------------------------------- loc_2796A: cmp word_3A771, 0 jz loc_27A1C push 255 ; angle_end push 0 ; angle_start push 1 ; angle_step push 128 or (128 shl 16) ; (radius_x) or (radius_y shl 16) mov ax, elis_still_or_wave.BE_cur_top add ax, 48 push ax ; center_y mov ax, elis_still_or_wave.BE_cur_left add ax, 64 push ax ; center_x call @shape_ellipse_arc_sloppy_unput$qiiiiucucuc add sp, 0Eh mov angle_3A770, 0 xor si, si jmp short loc_27A06 ; --------------------------------------------------------------------------- loc_2799F: mov al, angle_3A770 mov ah, 0 and ax, 255 add ax, ax mov bx, ax movsx eax, _CosTable8[bx] shl eax, 7 sar eax, 8 add ax, elis_still_or_wave.BE_cur_left add ax, 64 mov [bp+@@left], ax mov al, angle_3A770 mov ah, 0 and ax, 255 add ax, ax mov bx, ax movsx eax, _SinTable8[bx] shl eax, 7 sar eax, 8 add ax, elis_still_or_wave.BE_cur_top add ax, 28 mov [bp+@@top], ax call @CPellets@add_group$qii14pellet_group_ti c, offset _Pellets, ds, [bp+@@left], ax, large PG_1 or ((4 shl 4) shl 16) mov al, angle_3A770 add al, 8 mov angle_3A770, al inc si loc_27A06: cmp si, 20h ; ' ' jl short loc_2799F mov _boss_phase_frame, 0 mov word_3A771, 0 xor ax, ax jmp loc_27ABE ; --------------------------------------------------------------------------- loc_27A1C: mov ax, _boss_phase_frame cwd idiv word_3A6CC or dx, dx jnz short loc_27A65 push PG_5_SPREAD_WIDE_AIMED or ((4 shl 4) shl 16) mov ax, elis_still_or_wave.BE_cur_top add ax, 40 push ax mov ax, elis_still_or_wave.BE_cur_left add ax, 22 push ax push ds push offset _Pellets call @CPellets@add_group$qii14pellet_group_ti push PG_5_SPREAD_WIDE_AIMED or ((4 shl 4) shl 16) mov ax, elis_still_or_wave.BE_cur_top add ax, 40 push ax mov ax, elis_still_or_wave.BE_cur_left add ax, 100 push ax push ds push offset _Pellets call @CPellets@add_group$qii14pellet_group_ti add sp, 18h loc_27A65: mov ax, word_3A6CC add ax, ax push ax mov ax, _boss_phase_frame cwd pop bx idiv bx or dx, dx jnz short loc_27ABB push 20 or (8 shl 16) ; (moveout_at_age) or (w shl 16) push ((6 * 8) + 2) or (7 shl 16) ; (speed_multiplied_by_8) or (col shl 16) push PLAYFIELD_BOTTOM ; target_y push _player_left ; target_left mov ax, elis_still_or_wave.BE_cur_top add ax, 28 push ax ; origin_y mov ax, elis_still_or_wave.BE_cur_left add ax, 60 push ax ; origin_left mov ax, _boss_phase_frame mov bx, 10 cwd idiv bx cwd idiv bx imul dx, size CShootoutLaser add dx, offset _shootout_lasers push ds ; this (segment) push dx ; this (offset) call @CShootoutLaser@spawn$qiiiiiiii push 6 call _mdrv2_se_play add sp, 16h loc_27ABB: mov ax, 1 loc_27ABE: pop si leave retf sub_275F4 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_27AC1 proc far arg_0 = word ptr 6 push bp mov bp, sp cmp [bp+arg_0], 1 jnz short loc_27AD9 mov word_35D44, 0 mov word_35D46, 0 jmp loc_27B5B ; --------------------------------------------------------------------------- loc_27AD9: mov bx, word_35D44 cmp bx, 3 ja short loc_27B5B add bx, bx jmp cs:off_27B5F[bx] loc_27AE9: call IRand mov bx, 3 cwd idiv bx inc dx mov word_35D44, dx jmp short loc_27B5B ; --------------------------------------------------------------------------- loc_27AFB: cmp word_35D46, 0 jnz short loc_27B04 jmp short loc_27B34 ; --------------------------------------------------------------------------- loc_27B04: call sub_26F4F mov word_35D46, ax cmp word_35D46, 0 jnz short loc_27B5B jmp short loc_27B4A ; --------------------------------------------------------------------------- loc_27B14: cmp word_35D46, 0 jnz short loc_27B1D jmp short loc_27B34 ; --------------------------------------------------------------------------- loc_27B1D: call sub_271F1 mov word_35D46, ax cmp word_35D46, 0 jnz short loc_27B5B jmp short loc_27B4A ; --------------------------------------------------------------------------- loc_27B2D: cmp word_35D46, 0 jnz short loc_27B3C loc_27B34: call sub_25E28 mov word_35D46, ax jmp short loc_27B5B ; --------------------------------------------------------------------------- loc_27B3C: call sub_275F4 mov word_35D46, ax cmp word_35D46, 0 jnz short loc_27B5B loc_27B4A: mov word_35D46, 0 mov word_35D44, 0 mov ax, 1 pop bp retf ; --------------------------------------------------------------------------- loc_27B5B: xor ax, ax pop bp retf sub_27AC1 endp ; --------------------------------------------------------------------------- off_27B5F dw offset loc_27AE9 dw offset loc_27AFB dw offset loc_27B14 dw offset loc_27B2D ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_27B67 proc far arg_0 = dword ptr 6 arg_4 = dword ptr 0Ah arg_8 = dword ptr 0Eh arg_C = word ptr 12h push bp mov bp, sp cmp [bp+arg_C], 1 jnz short loc_27B85 mov word_35D48, 0 mov word_35D4A, 0 push 1 call sub_27AC1 pop cx pop bp retf ; --------------------------------------------------------------------------- loc_27B85: les bx, [bp+arg_0] cmp word ptr es:[bx], 1 jnz short loc_27C06 cmp word_35D48, 0 jnz short loc_27BE7 pushd [bp+arg_8] pushd [bp+arg_4] call sub_26D12 add sp, 8 mov word_35D48, ax cmp word_35D4A, 0 jnz short loc_27BBE call IRand mov bx, 4 cwd idiv bx inc dx mov word_35D4A, dx loc_27BBE: mov bx, word_35D4A dec bx cmp bx, 3 ja short loc_27C2F add bx, bx jmp cs:off_27C31[bx] loc_27BCF: call sub_26E02 pop bp retf ; --------------------------------------------------------------------------- loc_27BD5: call sub_26E49 pop bp retf ; --------------------------------------------------------------------------- loc_27BDB: call sub_26F12 pop bp retf ; --------------------------------------------------------------------------- loc_27BE1: call sub_26E8C pop bp retf ; --------------------------------------------------------------------------- loc_27BE7: cmp word_35D48, 1 jnz short loc_27C2F call sub_26B1C les bx, [bp+arg_0] mov es:[bx], ax cmp word ptr es:[bx], 0 jnz short loc_27C2F mov word_35D4A, 0 jmp short loc_27C29 ; --------------------------------------------------------------------------- loc_27C06: cmp word_35D48, 0 jnz short loc_27C19 push 0 call sub_27AC1 pop cx mov word_35D48, ax pop bp retf ; --------------------------------------------------------------------------- loc_27C19: call sub_26940 les bx, [bp+arg_0] mov es:[bx], ax cmp word ptr es:[bx], 1 jnz short loc_27C2F loc_27C29: mov word_35D48, 0 loc_27C2F: pop bp retf sub_27B67 endp ; --------------------------------------------------------------------------- off_27C31 dw offset loc_27BCF dw offset loc_27BD5 dw offset loc_27BDB dw offset loc_27BE1 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_27C39 proc far var_2A = byte ptr -2Ah var_28 = byte ptr -28h var_26 = byte ptr -26h var_1E = byte ptr -1Eh var_1C = byte ptr -1Ch var_1A = word ptr -1Ah var_14 = word ptr -14h var_12 = word ptr -12h var_10 = word ptr -10h var_E = word ptr -0Eh var_C = word ptr -0Ch var_9 = byte ptr -9 @@invincibility_flash_colors = dword ptr -8 var_4 = word ptr -4 @@top = word ptr -2 enter 2Ah, 0 push si push di mov eax, dword ptr _elis_invincibility_flash_colors mov [bp+@@invincibility_flash_colors], eax call @CMissiles@unput_update_render$qv c, offset _Missiles, ds cmp _boss_phase, 0 jnz loc_281CF call @boss_palette_snap$qv call @girl_bg_snap$qi stdcall, 1 pop cx mov [bp+var_9], 0 mov _elis_invincibility_frame, 0 loc_27C72: inc _elis_invincibility_frame xor si, si jmp loc_27E35 ; --------------------------------------------------------------------------- loc_27C7B: mov al, [bp+var_9] mov ah, 0 mov dx, si shl dx, 7 add ax, dx and ax, 255 add ax, ax mov bx, ax movsx eax, _CosTable8[bx] imul eax, 96 sar eax, 8 add ax, 304 mov di, ax mov al, [bp+var_9] mov ah, 0 mov dx, si shl dx, 7 add ax, dx and ax, 255 add ax, ax mov bx, ax movsx eax, _SinTable8[bx] imul eax, 96 sar eax, 8 add ax, 72h ; 'r' mov [bp+@@top], ax push (32 shl 16) or 48 mov bx, si imul bx, 6 lea ax, [bp+var_2A] add bx, ax push word ptr ss:[bx] mov bx, si imul bx, 6 lea ax, [bp+var_1E] add bx, ax push word ptr ss:[bx] call _egc_copy_rect_1_to_0_16 call _grc_put_8 stdcall, di, [bp+@@top], GRC_SLOT_BOSS_1, large 3 or (8 shl 16) add sp, 12h cmp _elis_invincibility_frame, 1 jle loc_27DAF push (32 shl 16) or 48 mov bx, si imul bx, 6 lea ax, [bp+var_28] add bx, ax push word ptr ss:[bx] mov bx, si imul bx, 6 lea ax, [bp+var_1C] add bx, ax push word ptr ss:[bx] call _egc_copy_rect_1_to_0_16 push 2 or (8 shl 16) ; (image) or (col) push GRC_SLOT_BOSS_1 ; slot mov bx, si imul bx, 6 lea ax, [bp+var_2A] add bx, ax push word ptr ss:[bx] ; top mov bx, si imul bx, 6 lea ax, [bp+var_1E] add bx, ax push word ptr ss:[bx] ; left call _grc_put_8 add sp, 12h cmp _elis_invincibility_frame, 2 jle short loc_27DAF push (32 shl 16) or 48 mov bx, si imul bx, 6 lea ax, [bp+var_26] add bx, ax push word ptr ss:[bx] mov bx, si imul bx, 6 lea ax, [bp+var_1A] add bx, ax push word ptr ss:[bx] call _egc_copy_rect_1_to_0_16 push 1 or (8 shl 16) ; (image) or (col) push GRC_SLOT_BOSS_1 ; slot mov bx, si imul bx, 6 lea ax, [bp+var_28] add bx, ax push word ptr ss:[bx] ; top mov bx, si imul bx, 6 lea ax, [bp+var_1C] add bx, ax push word ptr ss:[bx] ; left call _grc_put_8 add sp, 12h loc_27DAF: mov bx, si imul bx, 6 lea ax, [bp+var_1C] add bx, ax mov ax, ss:[bx] mov bx, si imul bx, 6 lea dx, [bp+var_1A] add bx, dx mov ss:[bx], ax mov bx, si imul bx, 6 lea ax, [bp+var_28] add bx, ax mov ax, ss:[bx] mov bx, si imul bx, 6 lea dx, [bp+var_26] add bx, dx mov ss:[bx], ax mov bx, si imul bx, 6 lea ax, [bp+var_1E] add bx, ax mov ax, ss:[bx] mov bx, si imul bx, 6 lea dx, [bp+var_1C] add bx, dx mov ss:[bx], ax mov bx, si imul bx, 6 lea ax, [bp+var_2A] add bx, ax mov ax, ss:[bx] mov bx, si imul bx, 6 lea dx, [bp+var_28] add bx, dx mov ss:[bx], ax mov bx, si imul bx, 6 lea ax, [bp+var_1E] add bx, ax mov ss:[bx], di mov bx, si imul bx, 6 lea ax, [bp+var_2A] add bx, ax mov ax, [bp+@@top] mov ss:[bx], ax inc si loc_27E35: cmp si, 2 jl loc_27C7B cmp _elis_invincibility_frame, 120 jge short loc_27E63 mov al, [bp+var_9] add al, 18h mov [bp+var_9], al mov ax, 120 sub ax, _elis_invincibility_frame mov bx, 12 cwd idiv bx inc ax push ax call _frame_delay pop cx jmp loc_27C72 ; --------------------------------------------------------------------------- loc_27E63: mov _elis_invincibility_frame, 0 mov [bp+var_4], 0 loc_27E6E: inc _elis_invincibility_frame cmp [bp+var_4], 0 jnz loc_2802A mov ax, _elis_invincibility_frame mov bx, 4 cwd idiv bx or dx, dx jnz loc_2802A xor si, si jmp loc_28023 ; --------------------------------------------------------------------------- loc_27E8E: mov bx, si imul bx, 6 lea ax, [bp+var_1E] add bx, ax mov ax, ss:[bx] add ax, 64 mov dx, si shl dx, 7 sub ax, dx mov di, ax mov bx, si imul bx, 6 lea ax, [bp+var_2A] add bx, ax mov ax, ss:[bx] mov [bp+@@top], ax push (32 shl 16) or 48 mov bx, si imul bx, 6 lea ax, [bp+var_2A] add bx, ax push word ptr ss:[bx] mov bx, si imul bx, 6 lea ax, [bp+var_1E] add bx, ax push word ptr ss:[bx] call _egc_copy_rect_1_to_0_16 call _grc_put_8 stdcall, di, [bp+@@top], GRC_SLOT_BOSS_1, large 3 or (8 shl 16) push (32 shl 16) or 48 mov bx, si imul bx, 6 lea ax, [bp+var_28] add bx, ax push word ptr ss:[bx] mov bx, si imul bx, 6 lea ax, [bp+var_1C] add bx, ax push word ptr ss:[bx] call _egc_copy_rect_1_to_0_16 push 2 or (8 shl 16) ; (image) or (col) push GRC_SLOT_BOSS_1 ; slot mov bx, si imul bx, 6 lea ax, [bp+var_2A] add bx, ax push word ptr ss:[bx] ; top mov bx, si imul bx, 6 lea ax, [bp+var_1E] add bx, ax push word ptr ss:[bx] ; left call _grc_put_8 push (32 shl 16) or 48 mov bx, si imul bx, 6 lea ax, [bp+var_26] add bx, ax push word ptr ss:[bx] mov bx, si imul bx, 6 lea ax, [bp+var_1A] add bx, ax push word ptr ss:[bx] call _egc_copy_rect_1_to_0_16 add sp, 2Ch push 1 or (8 shl 16) ; (image) or (col) push GRC_SLOT_BOSS_1 ; slot mov bx, si imul bx, 6 lea ax, [bp+var_28] add bx, ax push word ptr ss:[bx] ; top mov bx, si imul bx, 6 lea ax, [bp+var_1C] add bx, ax push word ptr ss:[bx] ; left call _grc_put_8 add sp, 0Ah cmp [bp+var_1A], 280h jle short loc_27F9D cmp [bp+var_14], 0FFE0h jge short loc_27F9D mov [bp+var_4], 1 loc_27F9D: mov bx, si imul bx, 6 lea ax, [bp+var_1C] add bx, ax mov ax, ss:[bx] mov bx, si imul bx, 6 lea dx, [bp+var_1A] add bx, dx mov ss:[bx], ax mov bx, si imul bx, 6 lea ax, [bp+var_28] add bx, ax mov ax, ss:[bx] mov bx, si imul bx, 6 lea dx, [bp+var_26] add bx, dx mov ss:[bx], ax mov bx, si imul bx, 6 lea ax, [bp+var_1E] add bx, ax mov ax, ss:[bx] mov bx, si imul bx, 6 lea dx, [bp+var_1C] add bx, dx mov ss:[bx], ax mov bx, si imul bx, 6 lea ax, [bp+var_2A] add bx, ax mov ax, ss:[bx] mov bx, si imul bx, 6 lea dx, [bp+var_28] add bx, dx mov ss:[bx], ax mov bx, si imul bx, 6 lea ax, [bp+var_1E] add bx, ax mov ss:[bx], di mov bx, si imul bx, 6 lea ax, [bp+var_2A] add bx, ax mov ax, [bp+@@top] mov ss:[bx], ax inc si loc_28023: cmp si, 2 jl loc_27E8E loc_2802A: cmp _elis_invincibility_frame, 20 jle short loc_280AE cmp _elis_invincibility_frame, 100 jge short loc_280AE mov ax, _elis_invincibility_frame mov bx, 4 cwd idiv bx or dx, dx jnz loc_28158 cmp _elis_invincibility_frame, 24 jz short loc_28082 push elis_still_or_wave.BE_h mov ax, elis_still_or_wave.BE_vram_w shl ax, 3 add ax, 16 push ax mov ax, _elis_invincibility_frame add ax, -4 imul ax, 6 push ax mov ax, 104 sub ax, _elis_invincibility_frame push ax mov ax, _elis_invincibility_frame add ax, -2 push ax pushd [dword ptr elis_still_or_wave.BE_cur_left] call _egc_wave_unput add sp, 0Eh loc_28082: mov ax, _elis_invincibility_frame imul ax, 6 push ax mov ax, 100 ; phase sub ax, _elis_invincibility_frame push ax ; amp mov ax, _elis_invincibility_frame add ax, 2 push ax ; len push 0 ; image pushd [dword ptr elis_still_or_wave.BE_cur_left] ; left, top push ds ; this (segment) push offset elis_still_or_wave ; this (offset) call @CBossEntity@wave_put$xqiiiiii add sp, 10h jmp loc_28158 ; --------------------------------------------------------------------------- loc_280AE: cmp _elis_invincibility_frame, 100 jnz short loc_28103 push elis_still_or_wave.BE_h mov ax, elis_still_or_wave.BE_vram_w shl ax, 3 add ax, 16 push ax push _elis_invincibility_frame mov ax, 100 sub ax, _elis_invincibility_frame push ax mov ax, _elis_invincibility_frame add ax, 2 push ax loc_280D6: pushd [dword ptr elis_still_or_wave.BE_cur_left] call _egc_wave_unput mov elis_still_or_wave.BE_move_lock_frame, 0 mov elis_still_or_wave.BE_bos_image, 0 call @CBossEntity@move_lock_unput_and_put_8$qiiii stdcall, offset elis_still_or_wave, ds, large 0, large 0 or (3 shl 16) add sp, 1Ah jmp short loc_28158 ; --------------------------------------------------------------------------- loc_28103: cmp _elis_invincibility_frame, 128 jnz short loc_28130 call @girl_bg_put$qi stdcall, 1 call @CBossEntity@wave_put$xqiiiiii stdcall, offset elis_still_or_wave, ds, large [dword ptr elis_still_or_wave.BE_cur_left], large 0 or (3 shl 16), large 8 or (64 shl 16) add sp, 12h jmp short loc_28158 ; --------------------------------------------------------------------------- loc_28130: cmp _elis_invincibility_frame, 130 jnz short loc_28150 push elis_still_or_wave.BE_h mov ax, elis_still_or_wave.BE_vram_w shl ax, 3 add ax, 10h push ax push 400008h push 3 jmp short loc_280D6 ; --------------------------------------------------------------------------- loc_28150: cmp _elis_invincibility_frame, 140 jg short loc_28163 loc_28158: push 1 call _frame_delay pop cx jmp loc_27E6E ; --------------------------------------------------------------------------- loc_28163: mov _boss_phase_frame, 0 mov _elis_invincibility_frame, 0 mov _boss_phase, 1 mov elis_still_or_wave.BE_hitbox_orb_inactive, 0 push 1 call _graph_accesspage_func mov elis_still_or_wave.BE_move_lock_frame, 0 call @CBossEntity@move_lock_and_put_8$qiiii stdcall, offset elis_still_or_wave, ds, large 0, large 0 or (3 shl 16) push 0 call _graph_accesspage_func mov elis_still_or_wave.BE_move_lock_frame, 0 call @CBossEntity@move_lock_and_put_8$qiiii stdcall, offset elis_still_or_wave, ds, large 0, large 0 or (3 shl 16) add sp, 1Ch mov _elis_wave_teleport_done, 0 mov word_3A777, 1 mov _elis_initial_hp_rendered, 0 jmp loc_28655 ; --------------------------------------------------------------------------- loc_281CF: mov al, _boss_phase cbw cmp ax, 1 jnz loc_282DE cmp _elis_initial_hp_rendered, 0 jnz short loc_281F4 call @hud_hp_render$qii c, _boss_hp, _boss_phase_frame mov _elis_initial_hp_rendered, al loc_281F4: inc _boss_phase_frame inc _elis_invincibility_frame cmp word_3A777, 0 jz short loc_28211 push word_3A777 call sub_25DA7 pop cx mov word_3A777, ax jmp short loc_28258 ; --------------------------------------------------------------------------- loc_28211: cmp _elis_wave_teleport_done, 0 jnz short loc_2823F call IRand mov bx, (((PLAYFIELD_H / 42) * 29) - ELIS_GIRL_H) cwd idiv bx add dx, PLAYFIELD_TOP push dx ; target_top call IRand mov bx, (PLAYFIELD_RIGHT - ELIS_GIRL_W) cwd idiv bx push dx ; target_left call @wave_teleport$qii add sp, 4 mov _elis_wave_teleport_done, ax jmp short loc_28258 ; --------------------------------------------------------------------------- loc_2823F: cmp _elis_wave_teleport_done, 1 jnz short loc_28258 push word_3A777 call sub_25DA7 pop cx mov word_3A777, ax mov _elis_wave_teleport_done, 0 loc_28258: push (48 shl 16) or 64 ; (hitbox_w) or (hitbox_h) mov ax, elis_still_or_wave.BE_cur_top add ax, 32 push ax ; hitbox_top mov ax, elis_still_or_wave.BE_cur_left add ax, 32 push ax ; hitbox_left cmp word_35D4C, 0 jnz short loc_28279 push ds push offset elis_still_or_wave jmp short loc_2827D ; --------------------------------------------------------------------------- loc_28279: push ds push offset elis_bat loc_2827D: call @CBossEntity@hittest_orb$xqv add sp, 4 push ax ; colliding_with_orb push seg main_32_TEXT ; hit_callback (segment) push offset @boss_nop$qv ; hit_callback (offset) push 7000 ; hit_score push 4 ; invincibility_flash_colors_count push ss ; invincibility_flash_colors (segment) lea ax, [bp+@@invincibility_flash_colors] push ax ; invincibility_flash_colors (offset) push ds ; hp (segment) push offset _boss_hp ; hp (offset) push ds ; is_invincible (segment) push offset _elis_invincible ; is_invincible (offset) push ds ; invincibility_frame (segment) push offset _elis_invincibility_frame ; invincibility_frame (offset) call @boss_hit_update_and_render$qmit1t1xnxucucinqv$vuciiii add sp, 22h cmp _elis_invincible, 0 jnz loc_28655 cmp _boss_hp, 10 jg loc_28655 cmp _elis_wave_teleport_done, 1 jnz loc_28655 mov _boss_phase, 2 mov _boss_phase_frame, 0 mov _elis_invincibility_frame, 0 mov word_3A777, 0 jmp short loc_28322 ; --------------------------------------------------------------------------- loc_282DE: mov al, _boss_phase cbw cmp ax, 2 jnz short loc_2832B inc _boss_phase_frame call @wave_teleport$qii c, large ELIS_BASE_LEFT or (ELIS_BASE_TOP shl 16) mov _elis_wave_teleport_done, ax cmp _elis_wave_teleport_done, 1 jnz loc_28655 push 63h ; 'c' call sub_268B7 pop cx mov _boss_phase, 3 mov _boss_phase_frame, 0 mov _elis_invincibility_frame, 0 mov word_3A777, 1 loc_28322: mov _elis_wave_teleport_done, 0 jmp loc_28655 ; --------------------------------------------------------------------------- loc_2832B: mov al, _boss_phase cbw cmp ax, 3 jnz loc_28442 inc _boss_phase_frame inc _elis_invincibility_frame mov ax, elis_still_or_wave.BE_cur_top mov [bp+var_C], ax mov ax, elis_still_or_wave.BE_cur_left mov [bp+var_E], ax mov elis_attack.BE_cur_left, ax mov ax, [bp+var_C] mov elis_attack.BE_cur_top, ax cmp word_3A777, 0 jz short loc_28368 push word_3A777 call sub_268B7 pop cx mov word_3A777, ax jmp short loc_283AF ; --------------------------------------------------------------------------- loc_28368: cmp _elis_wave_teleport_done, 0 jnz short loc_28396 call IRand mov bx, (((PLAYFIELD_H / 42) * 29) - ELIS_GIRL_H) cwd idiv bx add dx, PLAYFIELD_TOP push dx ; target_top call IRand mov bx, (PLAYFIELD_RIGHT - ELIS_GIRL_W) cwd idiv bx push dx ; target_left call @wave_teleport$qii add sp, 4 mov _elis_wave_teleport_done, ax jmp short loc_283AF ; --------------------------------------------------------------------------- loc_28396: cmp _elis_wave_teleport_done, 1 jnz short loc_283AF push word_3A777 call sub_268B7 pop cx mov word_3A777, ax mov _elis_wave_teleport_done, 0 loc_283AF: push (48 shl 16) or 64 ; (hitbox_w) or (hitbox_h) mov ax, elis_still_or_wave.BE_cur_top add ax, 32 push ax ; hitbox_top mov ax, elis_still_or_wave.BE_cur_left add ax, 32 push ax ; hitbox_left cmp word_35D4C, 0 jnz short loc_283D0 push ds push offset elis_still_or_wave jmp short loc_283D4 ; --------------------------------------------------------------------------- loc_283D0: push ds push offset elis_bat loc_283D4: call @CBossEntity@hittest_orb$xqv add sp, 4 push ax ; colliding_with_orb push seg main_32_TEXT ; hit_callback (segment) push offset @boss_nop$qv ; hit_callback (offset) push 7000 ; hit_score push 4 ; invincibility_flash_colors_count push ss ; invincibility_flash_colors (segment) lea ax, [bp+@@invincibility_flash_colors] push ax ; invincibility_flash_colors (offset) push ds ; hp (segment) push offset _boss_hp ; hp (offset) push ds ; is_invincible (segment) push offset _elis_invincible ; is_invincible (offset) push ds ; invincibility_frame (segment) push offset _elis_invincibility_frame ; invincibility_frame (offset) call @boss_hit_update_and_render$qmit1t1xnxucucinqv$vuciiii add sp, 22h cmp _elis_invincible, 0 jnz loc_28655 cmp _boss_hp, 6 jg loc_28655 cmp _elis_wave_teleport_done, 1 jnz loc_28655 mov _boss_phase, 4 mov _boss_phase_frame, 0 mov _elis_invincibility_frame, 0 mov word_3A777, 0 mov _elis_wave_teleport_done, 0 mov word_35D4C, 0 jmp loc_28655 ; --------------------------------------------------------------------------- loc_28442: mov al, _boss_phase cbw cmp ax, 4 jnz short loc_284B3 inc _boss_phase_frame cmp _elis_wave_teleport_done, 0 jnz short loc_28468 call @wave_teleport$qii c, large ELIS_BASE_LEFT or (ELIS_BASE_TOP shl 16) mov _elis_wave_teleport_done, ax jmp short loc_2846F ; --------------------------------------------------------------------------- loc_28468: call sub_26940 mov word_3A777, ax loc_2846F: cmp word_3A777, 1 jnz loc_28655 mov _boss_phase, 5 mov _boss_phase_frame, 0 mov _elis_invincibility_frame, 0 mov word_3A777, 0 mov _elis_wave_teleport_done, 0 mov word_35D4C, 1 push 1 push ds push offset elis_bat_move_delta_y push ds push offset elis_bat_move_delta_x push ds push offset word_35D4C call sub_27B67 add sp, 0Eh jmp loc_28655 ; --------------------------------------------------------------------------- loc_284B3: mov al, _boss_phase cbw cmp ax, 5 jnz loc_28655 inc _boss_phase_frame inc _elis_invincibility_frame mov ax, elis_still_or_wave.BE_cur_top mov [bp+var_10], ax mov ax, elis_still_or_wave.BE_cur_left mov [bp+var_12], ax mov elis_attack.BE_cur_left, ax mov ax, [bp+var_10] mov elis_attack.BE_cur_top, ax cmp word_35D4C, 0 jz short loc_28539 push 2 ; lock_frames push elis_bat_move_delta_y ; delta_y push elis_bat_move_delta_x ; delta_x push 0 ; unused push ds ; this (segment) push offset elis_bat ; this (offset) call @CBossEntity@move_lock_unput_and_put_8$qiiii add sp, 0Ch mov ax, _boss_phase_frame mov bx, 9 cwd idiv bx or dx, dx jnz short loc_2850F mov elis_bat.BE_bos_image, 0 jmp short loc_28539 ; --------------------------------------------------------------------------- loc_2850F: mov ax, _boss_phase_frame mov bx, 9 cwd idiv bx cmp dx, 3 jnz short loc_28525 mov elis_bat.BE_bos_image, 1 jmp short loc_28539 ; --------------------------------------------------------------------------- loc_28525: mov ax, _boss_phase_frame mov bx, 9 cwd idiv bx cmp dx, 6 jnz short loc_28539 mov elis_bat.BE_bos_image, 2 loc_28539: push 0 push ds push offset elis_bat_move_delta_y push ds push offset elis_bat_move_delta_x push ds push offset word_35D4C call sub_27B67 add sp, 0Eh cmp word_35D4C, 0 jnz short loc_2855A mov ax, 48 jmp short loc_2855D ; --------------------------------------------------------------------------- loc_2855A: mov ax, 32 loc_2855D: push ax ; hitbox_h cmp word_35D4C, 0 jnz short loc_2856A mov ax, 64 jmp short loc_2856D ; --------------------------------------------------------------------------- loc_2856A: mov ax, 32 loc_2856D: push ax ; hitbox_w cmp word_35D4C, 0 jnz short loc_2857D mov ax, elis_still_or_wave.BE_cur_top add ax, 32 jmp short loc_28580 ; --------------------------------------------------------------------------- loc_2857D: mov ax, elis_bat.BE_cur_left ; ?! loc_28580: push ax ; hitbox_top cmp word_35D4C, 0 jnz short loc_28590 mov ax, elis_still_or_wave.BE_cur_left add ax, 32 jmp short loc_28593 ; --------------------------------------------------------------------------- loc_28590: mov ax, elis_bat.BE_cur_left loc_28593: push ax ; hitbox_left cmp word_35D4C, 0 jnz short loc_285A1 push ds push offset elis_still_or_wave jmp short loc_285A5 ; --------------------------------------------------------------------------- loc_285A1: push ds push offset elis_bat loc_285A5: call @CBossEntity@hittest_orb$xqv add sp, 4 push ax ; colliding_with_orb push seg main_32_TEXT ; hit_callback (segment) push offset @boss_nop$qv ; hit_callback (offset) push 7000 ; hit_score push 4 ; invincibility_flash_colors_count push ss ; invincibility_flash_colors (segment) lea ax, [bp+@@invincibility_flash_colors] push ax ; invincibility_flash_colors (offset) push ds ; hp (segment) push offset _boss_hp ; hp (offset) push ds ; is_invincible (segment) push offset _elis_invincible ; is_invincible (offset) push ds ; invincibility_frame (segment) push offset _elis_invincibility_frame ; invincibility_frame (offset) call @boss_hit_update_and_render$qmit1t1xnxucucinqv$vuciiii add sp, 22h cmp _boss_hp, 0 jg short loc_28655 call _mdrv2_bgm_fade_out_nonblock call @CPellets@unput_and_reset$qv stdcall, offset _Pellets, ds call @girl_bg_put$qi stdcall, 1 call @CMissiles@reset$qv stdcall, offset _Missiles, ds add sp, 0Ah xor si, si jmp short loc_28643 ; --------------------------------------------------------------------------- loc_285FD: shootout_laser_unput_and_reset_broken si inc si loc_28643: cmp si, SHOOTOUT_LASER_COUNT jl short loc_285FD call @boss_defeat_animate$qv push 5 loc_2864F: call @scene_init_and_load$quc loc_28654: pop cx loc_28655: pop di pop si leave retf sub_27C39 endp elis_still_or_wave equ <> elis_attack equ <> elis_bat equ <> 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@add_group$qii14pellet_group_ti:proc extern @CPellets@add_single$qiiuci15pellet_motion_tiii:proc extern @CPellets@unput_update_render$qv:proc extern @CPellets@unput_and_reset$qv:proc extern @CPellets@decay$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 _ptn_slot_stg_has_reduced_sprites db 0 unk_34AA5 db 0Fh db 0Fh db 0Fh db 0Dh db 0Dh db 0Fh db 0Dh db 0Dh db 0Fh db 0Dh db 0Dh db 0Fh db 0Dh db 0Dh db 0Fh db 0Dh db 0Dh db 0Fh db 0Dh db 0Dh db 0Fh db 0Fh db 0Fh db 0Fh db 0Dh db 0Dh db 0Fh db 0Dh db 0Dh db 0Fh db 0Dh db 0Dh db 0Fh db 0Dh db 0Dh db 0Fh db 0Dh db 0Dh db 0Fh db 0Dh db 0Dh db 0Fh db 0Dh word_34AD0 dw 0F0Dh word_34AD2 dw 606h word_34AD4 dw 0Fh 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 _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 aKuzi1_grc db 'kuzi1.grc',0 aKuzi2_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ƒ‚[ƒhII',0Ah,0 ; char aGfgogbgogvbGhb[] aGfgogbgogvbGhb db 'ƒfƒoƒbƒOƒ‚[ƒhII',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‚‚Ž‚‡‚’‚‚”‚•‚Œ‚‚”‚‰‚‚ŽII',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 db 0 include th01/hiscore/alphabet_syms[data].asm include th01/hiscore/regist_name[data].asm include th01/hiscore/scorelod[data].asm include th01/hiscore/regist[data].asm include th01/main/boss/entity_a[data].asm include th01/formats/pf[data].asm include th01/sprites/shape8x8.asp public _BOMB_COLLECT_1, _BOMB_COLLECT_2, _BOMB_COLLECT_CAP _BOMB_COLLECT_1 db 'Bomb',0 _BOMB_COLLECT_2 db 'Extend!!',0 _BOMB_COLLECT_CAP db '‚PäÝ',0 evendata public _fwnum_force_rerender _fwnum_force_rerender db 0 include th01/hardware/grppfnfx_ptrs[data].asm public _score_prev _score_prev dd 0 include th01/hardware/grppfnfx[data].asm public _STAGE_TIMES _STAGE_TIMES label word dw 1000, 1000, 1000, 1000, 2000 ; Shrine ; Makai dw 1200, 1200, 1200, 1200, 3000 ; (06 - 10) dw 1400, 1400, 1400, 1400, 4000 ; (11 - 15) dw 1600, 1600, 1600, 600, 6000 ; (16 - 20) ; Jigoku dw 1200, 1200, 1200, 1200, 2000 ; (06 - 10) dw 1400, 1400, 1400, 1400, 4000 ; (11 - 15) dw 1600, 1800, 1800, 1600, 8000 ; (16 - 20) M_REGULAR = 0 X_LEFT = 1 public _player_invincible_against_orb _player_invincible_against_orb db 0 include th01/formats/ptn_main[data].asm public _player_dash_cycle, _player_mode_frame public _player_mode, _player_dash_direction public _player_bomb_state, _player_bombing, _player_combo_enabled _player_dash_cycle db 0 _player_mode_frame db 0 _player_mode db M_REGULAR _player_dash_direction db X_LEFT _player_bomb_state db 0 _player_bombing db 0 _player_combo_enabled db 0 public _ORB_FORCE_REPEL_CONSTANT _ORB_FORCE_REPEL_CONSTANT dq -10.0 evendata public _yuugenmagan_invincibility_flash_colors, _yuugenmagan_invincible _yuugenmagan_invincibility_flash_colors db 1, 11 _yuugenmagan_invincible dw 0 aBoss2_bos db 'boss2.bos',0 aBoss3_m_ptn db 'boss3_m.ptn',0 aBoss2_grp_0 db 'boss2.grp',0 flt_35B76 dd 2.0 public _mima_meteor_active _mima_meteor_active db 1 public _mima_spreadin_interval, _mima_spreadin_speed _mima_spreadin_interval db 4 _mima_spreadin_speed db 8 db 8Fh db 0FFh db 0FFh db 0E0h db 0CFh ; Ï db 0FFh db 0FFh db 0E0h db 6Fh ; o db 0FFh db 0FFh db 0F1h db 3Fh ; ? db 0FFh db 0FFh db 0F3h db 1Fh db 0FFh db 0FFh db 0F6h db 0Fh db 0FFh db 0FFh db 0FCh db 7 db 0FFh db 0FFh db 0F8h db 7 db 0FFh db 0FFh db 0F0h db 0 db 2 db 40h db 0E1h db 8 db 6 db 62h ; b db 0E0h db 0 db 47h ; G db 0E2h db 20h db 4 db 0F6h db 6Fh ; o db 0 db 6 db 0F7h db 0EFh db 20h db 6 db 0FFh db 0FFh db 60h db 7 db 0FFh db 0FFh db 0E0h db 7 db 0FFh db 0FFh db 0E0h public _mima_invincibility_flash_colors _mima_invincibility_flash_colors db 3, 9 public _boss3_1_bos, _boss3_2_bos, _boss3_grp_0, _boss3_m_ptn_0 _boss3_1_bos db 'boss3_1.bos',0 _boss3_2_bos db 'boss3_2.bos',0 _boss3_grp_0 db 'boss3.grp',0 _boss3_m_ptn_0 db 'boss3_m.ptn',0 evendata public _card_flip_cycle _card_flip_cycle db 0 evendata 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 _default_grp_fn, _default_bgm_fn, _scene_fn_, _CARD_ANIM _default_grp_fn db 'ST .GRP', 0, 0, 0, 0, 0, 0, 0, 0 _default_bgm_fn db 'ST .MDT', 0, 0, 0, 0, 0, 0, 0, 0 _CARD_ANIM label byte db PTN_CARD_0HP, PTN_CARD_0HP_HALF, PTN_CARD_0HP_EDGE, PTN_CARD_REMOVED_HALF, PTN_CARD_REMOVED db PTN_CARD_1HP, PTN_CARD_1HP_HALF, PTN_CARD_1HP_EDGE, PTN_CARD_0HP_HALF, PTN_CARD_0HP db PTN_CARD_2HP, PTN_CARD_2HP_HALF, PTN_CARD_2HP_EDGE, PTN_CARD_1HP_HALF, PTN_CARD_1HP db PTN_CARD_3HP, PTN_CARD_3HP_HALF, PTN_CARD_3HP_EDGE, PTN_CARD_2HP_HALF, PTN_CARD_2HP db PTN_CARD_3HP, PTN_CARD_3HP_HALF, PTN_CARD_3HP_EDGE, PTN_CARD_3HP_HALF, PTN_CARD_3HP _scene_fn_ db 'stage .dat', 0, 0, 0, 0, 0 public _stageobjs_init_anim_card_frames _stageobjs_init_anim_card_frames dw 50 dup (0) flt_35C9A dd 1.5 flt_35C9E dd 16.0 flt_35CA2 dd 64.0 flt_35CA6 dd 128.0 flt_35CAA dd 192.0 flt_35CAE dd 256.0 flt_35CB2 dd 32.0 flt_35CB6 dd 48.0 flt_35CBA dd 80.0 flt_35CBE dd 96.0 flt_35CC2 dd 112.0 flt_35CC6 dd 144.0 flt_35CCA dd 160.0 flt_35CCE dd 176.0 flt_35CD2 dd 208.0 flt_35CD6 dd 224.0 flt_35CDA dd 240.0 byte_35CDE db 0 public _singyoku_invincibility_flash_colors, _singyoku_invincible _singyoku_invincibility_flash_colors db 13 word_35CE0 dw 0 word_35CE2 dw 0 _singyoku_invincible dw 0 public _singyoku_initial_hp_rendered _singyoku_initial_hp_rendered dw 0 aBoss1_bos db 'boss1.bos',0 aBoss1_2_bos db 'boss1_2.bos',0 aBoss1_3_bos db 'boss1_3.bos',0 aBoss1_grp_0 db 'boss1.grp',0 word_35D14 dw 0 word_35D16 dw 0 public _kikuri_invincibility_flash_colors _kikuri_invincibility_flash_colors db 6, 11, 8, 2 aTamasii_bos db 'tamasii.bos',0 aTamasii2_bos db 'tamasii2.bos',0 aTamayen_ptn db 'tamayen.ptn',0 db 0 word_35D42 dw 0 word_35D44 dw 0 word_35D46 dw 0 word_35D48 dw 0 word_35D4A dw 0 word_35D4C dw 0 public _elis_invincibility_flash_colors _elis_invincibility_flash_colors db 3, 6, 8, 2 public _boss5_bos, _boss5_2_bos, _boss5_3_bos, _boss5_gr_grc, _boss3_m_ptn_1 _boss5_bos db 'boss5.bos',0 _boss5_2_bos db 'boss5_2.bos',0 _boss5_3_bos db 'boss5_3.bos',0 _boss5_gr_grc db 'boss5_gr.grc',0 _boss3_m_ptn_1 db 'boss3_m.ptn',0 flt_35D8D dd 400.0 flt_35D91 dd 640.0 ; Hack. Let's better use bytes for accuracy here. dbl_35D95 db 09ah, 099h, 099h, 099h, 099h, 099h, 0a9h, 03fh db 0 extern _game_cleared:byte extern _unused_boss_stage_flag:word extern _pellet_interlace:byte 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 db 1 db 20h dd sub_17041 db 1 db 20h dd sub_21819 db 1 db 20h dd sub_24DFF _INIT_ ends .data? 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 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 _input_prev db 16 dup (?) db 21 dup(?) byte_38721 db ? byte_38722 db ? byte_38723 db ? db 24 dup(?) palette_3873C palette_t byte_3876C db ? public _square_left, _square_top _square_left dw ? db 52 dup(?) _square_top dw ? db 52 dup(?) angle_387D9 db ? 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(?) include th01/formats/bos[bss].asm public _boss_entities _boss_entities CBossEntity 5 dup() _boss_entities_unused CBossEntity 5 dup() boss_entity_0 equ <_boss_entities[0 * size CBossEntity]> boss_entity_1 equ <_boss_entities[1 * size CBossEntity]> boss_entity_2 equ <_boss_entities[2 * size CBossEntity]> boss_entity_3 equ <_boss_entities[3 * size CBossEntity]> boss_entity_4 equ <_boss_entities[4 * size CBossEntity]> boss equ boss_entity_0 include th01/main/boss/anim.inc public _boss_anims _boss_anims CBossAnim 2 dup() boss_anim_0 equ <_boss_anims[0 * size CBossAnim]> boss_anim_1 equ <_boss_anims[1 * size CBossAnim]> include th01/formats/pf[bss].asm include th01/formats/grc[bss].asm public _stage_palette _stage_palette palette_t db 340 dup(?) item_t struc ITEM_left dw ? ITEM_top dw ? ITEM_unknown_zero dw ? ITEM_velocity_y dw ? ITEM_flag db ? ITEM_splash_radius label byte ITEM_collect_time label byte db ? item_t ends ITEM_BOMB_COUNT = 4 ITEM_POINT_COUNT = 10 public _items_bomb, _items_point _items_bomb item_t ITEM_BOMB_COUNT dup() _items_point item_t ITEM_POINT_COUNT dup() include th01/main/hud/hud[bss].asm public _stage_timer, _frames_since_harryup, _harryup_cycle _stage_timer dw ? _frames_since_harryup dw ? _harryup_cycle db ? evendata public _player_submode, _player_ptn_id_prev _player_submode db ? _player_ptn_id_prev db ? public _boss_post_defeat_palette _boss_post_defeat_palette palette_t word_39DE4 dw ? x_39DE6 dw ? x_39DE8 dw ? x_39DEA dw ? x_39DEC dw ? x_39DEE dw ? y_39DF0 dw ? y_39DF2 dw ? y_39DF4 dw ? y_39DF6 dw ? y_39DF8 dw ? word_39DFA dw ? point_39DFC Point y_39E00 dw ? x_39E02 dw ? public _yuugenmagan_invincibility_frame _yuugenmagan_invincibility_frame dw ? x_39E06 dw ? word_39E08 dw ? word_39E0A dw ? y_39E0C dw ? word_39E0E dw ? word_39E10 dw ? word_39E12 dw ? byte_39E14 db ? public _yuugenmagan_initial_hp_rendered _yuugenmagan_initial_hp_rendered db ? angle_39E16 db ? angle_39E17 db ? speed_39E18 dw ? word_39E1A dw ? db ? ; word_39E1D dw ? db ? x_39E20 dw ? word_39E22 dw ? db ? ; byte_39E25 db ? byte_39E26 db ? word_39E27 dw ? word_39E29 dw ? word_39E2B dw ? word_39E2D dw ? word_39E2F dw ? word_39E31 dw ? word_39E33 dw ? word_39E35 dw ? word_39E37 dw ? word_39E39 dw ? word_39E3B dw ? word_39E3D dw ? word_39E3F dw ? word_39E41 dw ? word_39E43 dw ? word_39E45 dw ? db 16 dup(?) word_39E57 dw ? db ? word_39E5A dw ? word_39E5C dw ? angle_39E5E db ? byte_39E5F db ? word_39E60 dw ? dw ? left_39E64 dw 4 dup (?) top_39E6C dw 4 dup (?) public _mima_invincibility_frame, _mima_invincible _mima_invincibility_frame dw ? _mima_invincible dw ? word_39E78 dw ? public _mima_initial_hp_rendered _mima_initial_hp_rendered db ? db ? public _stageobj_bgs, _stageobj_bgs_size _stageobj_bgs dd ? _stageobj_bgs_size dd ? public _cards, _obstacles, _cards_score, _a_random_unused_card_id _cards label _cards_left dd ? _cards_top dd ? _cards_flag dd ? _card_count dw ? _cards_flip_frames dd ? _cards_hp dd ? _obstacles label _obstacles_left dd ? _obstacles_top dd ? _obstacles_type dd ? _obstacles_type_frames dd ? _obstacle_count dw ? _cards_score dd ? _a_random_unused_card_id dw ? byte_39EB2 db ? ; void (*off_39EB3)(void) off_39EB3 dd ? word_39EB7 dw ? include th01/main/portals[bss].asm db 5 dup(?) MISSILE_COUNT = 50 CMissiles struc MISSILE_cur_left dw MISSILE_COUNT dup(?) MISSILE_cur_top dw MISSILE_COUNT dup(?) MISSILE_prev_left dw MISSILE_COUNT dup(?) MISSILE_prev_top dw MISSILE_COUNT dup(?) MISSILE_velocity_x dw MISSILE_COUNT dup(?) MISSILE_velocity_y dw MISSILE_COUNT dup(?) MISSILE_unused dw MISSILE_COUNT dup(?) MISSILE_unknown db MISSILE_COUNT dup(?) MISSILE_ptn_id_base db ? MISSILE_flag db MISSILE_COUNT dup(?) CMissiles ends public _Missiles _Missiles CMissiles public _hud_hp_first_white, _hud_hp_first_redwhite _hud_hp_first_white dw ? _hud_hp_first_redwhite dw ? PARTICLE_COUNT = 40 PO_TOP_RIGHT = 1 PO_INITIALIZE = 255 public _particles_spawn_interval, _particles_velocity_base_max, _particles_x public _particles_y, _particles_velocity_x, _particles_velocity_y public _particles_alive, _particles_velocity_base, _particles_spawn_cycle _particles_spawn_interval dw ? _particles_velocity_base_max dw ? _particles_x dw PARTICLE_COUNT dup(?) _particles_y dw PARTICLE_COUNT dup(?) _particles_velocity_x dw PARTICLE_COUNT dup(?) _particles_velocity_y dw PARTICLE_COUNT dup(?) _particles_alive db PARTICLE_COUNT dup(?) _particles_velocity_base db PARTICLE_COUNT dup(?) _particles_spawn_cycle db ? public _route _route db ? public _singyoku_phase_frame, _singyoku_hp, _singyoku_invincibility_frame _singyoku_phase_frame dw ? _singyoku_invincibility_frame dw ? _singyoku_hp dw ? speed_3A385 dw ? angle_3A387 db ? byte_3A388 db ? point_3A389 Point db ? public _boss_palette _boss_palette palette_t byte_3A3BE db ? db 10 dup(?) include th01/main/boss/b15j[bss].asm speed_3A6B7 dw ? angle_3A6B9 db ? angle_3A6BA db ? word_3A6BB dw ? angle_3A6BD db ? word_3A6BE dw ? public _kikuri_invincible, _kikuri_invincibility_frame public _kikuri_entrance_ring_radius_base, _kikuri_initial_hp_rendered _kikuri_invincible dw ? _kikuri_invincibility_frame dw ? _kikuri_entrance_ring_radius_base dw ? _kikuri_initial_hp_rendered db ? db ? public _boss_hp, _boss_phase_frame, _boss_phase _boss_hp dw ? _boss_phase_frame dw ? word_3A6CC dw ? _boss_phase db ? public _elis_stars _elis_stars label word _elis_stars_left dw 5 dup (?) _elis_stars_top dw 5 dup (?) radius_3A6E3 dw ? word_3A6E5 dw ? db 20 dup(?) angle_3A6FB db ? word_3A6FC dw ? angle_3A6FE db ? word_3A6FF dw ? db 100 dup(?) x_3A765 dw ? y_3A767 dw ? word_3A769 dw ? word_3A76B dw ? word_3A76D dw ? angle_3A76F db ? angle_3A770 db ? word_3A771 dw ? public _elis_invincibility_frame, _elis_invincible, _elis_wave_teleport_done _elis_invincibility_frame dw ? _elis_invincible dw ? word_3A777 dw ? _elis_wave_teleport_done dw ? elis_bat_move_delta_y dw ? elis_bat_move_delta_x dw ? public _elis_initial_hp_rendered _elis_initial_hp_rendered db ? end