SMG-Decomp
A decompilation of Super Mario Galaxy 1
Loading...
Searching...
No Matches
MemoryUtil.hpp
1#pragma once
2
3#include <revolution.h>
4#include <revolution/mem.h>
5#include <cstring>
6#include <size_t.h>
7#include "JSystem/JKernel/JKRHeap.hpp"
8#include "Game/SingletonHolder.hpp"
9#include "Game/System/HeapMemoryWatcher.hpp"
10
11class JKRHeap;
12class JKRExpHeap;
13class JKRSolidHeap;
14
15namespace MR {
16 void becomeCurrentHeap(JKRHeap *);
17 JKRHeap* getCurrentHeap();
18 bool isEqualCurrentHeap(JKRHeap *);
19
20 void copyMemory(void *, const void *, u32);
21 void fillMemory(void *, u8, u32);
22 void zeroMemory(void *, u32);
23 s32 calcCheckSum(const void *, u32);
24
25 void* allocFromWPadHeap(u32);
26 u8 freeFromWPadHeap(void *);
27
28 JKRExpHeap* getStationedHeapNapa();
29 JKRExpHeap* getStationedHeapGDDR3();
30 JKRSolidHeap* getSceneHeapNapa();
31 JKRSolidHeap* getSceneHeapGDDR3();
32
33 JKRHeap* getAproposHeapForSceneArchive(f32);
34
35 void adjustHeapSize(JKRExpHeap *, const char *);
36
37 inline JKRSolidHeap* getAudHeap() {
38 return SingletonHolder<HeapMemoryWatcher>::get()->mAudSystemHeap;
39 }
40
42 public:
43 CurrentHeapRestorer(JKRHeap *);
45
46 JKRHeap* _0;
47 };
48
50 public:
51 static void* alloc(MEMAllocator *, u32);
52 static void free(MEMAllocator *, void *);
53
54 static MEMAllocatorFunc sAllocatorFunc;
55
56 static MEMAllocator sAllocator;
57 };
58
59 template<int T>
61 public:
62 static void* alloc(MEMAllocator *pAllocator, u32 size) {
63 return JKRHeapAllocator<T>::sHeap->alloc(size, 0);
64 }
65
66 static void free(MEMAllocator *pAllocator, void *pData) {
67 JKRHeapAllocator<T>::sHeap->free(pData);
68 }
69
70 static JKRHeap* sHeap;
71 };
72};