mirror of
https://github.com/zeldaret/tp
synced 2026-06-26 02:14:43 -04:00
853a6addb4
* struct JASWaveArc forward declare fix * JASAramStream::THeader improvement * sizeof/offsetof unhardcodings * JAudio field name/comment pass HUGE thanks to XAYRGA for their work documenting JAudio file formats * Some more names * More names * More minor names * Attempt to fix regressions
96 lines
2.3 KiB
C++
96 lines
2.3 KiB
C++
#ifndef JASWSPARSER_H
|
|
#define JASWSPARSER_H
|
|
|
|
#include "JSystem/JSupport/JSupport.h"
|
|
|
|
class JKRHeap;
|
|
class JASWaveBank;
|
|
struct JASBasicWaveBank;
|
|
struct JASSimpleWaveBank;
|
|
|
|
/**
|
|
* @ingroup jsystem-jaudio
|
|
*
|
|
*/
|
|
class JASWSParser {
|
|
public:
|
|
template<class T>
|
|
class TOffset {
|
|
public:
|
|
T* ptr(void const* param_0) const {
|
|
return JSUConvertOffsetToPtr<T>(param_0, mOffset);
|
|
}
|
|
|
|
private:
|
|
/* 0x0 */ u32 mOffset;
|
|
};
|
|
|
|
struct TCtrlWave {
|
|
/* 0x0 */ u32 _00;
|
|
};
|
|
|
|
struct TWave {
|
|
/* 0x00 */ u8 _00;
|
|
/* 0x01 */ u8 mWaveFormat;
|
|
/* 0x02 */ u8 mBaseKey;
|
|
/* 0x04 */ f32 mSampleRate;
|
|
/* 0x08 */ u32 mAWOffsetStart;
|
|
/* 0x0C */ u32 mAWOffsetEnd;
|
|
/* 0x10 */ u32 mLoopFlags;
|
|
/* 0x14 */ u32 mLoopStartSample;
|
|
/* 0x18 */ u32 mLoopEndSample;
|
|
/* 0x1C */ u32 mSampleCount;
|
|
/* 0x20 */ s16 mpLast;
|
|
/* 0x22 */ s16 mpPenult;
|
|
};
|
|
|
|
struct TWaveArchive {
|
|
/* 0x00 */ char mFileName[0x70];
|
|
/* 0x70 */ u32 mWaveCount;
|
|
/* 0x74 */ TOffset<TWave> mWaveOffsets[0];
|
|
};
|
|
|
|
struct TWaveArchiveBank {
|
|
/* 0x0 */ u32 mMagic; // 'WINF'
|
|
/* 0x0 */ u32 mArchiveCounts;
|
|
/* 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 */ u32 mMagic; // 'WBCT'
|
|
/* 0x4 */ u32 mUnknown;
|
|
/* 0x8 */ u32 mGroupCount;
|
|
/* 0xC */ TOffset<TCtrlScene> mCtrlSceneOffsets[0];
|
|
};
|
|
|
|
/** @fabricated */
|
|
struct THeader {
|
|
/* 0x00 */ u32 mMagic; // 'WSYS'
|
|
/* 0x04 */ u32 mSize;
|
|
/* 0x08 */ u32 mId;
|
|
/* 0x0C */ u32 mWaveTableSize;
|
|
/* 0x10 */ TOffset<TWaveArchiveBank> mArchiveBankOffset;
|
|
/* 0x14 */ TOffset<TCtrlGroup> mCtrlGroupOffset;
|
|
};
|
|
|
|
static u32 getGroupCount(void const*);
|
|
static JASWaveBank* createWaveBank(void const*, JKRHeap*);
|
|
static JASBasicWaveBank* createBasicWaveBank(void const*, JKRHeap*);
|
|
static JASSimpleWaveBank* createSimpleWaveBank(void const*, JKRHeap*);
|
|
|
|
static u32 sUsedHeapSize;
|
|
};
|
|
|
|
#endif /* JASWSPARSER_H */
|