mirror of https://github.com/nmlgc/ReC98.git
[Decompilation] [th01] Sara: Phase 3 (with externally selected pattern)
Part of P0227, funded by nrook.
This commit is contained in:
parent
9a8f15a2ab
commit
b638e2d965
|
@ -22,6 +22,7 @@ extern "C" {
|
|||
// ---------
|
||||
|
||||
static const int PHASE_2_PATTERN_START_FRAME = 16;
|
||||
static const int PHASE_3_PATTERN_START_FRAME = 32;
|
||||
|
||||
enum sara_colors_t {
|
||||
COL_GATHER_1 = 9,
|
||||
|
@ -145,3 +146,46 @@ void near pattern_red_stacks(void)
|
|||
snd_se_play(15);
|
||||
}
|
||||
}
|
||||
|
||||
void near phase_3_with_pattern(void)
|
||||
{
|
||||
if(boss.phase_frame < PHASE_3_PATTERN_START_FRAME) {
|
||||
gather_add_only_3stack(
|
||||
(boss.phase_frame - 16), COL_GATHER_1, COL_GATHER_2
|
||||
);
|
||||
if(boss.phase_frame == 16) {
|
||||
snd_se_play(8);
|
||||
boss.sprite = PAT_SARA_SPIN;
|
||||
state->phase_3.angle_clockwise = (0x40 - 0x08);
|
||||
state->phase_3.angle_counterclockwise = (0x40 + 0x08);
|
||||
state->phase_3.ring_speed.set(1.5f);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
if(boss.phase_frame < 64) {
|
||||
boss.sprite++;
|
||||
} else if(boss.phase_frame < 96) {
|
||||
if((boss.phase_frame % 2) == 0) {
|
||||
boss.sprite++;
|
||||
}
|
||||
} else if(boss.phase_frame < 128) {
|
||||
if((boss.phase_frame % 4) == 0) {
|
||||
boss.sprite++;
|
||||
}
|
||||
} else if((boss.phase_frame < 160)) {
|
||||
if((boss.phase_frame % 8) == 0) {
|
||||
boss.sprite++;
|
||||
}
|
||||
}
|
||||
|
||||
if(boss.sprite >= (PAT_SARA_SPIN_last + 1)) {
|
||||
boss.sprite = PAT_SARA_SPIN;
|
||||
}
|
||||
phase_2_3_pattern();
|
||||
if(boss.phase_frame >= state->phase_3.pattern_duration) {
|
||||
boss.phase_frame = 0;
|
||||
boss.mode = 0;
|
||||
boss.sprite = PAT_SARA_STAY;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -10259,93 +10259,11 @@ B1_UPDATE_TEXT segment byte public 'CODE' use16
|
|||
@pattern_blue_curve_clockwise$qv procdesc near
|
||||
@pattern_aimed_red_spread_stack$qv procdesc near
|
||||
@pattern_red_stacks$qv procdesc near
|
||||
@phase_3_with_pattern$qv procdesc near
|
||||
B1_UPDATE_TEXT ends
|
||||
|
||||
B4_UPDATE_TEXT segment byte public 'CODE' use16
|
||||
|
||||
; =============== S U B R O U T I N E =======================================
|
||||
|
||||
; Attributes: bp-based frame
|
||||
|
||||
sub_1833B proc near
|
||||
push bp
|
||||
mov bp, sp
|
||||
cmp _boss_phase_frame, 32
|
||||
jge short loc_1837B
|
||||
mov ax, _boss_phase_frame
|
||||
add ax, -16
|
||||
call @gather_add_only_3stack$qiii pascal, ax, large (9 shl 16) or 8
|
||||
cmp _boss_phase_frame, 16
|
||||
jnz loc_183F3
|
||||
call snd_se_play pascal, 8
|
||||
mov _boss_sprite, PAT_SARA_SPIN
|
||||
mov _boss_statebyte[15], 38h
|
||||
mov _boss_statebyte[14], 48h
|
||||
mov _boss_statebyte[13], 18h
|
||||
pop bp
|
||||
retn
|
||||
; ---------------------------------------------------------------------------
|
||||
|
||||
loc_1837B:
|
||||
cmp _boss_phase_frame, 64
|
||||
jl short loc_183C4
|
||||
cmp _boss_phase_frame, 96
|
||||
jge short loc_18398
|
||||
mov ax, _boss_phase_frame
|
||||
mov bx, 2
|
||||
cwd
|
||||
idiv bx
|
||||
or dx, dx
|
||||
jnz short loc_183C8
|
||||
jmp short loc_183C4
|
||||
; ---------------------------------------------------------------------------
|
||||
|
||||
loc_18398:
|
||||
cmp _boss_phase_frame, 128
|
||||
jge short loc_183AF
|
||||
mov ax, _boss_phase_frame
|
||||
mov bx, 4
|
||||
cwd
|
||||
idiv bx
|
||||
or dx, dx
|
||||
jnz short loc_183C8
|
||||
jmp short loc_183C4
|
||||
; ---------------------------------------------------------------------------
|
||||
|
||||
loc_183AF:
|
||||
cmp _boss_phase_frame, 160
|
||||
jge short loc_183C8
|
||||
mov ax, _boss_phase_frame
|
||||
mov bx, 8
|
||||
cwd
|
||||
idiv bx
|
||||
or dx, dx
|
||||
jnz short loc_183C8
|
||||
|
||||
loc_183C4:
|
||||
inc _boss_sprite
|
||||
|
||||
loc_183C8:
|
||||
cmp _boss_sprite, (PAT_SARA_SPIN + SPIN_CELS)
|
||||
jb short loc_183D4
|
||||
mov _boss_sprite, PAT_SARA_SPIN
|
||||
|
||||
loc_183D4:
|
||||
call _sara_phase_2_3_pattern
|
||||
mov al, _boss_statebyte[9]
|
||||
mov ah, 0
|
||||
cmp ax, _boss_phase_frame
|
||||
jg short loc_183F3
|
||||
mov _boss_phase_frame, 0
|
||||
mov _boss_mode, 0
|
||||
mov _boss_sprite, PAT_SARA_STAY
|
||||
|
||||
loc_183F3:
|
||||
pop bp
|
||||
retn
|
||||
sub_1833B endp
|
||||
|
||||
|
||||
; =============== S U B R O U T I N E =======================================
|
||||
|
||||
; Attributes: bp-based frame
|
||||
|
@ -10819,7 +10737,7 @@ loc_18862:
|
|||
; ---------------------------------------------------------------------------
|
||||
|
||||
loc_18884:
|
||||
call sub_1833B
|
||||
call @phase_3_with_pattern$qv
|
||||
cmp _boss_phase_frame, 0
|
||||
jnz short loc_1889D
|
||||
cmp _boss_statebyte[9], -4Ch
|
||||
|
|
Loading…
Reference in New Issue