Start work on memory.c

This commit is contained in:
gamemasterplc 2023-11-21 21:22:21 -06:00
parent 33cc13b687
commit f6d4f74c25
5 changed files with 62 additions and 13 deletions

View file

@ -116,7 +116,7 @@ HuMemHeapPtrGet = .text:0x8000A920; // type:function size:0x18
HuMemHeapInit = .text:0x8000A938; // type:function size:0x4C HuMemHeapInit = .text:0x8000A938; // type:function size:0x4C
HuMemMemoryAllocNum = .text:0x8000A984; // type:function size:0x40 HuMemMemoryAllocNum = .text:0x8000A984; // type:function size:0x40
HuMemMemoryAlloc = .text:0x8000A9C4; // type:function size:0x3C HuMemMemoryAlloc = .text:0x8000A9C4; // type:function size:0x3C
HuMemMemoryAlloc2 = .text:0x8000AA00; // type:function size:0x108 HuMemMemoryAlloc2 = .text:0x8000AA00; // type:function size:0x108 scope:local
HuMemMemoryFreeNum = .text:0x8000AB08; // type:function size:0x7C HuMemMemoryFreeNum = .text:0x8000AB08; // type:function size:0x7C
HuMemMemoryFree = .text:0x8000AB84; // type:function size:0x12C HuMemMemoryFree = .text:0x8000AB84; // type:function size:0x12C
HuMemUsedMemorySizeGet = .text:0x8000ACB0; // type:function size:0x48 HuMemUsedMemorySizeGet = .text:0x8000ACB0; // type:function size:0x48

View file

@ -223,7 +223,7 @@ config.libs = [
"host": False, "host": False,
"objects": [ "objects": [
Object(Matching, "game/malloc.c"), Object(Matching, "game/malloc.c"),
Object(NonMatching, "game/memory.c"), Object(Matching, "game/memory.c"),
], ],
}, },
{ {

View file

@ -24,13 +24,22 @@ void fn_1_26C(void);
void HuMemInitAll(void); void HuMemInitAll(void);
void *HuMemInit(void *ptr, u32 size); void *HuMemInit(void *ptr, u32 size);
void HuMemDCFlushAll();
void HuMemDCFlush(int heap); void HuMemDCFlush(int heap);
void *HuMemDirectMalloc(int heap, u32 size);
void *HuMemDirectMallocNum(int heap, u32 size, int num);
void HuMemDirectFree(void *ptr);
void HuMemDirectFreeNum(int heap, int num);
u32 HuMemUsedMallocSizeGet(int heap);
u32 HuMemUsedMallocBlockGet(int heap);
u32 HuMemHeapSizeGet(int heap);
void *HuMemHeapPtrGet(int heap);
void *HuMemHeapInit(void *ptr, u32 size); void *HuMemHeapInit(void *ptr, u32 size);
void *HuMemMemoryAlloc(void *heap_ptr, u32 size, void *retaddr); void *HuMemMemoryAlloc(void *heap_ptr, u32 size, u32 retaddr);
void *HuMemMemoryAllocNum(void *heap_ptr, u32 size, u32 num, void *retaddr); void *HuMemMemoryAllocNum(void *heap_ptr, u32 size, int num, u32 retaddr);
void HuMemMemoryFree(void *ptr, void *retaddr); void HuMemMemoryFree(void *ptr, u32 retaddr);
void HuMemMemoryFreeNum(void *heap_ptr, u32 num, void *retaddr); void HuMemMemoryFreeNum(void *heap_ptr, int num, u32 retaddr);
u32 HuMemUsedMemorySizeGet(void *heap_ptr); u32 HuMemUsedMemorySizeGet(void *heap_ptr);
u32 HuMemUsedMemoryBlockGet(void *heap_ptr); u32 HuMemUsedMemoryBlockGet(void *heap_ptr);

View file

@ -35,7 +35,6 @@ void *HuMemInit(void *ptr, u32 size)
return HuMemHeapInit(ptr, size); return HuMemHeapInit(ptr, size);
} }
void HuMemDCFlushAll() void HuMemDCFlushAll()
{ {
HuMemDCFlush(2); HuMemDCFlush(2);
@ -49,7 +48,7 @@ void HuMemDCFlush(int heap)
void *HuMemDirectMalloc(int heap, u32 size) void *HuMemDirectMalloc(int heap, u32 size)
{ {
register void *retaddr; register u32 retaddr;
asm { asm {
mflr retaddr mflr retaddr
} }
@ -57,9 +56,9 @@ void *HuMemDirectMalloc(int heap, u32 size)
return HuMemMemoryAlloc(HeapTbl[heap], size, retaddr); return HuMemMemoryAlloc(HeapTbl[heap], size, retaddr);
} }
void *HuMemDirectMallocNum(int heap, u32 size, u32 num) void *HuMemDirectMallocNum(int heap, u32 size, int num)
{ {
register void *retaddr; register u32 retaddr;
asm { asm {
mflr retaddr mflr retaddr
} }
@ -69,16 +68,16 @@ void *HuMemDirectMallocNum(int heap, u32 size, u32 num)
void HuMemDirectFree(void *ptr) void HuMemDirectFree(void *ptr)
{ {
register void *retaddr; register u32 retaddr;
asm { asm {
mflr retaddr mflr retaddr
} }
HuMemMemoryFree(ptr, retaddr); HuMemMemoryFree(ptr, retaddr);
} }
void HuMemDirectFreeNum(int heap, u32 num) void HuMemDirectFreeNum(int heap, int num)
{ {
register void *retaddr; register u32 retaddr;
asm { asm {
mflr retaddr mflr retaddr
} }

41
src/game/memory.c Normal file
View file

@ -0,0 +1,41 @@
#include "common.h"
struct memory_block {
u32 size;
u8 magic;
u8 flag;
struct memory_block *prev;
struct memory_block *next;
int num;
u32 retaddr;
};
static void *HuMemMemoryAlloc2(void *heap_ptr, u32 size, int num, u32 retaddr);
void *HuMemHeapInit(void *ptr, u32 size)
{
struct memory_block *block = ptr;
block->size = size;
block->magic = 205;
block->flag = 0;
block->prev = block;
block->next = block;
block->num = -256;
block->retaddr = 0xCDCDCDCD;
return block;
}
void *HuMemMemoryAllocNum(void *heap_ptr, u32 size, int num, u32 retaddr)
{
return HuMemMemoryAlloc2(heap_ptr, size, num, retaddr);
}
void *HuMemMemoryAlloc(void *heap_ptr, u32 size, u32 retaddr)
{
return HuMemMemoryAlloc2(heap_ptr, size, -256, retaddr);
}
static void *HuMemMemoryAlloc2(void *heap_ptr, u32 size, int num, u32 retaddr)
{
}