mirror of
https://github.com/zeldaret/tp
synced 2026-06-04 02:47:02 -04:00
Work on Audio, JAUSeqDataBlockMgr OK (#2027)
This commit is contained in:
@@ -20,17 +20,17 @@ struct JAISeqData {
|
||||
|
||||
struct JAISeqDataRegion {
|
||||
bool intersects(JAISeqData& seqData) const {
|
||||
if (field_0x0 + field_0x4 < (u32)seqData.field_0x0) {
|
||||
if ((u32)addr + size < (u32)seqData.field_0x0) {
|
||||
return false;
|
||||
}
|
||||
if ((u32)seqData.field_0x0 + seqData.field_0x4 < field_0x0) {
|
||||
if ((u32)seqData.field_0x0 + seqData.field_0x4 < (u32)addr) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/* 0x00 */ u32 field_0x0;
|
||||
/* 0x04 */ u32 field_0x4;
|
||||
/* 0x00 */ u8* addr;
|
||||
/* 0x04 */ u32 size;
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -30,6 +30,7 @@ struct JASBasicWaveBank : public JASWaveBank {
|
||||
/* 80298B64 */ int getWavePtr() const;
|
||||
/* 80298C18 */ TWaveHandle() { mHeap = NULL; }
|
||||
/* 80298C64 */ const JASWaveInfo* getWaveInfo() const { return &field_0x4; }
|
||||
bool compareHeap(JASHeap* heap) const { return mHeap == heap;}
|
||||
|
||||
/* 0x04 */ JASWaveInfo field_0x4;
|
||||
/* 0x28 */ JASHeap* mHeap;
|
||||
|
||||
@@ -20,7 +20,7 @@ public:
|
||||
/* 802906F0 */ JASHeap* getTailHeap();
|
||||
/* 8029077C */ u32 getTailOffset();
|
||||
/* 802907E0 */ u32 getCurOffset();
|
||||
/* 80290B54 */ ~JASHeap();
|
||||
/* 80290B54 */ ~JASHeap() {}
|
||||
|
||||
void* getBase() { return mBase; }
|
||||
bool isAllocated() { return mBase; }
|
||||
|
||||
@@ -1,5 +1,77 @@
|
||||
#ifndef JASWSPARSER_H
|
||||
#define JASWSPARSER_H
|
||||
|
||||
#include "dolphin/types.h"
|
||||
#include "JSystem/JSupport/JSupport.h"
|
||||
|
||||
class JKRHeap;
|
||||
class JASWaveBank;
|
||||
class JASBasicWaveBank;
|
||||
class JASSimpleWaveBank;
|
||||
|
||||
class JASWSParser {
|
||||
public:
|
||||
template<class T>
|
||||
class TOffset {
|
||||
public:
|
||||
T* ptr(void* param_0) {
|
||||
return JSUConvertOffsetToPtr<T>(param_0, mOffset);
|
||||
}
|
||||
void* mOffset;
|
||||
};
|
||||
|
||||
/** @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
|
||||
};
|
||||
|
||||
/* 80298FB0 */ static u32 getGroupCount(void const*);
|
||||
/* 80298FD8 */ static JASWaveBank* createWaveBank(void const*, JKRHeap*);
|
||||
/* 80299034 */ static JASBasicWaveBank* createBasicWaveBank(void const*, JKRHeap*);
|
||||
/* 80299264 */ static JASSimpleWaveBank* createSimpleWaveBank(void const*, JKRHeap*);
|
||||
|
||||
static u8 sUsedHeapSize[4 + 4 /* padding */];
|
||||
};
|
||||
|
||||
#endif /* JASWSPARSER_H */
|
||||
|
||||
@@ -22,7 +22,7 @@ public:
|
||||
/* 802A4990 */ virtual void beginBNKList(u32, u32);
|
||||
/* 802A49B4 */ virtual void endBNKList();
|
||||
/* 802A49D8 */ virtual void readMaxSeCategory(int, int, int);
|
||||
/* 802A49FC */ virtual ~JAUAudioArcLoader();
|
||||
/* 802A49FC */ virtual ~JAUAudioArcLoader() {}
|
||||
|
||||
/* 0x0C */ JAUSection* mSection;
|
||||
};
|
||||
|
||||
@@ -101,6 +101,12 @@ public:
|
||||
/* 802A6278 */ ~JAUSectionHeap();
|
||||
|
||||
JAUWaveBankTable& getWaveBankTable() { return sectionHeapData_.waveBankTable; }
|
||||
JKRHeap* getHeap() {
|
||||
if (getOpenSection()->isBuilding() != 0) {
|
||||
return mHeap;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* 0x00 */ JAUSection base1;
|
||||
/* 0xDC */ u8 base2[0xE0 - 0xDC]; // JAISeqDataMgr
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
#define JAUSEQDATABLOCKMGR_H
|
||||
|
||||
#include "JSystem/JAudio2/JAISound.h"
|
||||
#include "JSystem/JAudio2/JAISeqDataMgr.h"
|
||||
#include "JSystem/JSupport/JSUList.h"
|
||||
|
||||
class JAISeqData;
|
||||
@@ -13,18 +14,17 @@ struct JAUSeqDataBlock {
|
||||
|
||||
/* 0x00 */ JSULink<JAUSeqDataBlock> field_0x0;
|
||||
/* 0x10 */ JAISoundID field_0x10;
|
||||
/* 0x14 */ u8* field_0x14;
|
||||
/* 0x18 */ u32 field_0x18;
|
||||
/* 0x14 */ JAISeqDataRegion field_0x14;
|
||||
/* 0x1C */ int field_0x1c;
|
||||
};
|
||||
|
||||
class JAUSeqDataBlocks {
|
||||
public:
|
||||
/* 802A6928 */ void getSeqData(JAISoundID);
|
||||
/* 802A6974 */ void seekFreeBlock(u32);
|
||||
/* 802A69D8 */ void append(JSULink<JAUSeqDataBlock>*);
|
||||
/* 802A69F8 */ void remove(JSULink<JAUSeqDataBlock>*);
|
||||
/* 802A6A18 */ void hasFailedBlock(JAISoundID);
|
||||
/* 802A6928 */ u8* getSeqData(JAISoundID);
|
||||
/* 802A6974 */ JSULink<JAUSeqDataBlock>* seekFreeBlock(u32);
|
||||
/* 802A69D8 */ bool append(JSULink<JAUSeqDataBlock>*);
|
||||
/* 802A69F8 */ bool remove(JSULink<JAUSeqDataBlock>*);
|
||||
/* 802A6A18 */ bool hasFailedBlock(JAISoundID);
|
||||
|
||||
/* 0x00 */ JSUList<JAUSeqDataBlock> field_0x0;
|
||||
};
|
||||
@@ -36,8 +36,8 @@ public:
|
||||
/* 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);
|
||||
/* 802A6D48 */ u32 releaseIdleDynamicSeqDataBlock(JAISeqDataUser*);
|
||||
/* 802A6E00 */ JAUSeqDataBlock* releaseIdleDynamicSeqDataBlock_(JAISeqDataUser*, u32);
|
||||
/* 802A6EDC */ void rearrangeLoadingSeqs_();
|
||||
|
||||
JKRArchive* getSeqDataArchive() { return seqDataArchive_; }
|
||||
|
||||
@@ -226,4 +226,8 @@ inline bool JKRRemoveResource(void* resource, JKRFileLoader* fileLoader) {
|
||||
return JKRFileLoader::removeResource(resource, fileLoader);
|
||||
}
|
||||
|
||||
inline void JKRUnmountArchive(JKRArchive* arc) {
|
||||
arc->unmount();
|
||||
}
|
||||
|
||||
#endif
|
||||
@@ -6,7 +6,7 @@
|
||||
class Z2AudioArcLoader : public JAUAudioArcLoader {
|
||||
public:
|
||||
Z2AudioArcLoader(JAUSection*);
|
||||
virtual ~Z2AudioArcLoader();
|
||||
virtual ~Z2AudioArcLoader() {}
|
||||
|
||||
virtual bool readCommandMore(u32);
|
||||
void readBFCA(const void*);
|
||||
|
||||
Reference in New Issue
Block a user