mirror of
https://github.com/zeldaret/oot.git
synced 2024-11-14 21:40:03 +00:00
174af7384d
* cleanup libultra * fixes - use quotes instead of <> for includes - add macros for zelda specific thread priorities - fix Makefile - properly format the remaining pfs structs * fix button macros + add CHECK_BTN_ANY/CHECK_BTN_ALL * remove ULTRA_ABS * fix includes * update z_player.c/z_lib.c + run format.sh * merge upstream/master * fix include in En_Goroiwa * fix includes
83 lines
2.1 KiB
C
83 lines
2.1 KiB
C
#include "global.h"
|
|
|
|
void GameAlloc_Log(GameAlloc* this) {
|
|
GameAllocEntry* iter;
|
|
|
|
osSyncPrintf("this = %08x\n", this);
|
|
|
|
iter = this->base.next;
|
|
while (iter != &this->base) {
|
|
osSyncPrintf("ptr = %08x size = %d\n", iter, iter->size);
|
|
iter = iter->next;
|
|
}
|
|
}
|
|
|
|
void* GameAlloc_MallocDebug(GameAlloc* this, u32 size, const char* file, s32 line) {
|
|
GameAllocEntry* ptr;
|
|
|
|
ptr = SystemArena_MallocDebug(size + sizeof(GameAllocEntry), file, line);
|
|
if (ptr) {
|
|
ptr->size = size;
|
|
ptr->prev = this->head;
|
|
this->head->next = ptr;
|
|
this->head = ptr;
|
|
ptr->next = &this->base;
|
|
this->base.prev = this->head;
|
|
return ptr + 1;
|
|
} else {
|
|
return NULL;
|
|
}
|
|
}
|
|
|
|
void* GameAlloc_Malloc(GameAlloc* this, u32 size) {
|
|
GameAllocEntry* ptr;
|
|
|
|
ptr = SystemArena_MallocDebug(size + sizeof(GameAllocEntry), "../gamealloc.c", 93);
|
|
if (ptr) {
|
|
ptr->size = size;
|
|
ptr->prev = this->head;
|
|
this->head->next = ptr;
|
|
this->head = ptr;
|
|
ptr->next = &this->base;
|
|
this->base.prev = this->head;
|
|
return ptr + 1;
|
|
} else {
|
|
return NULL;
|
|
}
|
|
}
|
|
|
|
void GameAlloc_Free(GameAlloc* this, void* data) {
|
|
GameAllocEntry* ptr;
|
|
|
|
if (data) {
|
|
ptr = &((GameAllocEntry*)data)[-1];
|
|
LogUtils_CheckNullPointer("ptr->prev", ptr->prev, "../gamealloc.c", 120);
|
|
LogUtils_CheckNullPointer("ptr->next", ptr->next, "../gamealloc.c", 121);
|
|
ptr->prev->next = ptr->next;
|
|
ptr->next->prev = ptr->prev;
|
|
this->head = this->base.prev;
|
|
SystemArena_FreeDebug(ptr, "../gamealloc.c", 125);
|
|
}
|
|
}
|
|
|
|
void GameAlloc_Cleanup(GameAlloc* this) {
|
|
GameAllocEntry* next;
|
|
GameAllocEntry* cur;
|
|
|
|
next = this->base.next;
|
|
while (&this->base != next) {
|
|
cur = next;
|
|
next = next->next;
|
|
SystemArena_FreeDebug(cur, "../gamealloc.c", 145);
|
|
}
|
|
|
|
this->head = &this->base;
|
|
this->base.next = &this->base;
|
|
this->base.prev = &this->base;
|
|
}
|
|
|
|
void GameAlloc_Init(GameAlloc* this) {
|
|
this->head = &this->base;
|
|
this->base.next = &this->base;
|
|
this->base.prev = &this->base;
|
|
}
|