mirror of https://github.com/zeldaret/mm.git
some names
This commit is contained in:
parent
cb094cfad9
commit
71533cf8ca
|
|
@ -7,6 +7,8 @@
|
|||
#include "unk.h"
|
||||
#include "versions.h"
|
||||
|
||||
struct Arena;
|
||||
|
||||
typedef struct ArenaNode {
|
||||
/* 0x0 */ s16 magic; // Should always be 0x7373
|
||||
/* 0x2 */ s16 isFree;
|
||||
|
|
@ -14,20 +16,20 @@ typedef struct ArenaNode {
|
|||
/* 0x8 */ struct ArenaNode* next;
|
||||
/* 0xC */ struct ArenaNode* prev;
|
||||
#if MM_VERSION <= N64_JP_1_1
|
||||
/* 0x10 */ s32 unk_10;
|
||||
/* 0x14 */ s32 unk_14;
|
||||
/* 0x18 */ OSId unk_18;
|
||||
/* 0x1C */ void *unk_1C;
|
||||
/* 0x20 */ OSTime unk_20;
|
||||
/* 0x10 */ const char* filename;
|
||||
/* 0x14 */ int line;
|
||||
/* 0x18 */ OSId threadId;
|
||||
/* 0x1C */ struct Arena *arena;
|
||||
/* 0x20 */ OSTime time;
|
||||
/* 0x28 */ UNK_TYPE1 unk_28[0x8];
|
||||
#endif
|
||||
} ArenaNode; // size = 0x10
|
||||
} ArenaNode; // size = 0x10 N64 US, size = 0x30 N64 JP 1.1
|
||||
|
||||
typedef struct Arena {
|
||||
/* 0x00 */ ArenaNode* head;
|
||||
/* 0x04 */ void* start;
|
||||
/* 0x08 */ OSMesgQueue lock;
|
||||
/* 0x20 */ u8 unk20;
|
||||
/* 0x20 */ u8 allocFailures;
|
||||
/* 0x21 */ u8 isInit;
|
||||
/* 0x22 */ u8 flag;
|
||||
} Arena; // size = 0x24
|
||||
|
|
@ -43,10 +45,13 @@ void __osGetSizes(Arena* arena, size_t* outMaxFree, size_t* outFree, size_t* out
|
|||
s32 __osCheckArena(Arena* arena);
|
||||
|
||||
#if MM_VERSION <= N64_JP_1_1
|
||||
void *__osMallocDebug(Arena *arena, size_t size, s32 arg2, s32 arg3);
|
||||
void *__osMallocRDebug(Arena *arena, size_t size, s32 arg2, s32 arg3);
|
||||
|
||||
void *__osMallocDebug(Arena *arena, size_t size, const char* file, int line);
|
||||
void *__osMallocRDebug(Arena *arena, size_t size, const char* file, int line);
|
||||
void __osFreeDebug(Arena* arena, void* ptr, const char* file, int line);
|
||||
void *__osReallocDebug(Arena* arena, void* ptr, size_t newSize, const char* file, int line);
|
||||
u8 ArenaImpl_GetAllocFailures(Arena* arena);
|
||||
|
||||
extern s32 gTotalAllocFailures;
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -28,22 +28,22 @@
|
|||
#else
|
||||
#define SET_DEBUG_INFO(node, f, l, a) \
|
||||
{ \
|
||||
node->unk_10 = (f); \
|
||||
node->unk_14 = (l); \
|
||||
node->unk_18 = osGetThreadId(NULL); \
|
||||
node->unk_1C = (a); \
|
||||
node->unk_20 = osGetTime(); \
|
||||
node->filename = (f); \
|
||||
node->line = (l); \
|
||||
node->threadId = osGetThreadId(NULL); \
|
||||
node->arena = (a); \
|
||||
node->time = osGetTime(); \
|
||||
} (void) 0
|
||||
|
||||
#define CHECK_CORRECT_ARENA(node, arena) ((node)->unk_1C == (arena))
|
||||
#define CHECK_CORRECT_ARENA(node, arena) ((node)->arena == (arena))
|
||||
|
||||
s32 D_800984A0_unknown = 0;
|
||||
s32 gTotalAllocFailures = 0; // "Arena_failcnt"
|
||||
|
||||
#define CHECK_ALLOC_FAILURE(arena, ptr) \
|
||||
do { \
|
||||
if ((ptr) == NULL) { \
|
||||
D_800984A0_unknown++; \
|
||||
(arena)->unk20++; \
|
||||
gTotalAllocFailures++; \
|
||||
(arena)->allocFailures++; \
|
||||
} \
|
||||
} while (0)
|
||||
#endif
|
||||
|
|
@ -157,7 +157,7 @@ u8 __osMallocIsInitialized(Arena* arena) {
|
|||
}
|
||||
|
||||
#if MM_VERSION <= N64_JP_1_1
|
||||
void *__osMallocDebug(Arena *arena, size_t size, s32 arg2, s32 arg3) {
|
||||
void *__osMallocDebug(Arena *arena, size_t size, const char* file, int line) {
|
||||
ArenaNode *iter;
|
||||
ArenaNode *newNode;
|
||||
void *alloc = NULL;
|
||||
|
|
@ -191,7 +191,7 @@ void *__osMallocDebug(Arena *arena, size_t size, s32 arg2, s32 arg3) {
|
|||
|
||||
iter->isFree = false;
|
||||
|
||||
SET_DEBUG_INFO(iter, arg2, arg3, arena);
|
||||
SET_DEBUG_INFO(iter, file, line, arena);
|
||||
|
||||
alloc = (void*)((uintptr_t)iter + sizeof(ArenaNode));
|
||||
break;
|
||||
|
|
@ -204,8 +204,10 @@ void *__osMallocDebug(Arena *arena, size_t size, s32 arg2, s32 arg3) {
|
|||
|
||||
return alloc;
|
||||
}
|
||||
#endif
|
||||
|
||||
void *__osMallocRDebug(Arena *arena, size_t size, s32 arg2, s32 arg3) {
|
||||
#if MM_VERSION <= N64_JP_1_1
|
||||
void *__osMallocRDebug(Arena *arena, size_t size, const char* file, int line) {
|
||||
ArenaNode *iter;
|
||||
ArenaNode *newNode;
|
||||
size_t blockSize;
|
||||
|
|
@ -240,7 +242,7 @@ void *__osMallocRDebug(Arena *arena, size_t size, s32 arg2, s32 arg3) {
|
|||
|
||||
iter->isFree = false;
|
||||
|
||||
SET_DEBUG_INFO(iter, arg2, arg3, arena);
|
||||
SET_DEBUG_INFO(iter, file, line, arena);
|
||||
|
||||
alloc = (void*)((uintptr_t)iter + sizeof(ArenaNode));
|
||||
break;
|
||||
|
|
@ -309,7 +311,7 @@ void* __osMalloc(Arena* arena, size_t size) {
|
|||
|
||||
iter->isFree = false;
|
||||
|
||||
SET_DEBUG_INFO(iter, 0, 0, arena);
|
||||
SET_DEBUG_INFO(iter, NULL, 0, arena);
|
||||
|
||||
alloc = (void*)((uintptr_t)iter + sizeof(ArenaNode));
|
||||
break;
|
||||
|
|
@ -379,7 +381,7 @@ void* __osMallocR(Arena* arena, size_t size) {
|
|||
|
||||
iter->isFree = false;
|
||||
|
||||
SET_DEBUG_INFO(iter, 0, 0, arena);
|
||||
SET_DEBUG_INFO(iter, NULL, 0, arena);
|
||||
|
||||
alloc = (void*)((uintptr_t)iter + sizeof(ArenaNode));
|
||||
break;
|
||||
|
|
@ -427,7 +429,7 @@ void __osFree(Arena* arena, void* ptr) {
|
|||
prev = node->prev;
|
||||
node->isFree = true;
|
||||
|
||||
SET_DEBUG_INFO(node, 0, 0, arena);
|
||||
SET_DEBUG_INFO(node, NULL, 0, arena);
|
||||
|
||||
// Checks if the next node is contiguous to the current node and if it isn't currently allocated. Then merge the
|
||||
// two nodes into one.
|
||||
|
|
@ -459,9 +461,8 @@ void __osFree(Arena* arena, void* ptr) {
|
|||
ArenaImpl_Unlock(arena);
|
||||
}
|
||||
|
||||
// TODO
|
||||
#if MM_VERSION <= N64_JP_1_1
|
||||
void __osFreeDebug(Arena* arena, void* ptr, s32 arg2, s32 arg3) {
|
||||
void __osFreeDebug(Arena* arena, void* ptr, const char* file, int line) {
|
||||
ArenaNode* node;
|
||||
ArenaNode* next;
|
||||
ArenaNode* prev;
|
||||
|
|
@ -482,7 +483,7 @@ void __osFreeDebug(Arena* arena, void* ptr, s32 arg2, s32 arg3) {
|
|||
prev = node->prev;
|
||||
node->isFree = true;
|
||||
|
||||
SET_DEBUG_INFO(node, arg2, arg3, arena);
|
||||
SET_DEBUG_INFO(node, file, line, arena);
|
||||
|
||||
// Checks if the next node is contiguous to the current node and if it isn't currently allocated. Then merge the
|
||||
// two nodes into one.
|
||||
|
|
@ -674,6 +675,6 @@ s32 __osCheckArena(Arena* arena) {
|
|||
|
||||
#if MM_VERSION <= N64_JP_1_1
|
||||
u8 ArenaImpl_GetAllocFailures(Arena* arena) {
|
||||
return arena->unk20;
|
||||
return arena->allocFailures;
|
||||
}
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -40,8 +40,7 @@ qNaN0x10000 = 0x80098484; // type:f32 size:0x4
|
|||
sNaN0x3FFFFF = 0x80098488; // size:0x4
|
||||
D_8009848C_unknown = 0x8009848C;
|
||||
sRandInt = 0x80098490; // size:0x4
|
||||
D_80098494_unknown = 0x80098494;
|
||||
D_800984A0_unknown = 0x800984A0;
|
||||
gTotalAllocFailures = 0x800984A0; // size:0x4
|
||||
osViModeNtscHpf1 = 0x800984B0; // size:0x50
|
||||
osViModePalLan1 = 0x80098500; // size:0x50
|
||||
D_80098550_unknown = 0x80098550; // type:s16
|
||||
|
|
|
|||
Loading…
Reference in New Issue