pmd-red/include/memory.h
AnonymousRandomPerson 67e8cd8400 Decomped DoAlloc
Decomped by Kermalis
2024-10-22 22:20:03 -04:00

93 lines
2.2 KiB
C

#ifndef GUARD_MEMORY_H
#define GUARD_MEMORY_H
#define HEAP_SIZE 0x24000
// size: 0x8
struct HeapSettings
{
/* 0x0 */ u8 *start;
/* 0x4 */ u32 size;
};
// size: 0xC
struct HeapMemoryBlock
{
/* 0x0 */ u8 *start;
/* 0x4 */ s32 size;
/* 0x8 */ s32 allocatedSize;
};
// size: 0x8
struct HeapMemoryBlock2
{
/* 0x0 */ struct HeapFreeListElement *start;
/* 0x4 */ s32 size;
};
// size: 0x10
struct HeapFreeListElement
{
/* 0x0 */ u32 unk_atb;
/* 0x4 */ u32 atb;
/* 0x8 */ u32 grp;
/* 0xC */ struct HeapMemoryBlock block;
};
// size: 0x1C
struct HeapDescriptor
{
u32 unk0;
/* 0x4 */ struct HeapDescriptor *parentHeap;
/* 0x8 */ struct HeapFreeListElement *freeList;
/* 0xC */ s32 freeCount;
/* 0x10 */ u32 freeListLength;
/* 0x14 */ u8 *start;
/* 0x18 */ u32 size;
};
// size: 0x8
struct unkMemoryStruct
{
struct HeapDescriptor *unk0;
u32 end;
};
// size: 0x1C
struct unkMemoryStruct2
{
u8 fill[0xC];
/* 0xC */ struct HeapDescriptor *unkC;
/* 0x10 */ u32 end;
};
extern struct HeapDescriptor *gHeapDescriptorList[8];
extern s32 gHeapCount;
void InitHeap(void);
void MemoryClear8(u8 *dest, s32 size);
void MemoryClear16(u16 *dest, s32 size);
void MemoryClear32(u32 *dest, s32 size);
void MemoryFill8(u8 *dest, u8 value, s32 size);
void MemoryFill16(u16 *dest, u16 value, s32 size);
void MemoryFill32(u32 *dest, u32 value, s32 size);
void MemoryCopy8(u8 *dest, u8 *src, s32 size);
void MemoryCopy16(u16 *dest, u16 *src, s32 size);
void MemoryCopy32(u32 *dest, u32 *src, s32 size);
void MemoryCopy8(u8 *dest, u8 *src, s32 size);
void MemoryCopy16(u16 *dest, u16 *src, s32 size);
void MemoryCopy32(u32 *dest, u32 *src, s32 size);
void InitHeapInternal(void);
void DoInitHeap(struct HeapDescriptor *, struct HeapSettings *, struct HeapFreeListElement *, u32);
void InitSubHeap(struct HeapDescriptor *, struct HeapMemoryBlock2 *, u32);
struct HeapDescriptor * _LocateSet(struct HeapDescriptor *heap, s32 size, s32 param_3);
void *MemoryAlloc(s32 size, s32 group);
void MemoryFree(void *a);
struct HeapDescriptor *DoCreateSubHeap(struct unkMemoryStruct *a, u32 b);
void xxx_unused_memory_free(struct HeapDescriptor *a1);
void *DoAlloc(struct HeapDescriptor *heap, s32 size, u32 a2);
#endif // GUARD_MEMORY_H