From 023d75f93b48d96b305f3f11e275d3de07a20a5d Mon Sep 17 00:00:00 2001 From: nmlgc Date: Thu, 9 Jun 2022 14:02:14 +0200 Subject: [PATCH] [Decompilation] [th01] Kikuri: Pattern 6/10 The one where Kikuri's souls fire single aimed pellets every 200 frames. Barely even noticeable as a distinct pattern due to the 4 other, much more complex patterns in phase 6 that run simultaneously. Part of P0199, funded by Lmocinemod. --- th01/main/boss/b15j.cpp | 19 +++++++++++ th01_reiiden.asm | 76 ++--------------------------------------- 2 files changed, 21 insertions(+), 74 deletions(-) diff --git a/th01/main/boss/b15j.cpp b/th01/main/boss/b15j.cpp index adaf7fd4..c4cef562 100644 --- a/th01/main/boss/b15j.cpp +++ b/th01/main/boss/b15j.cpp @@ -696,3 +696,22 @@ void near pattern_two_crossed_eye_lasers(void) mdrv2_se_play(6); } } + +void near pattern_souls_single_aimed_pellet_and_move_diagonally(void) +{ + if((boss_phase_frame % 200) == 0) { + Pellets.add_group( + (souls[0].cur_center_x() - (PELLET_W / 2)), + (souls[0].cur_center_y() - (PELLET_H / 2)), + PG_1_AIMED, + to_sp(2.5f) + ); + Pellets.add_group( + (souls[1].cur_center_x() - (PELLET_W / 2)), + (souls[1].cur_center_y() - (PELLET_H / 2)), + PG_1_AIMED, + to_sp(2.5f) + ); + } + souls_move_diagonally_and_render__tears_update_and_render(4, 2); +} diff --git a/th01_reiiden.asm b/th01_reiiden.asm index c0277c62..db70b473 100644 --- a/th01_reiiden.asm +++ b/th01_reiiden.asm @@ -14717,6 +14717,7 @@ main_34_TEXT segment byte public 'CODE' use16 @pattern_souls_spreads$qv procdesc near @pattern_souls_drop_tears_and_mov$qv procdesc near @pattern_two_crossed_eye_lasers$qv procdesc near + @pattern_souls_single_aimed_pelle$qv procdesc near main_34_TEXT ends main_34__TEXT segment byte public 'CODE' use16 @@ -14724,76 +14725,6 @@ main_34__TEXT segment byte public 'CODE' use16 ;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_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 @tears_update_and_render$qv - push 0 - push si - push di - call @soul_move_and_render$qiii - push 1 - mov ax, si - neg ax - push ax - push di - call @soul_move_and_render$qiii - pop di - pop si - pop bp - retn -sub_2414C endp - - ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame @@ -15849,7 +15780,7 @@ loc_24CFA: jnz loc_24DFB inc _boss_phase_frame inc _kikuri_invincibility_frame - call sub_2414C + call @pattern_souls_single_aimed_pelle$qv cmp word_35D14, 0 jnz short loc_24D1C call sub_241E7 @@ -16847,9 +16778,6 @@ _kikuri_phase db ? KIKURI_TEAR_COUNT = 10 -kikuri_soul_0 equ <_kikuri_souls[0 * size CBossEntity]> -kikuri_soul_1 equ <_kikuri_souls[1 * size CBossEntity]> - public _kikuri_tear_anim_frame, _kikuri_souls, _kikuri_tears _kikuri_tear_anim_frame db KIKURI_TEAR_COUNT dup(?) _kikuri_souls CBossEntity 5 dup ()