mirror of
https://github.com/zeldaret/ss
synced 2026-05-24 23:21:41 -04:00
75 lines
2.5 KiB
C++
75 lines
2.5 KiB
C++
#ifndef M_HEAP_H
|
|
#define M_HEAP_H
|
|
|
|
#include "common.h"
|
|
#include "egg/core/eggExpHeap.h"
|
|
#include "egg/core/eggFrmHeap.h"
|
|
|
|
// #include "egg/core/eggExpHeap.h"
|
|
// #include "egg/core/eggAssertHeap.h"
|
|
|
|
// TODO: REWRITE THIS
|
|
|
|
namespace EGG {
|
|
class ExpHeap;
|
|
class AssertHeap;
|
|
} // namespace EGG
|
|
// TODO: Doc symbols and func locations
|
|
class mHeap {
|
|
public:
|
|
// TODO - fix when importing RVL MEM
|
|
enum AllocOptBit_t {
|
|
OPT_NONE = 0x0,
|
|
OPT_1 = 0x1,
|
|
OPT_2 = 0x2,
|
|
OPT_4 = 0x4,
|
|
};
|
|
|
|
static u16 GetOptFlag(AllocOptBit_t);
|
|
static EGG::Heap *setCurrentHeap(EGG::Heap *);
|
|
static EGG::Heap *
|
|
createExpHeap(size_t size, EGG::Heap *parentHeap, const char *name, u32 align, AllocOptBit_t attrs);
|
|
static size_t adjustExpHeap(EGG::ExpHeap *heap);
|
|
static size_t expHeapCost(size_t start, u32 size);
|
|
static EGG::FrmHeap *
|
|
createFrmHeap(size_t size, EGG::Heap *parentHeap, const char *name, size_t align, AllocOptBit_t attrs);
|
|
static void destroyFrmHeap(EGG::FrmHeap *heap);
|
|
static size_t adjustFrmHeap(EGG::FrmHeap *heap);
|
|
static size_t frmHeapCost(size_t start, u32 size);
|
|
mHeap() : heap(nullptr) {}
|
|
mHeap(EGG::Heap *heap);
|
|
~mHeap();
|
|
static EGG::ExpHeap *createHeap(size_t size, EGG::Heap *, const char *name);
|
|
static void saveCurrentHeap();
|
|
static void restoreCurrentHeap();
|
|
static EGG::FrmHeap *
|
|
createFrmHeapToCurrent(size_t size, EGG::Heap *parentHeap, const char *name, u32 align, AllocOptBit_t attrs);
|
|
static int getGameHeapNum();
|
|
static EGG::Heap *createGameHeap(int heapNum, size_t size, EGG::Heap *parentHeap);
|
|
static void createGameHeap1(size_t size, EGG::Heap *parentHeap);
|
|
static void createArchiveHeap(size_t size, EGG::Heap *parentHeap);
|
|
static void createCommandHeap(size_t size, EGG::Heap *parentHeap);
|
|
static void createDylinkHeap(size_t size, EGG::Heap *parentHeap);
|
|
static EGG::AssertHeap *createAssertHeap(EGG::Heap *parentHeap);
|
|
static EGG::FrmHeap *makeHeapOnCurrentGameHeap(size_t size, const char *name, u32 align, AllocOptBit_t flags);
|
|
|
|
static int getDefaultGameHeapId();
|
|
|
|
static bool isValidHeapId(u32 id) {
|
|
return id >= 1 && id <= 2;
|
|
}
|
|
|
|
static EGG::Heap *g_gameHeaps[4];
|
|
static EGG::Heap *s_SavedCurrentHeap;
|
|
static EGG::Heap *g_archiveHeap;
|
|
static EGG::Heap *g_commandHeap;
|
|
static EGG::ExpHeap *g_dylinkHeap;
|
|
static EGG::AssertHeap *g_assertHeap;
|
|
static u8 g_DefaultGameHeapId;
|
|
static const char *const s_GameHeapNames[4];
|
|
|
|
EGG::Heap *heap;
|
|
}; // namespace mHeap
|
|
|
|
#endif
|