JAUSectionHeap, Z2SoundInfo, others (#1925)

* Z2SoundInfo

* JAUSectionHeap

* Z2EnvSeMgr

* Z2AudioMgr

* m_Do_audio

* d_a_alink
This commit is contained in:
Jcw87
2023-09-15 15:20:09 +03:00
committed by GitHub
parent f834379a8b
commit 287ae62349
159 changed files with 1349 additions and 1511 deletions
+1
View File
@@ -89,6 +89,7 @@ public:
return mAudience;
}
JAISeqDataMgr* getSeqDataMgr() { return mSeqDataMgr; }
JAISoundParamsMove* getParams() { return &mParams; }
private:
/* 0x008 */ JAIAudience* mAudience;
+17
View File
@@ -4,6 +4,7 @@
#include "JSystem/JAudio2/JAISeqDataMgr.h"
#include "JSystem/JAudio2/JASGadget.h"
#include "JSystem/JSupport/JSUList.h"
#include "JSystem/JUtility/JUTAssert.h"
struct JAIAudience;
class JAISeq;
@@ -25,7 +26,23 @@ public:
/* 802A1804 */ virtual bool isUsingSeqData(JAISeqDataRegion const&);
/* 802A1870 */ virtual int releaseSeqData(JAISeqDataRegion const&);
void setAudience(JAIAudience* param_0) { mAudience = param_0; }
JAISeqDataMgr* getSeqDataMgr() { return seqDataMgr_; }
void setSeqDataMgr(JAISeqDataMgr* param_0) {
JUT_ASSERT("JAISeqMgr.h", 0x7c, !isActive());
resetSeqDataMgr();
seqDataMgr_ = param_0;
seqDataMgr_->setSeqDataUser(this);
}
void resetSeqDataMgr() {
JUT_ASSERT("JAISeqMgr.h", 0x83, !isActive());
if (seqDataMgr_) {
seqDataMgr_->setSeqDataUser(NULL);
seqDataMgr_ = NULL;
}
}
JAISoundParamsMove* getParams() { return &mMove; }
bool isActive() { return mSeqList.getNumLinks() != 0; }
private:
/* 0x04 */ JAISoundActivity mActivity;
+1
View File
@@ -17,6 +17,7 @@ public:
JAISoundID() {}
bool isAnonymous() { return mId.mFullId == 0xffffffff; }
void setAnonymous() { mId.mFullId = -1; }
union {
u32 mFullId;
+1 -1
View File
@@ -10,7 +10,7 @@ class JAISoundID;
class JAISoundHandle {
public:
JAISoundHandle() {sound_ = NULL;};
~JAISoundHandle() {}
~JAISoundHandle() { releaseSound(); }
bool isSoundAttached() const { return sound_ != NULL; }
+2 -2
View File
@@ -4,12 +4,12 @@
#include "JSystem/JAudio2/JAISound.h"
struct JAIStreamDataMgr {
virtual void getStreamFileEntry(JAISoundID) = 0;
virtual s32 getStreamFileEntry(JAISoundID) = 0;
virtual ~JAIStreamDataMgr();
};
struct JAIStreamAramMgr {
virtual void newStreamAram(u32*) = 0;
virtual void* newStreamAram(u32*) = 0;
virtual void deleteStreamAram(u32) = 0;
virtual ~JAIStreamAramMgr();
};
+15 -2
View File
@@ -4,7 +4,10 @@
#include "JSystem/JAudio2/JAISound.h"
#include "JSystem/JAudio2/JASGadget.h"
#include "JSystem/JSupport/JSUList.h"
#include "JSystem/JUtility/JUTAssert.h"
class JAIStreamAramMgr;
class JAIStreamDataMgr;
class JAIStreamMgr;
class JAIStream {
@@ -29,13 +32,23 @@ public:
/* 802A4174 */ void newStream_();
/* 802B9978 */ void isActive() const;
JAISoundParamsMove* getParams() { return &mParams; }
void setStreamDataMgr(JAIStreamDataMgr* param_0) {
JUT_ASSERT("JAIStreamMgr.h", 0x8b, !isActive());
mStreamDataMgr = param_0;
}
void setStreamAramMgr(JAIStreamAramMgr* param_0) {
JUT_ASSERT("JAIStreamMgr.h", 0x9d, !isActive());
mStreamAramMgr = param_0;
}
private:
/* 0x00 */ JAISoundActivity mActivity;
/* 0x04 */ JAISoundParamsMove mParams;
/* 0x54 */ int field_0x54;
/* 0x58 */ JSUList<JAIStream> mStreamList;
/* 0x64 */ int field_0x64;
/* 0x68 */ int field_0x68;
/* 0x64 */ JAIStreamDataMgr * mStreamDataMgr;
/* 0x68 */ JAIStreamAramMgr* mStreamAramMgr;
/* 0x6C */ int field_0x6c;
}; // Size: 0x70
+3 -1
View File
@@ -89,9 +89,11 @@ public:
/* 0x1C4 */ float field_0x1c4[6];
/* 0x1DC */ short field_0x1dc[6];
u32 getBlockSize() { return sBlockSize; }
static u8 sLoadThread[4];
static u8 sReadBuffer[4];
static u8 sBlockSize[4];
static u32 sBlockSize;
static u8 sChannelMax[4];
};
+31 -1
View File
@@ -1,6 +1,36 @@
#ifndef JASBNKPARSER_H
#define JASBNKPARSER_H
#include "dolphin/types.h"
#include "JSystem/JAudio2/JASOscillator.h"
class JASBank;
class JASBasicBank;
class JKRHeap;
namespace JASBNKParser {
namespace Ver1 {
/* 80299600 */ void findChunk(void const*, u32);
/* 8029963C */ void createBasicBank(void const*, JKRHeap*);
};
namespace Ver0 {
struct THeader {};
struct TOsc {};
/* 80299A3C */ void createBasicBank(void const*, JKRHeap*);
/* 80299E68 */ void findOscPtr(JASBasicBank*, JASBNKParser::Ver0::THeader const*,
JASBNKParser::Ver0::TOsc const*);
/* 80299F8C */ void getOscTableEndPtr(JASOscillator::Point const*);
};
/* 80299538 */ JASBank* createBank(void const*, JKRHeap*);
/* 80299558 */ JASBasicBank* createBasicBank(void const*, JKRHeap*);
inline u32 getBankNumber(const void* param_0) { return ((u32*)param_0)[2]; }
extern u8 sUsedHeapSize[4];
};
#endif /* JASBNKPARSER_H */
+13
View File
@@ -0,0 +1,13 @@
#ifndef JASBANKLIST_H
#define JASBANKLIST_H
#include "dolphin/types.h"
class JASBank;
class JASBankList {
public:
virtual JASBank* getBank(u32 param_0) const = 0;
};
#endif /* JASBANKLIST_H */
+22
View File
@@ -0,0 +1,22 @@
#ifndef JASBANKTABLE_H
#define JASBANKTABLE_H
#include "JSystem/JAudio2/JASBankList.h"
#include "JSystem/JAudio2/JASGadget.h"
template<size_t N>
class JASBankTable : public JASBankList {
public:
JASBank* getBank(u32 param_0) { return mArray.get(param_0); }
virtual JASBank* getBank(u32 param_0) const { return mArray.get(param_0); }
void registBank(u32 param_0, JASBank* param_1) { mArray.set(param_0, param_1); }
private:
JASPtrArray<JASBank, N> mArray;
};
class JASDefaultBankTable : public JASBankTable<256>, public JASGlobalInstance<JASDefaultBankTable> {
public:
};
#endif /* JASBANKLIST_H */
+2 -1
View File
@@ -2,6 +2,7 @@
#define JASGADGET_H
#include "JSystem/JUtility/JUTAssert.h"
#include "MSL_C/string.h"
template<class T>
class JASGlobalInstance {
@@ -61,7 +62,7 @@ private:
template<class T, size_t N>
class JASPtrArray : public JASPtrTable<T> {
public:
JASPtrArray() : JASPtrTable(mArray, N) {}
JASPtrArray() : JASPtrTable<T>(mArray, N) {}
private:
/* 0x08 */ T* mArray[N];
+1 -1
View File
@@ -11,7 +11,7 @@ class JKRSolidHeap;
class JASHeap {
public:
/* 80290140 */ JASHeap(JASDisposer*);
/* 80290140 */ JASHeap(JASDisposer* param_0 = NULL);
/* 802901AC */ void initRootHeap(void*, u32);
/* 8029021C */ bool alloc(JASHeap*, u32);
/* 802903F4 */ bool allocTail(JASHeap*, u32);
+2
View File
@@ -86,6 +86,8 @@ public:
/* 802956B0 */ s32 parseCommand(JASTrack*, u8, u16);
/* 80295864 */ s32 parseRegCommand(JASTrack*, int);
static void registerSeqCallback(u16 (*param_0)(JASTrack*, u16)) { sCallBackFunc = param_0; }
static CmdInfo sCmdInfo[96];
static CmdInfo sExtCmdInfo[255];
static u16 (*sCallBackFunc)(JASTrack*, u16);
+32
View File
@@ -0,0 +1,32 @@
#ifndef JAUAUDIBLEPARAM_H
#define JAUAUDIBLEPARAM_H
#include "dolphin/types.h"
struct JAUAudibleParam {
f32 getDopplerPower() const {
return (u32)((*(u8*)&field_0x0.raw >> 4) & 0xf) * (1.0f / 15.0f);
}
union {
struct {
u16 f0;
u16 f1;
} half;
struct {
u8 b0_0 : 1;
u8 b0_1 : 1;
u8 b0_2 : 1;
u8 b0_3 : 1;
u8 b0_4 : 1;
u8 b0_5 : 1;
u8 b0_6 : 1;
u8 b0_7 : 1;
u8 b1;
u8 b2;
u8 b3;
} bytes;
u32 raw;
} field_0x0;
};
#endif /* JAUAUDIBLEPARAM_H */
+18 -3
View File
@@ -2,13 +2,28 @@
#define JAUBANKTABLE_H
#include "JSystem/JAudio2/JASGadget.h"
#include "JSystem/JAudio2/JASBankList.h"
#include "JSystem/JSupport/JSUList.h"
struct JASBank;
struct JAUBankTable {
/* 802A4AA0 */ /*virtual*/ JASBank* getBank(u32) const;
class JASBank;
class JAUBankTable /* : public JASBankList */ {
public:
JAUBankTable(u32 param_0, JASBank** param_1, u32 param_2) : mBankPtrTable(param_1, param_2) {
field_0xc = param_0;
}
/* 802A4AA0 */ JASBank* getBank(u32) const;
JASBank* getBank(u32 param_0) { return mBankPtrTable.get(param_0); }
void registBank(u32 param_0, JASBank* param_1) { mBankPtrTable.set(param_0, param_1); }
/* 0x0 */ void* vtable;
/* 0x4 */ JASPtrTable<JASBank> mBankPtrTable;
/* 0xC */ u32 field_0xc;
};
class JAUBankTableLink : public JSULink<JAUBankTable>, public JAUBankTable {
public:
JAUBankTableLink(u32 param_0, JASBank** param_1, u32 param_2) : JSULink<JAUBankTable>(this), JAUBankTable(param_0, param_1, param_2) {}
};
struct JAUBankTableDictionary : JSUList<JAUBankTable> {
+47 -37
View File
@@ -9,15 +9,19 @@
#include "MSL_C/bitset.h"
class JAISeqData;
class JAISeqDataMgr;
class JAISeqDataUser;
class JAIStreamDataMgr;
class JASVoiceBank;
class JAUBankTableLink;
class JAUDisposer_;
class JAUSectionHeap;
class JAUSeqDataMgr_SeqCollection;
class JAUSoundTable;
class JAUSoundNameTable;
class JKRArchive;
class JKRSolidHeap;
class JAUSection /* : public JKRDisposer, JSULink<JAUSection> */ {
class JAUSection /* : public JKRDisposer, protected JSULink<JAUSection> */ {
public:
struct TSectionData {
/* 802A4EE8 */ TSectionData();
@@ -26,12 +30,12 @@ public:
/* 0x00 */ JAUDynamicSeqDataBlocks field_0x00;
/* 0x28 */ JSUList<JAUSeqDataBlock> field_0x28;
/* 0x34 */ std::bitset<255> field_0x34;
/* 0x54 */ std::bitset<255> field_0x54;
/* 0x34 */ std::bitset<255> registeredWaveBankTables;
/* 0x54 */ std::bitset<255> registeredBankTables;
/* 0x74 */ JAUBankTableDictionary field_0x74;
/* 0x80 */ int field_0x80;
/* 0x84 */ int field_0x84;
/* 0x88 */ int field_0x88;
/* 0x80 */ JAISeqDataMgr* field_0x80;
/* 0x84 */ const void* mBstDst;
/* 0x88 */ const void* mBstnDst;
/* 0x8C */ JSUList<JAUDisposer_> field_0x8c;
/* 0x98 */ s32 field_0x98;
/* 0x9C */ int field_0x9c;
@@ -40,34 +44,35 @@ public:
/* 802A5060 */ JAUSection(JAUSectionHeap*, u32, s32);
/* 802A50F8 */ void finishBuild();
/* 802A5160 */ void dispose();
/* 802A51E4 */ void newSoundTable(void const*, u32, bool);
/* 802A52A0 */ void newSoundNameTable(void const*, u32, bool);
/* 802A535C */ void newStreamFileTable(void const*, bool);
/* 802A5500 */ void newSeSeqCollection(void const*, u32);
/* 802A5598 */ void newStaticSeqDataBlock_(JAISoundID, u32);
/* 802A56C8 */ void newStaticSeqData(JAISoundID, void const*, u32);
/* 802A5730 */ void newStaticSeqData(JAISoundID);
/* 802A57F0 */ void newCopy(void const*, u32, s32);
/* 802A5854 */ void newWaveBank(u32, void const*);
/* 802A5948 */ void loadWaveArc(u32, u32);
/* 802A5A50 */ void newBank(void const*, u32);
/* 802A5B84 */ void newVoiceBank(u32, u32);
/* 802A5CAC */ void beginNewBankTable(u32, u32);
/* 802A5D9C */ void endNewBankTable();
/* 802A6468 */ ~JAUSection();
/* 802A5160 */ /* virtual */ void dispose();
/* 802A51E4 */ JAUSoundTable* newSoundTable(void const*, u32, bool);
/* 802A52A0 */ JAUSoundNameTable* newSoundNameTable(void const*, u32, bool);
/* 802A535C */ JAIStreamDataMgr* newStreamFileTable(void const*, bool);
/* 802A5500 */ JAISeqDataMgr* newSeSeqCollection(void const*, u32);
/* 802A5598 */ u8* newStaticSeqDataBlock_(JAISoundID, u32);
/* 802A56C8 */ bool newStaticSeqData(JAISoundID, void const*, u32);
/* 802A5730 */ bool newStaticSeqData(JAISoundID);
/* 802A57F0 */ void* newCopy(void const*, u32, s32);
/* 802A5854 */ JASWaveBank* newWaveBank(u32, void const*);
/* 802A5948 */ bool loadWaveArc(u32, u32);
/* 802A5A50 */ JASBank* newBank(void const*, u32);
/* 802A5B84 */ JASVoiceBank* newVoiceBank(u32, u32);
/* 802A5CAC */ bool beginNewBankTable(u32, u32);
/* 802A5D9C */ JAUBankTable* endNewBankTable();
/* 802A6468 */ /* virtual */ ~JAUSection();
bool isBuilding() { return field_0x2c; }
//bool isOpen() { return this == sectionHeap_->getOpenSection(); }
bool isOpen();
JAUSectionHeap* asSectionHeap() { return (JAUSection*)sectionHeap_ == this ? sectionHeap_ : NULL; }
JKRHeap* getHeap_();
/* 0x00 */ JKRDisposer base1;
/* 0x18 */ JSULink<JAUSection> base2;
/* 0x28 */ u32 field_0x28;
/* 0x2C */ bool field_0x2c;
/* 0x30 */ JAUSectionHeap* sectionHeap_;
/* 0x34 */ int field_0x34;
/* 0x38 */ TSectionData mSectionData;
/* 0x34 */ JAUBankTableLink* buildingBankTable_;
/* 0x38 */ TSectionData data_;
};
class JAUSectionHeap /* : public JAUSection, JASGlobalInstance<JAUSectionHeap>, JAISeqDataMgr */ {
@@ -75,34 +80,39 @@ public:
struct TSectionHeapData {
/* 802A5DF4 */ TSectionHeapData();
/* 0x000 */ JAUWaveBankTable field_0x000;
/* 0x000 */ JAUWaveBankTable waveBankTable;
/* 0x404 */ JAISeqDataUser* seqDataUser;
/* 0x408 */ JAUDynamicSeqDataBlocks field_0x408;
/* 0x430 */ JAUSeqDataMgr_SeqCollection* field_0x430;
/* 0x434 */ JAIStreamDataMgr* field_0x434;
/* 0x438 */ int field_0x438;
/* 0x43C */ int field_0x43c;
/* 0x430 */ JAISeqDataMgr* seSeqDataMgr_;
/* 0x434 */ JAIStreamDataMgr* streamDataMgr_;
/* 0x438 */ JAUSoundTable* soundTable;
/* 0x43C */ JAUSoundNameTable* soundNameTable;
};
/* 802A5E60 */ void setSeqDataArchive(JKRArchive*);
/* 802A5EC0 */ void loadDynamicSeq(JAISoundID, bool);
/* 802A5EC0 */ bool loadDynamicSeq(JAISoundID, bool);
/* 802A5EF8 */ void releaseIdleDynamicSeqDataBlock();
/* 802A5FE0 */ JAUSectionHeap(JKRSolidHeap*, bool, s32);
/* 802A6094 */ JAUSection* getOpenSection();
/* 802A60A0 */ void setSeqDataUser(JAISeqDataUser*);
/* 802A60AC */ void newDynamicSeqBlock(u32);
/* 802A61D0 */ int getSeqData(JAISoundID, JAISeqData*);
/* 802A60A0 */ bool setSeqDataUser(JAISeqDataUser*);
/* 802A60AC */ bool newDynamicSeqBlock(u32);
/* 802A61D0 */ s32 getSeqData(JAISoundID, JAISeqData*);
/* 802A6270 */ int releaseSeqData();
/* 802A6278 */ ~JAUSectionHeap();
JAUWaveBankTable& getWaveBankTable() { return sectionHeapData_.waveBankTable; }
/* 0x00 */ JAUSection base1;
/* 0xDC */ u8 base2[0xE0 - 0xDC]; // JAISeqDataMgr
/* 0xE0 */ JKRSolidHeap* mHeap;
/* 0xE0 */ JKRHeap* mHeap;
/* 0xE4 */ int field_0xe4;
/* 0xE8 */ JSUList<JAUSection> mSectionList;
/* 0xF4 */ TSectionHeapData field_0xf4;
/* 0xF4 */ TSectionHeapData sectionHeapData_;
};
inline JKRHeap* JAUSection::getHeap_() { return sectionHeap_->mHeap; }
inline bool JAUSection::isOpen() { return this == sectionHeap_->getOpenSection(); }
JAUSectionHeap* JAUNewSectionHeap(bool);
#endif /* JAUSECTIONHEAP_H */
+1 -1
View File
@@ -21,7 +21,7 @@ public:
/* 0x0C */ int field_0xc;
};
class JAUSeqDataMgr_SeqCollection : JAISeqDataMgr, JAUSeqCollection {
class JAUSeqDataMgr_SeqCollection : public JAISeqDataMgr, public JAUSeqCollection {
public:
/* 802A677C */ JAUSeqDataMgr_SeqCollection();
/* 802A67D0 */ bool setSeqDataUser(JAISeqDataUser*);
+11 -3
View File
@@ -10,6 +10,12 @@ class JKRArchive;
struct JAUSeqDataBlock {
/* 802A68F4 */ JAUSeqDataBlock();
/* 0x00 */ JSULink<JAUSeqDataBlock> field_0x0;
/* 0x10 */ JAISoundID field_0x10;
/* 0x14 */ u8* field_0x14;
/* 0x18 */ u32 field_0x18;
/* 0x1C */ int field_0x1c;
};
class JAUSeqDataBlocks {
@@ -27,13 +33,15 @@ class JAUDynamicSeqDataBlocks {
public:
/* 802A6A58 */ JAUDynamicSeqDataBlocks();
/* 802A6AA0 */ void setSeqDataArchive(JKRArchive*);
/* 802A6AA8 */ void getSeqData(JAISoundID, JAISeqDataUser*, JAISeqData*, bool);
/* 802A6B8C */ void appendDynamicSeqDataBlock(JAUSeqDataBlock*);
/* 802A6C18 */ void loadDynamicSeq(JAISoundID, bool, JAISeqDataUser*);
/* 802A6AA8 */ s32 getSeqData(JAISoundID, JAISeqDataUser*, JAISeqData*, bool);
/* 802A6B8C */ bool appendDynamicSeqDataBlock(JAUSeqDataBlock*);
/* 802A6C18 */ bool loadDynamicSeq(JAISoundID, bool, JAISeqDataUser*);
/* 802A6D48 */ void releaseIdleDynamicSeqDataBlock(JAISeqDataUser*);
/* 802A6E00 */ void releaseIdleDynamicSeqDataBlock_(JAISeqDataUser*, u32);
/* 802A6EDC */ void rearrangeLoadingSeqs_();
JKRArchive* getSeqDataArchive() { return seqDataArchive_; }
/* 0x00 */ JAUSeqDataBlocks field_0x0;
/* 0x0C */ JAUSeqDataBlocks field_0xc;
/* 0x18 */ JAUSeqDataBlocks field_0x18;
+14
View File
@@ -0,0 +1,14 @@
#ifndef JAUSOUNDINFO_H
#define JAUSOUNDINFO_H
#include "JSystem/JAudio2/JAISound.h"
#include "JSystem/JAudio2/JASGadget.h"
class JAUSoundInfo : public JASGlobalInstance<JAUSoundInfo> {
public:
JAUSoundInfo(bool param_0) : JASGlobalInstance<JAUSoundInfo>(param_0) {}
virtual void getAudibleSw(JAISoundID) const = 0;
virtual u16 getBgmSeqResourceID(JAISoundID) const = 0;
};
#endif /* JAUSOUNDINFO_H */
+19 -2
View File
@@ -4,14 +4,31 @@
#include "JSystem/JAudio2/JAISound.h"
#include "JSystem/JAudio2/JASGadget.h"
struct JAUSoundTable : public JASGlobalInstance<JAUSoundTable> {
class JAUSoundTable : public JASGlobalInstance<JAUSoundTable> {
public:
JAUSoundTable(bool param_0) : JASGlobalInstance<JAUSoundTable>(param_0) {
field_0x0 = NULL;
field_0x4 = 0;
}
~JAUSoundTable() {}
/* 802A7114 */ void init(void const*);
/* 802A7160 */ void getTypeID(JAISoundID) const;
/* 802A7160 */ u8 getTypeID(JAISoundID) const;
/* 802A728C */ void getData(JAISoundID) const;
void* field_0x0;
int field_0x4;
};
struct JAUSoundNameTable : public JASGlobalInstance<JAUSoundNameTable> {
JAUSoundNameTable(bool param_0) : JASGlobalInstance<JAUSoundNameTable>(param_0) {
field_0x0 = NULL;
field_0x4 = 0;
}
~JAUSoundNameTable() {}
/* 802A73D4 */ void init(void const*);
void* field_0x0;
int field_0x4;
};
#endif /* JAUSOUNDTABLE_H */

Some files were not shown because too many files have changed in this diff Show More