Files
tp/libs/JSystem/include/JSystem/JAudio2/JASWSParser.h
T
Pieter-Jan Briers 853a6addb4 JAudio naming pass (#3139)
* 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
2026-06-19 17:44:05 -07:00

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 */