procTactWait

This commit is contained in:
LagoLunatic 2024-06-06 18:48:25 -04:00
parent 02b4fad555
commit eec24f6c27
8 changed files with 228 additions and 18 deletions

View File

@ -15,7 +15,7 @@ public:
void setBeat(s32);
void setVolume(f32);
void metronomePlay(s32, s32);
void judge(s32, s32);
s32 judge(s32, s32);
void ambientPlay();
void armSoundPlay(s32);
f32 getMelodyPattern(s32, s32, s32*);
@ -24,9 +24,8 @@ public:
void melodyPlay(s32);
void melodyStop();
// one of these inlines returns field_0x30, not sure which
void getBeat() {}
void getBeatFrames() {}
u8 getBeat() { return mMelodyNum; }
f32 getBeatFrames() { return field_0x30; }
public:
/* 0x00 */ int field_0x0;

View File

@ -148,7 +148,7 @@ public:
daPyRFlg0_UNK80000 = 0x00080000,
daPyRFlg0_POISON_CURSE = 0x00100000,
daPyRFlg0_GRAB_PUT_START = 0x00400000,
daPyRFlg0_TACT_USE = 0x01000000,
daPyRFlg0_TACT_INPUT = 0x01000000,
daPyRFlg0_FAIRY_USE = 0x02000000,
daPyRFlg0_UNK8000000 = 0x08000000,
daPyRFlg0_UNK10000000 = 0x10000000,
@ -445,7 +445,7 @@ public:
void onPoisonCurse() { onResetFlg0(daPyRFlg0_POISON_CURSE); }
bool getGrabPutStart() const { return checkResetFlg0(daPyRFlg0_GRAB_PUT_START); }
bool checkFairyUse() const { return checkResetFlg0(daPyRFlg0_FAIRY_USE); }
bool checkTactUse() const { return checkResetFlg0(daPyRFlg0_TACT_USE); }
bool checkTactInput() const { return checkResetFlg0(daPyRFlg0_TACT_INPUT); }
bool checkArrowShoot() const { return checkResetFlg0(daPyRFlg0_ARROW_SHOOT); }
bool checkGrabWear() const { return field_0x2b0 < 0.0f; }
@ -465,7 +465,6 @@ public:
void checkSwordMiniGame() const {}
void checkSoupPowerUp() const {}
void checkSubjectAccept() const {}
void checkTactInput() const {}
void checkUseArrowEffect() const {}
void getRopeJumpLand() const {}
void checkRopeForceEnd() const {}

View File

@ -95,6 +95,9 @@ public:
}
void onAlphaOutFlg() { mAlphaOutFlg = TRUE; }
JPABaseEmitter* getEmitter() { return mpEmitter; }
void deleteCallBack() {}
/* 0x4 */ BOOL mAlphaOutFlg;
/* 0x8 */ JPABaseEmitter* mpEmitter;
@ -2098,7 +2101,7 @@ public:
/* 0x3618 */ u32 mModeFlg;
/* 0x361C */ u32 mMtrlSndId;
/* 0x3620 */ u32 m3620;
/* 0x3624 */ int m3624;
/* 0x3624 */ u32 m3624;
/* 0x3628 */ int m3628;
/* 0x362C */ uint mTactZevPartnerPID;
/* 0x3630 */ u32 m3630;

View File

@ -2456,7 +2456,7 @@ inline bool dComIfGp_2dShowCheck() {
return g_dComIfG_gameInfo.play.show2dCheck();
}
inline u8 dComIfGp_setMelodyNum() {
inline u8 dComIfGp_getMelodyNum() {
return g_dComIfG_gameInfo.play.getMelodyNum();
}

View File

@ -48,6 +48,7 @@ void mDoAud_setSceneName(const char*, s32, s32);
void mDoAud_Execute();
BOOL mDoAud_isUsedHeapForStreamBuffer();
int mDoAud_load1stDynamicWave();
int mDoAud_getTactDirection(int stick, int ret);
extern JKRSolidHeap* g_mDoAud_audioHeap;
@ -214,7 +215,7 @@ inline void mDoAud_tact_reset() {
mDoAud_zelAudio_c::getTact().reset();
}
inline void mDoAud_tact_getBeat() {
inline u8 mDoAud_tact_getBeat() {
return mDoAud_zelAudio_c::getTact().getBeat();
}
@ -222,7 +223,7 @@ inline void mDoAud_tact_setBeat(s32 beat) {
mDoAud_zelAudio_c::getTact().setBeat(beat);
}
inline void mDoAud_tact_getBeatFrames() {
inline f32 mDoAud_tact_getBeatFrames() {
return mDoAud_zelAudio_c::getTact().getBeatFrames();
}
@ -250,11 +251,20 @@ inline void mDoAud_tact_stopArmSwing() {
mDoAud_zelAudio_c::getTact().stopArmSwing();
}
inline void mDoAud_tact_armSoundPlay(s32) {}
inline void mDoAud_tact_judge(s32, s32) {}
inline s32 mDoAud_tact_judge(s32 param_1, s32 param_2) {
return mDoAud_zelAudio_c::getTact().judge(param_1, param_2);
}
inline void mDoAud_tact_armSoundPlay(s32 param_1) {
return mDoAud_zelAudio_c::getTact().armSoundPlay(param_1);
}
inline void mDoAud_tact_metronomePlay(s32 param_1, s32 param_2) {
return mDoAud_zelAudio_c::getTact().metronomePlay(param_1, param_2);
}
inline void mDoAud_tact_melodyPlay(s32) {}
inline void mDoAud_tact_melodyStop() {}
inline void mDoAud_tact_metronomePlay(s32, s32) {}
inline BOOL mDoAud_checkCbPracticePlay() {
return mDoAud_zelAudio_c::getInterface()->checkCbPracticePlay();

View File

@ -64,7 +64,7 @@ void JAIZelInst::metronomePlay(s32, s32) {
}
/* 802AE864-802AEB5C .text judge__10JAIZelInstFll */
void JAIZelInst::judge(s32, s32) {
s32 JAIZelInst::judge(s32, s32) {
/* Nonmatching */
}

View File

@ -99,7 +99,7 @@ BOOL daPy_lk_c::checkEndTactMusic() const {
/* 8014D9A4-8014D9D0 .text getTactMetronomeRate__9daPy_lk_cFv */
f32 daPy_lk_c::getTactMetronomeRate() {
if (mCurProc == daPyProc_TACT_WAIT_e) {
return m35A0 / mDoAud_zelAudio_c::getTact().field_0x30;
return m35A0 / mDoAud_tact_getBeatFrames();
} else {
return -1.0f;
}
@ -303,7 +303,206 @@ BOOL daPy_lk_c::procTactWait_init(int r30) {
/* 8014E100-8014E9A4 .text procTactWait__9daPy_lk_cFv */
BOOL daPy_lk_c::procTactWait() {
/* Nonmatching */
setShipRidePosUseItem();
mDoAud_tact_ambientPlay();
if (m3570 == -4) {
dComIfGp_evmng_cutEnd(mStaffIdx);
return TRUE;
}
if (m34D2 > 0) {
m34D2--;
if (m3570 == -5) {
m35A0 += 1.0f;
}
if (m34D2 == 0) {
if (m3570 == -5 || m3570 == 6 || m3570 == 7) {
dComIfGp_evmng_cutEnd(mStaffIdx);
g_dComIfG_gameInfo.play.field_0x4947 = 0;
} else if (m3570 == -1 || m3570 == -3 || m3570 >= 0) {
procTactPlay_init(m3574, m3570 == -1, m3570 >= 0);
}
}
return TRUE;
}
if (m3570 == 5 || m3570 == 1 || m3570 == 6 || m3570 == 7) {
if (m35AC >= 0.0f) {
m35AC -= 1.0f;
}
if (m3570 == 5) {
dComIfGp_setAStatus(7);
}
} else if (m3570 != -5) {
dComIfGp_setAStatus(7);
}
if (m34D2 == 0 || ((mPressedButtons & 2) != 0 && dComIfGp_getAStatus() == 7) || m35AC <= 0.0f) {
if (m34D2 != 0) {
resetActAnimeUpper(UPPER_MOVE2_e, -1.0f);
resetActAnimeUpper(UPPER_MOVE1_e, -1.0f);
mDoAud_seStart(JA_SE_TAKT_USE_CANCEL, 0);
}
g_dComIfG_gameInfo.play.field_0x4947 = 0;
if ((mPressedButtons & 2) != 0 && m3570 == 5) {
m35AC = -1000.0f;
}
if (m3570 == -1) {
dComIfGp_event_reset();
dCam_getBody()->EndEventCamera(fopAcM_GetID(this));
endDemoMode();
} else {
dComIfGp_evmng_cutEnd(mStaffIdx);
}
mDoAud_tact_reset();
return TRUE;
}
int r31, r30;
if (m3570 != -5) {
r31 = mDoAud_getTactDirection(1, m34D4);
r30 = mDoAud_getTactDirection(0, m34D6);
mDoAud_tact_setVolume(m35B0 * cM_scos(m34DC));
} else {
r31 = m34D4;
r30 = m34D6;
}
m35A0 += 1.0f;
if (r31 != m34D4) {
if (m35A4 <= 0.0f || r31 != 0) {
setActAnimeUpper(getTactPlayRightArmAnm(r31), UPPER_MOVE1_e, daPy_HIO_tact_c0::m.field_0x8, 0.0f, -1, daPy_HIO_tact_c0::m.field_0xC);
if (r31 == 0 || r31 == 2 || r31 == 4) {
mFrameCtrlUpper[UPPER_MOVE1_e].setRate(daPy_HIO_tact_c0::m.field_0x0);
mFrameCtrlUpper[UPPER_MOVE1_e].setFrame(mFrameCtrlUnder[UNDER_MOVE0_e].getFrame());
}
if (m34D4 == 4 || m34D4 == 2 || r31 == 4 || r31 == 2) {
mDoAud_tact_reset();
mDoAud_tact_setBeat(r31);
m35A0 = 0.0f;
m34DA = 0;
m_old_fdata->initOldFrameMorf(5.0f, 0, 0x2A);
m3624 = 0;
m34D0 = -1;
}
m34D4 = r31;
mAnmRatioUpper[UPPER_MOVE1_e].setRatio(0.0f);
if (m34D4 != 0) {
m35A4 = 2.0f;
}
} else {
m35A4 -= 1.0f;
}
} else if (m34D4 != 0) {
m35A4 = 2.0f;
}
if (r30 != m34D6) {
if (m35A8 <= 0.0f || r30 != 0) {
f32 f31;
if (m34D4 == 4) {
f31 = daPy_HIO_tact_c0::m.field_0x14;
} else if (m34D4 == 2) {
f31 = daPy_HIO_tact_c0::m.field_0x18;
} else {
f31 = daPy_HIO_tact_c0::m.field_0x10;
}
setActAnimeUpper(getTactPlayLeftArmAnm(r30), UPPER_MOVE2_e, f31, 0.0f, -1, daPy_HIO_tact_c0::m.field_0xC);
m34D6 = r30;
mAnmRatioUpper[UPPER_MOVE2_e].setRatio(0.0f);
mDoAud_tact_armSoundPlay(r30);
if (m34D6 != 0) {
m35A8 = 2.0f;
}
} else {
m35A8 -= 1.0f;
}
} else if (m34D6 != 0) {
m35A8 = 2.0f;
}
if (m35A0 >= mDoAud_tact_getBeatFrames()) {
mDoAud_tact_metronomePlay(m34DA, m34D6);
mpEquipItemBrk->setFrame(mpEquipItemBrk->getFrameMax() - 0.001f);
m34D0 = 3;
m35A0 -= mDoAud_tact_getBeatFrames();
m3624++;
if (m3624 == 2) {
m3624 = 0;
}
} else {
mpEquipItemBrk->setFrame(0.0f);
}
if (m34D0 > 0) {
m34D0--;
}
if (m34D0 == 0) {
m3574 = mDoAud_tact_judge(m34DA, m34D6);
m34DA++;
if (m34DA >= mDoAud_tact_getBeat()) {
m34DA = 0;
}
onResetFlg0(daPyRFlg0_TACT_INPUT);
m34D0 = -1;
if ((m3570 >= 0 && m3570 == m3574) ||
(
(m3570 == -1 || m3570 == -3) &&
(m3574 >= 0 && m3574 != 6 && m3574 != 7 && dComIfGs_isTact(m3574))
)
) {
m34D2 = 30;
mDoAud_seStart(JA_SE_WTAKT_MATCH_SIGNAL, 0);
m35A0 = 0.0f;
} else {
m3574 = -1;
if (m3570 == -5) {
m34D8++;
if (m34D8 == 6) {
m34D2 = 15;
}
} else if (m3570 == -2) {
m34D8++;
if (m34D8 == 5) {
m34D2 = 30;
m35A0 = 0.0f;
}
}
}
}
f32 f0;
if (m34D4 == 4) {
f0 = daPy_HIO_tact_c0::m.field_0x14;
} else if (m34D4 == 2) {
f0 = daPy_HIO_tact_c0::m.field_0x18;
} else {
f0 = daPy_HIO_tact_c0::m.field_0x10;
}
mFrameCtrlUpper[UPPER_MOVE2_e].setRate(f0);
if (m34D2 == -1) {
f32 f0 = (m35A0 + m3624 * mDoAud_tact_getBeatFrames()) / (2.0f * mDoAud_tact_getBeatFrames());
mFrameCtrlUnder[UPPER_MOVE0_e].setFrame(f0 * mFrameCtrlUnder[UPPER_MOVE0_e].getEnd());
mFrameCtrlUpper[UPPER_MOVE1_e].setFrame(f0 * mFrameCtrlUpper[UPPER_MOVE1_e].getEnd());
getNowAnmPackUnder(UNDER_MOVE0_e)->setFrame(mFrameCtrlUnder[UNDER_MOVE0_e].getFrame());
if (getNowAnmPackUpper(UPPER_MOVE1_e)) {
getNowAnmPackUpper(UPPER_MOVE1_e)->setFrame(mFrameCtrlUpper[UPPER_MOVE1_e].getFrame());
}
}
return TRUE;
}
/* 8014E9A4-8014EBA0 .text procTactPlay_init__9daPy_lk_cFlii */

View File

@ -317,7 +317,7 @@ void dMetronome_c::melodyGuideShow(s32 note, s16 no) {
/* 80222854-80222C4C .text melodyShow__12dMetronome_cFv */
void dMetronome_c::melodyShow() {
cXyz tactTop, sparklePos;
if (daPy_getPlayerActorClass()->checkTactUse()) {
if (daPy_getPlayerActorClass()->checkTactInput()) {
cXyz pos;
pos.x = 0.0f;
pos.y = 0.0f;