2021-03-28 22:49:05 +02:00
|
|
|
#ifndef JASWAVEARCLOADER_H
|
|
|
|
|
#define JASWAVEARCLOADER_H
|
|
|
|
|
|
2023-09-07 09:50:36 -07:00
|
|
|
#include "JSystem/JAudio2/JASHeapCtrl.h"
|
2025-02-10 11:20:42 -08:00
|
|
|
#include <dolphin/os.h>
|
2022-12-31 19:18:40 -07:00
|
|
|
|
2023-05-12 12:10:14 -07:00
|
|
|
class JKRHeap;
|
|
|
|
|
class JKRSolidHeap;
|
2022-12-31 19:18:40 -07:00
|
|
|
|
2024-04-12 00:10:30 -06:00
|
|
|
/**
|
|
|
|
|
* @ingroup jsystem-jaudio
|
|
|
|
|
*
|
|
|
|
|
*/
|
2022-12-31 19:18:40 -07:00
|
|
|
struct JASDisposer {
|
2023-01-01 22:15:07 -07:00
|
|
|
JASDisposer() {}
|
2025-11-30 14:23:42 -08:00
|
|
|
virtual ~JASDisposer() {}
|
|
|
|
|
virtual void onDispose() {}
|
2022-12-31 19:18:40 -07:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
#define DIR_MAX 64
|
2024-04-12 00:10:30 -06:00
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @ingroup jsystem-jaudio
|
|
|
|
|
*
|
|
|
|
|
*/
|
2022-12-31 19:18:40 -07:00
|
|
|
struct JASWaveArcLoader {
|
2025-11-30 14:23:42 -08:00
|
|
|
static JASHeap* getRootHeap();
|
|
|
|
|
static void setCurrentDir(char const*);
|
|
|
|
|
static char* getCurrentDir();
|
2022-12-31 19:18:40 -07:00
|
|
|
|
|
|
|
|
static char sCurrentDir[DIR_MAX];
|
|
|
|
|
static JASHeap* sAramHeap;
|
|
|
|
|
};
|
|
|
|
|
|
2024-04-12 00:10:30 -06:00
|
|
|
/**
|
|
|
|
|
* @ingroup jsystem-jaudio
|
|
|
|
|
*
|
|
|
|
|
*/
|
2022-12-31 19:18:40 -07:00
|
|
|
struct JASWaveArc : JASDisposer {
|
2025-11-30 14:23:42 -08:00
|
|
|
JASWaveArc();
|
|
|
|
|
bool loadSetup(u32);
|
|
|
|
|
bool eraseSetup();
|
|
|
|
|
static void loadToAramCallback(void*);
|
|
|
|
|
bool sendLoadCmd();
|
|
|
|
|
bool load(JASHeap*);
|
|
|
|
|
bool loadTail(JASHeap*);
|
|
|
|
|
bool erase();
|
|
|
|
|
void setEntryNum(s32);
|
|
|
|
|
void setFileName(char const*);
|
2022-12-31 19:18:40 -07:00
|
|
|
|
2025-11-30 14:23:42 -08:00
|
|
|
virtual ~JASWaveArc();
|
|
|
|
|
virtual void onDispose();
|
|
|
|
|
virtual void onLoadDone() {}
|
|
|
|
|
virtual void onEraseDone() {}
|
2024-10-23 19:25:13 -04:00
|
|
|
|
2025-11-27 21:19:33 -08:00
|
|
|
s32 getStatus() const { return mStatus; }
|
2022-12-31 19:18:40 -07:00
|
|
|
|
|
|
|
|
struct loadToAramCallbackParams {
|
|
|
|
|
// not official struct name
|
2023-01-01 22:13:55 -07:00
|
|
|
/* 0x0 */ JASWaveArc* mWavArc;
|
2025-12-18 16:31:44 -05:00
|
|
|
/* 0x4 */ s32 mEntryNum;
|
2023-01-01 22:13:55 -07:00
|
|
|
/* 0x8 */ u32 mBase;
|
|
|
|
|
/* 0xC */ u32 _c;
|
2022-12-31 19:18:40 -07:00
|
|
|
};
|
|
|
|
|
|
2025-06-16 01:38:08 +03:00
|
|
|
/* 0x04 */ mutable JASHeap mHeap;
|
2023-01-01 22:13:55 -07:00
|
|
|
/* 0x48 */ u32 _48;
|
2024-10-23 19:25:13 -04:00
|
|
|
/* 0x4C */ volatile s32 mStatus;
|
2023-01-01 22:13:55 -07:00
|
|
|
/* 0x50 */ int mEntryNum;
|
|
|
|
|
/* 0x54 */ u32 mFileLength;
|
|
|
|
|
/* 0x58 */ u16 _58;
|
|
|
|
|
/* 0x5A */ u16 _5a;
|
|
|
|
|
/* 0x5C */ OSMutex mMutex;
|
2022-12-31 19:18:40 -07:00
|
|
|
};
|
|
|
|
|
|
2021-03-28 22:49:05 +02:00
|
|
|
#endif /* JASWAVEARCLOADER_H */
|