diff options
| author | hatal175 <hatal175@users.noreply.github.com> | 2024-01-09 01:19:07 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-01-08 15:19:07 -0800 |
| commit | 28bef08667e3e1ef9eb85a8a96cb23af700afe02 (patch) | |
| tree | ff43e05e48a69c869a144a53d1bf3c1aea5eb88e /include/JSystem | |
| parent | 40dae638a7c0b7e967eda55d3aa1089163213c5d (diff) | |
Work on Audio, JAUSeqDataBlockMgr OK (#2027)
Diffstat (limited to 'include/JSystem')
| -rw-r--r-- | include/JSystem/JAudio2/JAISeqDataMgr.h | 8 | ||||
| -rw-r--r-- | include/JSystem/JAudio2/JASBasicWaveBank.h | 1 | ||||
| -rw-r--r-- | include/JSystem/JAudio2/JASHeapCtrl.h | 2 | ||||
| -rw-r--r-- | include/JSystem/JAudio2/JASWSParser.h | 72 | ||||
| -rw-r--r-- | include/JSystem/JAudio2/JAUAudioArcLoader.h | 2 | ||||
| -rw-r--r-- | include/JSystem/JAudio2/JAUSectionHeap.h | 6 | ||||
| -rw-r--r-- | include/JSystem/JAudio2/JAUSeqDataBlockMgr.h | 18 | ||||
| -rw-r--r-- | include/JSystem/JKernel/JKRArchive.h | 4 |
8 files changed, 98 insertions, 15 deletions
diff --git a/include/JSystem/JAudio2/JAISeqDataMgr.h b/include/JSystem/JAudio2/JAISeqDataMgr.h index ed8ce8d14e..0943933228 100644 --- a/include/JSystem/JAudio2/JAISeqDataMgr.h +++ b/include/JSystem/JAudio2/JAISeqDataMgr.h @@ -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; }; diff --git a/include/JSystem/JAudio2/JASBasicWaveBank.h b/include/JSystem/JAudio2/JASBasicWaveBank.h index 3d22d24ff7..d923124233 100644 --- a/include/JSystem/JAudio2/JASBasicWaveBank.h +++ b/include/JSystem/JAudio2/JASBasicWaveBank.h @@ -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; diff --git a/include/JSystem/JAudio2/JASHeapCtrl.h b/include/JSystem/JAudio2/JASHeapCtrl.h index b5d7f50c99..4edbe1e271 100644 --- a/include/JSystem/JAudio2/JASHeapCtrl.h +++ b/include/JSystem/JAudio2/JASHeapCtrl.h @@ -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; } diff --git a/include/JSystem/JAudio2/JASWSParser.h b/include/JSystem/JAudio2/JASWSParser.h index 7ef0bdc6cb..8555857de9 100644 --- a/include/JSystem/JAudio2/JASWSParser.h +++ b/include/JSystem/JAudio2/JASWSParser.h @@ -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 */ diff --git a/include/JSystem/JAudio2/JAUAudioArcLoader.h b/include/JSystem/JAudio2/JAUAudioArcLoader.h index 5cfd255490..c81e726b32 100644 --- a/include/JSystem/JAudio2/JAUAudioArcLoader.h +++ b/include/JSystem/JAudio2/JAUAudioArcLoader.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; }; diff --git a/include/JSystem/JAudio2/JAUSectionHeap.h b/include/JSystem/JAudio2/JAUSectionHeap.h index d3126391bb..aa1bde433a 100644 --- a/include/JSystem/JAudio2/JAUSectionHeap.h +++ b/include/JSystem/JAudio2/JAUSectionHeap.h @@ -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 diff --git a/include/JSystem/JAudio2/JAUSeqDataBlockMgr.h b/include/JSystem/JAudio2/JAUSeqDataBlockMgr.h index dd6bae8a15..c3176f9ab7 100644 --- a/include/JSystem/JAudio2/JAUSeqDataBlockMgr.h +++ b/include/JSystem/JAudio2/JAUSeqDataBlockMgr.h @@ -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_; } diff --git a/include/JSystem/JKernel/JKRArchive.h b/include/JSystem/JKernel/JKRArchive.h index c7800b7359..2db5dc079e 100644 --- a/include/JSystem/JKernel/JKRArchive.h +++ b/include/JSystem/JKernel/JKRArchive.h @@ -226,4 +226,8 @@ inline bool JKRRemoveResource(void* resource, JKRFileLoader* fileLoader) { return JKRFileLoader::removeResource(resource, fileLoader); } +inline void JKRUnmountArchive(JKRArchive* arc) { + arc->unmount(); +} + #endif
\ No newline at end of file |
