This commit is contained in:
Jcw87
2023-07-18 22:57:25 -07:00
parent 2e17762012
commit 250110cd10
12 changed files with 450 additions and 229 deletions
+8 -1
View File
@@ -1,14 +1,21 @@
#ifndef JAIAUDIBLE_H
#define JAIAUDIBLE_H
#include "JSystem/JGeometry.h"
#include "dolphin/types.h"
struct JASSoundParams;
struct JAIAudible {
class JAIAudible {
public:
virtual ~JAIAudible();
virtual JASSoundParams* getOuterParams(int) = 0;
virtual void calc() = 0;
JGeometry::TVec3<float>& getPos() { return mPos; }
void setPos(const JGeometry::TVec3<float>& other) { mPos.set(other); }
/* 0x04 */ JGeometry::TVec3<float> mPos;
};
#endif /* JAIAUDIBLE_H */
+51 -1
View File
@@ -1,6 +1,56 @@
#ifndef JAISE_H
#define JAISE_H
#include "dolphin/types.h"
#include "JSystem/JAudio2/JAISeqDataMgr.h"
#include "JSystem/JAudio2/JAISound.h"
#include "JSystem/JAudio2/JASTrack.h"
#include "JSystem/JSupport/JSUList.h"
class JAISeMgr;
class JAISe : public JSULink<JAISe>, public JAISound {
public:
class TInner {
public:
TInner() : mSeqData(NULL, 0) {}
/* 0x000 */ u32 mProperPriority;
/* 0x004 */ u32 mPriority;
/* 0x008 */ JASSoundParams mSoundParams;
/* 0x01c */ JASTrack track;
/* 0x264 */ JAISeqData mSeqData;
/* 0x26c */ u8 field_0x26c;
/* 0x270 */ JAISeMgr* seMgr;
/* 0x274 */ JAISoundStrategyMgr<JAISe>* mSoundStrategyMgr;
/* 0x278 */ JAISoundStrategyMgr__unknown<JAISe>* field_0x278;
/* 0x27c */ JAITempoMgr mTempoMgr;
};
/* 8029F6D8 */ virtual bool getNumChild() const;
/* 8029F6E0 */ virtual bool getChild(int);
/* 8029F6E8 */ virtual void releaseChild(int);
/* 8029F84C */ virtual JASTrack* getTrack();
/* 8029F854 */ virtual JASTrack* getChildTrack(int);
/* 8029F864 */ virtual JAISe* asSe();
/* 8029F868 */ virtual JAITempoMgr* getTempoMgr();
/* 8029F5C8 */ virtual bool JAISound_tryDie_();
/* 8029F03C */ JAISe(JAISeMgr*, JAISoundStrategyMgr<JAISe>*, u32);
/* 8029F0F8 */ void mixOut_(JASSoundParams const&);
/* 8029F214 */ void stopTrack_();
/* 8029F250 */ void startTrack_(JASSoundParams const&);
/* 8029F304 */ void JAISeCategoryMgr_mixOut_(bool, JASSoundParams const&, JAISoundActivity);
/* 8029F4CC */ void JAISeCategoryMgr_calc_();
/* 8029F650 */ void JAISeMgr_startID_(JAISoundID, JGeometry::TVec3<f32> const*, JAIAudience*);
/* 8029F6EC */ bool prepare_getSeqData_();
/* 8029F78C */ void prepare_();
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; }
/* 0x0ac */ TInner inner_;
};
#endif /* JAISE_H */
+2 -22
View File
@@ -1,6 +1,7 @@
#ifndef JAISEMGR_H
#define JAISEMGR_H
#include "JSystem/JAudio2/JAISe.h"
#include "JSystem/JAudio2/JAISeqDataMgr.h"
#include "JSystem/JAudio2/JAISound.h"
#include "JSystem/JAudio2/JAISoundParams.h"
@@ -27,28 +28,6 @@ struct JAISeCategoryArrangement {
class JAISeMgr;
struct JAISePlaceHolder {
u8 field_0x0[0x10];
};
struct JAISe : public JAISePlaceHolder, public JAISound {
/* 8029F03C */ JAISe(JAISeMgr*, JAISoundStrategyMgr<JAISe>*, u32);
/* 8029F304 */ void JAISeCategoryMgr_mixOut_(bool, JASSoundParams const&, JAISoundActivity);
/* 8029F4CC */ void JAISeCategoryMgr_calc_();
/* 8029F650 */ void JAISeMgr_startID_(JAISoundID, JGeometry::TVec3<f32> const*, JAIAudience*);
JAISeqData* getSeqData() { return &mSeqData; }
u32 JAISeCategoryMgr_getProperPriority_() const { return mProperPriority; }
u32 JAISeCategoryMgr_getPriority_() const { return mPriority;}
bool isFarAway() const { return mPriority == -1; }
/* 0x0aa */ u8 field_0x0[2];
/* 0x0ac */ u32 mProperPriority;
/* 0x0b0 */ u32 mPriority;
/* 0x0b4 */ u8 field_0xb4[0x25c];
/* 0x310 */ JAISeqData mSeqData;
};
class JAISeCategoryMgr : public JAISeqDataUser {
public:
/* 8029F9C4 */ void JAISeMgr_calc_();
@@ -117,6 +96,7 @@ public:
}
return mAudience;
}
JAISeqDataMgr* getSeqDataMgr() { return mSeqDataMgr; }
private:
/* 0x008 */ JAIAudience* mAudience;
+3 -1
View File
@@ -1,6 +1,8 @@
#ifndef JAISEQ_H
#define JAISEQ_H
#include "dolphin/types.h"
#include "JSystem/JAudio2/JAISound.h"
#include "JSystem/JAudio2/JASTrack.h"
#include "JSystem/JSupport/JSUList.h"
#endif /* JAISEQ_H */
+9 -4
View File
@@ -5,16 +5,21 @@
#include "dolphin/types.h"
struct JAISeqData {
/* 0x00 */ u32 field_0x0;
JAISeqData(void* param_0, u32 param_1) {
field_0x0 = param_0;
field_0x4 = param_1;
}
/* 0x00 */ void* field_0x0;
/* 0x04 */ u32 field_0x4;
};
struct JAISeqDataRegion {
bool intersects(JAISeqData& seqData) const {
if (field_0x0 + field_0x4 < seqData.field_0x0) {
if (field_0x0 + field_0x4 < (u32)seqData.field_0x0) {
return false;
}
if (seqData.field_0x0 + seqData.field_0x4 < field_0x0) {
if ((u32)seqData.field_0x0 + seqData.field_0x4 < field_0x0) {
return false;
}
return true;
@@ -33,7 +38,7 @@ struct JAISeqDataUser {
struct JAISeqDataMgr {
virtual ~JAISeqDataMgr();
virtual void getSeqData(JAISoundID, JAISeqData*) = 0;
virtual int getSeqData(JAISoundID, JAISeqData*) = 0;
virtual int releaseSeqData() = 0;
virtual void setSeqDataUser(JAISeqDataUser*) = 0;
};
+54 -11
View File
@@ -53,12 +53,13 @@ struct JAISoundStatus_ {
inline bool isPlaying() { return state.unk == 5; }
inline bool isMute() { return field_0x0.flags.mute; }
inline bool isPaused() { return field_0x0.flags.paused; }
/* 0x0 */ union {
u8 value;
struct {
u8 flag1 : 1;
u8 mute : 1;
u8 paused : 1;
u8 flag3 : 1;
u8 flag4 : 1;
@@ -120,13 +121,24 @@ struct JAISoundFader {
return false;
}
inline void calc() { mIntensity = mTransition.apply(mIntensity); }
f32 getIntensity() { return mIntensity; }
/* 0x00 */ f32 mIntensity;
/* 0x04 */ JAISoundParamsTransition::TTransition mTransition;
}; // Size: 0x10
template <typename A0>
struct JAISoundStrategyMgr__unknown {
virtual void virtual2();
virtual void virtual3(A0*);
virtual void virtual4(A0*, const JASSoundParams&);
};
template <typename A0>
struct JAISoundStrategyMgr {};
struct JAISoundStrategyMgr {
virtual void virtual2();
virtual JAISoundStrategyMgr__unknown<A0>* virtual3(JAISoundID);
virtual void virtual4(JAISoundStrategyMgr__unknown<A0>*);
};
/* JAISoundStrategyMgr<JAISe> */
struct JAISoundStrategyMgr__template0 {};
/* JAISoundStrategyMgr<JAISeq> */
@@ -136,14 +148,45 @@ struct JAISoundStrategyMgr__template2 {};
class JAISoundActivity {
public:
void init() { field_0x0 = 0; }
void init() { field_0x0.value = 0; }
/* 0x0 */ u8 field_0x0;
/* 0x0 */ union {
u8 value;
struct {
u8 flag1 : 1;
u8 flag2 : 1;
u8 flag3 : 1;
u8 flag4 : 1;
u8 flag5 : 1;
u8 flag6 : 1;
u8 flag7 : 1;
u8 flag8 : 1;
} flags;
} field_0x0;
};
class JAITempoMgr {
public:
/* 0x00 */ f32 mTempo;
/* 0x04 */ JAISoundParamsTransition::TTransition field_0x4;
JAITempoMgr() { init(); }
void init() { setTempo(1.0f); }
void setTempo(f32 param_0) {
mTempo = param_0;
field_0x4.zero();
}
f32 getTempo() { return mTempo; }
void calc() { mTempo = field_0x4.apply(mTempo); }
};
class JAISoundHandle;
class JAIAudible;
class JAIAudience;
class JAISe;
class JAISeq;
class JAIStream;
class JAITempoMgr;
class JAISound {
public:
/* 802A21A0 */ void releaseHandle();
@@ -163,12 +206,12 @@ public:
virtual void getNumChild() = 0;
virtual void getChild() = 0;
virtual void releaseChild() = 0;
/* 802A25D8 */ virtual bool asSe();
/* 802A25E0 */ virtual bool asSeq();
/* 802A25E8 */ virtual bool asStream();
virtual void getTrack() = 0;
virtual void getChildTrack() = 0;
virtual void getTempoMgr() = 0;
/* 802A25D8 */ virtual JAISe* asSe();
/* 802A25E0 */ virtual JAISeq* asSeq();
/* 802A25E8 */ virtual JAIStream* asStream();
virtual JASTrack* getTrack() = 0;
virtual JASTrack* getChildTrack() = 0;
virtual JAITempoMgr* getTempoMgr() = 0;
virtual bool JAISound_tryDie_() = 0;
JAISoundID getID() const;
@@ -200,7 +243,7 @@ public:
/* 0x18 */ JAISoundID soundID;
/* 0x1C */ JAISoundStatus_ status_;
/* 0x24 */ JAISoundFader fader;
/* 0x34 */ s32 mPriority;
/* 0x34 */ u32 mPriority;
/* 0x38 */ s32 mCount;
/* 0x3C */ JAISoundParams params;
}; // Size: 0x98
+2 -1
View File
@@ -1,6 +1,7 @@
#ifndef JAISTREAM_H
#define JAISTREAM_H
#include "dolphin/types.h"
#include "JSystem/JAudio2/JAISound.h"
#include "JSystem/JSupport/JSUList.h"
#endif /* JAISTREAM_H */
+57 -1
View File
@@ -30,12 +30,23 @@ struct JASChannel {
};
struct JASTrack {
enum Status {
STATUS_FREE,
STATUS_RUN,
};
struct TChannelMgr {
/* 802930DC */ TChannelMgr(JASTrack*);
/* 80293148 */ void init();
/* 802931B0 */ void releaseAll();
/* 80293220 */ void noteOff(u32, u16);
/* 802932A0 */ void setPauseFlag(bool);
/* 0x00 */ JASChannel* field_0x0[8];
/* 0x20 */ u8 field_0x20[0x18]; // JASChannelParams
/* 0x38 */ short field_0x38[8];
/* 0x48 */ JASSoundParams* field_0x48;
/* 0x4c */ JASTrack* field_0x4c;
};
struct TList {
@@ -47,6 +58,10 @@ struct JASTrack {
struct MoveParam_ {
/* 802932C8 */ MoveParam_();
/* 0x00 */ f32 field_0x0;
/* 0x04 */ f32 field_0x4;
/* 0x08 */ int field_0x8;
};
/* 80291228 */ JASTrack();
@@ -109,9 +124,50 @@ struct JASTrack {
static u8 sTrackList[16];
int getChannelMgrCount() { return channelMgrCount; }
u8 getStatus() const { return mStatus; }
JASTrack* getChild(int index) { return field_0x130[index]; }
/* 0x000 */ u8 field_0x0[0x1d0];
/* 0x000 */ u8 field_0x0[0x5c]; // JASSeqCtrl
/* 0x05C */ u8 field_0x5c[0x24]; // JASTrackPort
/* 0x080 */ u8 field_0x80[0x1c]; // JASRegisterParam
/* 0x09C */ MoveParam_ field_0x9c[6];
/* 0x0e4 */ u8 mOscParam[0x30]; // JASOscillator::Data[2]
/* 0x114 */ u8 field_0x114[0x18]; // JASOscillator::Point[4]
/* 0x12C */ JASTrack* mParent;
/* 0x130 */ JASTrack* field_0x130[16];
/* 0x170 */ TChannelMgr* field_0x170[4];
/* 0x180 */ TChannelMgr field_0x180;
/* 0x1D0 */ int channelMgrCount;
/* 0x1D4 */ void* field_0x1d4;
/* 0x1D8 */ f32 field_0x1d8;
/* 0x1DC */ f32 field_0x1dc;
/* 0x1E0 */ f32 field_0x1e0;
/* 0x1E4 */ f32 field_0x1e4;
/* 0x1E8 */ f32 field_0x1e8;
/* 0x1EC */ f32 field_0x1ec;
/* 0x1F0 */ u16 field_0x1f0;
/* 0x1F2 */ u16 field_0x1f2;
/* 0x1F4 */ short field_0x1f4[8];
/* 0x204 */ short field_0x204[8];
/* 0x214 */ char field_0x214;
/* 0x215 */ u8 mStatus;
/* 0x216 */ u8 field_0x216;
/* 0x218 */ f32 field_0x218;
/* 0x21C */ f32 field_0x21c;
/* 0x220 */ u32 field_0x220;
/* 0x224 */ short field_0x224;
/* 0x226 */ u16 field_0x226;
/* 0x228 */ u16 field_0x228;
/* 0x22A */ s8 field_0x22a;
/* 0x22B */ char field_0x22b;
/* 0x22C */ short field_0x22c;
/* 0x22E */ short field_0x22e;
/* 0x230 */ char field_0x230;
/* 0x231 */ char field_0x231;
/* 0x232 */ char field_0x232;
/* 0x233 */ char field_0x233;
/* 0x234 */ u16 field_0x234[6];
/* 0x240 */ u8 field_0x240[0x08]; // TLinkListNode
};
struct JASDefaultBankTable : public JASGlobalInstance<JASDefaultBankTable> {