common.h fully removed. common_structs.h incorporated into new game/gamework_data.h header along with parts of variables.h (Other parts were moved to more appropriate headers). functions.h split into unsplit.h and board_unsplit.h
104 lines
No EOL
2.1 KiB
C
104 lines
No EOL
2.1 KiB
C
#include "game/memory.h"
|
|
#include "game/init.h"
|
|
#include "dolphin/os.h"
|
|
|
|
static u32 HeapSizeTbl[HEAP_MAX] = { 0x240000, 0x140000, 0xA80000, 0x580000, 0 };
|
|
static void *HeapTbl[HEAP_MAX];
|
|
|
|
void HuMemInitAll(void)
|
|
{
|
|
int i;
|
|
void *ptr;
|
|
u32 free_size;
|
|
for(i=0; i<4; i++) {
|
|
ptr = OSAlloc(HeapSizeTbl[i]);
|
|
if(ptr == NULL) {
|
|
OSReport("HuMem> Failed OSAlloc Size:%d\n", HeapSizeTbl[i]);
|
|
return;
|
|
}
|
|
HeapTbl[i] = HuMemInit(ptr, HeapSizeTbl[i]);
|
|
}
|
|
free_size = OSCheckHeap(currentHeapHandle);
|
|
OSReport("HuMem> left memory space %dKB(%d)\n", free_size/1024, free_size);
|
|
ptr = OSAlloc(free_size);
|
|
if(ptr == NULL) {
|
|
OSReport("HuMem> Failed OSAlloc left space\n");
|
|
return;
|
|
}
|
|
HeapTbl[4] = HuMemInit(ptr, free_size);
|
|
HeapSizeTbl[4] = free_size;
|
|
}
|
|
|
|
void *HuMemInit(void *ptr, s32 size)
|
|
{
|
|
return HuMemHeapInit(ptr, size);
|
|
}
|
|
|
|
void HuMemDCFlushAll()
|
|
{
|
|
HuMemDCFlush(2);
|
|
HuMemDCFlush(0);
|
|
}
|
|
|
|
void HuMemDCFlush(HeapID heap)
|
|
{
|
|
DCFlushRangeNoSync(HeapTbl[heap], HeapSizeTbl[heap]);
|
|
}
|
|
|
|
void *HuMemDirectMalloc(HeapID heap, s32 size)
|
|
{
|
|
register u32 retaddr;
|
|
asm {
|
|
mflr retaddr
|
|
}
|
|
size = (size+31) & 0xFFFFFFE0;
|
|
return HuMemMemoryAlloc(HeapTbl[heap], size, retaddr);
|
|
}
|
|
|
|
void *HuMemDirectMallocNum(HeapID heap, s32 size, u32 num)
|
|
{
|
|
register u32 retaddr;
|
|
asm {
|
|
mflr retaddr
|
|
}
|
|
size = (size+31) & 0xFFFFFFE0;
|
|
return HuMemMemoryAllocNum(HeapTbl[heap], size, num, retaddr);
|
|
}
|
|
|
|
void HuMemDirectFree(void *ptr)
|
|
{
|
|
register u32 retaddr;
|
|
asm {
|
|
mflr retaddr
|
|
}
|
|
HuMemMemoryFree(ptr, retaddr);
|
|
}
|
|
|
|
void HuMemDirectFreeNum(HeapID heap, u32 num)
|
|
{
|
|
register u32 retaddr;
|
|
asm {
|
|
mflr retaddr
|
|
}
|
|
HuMemMemoryFreeNum(HeapTbl[heap], num, retaddr);
|
|
}
|
|
|
|
s32 HuMemUsedMallocSizeGet(HeapID heap)
|
|
{
|
|
return HuMemUsedMemorySizeGet(HeapTbl[heap]);
|
|
}
|
|
|
|
s32 HuMemUsedMallocBlockGet(HeapID heap)
|
|
{
|
|
return HuMemUsedMemoryBlockGet(HeapTbl[heap]);
|
|
}
|
|
|
|
u32 HuMemHeapSizeGet(HeapID heap)
|
|
{
|
|
return HeapSizeTbl[heap];
|
|
}
|
|
|
|
void *HuMemHeapPtrGet(HeapID heap)
|
|
{
|
|
return HeapTbl[heap];
|
|
} |