From 255cc868e43f3754b29fa089a2a02e617ecb09bb Mon Sep 17 00:00:00 2001 From: Caroline Madsen <69010899+randomsalience@users.noreply.github.com> Date: Tue, 30 Jan 2024 19:08:37 -0500 Subject: work on Z2SoundMgr and Z2SeMgr (#2055) --- include/JSystem/JAudio2/JAISe.h | 2 +- include/JSystem/JAudio2/JAISeMgr.h | 2 +- include/JSystem/JAudio2/JAISeqMgr.h | 4 +- include/JSystem/JAudio2/JAISoundHandles.h | 2 + include/JSystem/JAudio2/JAISoundInfo.h | 2 +- include/JSystem/JAudio2/JAIStreamMgr.h | 3 +- include/JSystem/JAudio2/JAUSectionHeap.h | 3 +- include/JSystem/JAudio2/JAUSeqDataBlockMgr.h | 10 ++-- include/Z2AudioLib/Z2AudioMgr.h | 2 +- include/Z2AudioLib/Z2Calc.h | 1 + include/Z2AudioLib/Z2Creature.h | 4 +- include/Z2AudioLib/Z2Param.h | 4 ++ include/Z2AudioLib/Z2SceneMgr.h | 1 + include/Z2AudioLib/Z2SeMgr.h | 76 +++++++++++++++++++++++----- include/Z2AudioLib/Z2SeqMgr.h | 1 + include/Z2AudioLib/Z2SoundInfo.h | 2 +- include/Z2AudioLib/Z2SoundMgr.h | 4 +- include/Z2AudioLib/Z2SoundStarter.h | 4 +- include/Z2AudioLib/Z2SpeechMgr2.h | 2 +- include/Z2AudioLib/Z2StatusMgr.h | 1 + 20 files changed, 97 insertions(+), 33 deletions(-) (limited to 'include') diff --git a/include/JSystem/JAudio2/JAISe.h b/include/JSystem/JAudio2/JAISe.h index 044f18af32..07624b2a06 100644 --- a/include/JSystem/JAudio2/JAISe.h +++ b/include/JSystem/JAudio2/JAISe.h @@ -47,7 +47,7 @@ public: JAISeqData* getSeqData() { return &inner_.mSeqData; } u32 JAISeCategoryMgr_getProperPriority_() const { return inner_.mProperPriority; } u32 JAISeCategoryMgr_getPriority_() const { return inner_.mPriority; } - bool isFarAway() const { return mPriority == -1; } + bool isFarAway() const { return inner_.mPriority == -1; } /* 0x0ac */ TInner inner_; }; diff --git a/include/JSystem/JAudio2/JAISeMgr.h b/include/JSystem/JAudio2/JAISeMgr.h index 3fe166473e..f335f37b10 100644 --- a/include/JSystem/JAudio2/JAISeMgr.h +++ b/include/JSystem/JAudio2/JAISeMgr.h @@ -74,7 +74,7 @@ public: /* 802A0484 */ JAISe* newSe_(int, u32); /* 802A0574 */ void calc(); /* 802A0704 */ void mixOut(); - /* 802A0768 */ int startSound(JAISoundID, JAISoundHandle*, JGeometry::TVec3 const*); + /* 802A0768 */ bool startSound(JAISoundID, JAISoundHandle*, JGeometry::TVec3 const*); /* 802A08D0 */ int getNumActiveSe() const; /* 802A08FC */ virtual ~JAISeMgr(); // inline? diff --git a/include/JSystem/JAudio2/JAISeqMgr.h b/include/JSystem/JAudio2/JAISeqMgr.h index 86b5dbe21a..ca3ee1f8e7 100644 --- a/include/JSystem/JAudio2/JAISeqMgr.h +++ b/include/JSystem/JAudio2/JAISeqMgr.h @@ -13,7 +13,7 @@ class JAISeqMgr : public JAISeqDataUser, public JASGlobalInstance { public: /* 802A1914 */ JAISeqMgr(bool); /* 802A1A08 */ void freeDeadSeq_(); - /* 802A1B48 */ int startSound(JAISoundID, JAISoundHandle*, JGeometry::TVec3 const*); + /* 802A1B48 */ bool startSound(JAISoundID, JAISoundHandle*, JGeometry::TVec3 const*); /* 802A1C90 */ void calc(); /* 802A1DFC */ void stop(); /* 802A1E3C */ void stop(u32); @@ -43,6 +43,8 @@ public: } JAISoundParamsMove* getParams() { return &mMove; } bool isActive() { return mSeqList.getNumLinks() != 0; } + int getNumActiveSeqs() { return mSeqList.getNumLinks(); } + void pause(bool i_pause) { mActivity.field_0x0.flags.flag2 = i_pause; } private: /* 0x04 */ JAISoundActivity mActivity; diff --git a/include/JSystem/JAudio2/JAISoundHandles.h b/include/JSystem/JAudio2/JAISoundHandles.h index ffe285d818..4182a560a6 100644 --- a/include/JSystem/JAudio2/JAISoundHandles.h +++ b/include/JSystem/JAudio2/JAISoundHandles.h @@ -35,6 +35,8 @@ public: numHandles_ = param_1; }; + JAISoundHandle& operator[](int n) { return mSoundHandle[n]; } + JAISoundHandle* getHandleSoundID(JAISoundID); JAISoundHandle* getFreeHandle(); diff --git a/include/JSystem/JAudio2/JAISoundInfo.h b/include/JSystem/JAudio2/JAISoundInfo.h index 081a9e6afe..84b10883b1 100644 --- a/include/JSystem/JAudio2/JAISoundInfo.h +++ b/include/JSystem/JAudio2/JAISoundInfo.h @@ -6,7 +6,7 @@ struct JAISoundInfo : public JASGlobalInstance { /* 802A2D34 */ JAISoundInfo(bool); - virtual u32 getSoundType(JAISoundID) const = 0; + virtual int getSoundType(JAISoundID) const = 0; virtual int getCategory(JAISoundID) const = 0; virtual u32 getPriority(JAISoundID) const = 0; virtual void getSeInfo(JAISoundID, JAISe*) const = 0; diff --git a/include/JSystem/JAudio2/JAIStreamMgr.h b/include/JSystem/JAudio2/JAIStreamMgr.h index c98c1b9d6b..6d498da9ba 100644 --- a/include/JSystem/JAudio2/JAIStreamMgr.h +++ b/include/JSystem/JAudio2/JAIStreamMgr.h @@ -13,7 +13,7 @@ class JAIStreamDataMgr; class JAIStreamMgr : public JASGlobalInstance { public: /* 802A3B68 */ JAIStreamMgr(bool); - /* 802A3C3C */ int startSound(JAISoundID, JAISoundHandle*, JGeometry::TVec3 const*); + /* 802A3C3C */ bool startSound(JAISoundID, JAISoundHandle*, JGeometry::TVec3 const*); /* 802A3D70 */ void freeDeadStream_(); /* 802A3EBC */ void calc(); /* 802A4028 */ void stop(); @@ -32,6 +32,7 @@ public: JUT_ASSERT(157, !isActive()); mStreamAramMgr = param_0; } + void pause(bool i_pause) { mActivity.field_0x0.flags.flag2 = i_pause; } private: /* 0x00 */ JAISoundActivity mActivity; diff --git a/include/JSystem/JAudio2/JAUSectionHeap.h b/include/JSystem/JAudio2/JAUSectionHeap.h index aa1bde433a..ad14fa5c20 100644 --- a/include/JSystem/JAudio2/JAUSectionHeap.h +++ b/include/JSystem/JAudio2/JAUSectionHeap.h @@ -82,7 +82,7 @@ public: /* 0x000 */ JAUWaveBankTable waveBankTable; /* 0x404 */ JAISeqDataUser* seqDataUser; - /* 0x408 */ JAUDynamicSeqDataBlocks field_0x408; + /* 0x408 */ JAUDynamicSeqDataBlocks seqDataBlocks; /* 0x430 */ JAISeqDataMgr* seSeqDataMgr_; /* 0x434 */ JAIStreamDataMgr* streamDataMgr_; /* 0x438 */ JAUSoundTable* soundTable; @@ -100,6 +100,7 @@ public: /* 802A6270 */ int releaseSeqData(); /* 802A6278 */ ~JAUSectionHeap(); + TSectionHeapData const& getSectionHeapData() const { return sectionHeapData_; } JAUWaveBankTable& getWaveBankTable() { return sectionHeapData_.waveBankTable; } JKRHeap* getHeap() { if (getOpenSection()->isBuilding() != 0) { diff --git a/include/JSystem/JAudio2/JAUSeqDataBlockMgr.h b/include/JSystem/JAudio2/JAUSeqDataBlockMgr.h index c3176f9ab7..c3dca05ad9 100644 --- a/include/JSystem/JAudio2/JAUSeqDataBlockMgr.h +++ b/include/JSystem/JAudio2/JAUSeqDataBlockMgr.h @@ -18,15 +18,13 @@ struct JAUSeqDataBlock { /* 0x1C */ int field_0x1c; }; -class JAUSeqDataBlocks { +class JAUSeqDataBlocks : public JSUList { public: /* 802A6928 */ u8* getSeqData(JAISoundID); /* 802A6974 */ JSULink* seekFreeBlock(u32); /* 802A69D8 */ bool append(JSULink*); /* 802A69F8 */ bool remove(JSULink*); /* 802A6A18 */ bool hasFailedBlock(JAISoundID); - - /* 0x00 */ JSUList field_0x0; }; class JAUDynamicSeqDataBlocks { @@ -40,11 +38,13 @@ public: /* 802A6E00 */ JAUSeqDataBlock* releaseIdleDynamicSeqDataBlock_(JAISeqDataUser*, u32); /* 802A6EDC */ void rearrangeLoadingSeqs_(); + JAUSeqDataBlocks const& getFreeBlocks() const { return mFreeBlocks; } + JAUSeqDataBlocks const& getLoadedBlocks() const { return mLoadedBlocks; } JKRArchive* getSeqDataArchive() { return seqDataArchive_; } - /* 0x00 */ JAUSeqDataBlocks field_0x0; + /* 0x00 */ JAUSeqDataBlocks mFreeBlocks; /* 0x0C */ JAUSeqDataBlocks field_0xc; - /* 0x18 */ JAUSeqDataBlocks field_0x18; + /* 0x18 */ JAUSeqDataBlocks mLoadedBlocks; /* 0x24 */ JKRArchive* seqDataArchive_; }; diff --git a/include/Z2AudioLib/Z2AudioMgr.h b/include/Z2AudioLib/Z2AudioMgr.h index ef1aaf4fdf..86ae43696a 100644 --- a/include/Z2AudioLib/Z2AudioMgr.h +++ b/include/Z2AudioLib/Z2AudioMgr.h @@ -34,7 +34,7 @@ public: static Z2AudioMgr* mAudioMgrPtr; - /* 0x0514 */ virtual int startSound(JAISoundID, JAISoundHandle*, JGeometry::TVec3 const*); + /* 0x0514 */ virtual bool startSound(JAISoundID, JAISoundHandle*, JGeometry::TVec3 const*); /* 0x0518 */ bool mResettingFlag; /* 0x0519 */ bool field_0x519; /* 0x051C */ JASAudioReseter mAudioReseter; diff --git a/include/Z2AudioLib/Z2Calc.h b/include/Z2AudioLib/Z2Calc.h index fbaf0d4a9d..de5f10d71c 100644 --- a/include/Z2AudioLib/Z2Calc.h +++ b/include/Z2AudioLib/Z2Calc.h @@ -7,6 +7,7 @@ namespace Z2Calc { enum CurveSign { CURVE_SIGN_0 = 0, CURVE_SIGN_1 = 1, + CURVE_SIGN_2 = 2, }; struct FNoise1f { diff --git a/include/Z2AudioLib/Z2Creature.h b/include/Z2AudioLib/Z2Creature.h index a3307a0f1d..00506ac0dd 100644 --- a/include/Z2AudioLib/Z2Creature.h +++ b/include/Z2AudioLib/Z2Creature.h @@ -39,7 +39,7 @@ struct Z2LinkSoundStarter : public Z2SoundStarter { Z2LinkSoundStarter(); inline virtual ~Z2LinkSoundStarter(); - virtual int startSound(JAISoundID, JAISoundHandle*, JGeometry::TVec3 const*, u32, f32, + virtual bool startSound(JAISoundID, JAISoundHandle*, JGeometry::TVec3 const*, u32, f32, f32, f32, f32, f32, u32); }; @@ -127,7 +127,7 @@ struct Z2RideSoundStarter : public Z2SoundStarter { /* 802C5234 */ Z2RideSoundStarter(Z2CreatureRide*); /* 802C5078 */ inline virtual ~Z2RideSoundStarter(); - /* 802C5284 */ virtual int startSound(JAISoundID, JAISoundHandle*, + /* 802C5284 */ virtual bool startSound(JAISoundID, JAISoundHandle*, JGeometry::TVec3 const*, u32, f32, f32, f32, f32, f32, u32); diff --git a/include/Z2AudioLib/Z2Param.h b/include/Z2AudioLib/Z2Param.h index c4889e5640..d98289f7ef 100644 --- a/include/Z2AudioLib/Z2Param.h +++ b/include/Z2AudioLib/Z2Param.h @@ -56,4 +56,8 @@ extern u8 struct_8045086A; extern u8 struct_8045086B; extern u8 data_8045086C; +extern u8 struct_80451340; +extern u8 struct_80451341; +extern u8 struct_80451342; + #endif /* Z2PARAM_H */ diff --git a/include/Z2AudioLib/Z2SceneMgr.h b/include/Z2AudioLib/Z2SceneMgr.h index 17623a5108..5f6a2b6092 100644 --- a/include/Z2AudioLib/Z2SceneMgr.h +++ b/include/Z2AudioLib/Z2SceneMgr.h @@ -37,6 +37,7 @@ public: void setInGame(bool i_inGame) { inGame = i_inGame; } bool isInDarkness() const { return inDarkness; } s8 getRoomReverb() const { return dComIfGp_getReverb(roomNum); } + bool isMovieDemo() { return sceneNum == 2 || sceneNum == 8 || sceneNum == 9; } private: /* 0x00 */ long BGM_ID; diff --git a/include/Z2AudioLib/Z2SeMgr.h b/include/Z2AudioLib/Z2SeMgr.h index d7c0ba3330..3760af1fa5 100644 --- a/include/Z2AudioLib/Z2SeMgr.h +++ b/include/Z2AudioLib/Z2SeMgr.h @@ -8,19 +8,69 @@ struct Z2MultiSeMgr { Z2MultiSeMgr(); ~Z2MultiSeMgr(); - void registMultiSePos(Vec*); + s8 registMultiSePos(Vec*); void resetMultiSePos(); - void getPanPower(); - void getDolbyPower(); + f32 getPanPower(); + f32 getDolbyPower(); void setVolumeScale(f32 param_0) { mVolumeScale = param_0; } + f32 getMaxVolume() { + if (mMaxVolume > 1.0f) { + return 1.0f; + } else if (mMaxVolume < 0.0f) { + return 0.0f; + } else { + return mMaxVolume; + } + } + + f32 getMaxPowR() { + if (mMaxPowR > 1.0f) { + return 1.0f; + } else if (mMaxPowR < 0.0f) { + return 0.0f; + } else { + return mMaxPowR; + } + } + + f32 getMaxPowL() { + if (mMaxPowL > 1.0f) { + return 1.0f; + } else if (mMaxPowL < 0.0f) { + return 0.0f; + } else { + return mMaxPowL; + } + } + + f32 getMaxPowB() { + if (mMaxPowB > 1.0f) { + return 1.0f; + } else if (mMaxPowB < 0.0f) { + return 0.0f; + } else { + return mMaxPowB; + } + } + + f32 getMaxPowF() { + if (mMaxPowF > 1.0f) { + return 1.0f; + } else if (mMaxPowF < 0.0f) { + return 0.0f; + } else { + return mMaxPowF; + } + } + /* 0x00 */ float mVolumeScale; /* 0x04 */ float mMaxVolume; /* 0x08 */ float mMaxPowL; /* 0x0C */ float mMaxPowR; - /* 0x10 */ float mMaxPowB; - /* 0x14 */ float mMaxPowF; + /* 0x10 */ float mMaxPowF; + /* 0x14 */ float mMaxPowB; /* 0x18 */ s8 mPosCount; }; // Size = 0x1C @@ -28,8 +78,8 @@ struct Z2MultiSeObj : Z2MultiSeMgr { Z2MultiSeObj(); ~Z2MultiSeObj() {} - /* 0x1C */ u32 field_0x1c; - /* 0x20 */ u8 field_0x20; + /* 0x1C */ u32 mSoundID; + /* 0x20 */ s8 field_0x20; }; // Size = 0x24 class Z2SeMgr : public JASGlobalInstance { @@ -40,8 +90,8 @@ public: /* 802AB830 */ void modHeightAtCamera(Vec const**); /* 802AB93C */ void incrCrowdSize(); /* 802AB960 */ void decrCrowdSize(); - /* 802AB984 */ void seStart(JAISoundID, Vec const*, u32, s8, f32, f32, f32, f32, u8); - /* 802AC50C */ void seStartLevel(JAISoundID, Vec const*, u32, s8, f32, f32, f32, f32, u8); + /* 802AB984 */ bool seStart(JAISoundID, Vec const*, u32, s8, f32, f32, f32, f32, u8); + /* 802AC50C */ bool seStartLevel(JAISoundID, Vec const*, u32, s8, f32, f32, f32, f32, u8); /* 802AD8B0 */ void seStop(JAISoundID, u32); /* 802AD94C */ void seStopAll(u32); /* 802AD9F4 */ void seMoveVolumeAll(f32, u32); @@ -52,19 +102,19 @@ public: /* 802ADE5C */ void setLevObjSE(u32, Vec*, s8); /* 802ADFF4 */ void setMultiTriggerSE(u32, Vec*, s8); /* 802AE184 */ void processSeFramework(); - /* 802AE524 */ void isLevelSe(JAISoundID); + /* 802AE524 */ bool isLevelSe(JAISoundID); /* 802AE5B0 */ bool isSoundCulling(JAISoundID); /* 802B9AC4 */ void resetCrowdSize(); private: /* 0x000 */ JAISoundHandle mSoundHandle[24]; - /* 0x060 */ JAISoundHandles field_0x60; + /* 0x060 */ JAISoundHandles mSoundHandles; /* 0x068 */ Z2MultiSeObj mLevelObjSe[10]; /* 0x1D0 */ u8 mLevelObjectSeCount; /* 0x1D4 */ Z2MultiSeObj mMultiTriggerSe[10]; /* 0x33C */ u8 mMultiTriggerSeCount; - /* 0x33D */ u8 field_0x33d[0x60]; - /* 0x3A0 */ u32 mModY[8]; + /* 0x340 */ Vec field_0x340[8]; + /* 0x3A0 */ Vec const* mModY[8]; /* 0x3C0 */ u8 field_0x3c0; /* 0x3C1 */ u8 field_0x3c1; /* 0x3C2 */ u8 field_0x3c2; diff --git a/include/Z2AudioLib/Z2SeqMgr.h b/include/Z2AudioLib/Z2SeqMgr.h index 8ec6b6ffba..d7db687363 100644 --- a/include/Z2AudioLib/Z2SeqMgr.h +++ b/include/Z2AudioLib/Z2SeqMgr.h @@ -183,6 +183,7 @@ public: } JAISoundHandle* getMainBgmHandle() { return &mMainBgmHandle; } + JAISoundHandle* getSubBgmHandle() { return &mSubBgmHandle; } /* 0x00 */ JAISoundHandle mMainBgmHandle; /* 0x04 */ JAISoundHandle mSubBgmHandle; diff --git a/include/Z2AudioLib/Z2SoundInfo.h b/include/Z2AudioLib/Z2SoundInfo.h index 369d5fd311..675fb0992a 100644 --- a/include/Z2AudioLib/Z2SoundInfo.h +++ b/include/Z2AudioLib/Z2SoundInfo.h @@ -12,7 +12,7 @@ public: /* 802BB448 */ virtual u16 getAudibleSw(JAISoundID) const; /* 802BB00C */ virtual u16 getBgmSeqResourceID(JAISoundID) const; /* 802BBA88 */ virtual s32 getStreamFileEntry(JAISoundID); - /* 802BB090 */ virtual u32 getSoundType(JAISoundID) const; + /* 802BB090 */ virtual int getSoundType(JAISoundID) const; /* 802BB0D8 */ virtual int getCategory(JAISoundID) const; /* 802BB0E0 */ virtual u32 getPriority(JAISoundID) const; /* 802BB6DC */ virtual void getSeInfo(JAISoundID, JAISe*) const; diff --git a/include/Z2AudioLib/Z2SoundMgr.h b/include/Z2AudioLib/Z2SoundMgr.h index 73b6ad5982..76e091574e 100644 --- a/include/Z2AudioLib/Z2SoundMgr.h +++ b/include/Z2AudioLib/Z2SoundMgr.h @@ -23,7 +23,7 @@ public: /* 802AA8C8 */ void stop(); /* 802AA908 */ void initParams(); /* 802AA9E8 */ void multiVolumeSoundID(JAISoundID, f32); - /* 802AAAC4 */ void isPlayingSoundID(JAISoundID); + /* 802AAAC4 */ bool isPlayingSoundID(JAISoundID); /* 802A9EE8 */ virtual bool startSound(JAISoundID, JAISoundHandle*, JGeometry::TVec3 const*); @@ -36,7 +36,7 @@ private: /* 0x004 */ JAISeMgr mSeMgr; /* 0x728 */ JAISeqMgr mSeqMgr; /* 0x79C */ JAIStreamMgr mStreamMgr; - /* 0x80C */ JAISoundID field_0x80c; + /* 0x80C */ JAISoundID mSoundID; }; // Size: 0x810 STATIC_ASSERT(sizeof(Z2SoundMgr) == 0x810); diff --git a/include/Z2AudioLib/Z2SoundStarter.h b/include/Z2AudioLib/Z2SoundStarter.h index ba165155ce..f133ebb5e6 100644 --- a/include/Z2AudioLib/Z2SoundStarter.h +++ b/include/Z2AudioLib/Z2SoundStarter.h @@ -10,8 +10,8 @@ struct Z2SoundStarter : public JAISoundStarter, public JASGlobalInstance const*); - virtual int startSound(JAISoundID, JAISoundHandle*, JGeometry::TVec3 const*, u32, float, + virtual bool startSound(JAISoundID, JAISoundHandle*, JGeometry::TVec3 const*); + virtual bool startSound(JAISoundID, JAISoundHandle*, JGeometry::TVec3 const*, u32, float, float, float, float, float, u32); }; diff --git a/include/Z2AudioLib/Z2SpeechMgr2.h b/include/Z2AudioLib/Z2SpeechMgr2.h index 242d1ec9b0..bbc86ba3e0 100644 --- a/include/Z2AudioLib/Z2SpeechMgr2.h +++ b/include/Z2AudioLib/Z2SpeechMgr2.h @@ -10,7 +10,7 @@ struct Z2SpeechStarter : public Z2SoundStarter { /* 802CCFB8 */ Z2SpeechStarter(); /* 802CBCEC */ virtual ~Z2SpeechStarter(); - /* 802CCFF8 */ virtual int startSound(JAISoundID, JAISoundHandle*, + /* 802CCFF8 */ virtual bool startSound(JAISoundID, JAISoundHandle*, JGeometry::TVec3 const*, u32, f32, f32, f32, f32, f32, u32); }; diff --git a/include/Z2AudioLib/Z2StatusMgr.h b/include/Z2AudioLib/Z2StatusMgr.h index 470b899294..40b0ee3aa3 100644 --- a/include/Z2AudioLib/Z2StatusMgr.h +++ b/include/Z2AudioLib/Z2StatusMgr.h @@ -29,6 +29,7 @@ struct Z2StatusMgr : public JASGlobalInstance { f32 getCameraInWaterDepthRatio() const { return mCameraInWaterDepthRatio; } u8 getHour() { return mHour; } bool isPaused() { return mIsMenuIn; } + bool isHeartGuageOn() { return mHeartGaugeOn; } /* 0x00 */ u8 mHour; /* 0x01 */ u8 mMinute; -- cgit v1.2.3