NSMBW-Decomp
A decompilation of New Super Mario Bros. Wii
Loading...
Searching...
No Matches
snd_AxfxImpl.h
1#ifndef NW4R_SND_AXFX_IMPL_H
2#define NW4R_SND_AXFX_IMPL_H
3#include "nw4r/types_nw4r.h"
4#include <revolution/AXFX.h> // IWYU pragma: export
5#include <revolution/MEM.h> // IWYU pragma: export
6
7namespace nw4r {
8namespace snd {
9namespace detail {
10
11struct AxfxImpl {
12 MEMiHeapHead *mHeap; // at 0x4
13 ulong mAllocCount; // at 0x8
14
15 static const ulong HEAP_SIZE_MIN = MEM_FRM_HEAP_MIN_SIZE + 32;
16
17 AxfxImpl() : mHeap(NULL), mAllocCount(0) {}
18
19 bool CreateHeap(void *pBuffer, ulong size);
20 void DestroyHeap();
21
22 ulong GetHeapTotalSize() {
23 if (mHeap == NULL) {
24 return 0;
25 }
26
27 return MEMGetHeapTotalSize(mHeap);
28 }
29
30 void HookAlloc(AXFXAllocHook *pAllocHook, AXFXFreeHook *pFreeHook);
31 ulong RestoreAlloc(AXFXAllocHook allocHook, AXFXFreeHook freeHook);
32
33 static void *Alloc(ulong size);
34 static void Free(void *pBlock);
35
36 static AxfxImpl *mCurrentFx;
37 static ulong mAllocatedSize;
38};
39
40} // namespace detail
41} // namespace snd
42} // namespace nw4r
43
44#endif