mirror of
https://github.com/zeldaret/ss
synced 2026-05-30 00:46:41 -04:00
fixed up a couple symbols for egg that mHeap uses. Couple fixes
This commit is contained in:
@@ -26249,7 +26249,7 @@ resizeForMBlock__Q23EGG10AssertHeapFPvUl = .text:0x80496760; // type:function si
|
||||
getTotalFreeSize__Q23EGG10AssertHeapFv = .text:0x80496770; // type:function size:0x8
|
||||
getAllocatableSize__Q23EGG10AssertHeapFl = .text:0x80496780; // type:function size:0x8
|
||||
adjust__Q23EGG10AssertHeapFv = .text:0x80496790; // type:function size:0x78
|
||||
getAssertHeapSize__Q23EGG10AssertHeapCFv = .text:0x80496810; // type:function size:0x8
|
||||
getSize__Q23EGG10AssertHeapFv = .text:0x80496810; // type:function size:0x8
|
||||
getHeapKind__Q23EGG10AssertHeapCFv = .text:0x80496820; // type:function size:0x8
|
||||
__ct__Q23EGG8DisposerFv = .text:0x80496830; // type:function size:0x54
|
||||
__dt__Q23EGG8DisposerFv = .text:0x80496890; // type:function size:0x74
|
||||
|
||||
@@ -21,9 +21,9 @@ public:
|
||||
|
||||
public:
|
||||
/* 804963a0 */ AssertHeap(MEMiHeapHead *heapHead);
|
||||
/* 80496460 */ static AssertHeap *create(void *block, u32 size, u16 attr);
|
||||
/* 80496530 */ static AssertHeap *create(u32 size, Heap *heap);
|
||||
/* 80496810 */ static u32 getSize(); // returns 0x7C
|
||||
/* 80496460 */ static AssertHeap *create(void *block, size_t size, u16 attr);
|
||||
/* 80496530 */ static AssertHeap *create(size_t size, Heap *heap);
|
||||
/* 80496810 */ static size_t getSize(); // returns 0x7C
|
||||
};
|
||||
|
||||
} // namespace EGG
|
||||
|
||||
@@ -21,7 +21,7 @@ public:
|
||||
|
||||
public:
|
||||
/* 80495ab0 */ ExpHeap(MEMiHeapHead *heapHead);
|
||||
/* 80495b70 */ static ExpHeap *create(void *block, u32 size, u16 attr);
|
||||
/* 80495b70 */ static ExpHeap *create(void *block, size_t size, u16 attr);
|
||||
/* 80495c30 */ static ExpHeap *create(size_t size, Heap *heap, u16 attr);
|
||||
/* 80495d00 */ void setGroupID(u16 groupId);
|
||||
/* 80495f80 */ u32 getSizeForMBlock(const void *block);
|
||||
|
||||
@@ -21,7 +21,7 @@ public:
|
||||
|
||||
public:
|
||||
/* 80495fa0 */ FrmHeap(MEMiHeapHead *heapHead);
|
||||
/* 80496060 */ static FrmHeap *create(void *block, u32 size, u16 attr);
|
||||
/* 80496060 */ static FrmHeap *create(void *block, size_t size, u16 attr);
|
||||
/* 804962a0 */ void free(u32 flags);
|
||||
/* 80496370 */ void recordState(u32 id); // non official for now
|
||||
/* 80496380 */ void freeState(u32 id); // non official for now
|
||||
|
||||
+2
-2
@@ -1,8 +1,8 @@
|
||||
#ifndef M_HEAP_H
|
||||
#define M_HEAP_H
|
||||
|
||||
#include "egg/core/eggExpHeap.h"
|
||||
#include "egg/core/eggFrmHeap.h"
|
||||
#include "egg/core/eggHeap.h"
|
||||
|
||||
// #include "egg/core/eggExpHeap.h"
|
||||
// #include "egg/core/eggAssertHeap.h"
|
||||
@@ -20,7 +20,7 @@ namespace mHeap {
|
||||
/* 802f0f50 */ EGG::ExpHeap *createExpHeap(size_t size, EGG::Heap *parentHeap, char *name, s32 align, u32 unk);
|
||||
/* 802f1060 */ size_t adjustExpHeap(EGG::Heap *heap);
|
||||
/* 802f10d0 */ size_t expHeapCost(size_t start, size_t size);
|
||||
/* 802f10f0 */ EGG::FrmHeap *createFrmHeap(size_t size, EGG::Heap *parentHeap, char *name, s32 align, u32 unk);
|
||||
/* 802f10f0 */ EGG::FrmHeap *createFrmHeap(size_t size, EGG::Heap *parentHeap, char *name, size_t align, size_t attrs);
|
||||
/* 802f1200 */ void destroyFrmHeap(EGG::FrmHeap *heap);
|
||||
/* 802f1220 */ size_t adjustFrmHeap(EGG::FrmHeap *heap);
|
||||
/* 802f1290 */ size_t frmHeapCost(size_t start, size_t size);
|
||||
|
||||
+17
-16
@@ -6,12 +6,6 @@
|
||||
namespace mHeap {
|
||||
|
||||
u8 g_DefaultGameHeapId = 1;
|
||||
static const char *s_GameHeapNames[4] = {
|
||||
0,
|
||||
"ゲーム用汎用ヒープ1(mHeap::gameHeaps[1])",
|
||||
"ゲーム用汎用ヒープ2(mHeap::gameHeaps[2])",
|
||||
0,
|
||||
};
|
||||
|
||||
#define MIN_ALIGN 0x20
|
||||
|
||||
@@ -24,7 +18,7 @@ EGG::AssertHeap *g_assertHeap;
|
||||
|
||||
u16 copyAttribute(u32 arg) {
|
||||
u16 result = 0;
|
||||
|
||||
|
||||
if ((arg & 1) != 0) {
|
||||
result = 1;
|
||||
}
|
||||
@@ -40,7 +34,8 @@ u16 copyAttribute(u32 arg) {
|
||||
EGG::Heap *setCurrentHeap(EGG::Heap *heap) {
|
||||
return heap->becomeCurrentHeap();
|
||||
}
|
||||
EGG::ExpHeap *createExpHeap(size_t size, EGG::Heap *parent, const char *name, unsigned long align, unsigned long attrs) {
|
||||
EGG::ExpHeap *createExpHeap(size_t size, EGG::Heap *parent, const char *name, unsigned long align,
|
||||
unsigned long attrs) {
|
||||
if (parent == nullptr) {
|
||||
parent = EGG::Heap::sCurrentHeap;
|
||||
}
|
||||
@@ -72,10 +67,10 @@ size_t adjustExpHeap(EGG::ExpHeap *heap) {
|
||||
int ret = 0;
|
||||
if (heap != nullptr) {
|
||||
size_t ad = heap->adjust();
|
||||
size_t cost = mHeap::frmHeapCost(0, 4);
|
||||
size_t cost = mHeap::expHeapCost(0, 4);
|
||||
if (ad >= cost) {
|
||||
ret = ad - cost;
|
||||
}
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
@@ -85,7 +80,7 @@ size_t expHeapCost(size_t size, size_t align) {
|
||||
return size + (~r5 & (r5 + 0x84));
|
||||
}
|
||||
|
||||
EGG::FrmHeap *createFrmHeap(size_t size, EGG::Heap *parent, const char *name, unsigned long align, unsigned long attrs) {
|
||||
EGG::FrmHeap *createFrmHeap(size_t size, EGG::Heap *parent, const char *name, size_t align, size_t attrs) {
|
||||
if (parent == nullptr) {
|
||||
parent = EGG::Heap::sCurrentHeap;
|
||||
}
|
||||
@@ -95,7 +90,7 @@ EGG::FrmHeap *createFrmHeap(size_t size, EGG::Heap *parent, const char *name, un
|
||||
}
|
||||
|
||||
if (size != 0xFFFFFFFF) {
|
||||
size = expHeapCost(size, align);
|
||||
size = frmHeapCost(size, align);
|
||||
} else {
|
||||
size = parent->getAllocatableSize(align);
|
||||
}
|
||||
@@ -125,7 +120,7 @@ size_t adjustFrmHeap(EGG::FrmHeap *heap) {
|
||||
size_t cost = mHeap::frmHeapCost(0, 4);
|
||||
if (ad >= cost) {
|
||||
ret = ad - cost;
|
||||
}
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
@@ -163,18 +158,18 @@ EGG::ExpHeap *createHeap(size_t size, EGG::Heap *block, const char *name) {
|
||||
return heap;
|
||||
}
|
||||
void saveCurrentHeap() {
|
||||
s_SavedCurrentHeap = (EGG::ExpHeap*) EGG::Heap::sCurrentHeap;
|
||||
s_SavedCurrentHeap = (EGG::ExpHeap *)EGG::Heap::sCurrentHeap;
|
||||
}
|
||||
void restoreCurrentHeap() {
|
||||
s_SavedCurrentHeap->becomeCurrentHeap();
|
||||
EGG::Heap::sCurrentHeap = nullptr;
|
||||
s_SavedCurrentHeap = nullptr;
|
||||
}
|
||||
|
||||
EGG::FrmHeap *makeFrmHeapAndUpdate(size_t size, EGG::Heap *parentHeap, const char *name, s32 align, u32 unk) {
|
||||
EGG::FrmHeap *heap = createFrmHeap(size, parentHeap, name, align, unk);
|
||||
if (heap != nullptr) {
|
||||
EGG::Heap *heap2 = setCurrentHeap(heap);
|
||||
s_SavedCurrentHeap = (EGG::ExpHeap*)heap2;
|
||||
s_SavedCurrentHeap = (EGG::ExpHeap *)heap2;
|
||||
}
|
||||
return heap;
|
||||
}
|
||||
@@ -188,6 +183,12 @@ inline bool isValidHeapId(u32 id) {
|
||||
}
|
||||
|
||||
EGG::ExpHeap *createGameHeap(int heapId, size_t size, EGG::Heap *parent) {
|
||||
const char *s_GameHeapNames[4] = {
|
||||
0,
|
||||
"ゲーム用汎用ヒープ1(mHeap::gameHeaps[1])",
|
||||
"ゲーム用汎用ヒープ2(mHeap::gameHeaps[2])",
|
||||
0,
|
||||
};
|
||||
if (!isValidHeapId(heapId)) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user