JAudio2 and Z2AudioLib work (#2223)

* JAudio2 and Z2AudioLib work

* check1stDynamicWave matched
This commit is contained in:
Caroline Madsen
2024-10-24 02:25:13 +03:00
committed by GitHub
parent c44ea2139d
commit 5650c7fe08
94 changed files with 3803 additions and 7254 deletions
+14 -14
View File
@@ -774,15 +774,15 @@ config.libs = [
Object(Matching, "JSystem/JAudio2/JASSeqReader.cpp"),
Object(NonMatching, "JSystem/JAudio2/JASAramStream.cpp"),
Object(NonMatching, "JSystem/JAudio2/JASBank.cpp"),
Object(NonMatching, "JSystem/JAudio2/JASBasicBank.cpp"),
Object(Matching, "JSystem/JAudio2/JASBasicBank.cpp", extra_cflags=['-pragma "nosyminline off"']),
Object(Matching, "JSystem/JAudio2/JASVoiceBank.cpp"),
Object(Matching, "JSystem/JAudio2/JASBasicInst.cpp", extra_cflags=['-pragma "nosyminline off"']),
Object(Matching, "JSystem/JAudio2/JASDrumSet.cpp"),
Object(NonMatching, "JSystem/JAudio2/JASBasicWaveBank.cpp"),
Object(NonMatching, "JSystem/JAudio2/JASSimpleWaveBank.cpp"),
Object(NonMatching, "JSystem/JAudio2/JASWSParser.cpp"),
Object(Matching, "JSystem/JAudio2/JASSimpleWaveBank.cpp"),
Object(Matching, "JSystem/JAudio2/JASWSParser.cpp"),
Object(NonMatching, "JSystem/JAudio2/JASBNKParser.cpp"),
Object(NonMatching, "JSystem/JAudio2/JASWaveArcLoader.cpp"),
Object(Matching, "JSystem/JAudio2/JASWaveArcLoader.cpp", extra_cflags=['-pragma "nosyminline off"']),
Object(NonMatching, "JSystem/JAudio2/JASChannel.cpp"),
Object(Matching, "JSystem/JAudio2/JASLfo.cpp"),
Object(Matching, "JSystem/JAudio2/JASOscillator.cpp"),
@@ -790,13 +790,13 @@ config.libs = [
Object(NonMatching, "JSystem/JAudio2/JASAudioThread.cpp"),
Object(Matching, "JSystem/JAudio2/JASAudioReseter.cpp"),
Object(Matching, "JSystem/JAudio2/JASDSPChannel.cpp"),
Object(NonMatching, "JSystem/JAudio2/JASDSPInterface.cpp"),
Object(Matching, "JSystem/JAudio2/JASDSPInterface.cpp"),
Object(Matching, "JSystem/JAudio2/JASDriverIF.cpp"),
Object(Matching, "JSystem/JAudio2/JASSoundParams.cpp"),
Object(NonMatching, "JSystem/JAudio2/dspproc.cpp"),
Object(NonMatching, "JSystem/JAudio2/dsptask.cpp"),
Object(NonMatching, "JSystem/JAudio2/osdsp.cpp"),
Object(NonMatching, "JSystem/JAudio2/osdsp_task.cpp"),
Object(Matching, "JSystem/JAudio2/dspproc.cpp", extra_cflags=["-O4", "-func_align 32"]),
Object(Matching, "JSystem/JAudio2/dsptask.cpp", extra_cflags=["-O4", "-func_align 32"]),
Object(Matching, "JSystem/JAudio2/osdsp.cpp", extra_cflags=["-O4", "-func_align 32", "-str nopool"]),
Object(Matching, "JSystem/JAudio2/osdsp_task.cpp", extra_cflags=["-O4", "-func_align 32"]),
Object(Matching, "JSystem/JAudio2/JAIAudible.cpp"),
Object(Matching, "JSystem/JAudio2/JAIAudience.cpp"),
Object(Matching, "JSystem/JAudio2/JAISe.cpp"),
@@ -810,7 +810,7 @@ config.libs = [
Object(Matching, "JSystem/JAudio2/JAISoundInfo.cpp"),
Object(Matching, "JSystem/JAudio2/JAISoundParams.cpp"),
Object(Matching, "JSystem/JAudio2/JAISoundStarter.cpp"),
Object(NonMatching, "JSystem/JAudio2/JAIStream.cpp"),
Object(NonMatching, "JSystem/JAudio2/JAIStream.cpp", extra_cflags=["-sym off"]),
Object(Matching, "JSystem/JAudio2/JAIStreamDataMgr.cpp"),
Object(NonMatching, "JSystem/JAudio2/JAIStreamMgr.cpp"),
Object(Matching, "JSystem/JAudio2/JAUAudioArcInterpreter.cpp"),
@@ -854,12 +854,12 @@ config.libs = [
Object(NonMatching, "Z2AudioLib/Z2SeqMgr.cpp"),
Object(Matching, "Z2AudioLib/Z2StatusMgr.cpp"),
Object(NonMatching, "Z2AudioLib/Z2SceneMgr.cpp"),
Object(NonMatching, "Z2AudioLib/Z2FxLineMgr.cpp"),
Object(NonMatching, "Z2AudioLib/Z2SoundInfo.cpp"),
Object(Matching, "Z2AudioLib/Z2FxLineMgr.cpp"),
Object(Matching, "Z2AudioLib/Z2SoundInfo.cpp"),
Object(NonMatching, "Z2AudioLib/Z2Audience.cpp"),
Object(Matching, "Z2AudioLib/Z2SoundObject.cpp"),
Object(NonMatching, "Z2AudioLib/Z2SoundObjMgr.cpp"),
Object(NonMatching, "Z2AudioLib/Z2Creature.cpp"),
Object(Matching, "Z2AudioLib/Z2SoundObjMgr.cpp"),
Object(Matching, "Z2AudioLib/Z2Creature.cpp"),
Object(NonMatching, "Z2AudioLib/Z2LinkMgr.cpp"),
Object(NonMatching, "Z2AudioLib/Z2EnvSeMgr.cpp"),
Object(Matching, "Z2AudioLib/Z2WolfHowlMgr.cpp"),
+1 -1
View File
@@ -10,7 +10,7 @@ class JAISeMgr;
* @ingroup jsystem-jaudio
*
*/
class JAISe : public JSULink<JAISe>, public JAISound {
class JAISe : public JSULink<JAISe>, public JASPoolAllocObject<JAISe>, public JAISound {
public:
class TInner {
public:
+3 -2
View File
@@ -42,7 +42,7 @@ class JAISeCategoryMgr : public JAISeqDataUser {
public:
/* 8029F9C4 */ void JAISeMgr_calc_();
/* 8029FB30 */ void JAISeMgr_freeDeadSe_();
/* 8029FC88 */ u32 JAISeMgr_acceptsNewSe_(u32) const;
/* 8029FC88 */ bool JAISeMgr_acceptsNewSe_(u32) const;
/* 8029FD40 */ void sortByPriority_();
/* 8029FDE0 */ void stop(u32);
/* 8029FE34 */ void stop();
@@ -65,6 +65,7 @@ public:
JSUList<JAISe>* getSeList() { return &mSeList; }
int getNumSe() const { return mSeList.getNumLinks(); }
JAIAudience* getAudience() { return (JAIAudience*)field_0x4.field_0x0; }
void JAISeMgr_appendSe_(JAISe* se) { mSeList.append(se); }
/* 0x04 */ JASNonCopyable field_0x4;
/* 0x08 */ JAISoundParamsMove mParams;
@@ -113,7 +114,7 @@ public:
private:
/* 0x008 */ JAIAudience* mAudience;
/* 0x00C */ JAISeqDataMgr* mSeqDataMgr;
/* 0x010 */ int field_0x10;
/* 0x010 */ JAISoundStrategyMgr<JAISe>* mStrategyMgr;
/* 0x014 */ JAISeCategoryMgr mCategoryMgrs[16];
/* 0x6D4 */ JAISoundParamsMove mParams;
}; // Size: 0x724
+1 -1
View File
@@ -50,7 +50,7 @@ public:
}
JAISoundParamsMove* getParams() { return &mMove; }
bool isActive() { return mSeqList.getNumLinks() != 0; }
int getNumActiveSeqs() { return mSeqList.getNumLinks(); }
int getNumActiveSeqs() const { return mSeqList.getNumLinks(); }
void pause(bool i_pause) { mActivity.field_0x0.flags.flag2 = i_pause; }
private:
+2 -1
View File
@@ -2,6 +2,7 @@
#define JAISOUNDCHILD_H
#include "JSystem/JAudio2/JAISoundParams.h"
#include "JSystem/JAudio2/JASHeapCtrl.h"
struct JASTrack;
@@ -9,7 +10,7 @@ struct JASTrack;
* @ingroup jsystem-jaudio
*
*/
struct JAISoundChild {
struct JAISoundChild : JASPoolAllocObject<JAISoundChild> {
/* 802A2AB0 */ void init();
/* 802A2B28 */ void mixOut(JASTrack*);
/* 802A2B7C */ void calc();
+1 -1
View File
@@ -18,7 +18,7 @@ struct JAIStreamDataMgr {
*/
struct JAIStreamAramMgr {
virtual void* newStreamAram(u32*) = 0;
virtual void deleteStreamAram(u32) = 0;
virtual bool deleteStreamAram(u32) = 0;
virtual ~JAIStreamAramMgr();
};
+2 -1
View File
@@ -23,10 +23,11 @@ public:
/* 802A40B8 */ void stopSoundID(JAISoundID);
/* 802A4118 */ void mixOut();
/* 802A4174 */ JAIStream* newStream_();
/* 802B9978 */ bool isActive() const;
/* 802B9978 */ bool isActive() const { return mStreamList.getNumLinks() != 0; }
JAISoundParamsMove* getParams() { return &mParams; }
JAIStreamAramMgr* getStreamAramMgr() { return mStreamAramMgr; }
JSUList<JAIStream>* getStreamList() { return &mStreamList; }
void setStreamDataMgr(JAIStreamDataMgr* param_0) {
JUT_ASSERT(139, !isActive());
streamDataMgr_ = param_0;
+53 -10
View File
@@ -8,9 +8,53 @@ class JASBasicBank;
class JKRHeap;
namespace JASBNKParser {
struct TFileHeader {
/* 0x0 */ u8 _00[4];
/* 0x4 */ u32 mSize;
/* 0x8 */ u8 _08[4];
/* 0xC */ u32 mVersion;
};
namespace Ver1 {
/* 80299600 */ void findChunk(void const*, u32);
/* 8029963C */ void createBasicBank(void const*, JKRHeap*);
struct TOsc {
/* 0x00 */ u8 _00[4];
/* 0x04 */ u8 mTarget;
/* 0x08 */ f32 _08;
/* 0x0C */ u32 mTableOffset;
/* 0x10 */ u32 _10;
/* 0x14 */ f32 mScale;
/* 0x18 */ f32 _18;
};
struct TPercData {
/* 0x00 */ f32 mVolume;
/* 0x04 */ f32 mPitch;
/* 0x08 */ u8 mPan;
/* 0x0A */ u16 mRelease;
/* 0x0C */ u32 field_0xc;
};
struct TChunk {
/* 0x0 */ u32 mID;
/* 0x4 */ u32 mSize;
};
struct TEnvtChunk : TChunk {
/* 0x8 */ u8 mData[0];
};
struct TOscChunk : TChunk {
/* 0x8 */ u32 mCount;
/* 0xC */ TOsc mOsc[0];
};
struct TListChunk : TChunk {
/* 0x8 */ u32 mCount;
/* 0xC */ u32 mOffsets[0];
};
/* 80299600 */ static TChunk* findChunk(void const*, u32);
/* 8029963C */ static JASBasicBank* createBasicBank(void const*, JKRHeap*);
};
namespace Ver0 {
@@ -18,18 +62,17 @@ namespace JASBNKParser {
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*);
/* 80299A3C */ static JASBasicBank* createBasicBank(void const*, JKRHeap*);
/* 80299E68 */ static void findOscPtr(JASBasicBank*, THeader const*, TOsc const*);
/* 80299F8C */ static void getOscTableEndPtr(JASOscillator::Point const*);
};
/* 80299538 */ JASBank* createBank(void const*, JKRHeap*);
/* 80299558 */ JASBasicBank* createBasicBank(void const*, JKRHeap*);
/* 80299538 */ static JASBank* createBank(void const*, JKRHeap*);
/* 80299558 */ static JASBasicBank* createBasicBank(void const*, JKRHeap*);
inline u32 getBankNumber(const void* param_0) { return ((u32*)param_0)[2]; }
inline static u32 getBankNumber(const void* param_0) { return ((u32*)param_0)[2]; }
extern u8 sUsedHeapSize[4];
extern u32 sUsedHeapSize;
};
+17 -1
View File
@@ -1,6 +1,22 @@
#ifndef JASBASICBANK_H
#define JASBASICBANK_H
#include "dolphin/types.h"
#include "JSystem/JAudio2/JASBank.h"
#include "JSystem/JAudio2/JASBasicInst.h"
#include "JSystem/JKernel/JKRHeap.h"
class JASBasicBank : public JASBank {
public:
/* 80297D78 */ JASBasicBank();
/* 80297DA4 */ void newInstTable(u8, JKRHeap*);
/* 80297E00 */ bool getInstParam(int, int, int, JASInstParam*) const;
/* 80297E68 */ void setInst(int, JASInst*);
/* 80297E80 */ JASInst* getInst(int) const;
/* 80297F0C */ ~JASBasicBank() {}
/* 80297F68 */ u32 getType() const { return 'BSIC'; }
/* 0x8 */ JASInst** mInstTable;
/* 0xC */ u8 mInstNumMax;
};
#endif /* JASBASICBANK_H */
+15 -11
View File
@@ -45,13 +45,14 @@ struct JASInst {
struct JASBasicInst : public JASInst {
struct TKeymap {
/* 80298250 */ ~TKeymap();
/* 802982D4 */ TKeymap() { field_0x0 = -1; }
/* 802982D4 */ TKeymap() { mHighKey = -1; }
void setHighKey(int key) { mHighKey = key; }
s32 field_0x0;
u16 field_0x4;
u16 field_0x6;
f32 field_0x8;
f32 field_0xc;
/* 0x0 */ s32 mHighKey;
/* 0x4 */ u16 field_0x4;
/* 0x6 */ u16 field_0x6;
/* 0x8 */ f32 field_0x8;
/* 0xC */ f32 field_0xc;
};
/* 80298014 */ JASBasicInst();
@@ -63,11 +64,14 @@ struct JASBasicInst : public JASInst {
/* 802980F8 */ virtual bool getParam(int, int, JASInstParam*) const;
/* 802982E0 */ virtual u32 getType() const { return 'BSIC'; };
f32 mVolume;
f32 mPitch;
JASOscillator::Data const* field_0xc[2];
u32 mKeymapCount;
TKeymap* mKeymap;
void setVolume(f32 volume) { mVolume = volume; }
void setPitch(f32 pitch) { mPitch = pitch; }
/* 0x04 */ f32 mVolume;
/* 0x08 */ f32 mPitch;
/* 0x0C */ JASOscillator::Data const* field_0xc[2];
/* 0x10 */ u32 mKeymapCount;
/* 0x14 */ TKeymap* mKeymap;
};
+10 -15
View File
@@ -10,11 +10,9 @@
*/
class JASWaveHandle {
public:
/* virtual */ ~JASWaveHandle() {};
//virtual const JASWaveInfo* getWaveInfo() const = 0;
//virtual int getWavePtr() const = 0;
void* vtable;
virtual ~JASWaveHandle() {};
virtual const JASWaveInfo* getWaveInfo() const = 0;
virtual int getWavePtr() const = 0;
};
/**
@@ -23,12 +21,10 @@ public:
*/
class JASWaveBank {
public:
/* 80298B88 */ /* virtual */ ~JASWaveBank() {};
//virtual JASWaveHandle* getWaveHandle(u32) const = 0;
//virtual JASWaveArc* getWaveArc(u32) = 0;
//virtual u32 getArcCount() const = 0;
void* vtable;
/* 80298B88 */ virtual ~JASWaveBank() {};
virtual JASWaveHandle* getWaveHandle(u32) const = 0;
virtual JASWaveArc* getWaveArc(u32) = 0;
virtual u32 getArcCount() const = 0;
};
/**
@@ -37,7 +33,7 @@ public:
*/
struct JASBasicWaveBank : public JASWaveBank {
struct TWaveHandle : public JASWaveHandle {
/* 802985E4 */ ~TWaveHandle();
/* 802985E4 */ ~TWaveHandle() {}
/* 80298B64 */ int getWavePtr() const;
/* 80298C18 */ TWaveHandle() { mHeap = NULL; }
/* 80298C64 */ const JASWaveInfo* getWaveInfo() const { return &field_0x4; }
@@ -57,7 +53,7 @@ struct JASBasicWaveBank : public JASWaveBank {
/* 0x04 */ int field_0x4;
};
struct TWaveGroup {
struct TWaveGroup : JASWaveArc {
/* 802989C0 */ TWaveGroup();
/* 80298A0C */ ~TWaveGroup();
/* 80298A84 */ void setWaveCount(u32, JKRHeap*);
@@ -65,7 +61,6 @@ struct JASBasicWaveBank : public JASWaveBank {
/* 80298B2C */ void onEraseDone();
/* 80298B54 */ u32 getWaveID(int) const;
/* 0x00 */ JASWaveArc base;
/* 0x74 */ JASBasicWaveBank* mBank;
/* 0x78 */ TGroupWaveInfo* mCtrlWaveArray;
/* 0x7C */ u16 mWaveCount;
@@ -82,7 +77,7 @@ struct JASBasicWaveBank : public JASWaveBank {
/* 8029883C */ void decWaveTable(JASBasicWaveBank::TWaveGroup const*);
/* 802988DC */ JASWaveHandle* getWaveHandle(u32) const;
/* 80298910 */ void setWaveInfo(JASBasicWaveBank::TWaveGroup*, int, u16, JASWaveInfo const&);
/* 80298C6C */ JASWaveArc* getWaveArc(u32 param_0); // { return getWaveGroup(param_0); }
/* 80298C6C */ JASWaveArc* getWaveArc(u32 param_0) { return getWaveGroup(param_0); }
/* 80298C8C */ u32 getArcCount() const { return mGroupCount; }
/* 0x04 */ OSMutex field_0x4;
@@ -120,4 +120,6 @@ namespace JASDsp {
extern f32 sDSPVolume;
};
u16 DSP_CreateMap2(u32 msg);
#endif /* JASDSPINTERFACE_H */
+13 -9
View File
@@ -14,13 +14,17 @@ struct JASDrumSet : public JASInst {
/* 802984C4 */ TPerc();
/* 802984E4 */ void setRelease(u32);
f32 mVolume;
f32 mPitch;
f32 mPan;
u16 field_0xc;
u16 field_0xe;
f32 field_0x10;
f32 field_0x14;
void setVolume(f32 volume) { mVolume = volume; }
void setPitch(f32 pitch) { mPitch = pitch; }
void setPan(f32 pan) { mPan = pan; }
/* 0x00 */ f32 mVolume;
/* 0x04 */ f32 mPitch;
/* 0x08 */ f32 mPan;
/* 0x0C */ u16 field_0xc;
/* 0x0E */ u16 field_0xe;
/* 0x10 */ f32 field_0x10;
/* 0x14 */ f32 field_0x14;
};
/* 802982EC */ JASDrumSet();
@@ -30,8 +34,8 @@ struct JASDrumSet : public JASInst {
/* 802984B4 */ void setPerc(int, JASDrumSet::TPerc*);
/* 802984EC */ virtual u32 getType() const;
TPerc** field_0x4;
u8 field_0x8;
/* 0x4 */ TPerc** field_0x4;
/* 0x8 */ u8 field_0x8;
};
#endif /* JASDRUMSET_H */
+13 -5
View File
@@ -1,6 +1,7 @@
#ifndef JASHEAPCTRL_H
#define JASHEAPCTRL_H
#include "JSystem/JKernel/JKRHeap.h"
#include "JSystem/JSupport/JSUList.h"
#include "dolphin/os/OSInterrupt.h"
#include "dolphin/os/OSMutex.h"
@@ -28,12 +29,13 @@ public:
void* getBase() { return mBase; }
bool isAllocated() { return mBase; }
u32 getSize() { return mSize; }
/* 0x00 */ JSUTree<JASHeap> mTree;
/* 0x1C */ OSMutex mMutex;
/* 0x34 */ JASDisposer* mDisposer;
/* 0x38 */ u8* mBase;
/* 0x3c */ u32 mSize;
/* 0x3C */ u32 mSize;
/* 0x40 */ JASHeap* field_0x40;
};
@@ -49,9 +51,9 @@ struct JASGenericMemPool {
/* 80290994 */ void free(void*, u32);
/* 0x00 */ void* field_0x0;
/* 0x04 */ int freeMemCount;
/* 0x08 */ int totalMemCount;
/* 0x0C */ int field_0xc;
/* 0x04 */ u32 freeMemCount;
/* 0x08 */ u32 totalMemCount;
/* 0x0C */ u32 usedMemCount;
};
@@ -151,6 +153,12 @@ class JASMemChunkPool {
u8 mBuffer[ChunkSize];
};
public:
JASMemChunkPool() {
OSInitMutex(&mMutex);
field_0x18 = NULL;
createNewChunk();
}
bool createNewChunk() {
bool uVar2;
if (field_0x18 != NULL && field_0x18->isEmpty()) {
@@ -217,7 +225,7 @@ namespace JASKernel {
/* 80290AD0 */ void setupAramHeap(u32, u32);
/* 80290B08 */ JASHeap* getAramHeap();
extern u8 audioAramHeap[68];
extern JASHeap audioAramHeap;
extern u32 sAramBase;
extern JKRHeap* sSystemHeap;
extern JASMemChunkPool<1024, JASThreadingModel::ObjectLevelLockable>* sCommandHeap;
+8 -8
View File
@@ -18,7 +18,7 @@ public:
/* 802962B0 */ int readMidiValue();
void jump(u32 param_1) {
field_0x04 = (u8*)field_0x00 + param_1;
field_0x04 = field_0x00 + param_1;
}
void jump(void* param_1) {
@@ -26,14 +26,14 @@ public:
}
u32 get24(int param_0) {
return (*(u32*)((int)field_0x00 + param_0 - 1)) & 0xffffff;
return (*(u32*)(field_0x00 + param_0 - 1)) & 0xffffff;
}
u32* getBase() { return field_0x00; }
void* getAddr(u32 param_0) { return (u8*)field_0x00 + param_0; }
u8 getByte(u32 param_0) { return *((u8*)field_0x00 + param_0); }
u16 get16(u32 param_0) { return *(u16*)((u8*)field_0x00 + param_0); }
u32 get32(u32 param_0) { return *(u32*)((u8*)field_0x00 + param_0); }
u32* getBase() { return (u32*)field_0x00; }
void* getAddr(u32 param_0) { return field_0x00 + param_0; }
u8 getByte(u32 param_0) { return *(field_0x00 + param_0); }
u16 get16(u32 param_0) { return *(u16*)(field_0x00 + param_0); }
u32 get32(u32 param_0) { return *(u32*)(field_0x00 + param_0); }
u8* getCur() { return field_0x04; }
u32 readByte() { return *field_0x04++; }
u32 read16() {
@@ -49,7 +49,7 @@ public:
}
u16 getLoopCount() const { return field_0x08 == 0 ? 0 : field_0x2c[field_0x08 - 1]; }
/* 0x00 */ u32* field_0x00;
/* 0x00 */ u8* field_0x00;
/* 0x04 */ u8* field_0x04;
/* 0x08 */ u32 field_0x08;
/* 0x0C */ u16* field_0x0c[8];
+26 -1
View File
@@ -1,6 +1,31 @@
#ifndef JASSIMPLEWAVEBANK_H
#define JASSIMPLEWAVEBANK_H
#include "dolphin/types.h"
#include "JSystem/JAudio2/JASBasicWaveBank.h"
#include "JSystem/JAudio2/JASWaveInfo.h"
#include "JSystem/JKernel/JKRHeap.h"
struct JASSimpleWaveBank : JASWaveBank, JASWaveArc {
struct TWaveHandle : JASWaveHandle {
/* 80298D84 */ ~TWaveHandle() {}
/* 80298F38 */ int getWavePtr() const;
/* 80298F5C */ TWaveHandle();
/* 80298F90 */ const JASWaveInfo* getWaveInfo() const;
/* 0x04 */ JASWaveInfo mWaveInfo;
/* 0x28 */ JASHeap* mHeap;
};
/* 80298C94 */ JASSimpleWaveBank();
/* 80298CF4 */ ~JASSimpleWaveBank();
/* 80298DE0 */ void setWaveTableSize(u32, JKRHeap*);
/* 80298E60 */ JASWaveHandle* getWaveHandle(u32) const;
/* 80298E84 */ void setWaveInfo(u32, JASWaveInfo const&);
/* 80298F18 */ JASWaveArc* getWaveArc(u32);
/* 80298F98 */ u32 getArcCount() const;
/* 0x78 */ TWaveHandle* mWaveTable;
/* 0x7C */ u32 mWaveTableSize;
};
#endif /* JASSIMPLEWAVEBANK_H */
+1 -1
View File
@@ -13,7 +13,7 @@ struct JASSoundParams;
namespace JASDsp {
class TChannel;
extern u32 FILTER_MODE_IIR;
extern const u32 FILTER_MODE_IIR;
};
/**
+55 -45
View File
@@ -17,56 +17,66 @@ public:
template<class T>
class TOffset {
public:
T* ptr(void* param_0) {
T* ptr(void const* param_0) {
return JSUConvertOffsetToPtr<T>(param_0, mOffset);
}
void* mOffset;
private:
/* 0x0 */ u32 mOffset;
};
struct TCtrlWave {
/* 0x0 */ u32 _00;
};
struct TWave {
/* 0x00 */ u8 _00;
/* 0x01 */ u8 _01;
/* 0x02 */ u8 _02;
/* 0x04 */ f32 _04;
/* 0x08 */ u32 mOffset;
/* 0x0C */ u32 _0C;
/* 0x10 */ u32 _10;
/* 0x14 */ u32 _14;
/* 0x18 */ u32 _18;
/* 0x1C */ u32 _1C;
/* 0x20 */ s16 _20;
/* 0x22 */ s16 _22;
};
struct TWaveArchive {
/* 0x00 */ char mFileName[0x74]; // unknown length
/* 0x74 */ TOffset<TWave> mWaveOffsets[0];
};
struct TWaveArchiveBank {
/* 0x0 */ u8 _00[8];
/* 0x8 */ TOffset<TWaveArchive> mArchiveOffsets[0];
};
struct TCtrl {
/* 0x0 */ u8 _00[4];
/* 0x4 */ u32 mWaveCount;
/* 0x8 */ TOffset<TCtrlWave> mCtrlWaveOffsets[0];
};
struct TCtrlScene {
/* 0x0 */ u8 _00[0xC];
/* 0xC */ TOffset<TCtrl> mCtrlOffset;
};
struct TCtrlGroup {
/* 0x0 */ u8 _00[8];
/* 0x8 */ u32 mGroupCount;
/* 0xC */ TOffset<TCtrlScene> mCtrlSceneOffsets[0];
};
/** @fabricated */
struct THeader {
u8 _00[0x10]; // _00 - unknown/padding
u32 mArchiveBankOffset; // _10
u32 mCtrlGroupOffset; // _14
};
struct TCtrlWave {
u32 _00; // _00
};
struct TWave {
u8 _00; // _00
u8 _01; // _01
u8 _02; // _02
f32 _04; // _04
u32 mOffset; // _08
u32 _0C; // _0C
u32 _10; // _10
u32 _14; // _14
u32 _18; // _18
u32 _1C; // _1C
s16 _20; // _20
s16 _22; // _22
};
struct TWaveArchive {
char mFileName[0x74]; // _00 - unknown length
u32 mWaveOffsets[1]; // _74 - dynamic length
};
struct TWaveArchiveBank {
u8 _00[8]; // _00 - unknown/padding
u32 mArchiveOffsets[1]; // _08 - dynamic length
};
struct TCtrl {
u8 _00[4]; // _00 - unknown/padding
u32 mWaveCount; // _04
u32 mCtrlWaveOffsets[1]; // _08 - dynamic length
};
struct TCtrlScene {
u8 _00[12]; // _00 - unknown/padding
u32 mCtrlOffset; // _0C
};
struct TCtrlGroup {
u8 _00[8]; // _00 - unknown/padding
u32 mCtrlGroupCount; // _08
u32 mCtrlSceneOffsets[1]; // _0C - dynamic length
/* 0x00 */ u8 _00[0xC];
/* 0x0C */ u32 mWaveTableSize;
/* 0x10 */ TOffset<TWaveArchiveBank> mArchiveBankOffset;
/* 0x14 */ TOffset<TCtrlGroup> mCtrlGroupOffset;
};
/* 80298FB0 */ static u32 getGroupCount(void const*);
@@ -74,7 +84,7 @@ public:
/* 80299034 */ static JASBasicWaveBank* createBasicWaveBank(void const*, JKRHeap*);
/* 80299264 */ static JASSimpleWaveBank* createSimpleWaveBank(void const*, JKRHeap*);
static u8 sUsedHeapSize[4 + 4 /* padding */];
static u32 sUsedHeapSize;
};
#endif /* JASWSPARSER_H */
+7 -5
View File
@@ -15,7 +15,7 @@ class JKRSolidHeap;
struct JASDisposer {
JASDisposer() {}
/* 8029A7B8 */ virtual ~JASDisposer() {}
/* 80290BCC */ virtual void onDispose();
/* 80290BCC */ virtual void onDispose() {}
};
#define DIR_MAX 64
@@ -45,14 +45,16 @@ struct JASWaveArc : JASDisposer {
/* 8029A404 */ bool sendLoadCmd();
/* 8029A4C0 */ bool load(JASHeap*);
/* 8029A580 */ bool loadTail(JASHeap*);
/* 8029A640 */ void erase();
/* 8029A640 */ bool erase();
/* 8029A6AC */ void setEntryNum(s32);
/* 8029A70C */ void setFileName(char const*);
/* 8029A1B4 */ virtual ~JASWaveArc();
/* 8029A664 */ virtual void onDispose();
/* 80298FA0 */ virtual void onLoadDone();
/* 80298FA4 */ virtual void onEraseDone();
/* 80298FA0 */ virtual void onLoadDone() {}
/* 80298FA4 */ virtual void onEraseDone() {}
s32 getStatus() { return mStatus; }
struct loadToAramCallbackParams {
// not official struct name
@@ -64,7 +66,7 @@ struct JASWaveArc : JASDisposer {
/* 0x04 */ JASHeap mHeap;
/* 0x48 */ u32 _48;
/* 0x4C */ volatile s32 _4c;
/* 0x4C */ volatile s32 mStatus;
/* 0x50 */ int mEntryNum;
/* 0x54 */ u32 mFileLength;
/* 0x58 */ u16 _58;
+2
View File
@@ -1,6 +1,8 @@
#ifndef JASWAVEINFO_H
#define JASWAVEINFO_H
#include "dolphin/types.h"
/**
* @ingroup jsystem-jaudio
*

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