mirror of https://github.com/nmlgc/ReC98.git
[Decompilation] [th01] Elis: Phase 5 girl pattern selection
The phase 3 selection logic was fine! No need to reinvent it with even more convoluted logic, in a function that should not exist to begin with. (Phase 4 is another one that only consists of a teleport and a bat transformation.) Part of P0195, funded by Yanga.
This commit is contained in:
parent
be7e88ceaf
commit
9299df2f53
|
@ -1659,3 +1659,52 @@ elis_starpattern_ret_t pattern_aimed_5_spreads_and_lasers_followed_by_ring(void)
|
|||
|
||||
#undef circle
|
||||
}
|
||||
|
||||
elis_phase_5_subphase_t phase_5_girl(bool16 reset = false)
|
||||
{
|
||||
#define star_of_david_then(in, pattern_cur, func) { \
|
||||
if(subphase == SP_STAR_OF_DAVID) { \
|
||||
subphase = star_of_david(); \
|
||||
return P5_PATTERN; \
|
||||
} \
|
||||
/* subphase == SP_PATTERN */ \
|
||||
subphase = func(); \
|
||||
if(subphase == SP_STAR_OF_DAVID) { \
|
||||
subphase = SP_STAR_OF_DAVID; \
|
||||
pattern_cur = CHOOSE_NEW; \
|
||||
return P5_TRANSFORM; \
|
||||
} \
|
||||
return P5_PATTERN; \
|
||||
}
|
||||
|
||||
#define pattern_cur phase_5_girl_pattern_cur
|
||||
#define subphase phase_5_girl_subphase
|
||||
|
||||
extern int pattern_cur;
|
||||
extern elis_starpattern_ret_t subphase;
|
||||
|
||||
if(reset == true) {
|
||||
pattern_cur = CHOOSE_NEW;
|
||||
subphase = SP_STAR_OF_DAVID;
|
||||
return P5_PATTERN;
|
||||
}
|
||||
switch(pattern_cur) {
|
||||
case CHOOSE_NEW:
|
||||
pattern_cur = ((rand() % 3) + 1);
|
||||
break;
|
||||
case 1: /* return */ star_of_david_then(subphase, pattern_cur,
|
||||
pattern_three_symmetric_4_stacks_then_symmetric_arc
|
||||
);
|
||||
case 2: /* return */ star_of_david_then(subphase, pattern_cur,
|
||||
pattern_safety_circle_and_rain_from_top
|
||||
);
|
||||
case 3: /* return */ star_of_david_then(subphase, pattern_cur,
|
||||
pattern_aimed_5_spreads_and_lasers_followed_by_ring
|
||||
);
|
||||
}
|
||||
return P5_PATTERN;
|
||||
|
||||
#undef subphase
|
||||
#undef pattern_cur
|
||||
#undef star_of_david_then
|
||||
}
|
||||
|
|
115
th01_reiiden.asm
115
th01_reiiden.asm
|
@ -17408,7 +17408,6 @@ ELIS_BASE_TOP = (PLAYFIELD_TOP + ((PLAYFIELD_H / 21) * 5) - (ELIS_GIRL_H / 2))
|
|||
extern @elis_free$qv:proc
|
||||
extern @wave_teleport$qii:proc
|
||||
extern @phase_1$qi:proc
|
||||
@star_of_david$qv procdesc near
|
||||
extern @phase_3$qi:proc
|
||||
extern @transform_girl_to_bat$qv:proc
|
||||
extern @transform_bat_to_girl$qv:proc
|
||||
|
@ -17417,9 +17416,7 @@ ELIS_BASE_TOP = (PLAYFIELD_TOP + ((PLAYFIELD_H / 21) * 5) - (ELIS_GIRL_H / 2))
|
|||
extern @pattern_bat_alternating_narrow_a$qv:proc
|
||||
extern @pattern_bat_alternating_2_and_3_$qv:proc
|
||||
extern @pattern_bat_random_rain$qv:proc
|
||||
extern @pattern_three_symmetric_4_stacks$qv:proc
|
||||
extern @pattern_safety_circle_and_rain_f$qv:proc
|
||||
extern @pattern_aimed_5_spreads_and_lase$qv:proc
|
||||
extern @phase_5_girl$qi:proc
|
||||
main_35_TEXT ends
|
||||
|
||||
main_35__TEXT segment byte public 'CODE' use16
|
||||
|
@ -17428,104 +17425,6 @@ main_35__TEXT segment byte public 'CODE' use16
|
|||
|
||||
; 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 @pattern_three_symmetric_4_stacks$qv
|
||||
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 @pattern_safety_circle_and_rain_f$qv
|
||||
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 @star_of_david$qv
|
||||
mov word_35D46, ax
|
||||
jmp short loc_27B5B
|
||||
; ---------------------------------------------------------------------------
|
||||
|
||||
loc_27B3C:
|
||||
call @pattern_aimed_5_spreads_and_lase$qv
|
||||
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
|
||||
|
@ -17539,8 +17438,7 @@ arg_C = word ptr 12h
|
|||
jnz short loc_27B85
|
||||
mov word_35D48, 0
|
||||
mov word_35D4A, 0
|
||||
push 1
|
||||
call sub_27AC1
|
||||
call @phase_5_girl$qi stdcall, 1
|
||||
pop cx
|
||||
pop bp
|
||||
retf
|
||||
|
@ -17610,8 +17508,7 @@ loc_27BE7:
|
|||
loc_27C06:
|
||||
cmp word_35D48, 0
|
||||
jnz short loc_27C19
|
||||
push 0
|
||||
call sub_27AC1
|
||||
call @phase_5_girl$qi stdcall, 0
|
||||
pop cx
|
||||
mov word_35D48, ax
|
||||
pop bp
|
||||
|
@ -19171,8 +19068,10 @@ aTamayen_ptn db 'tamayen.ptn',0
|
|||
public _phase_3_pattern_cur
|
||||
_phase_3_pattern_cur dw 0
|
||||
|
||||
word_35D44 dw 0
|
||||
word_35D46 dw 0
|
||||
public _phase_5_girl_pattern_cur, _phase_5_girl_subphase
|
||||
_phase_5_girl_pattern_cur dw 0
|
||||
_phase_5_girl_subphase dw 0
|
||||
|
||||
word_35D48 dw 0
|
||||
word_35D4A dw 0
|
||||
word_35D4C dw 0
|
||||
|
|
Loading…
Reference in New Issue