summaryrefslogtreecommitdiff
path: root/include/JSystem/JAudio2/JASResArcLoader.h
blob: 9f247a0f95156281e280039454437494f7e18930 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#ifndef JASRESARCLOADER_H
#define JASRESARCLOADER_H

#include "JSystem/JKernel/JKRArchive.h"

namespace JASResArcLoader {
    /* 80290BD0 */ size_t getResSize(JKRArchive const*, u16);
    /* 80290C04 */ size_t getResMaxSize(JKRArchive const*);
    /* 80290C7C */ static void loadResourceCallback(void*);
    /* 80290D18 */ int loadResourceAsync(JKRArchive*, u16, u8*, u32, void (*)(u32, u32), u32);
};

typedef struct OSMessageQueue OSMessageQueue;
class JKRArchive;

// from pikmin2
typedef void (*LoadCallback)(u32, u32);

enum ResArcMessage {
	RESARCMSG_Error   = -1,
	RESARCMSG_Success = 0,
};

struct CallbackArgs {
	inline CallbackArgs(u16 id, u8* buf, u32 size, JKRArchive* archive)
	    : mArchive(archive)
	    , mID(id)
	    , mBuffer(buf)
	    , mBufferSize(size)
	    , mCallback(0)
	    , mCallbackArg(0)
	    , mQueue(0)
	{
	}

	JKRArchive* mArchive;   // _00
	u16 mID;                // _04
	u8* mBuffer;            // _08
	u32 mBufferSize;        // _0C
	LoadCallback mCallback; // _10
	u32 mCallbackArg;       // _14, arg to pass to mCallback along with readResource result
	OSMessageQueue* mQueue; // _18
};

#endif /* JASRESARCLOADER_H */