From 8875d0226f0d38a1e5ef946e56cd15810627f5ac Mon Sep 17 00:00:00 2001 From: Fox Caminiti Date: Wed, 3 Aug 2022 16:57:07 -0400 Subject: caching introduced --- memory.cpp | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) (limited to 'memory.cpp') diff --git a/memory.cpp b/memory.cpp index 6aebdc3..fcd7627 100644 --- a/memory.cpp +++ b/memory.cpp @@ -2,7 +2,7 @@ static void InitMemoryTable(global_memory *GlobalMemory, memory *Memory, uint64 Size, memory_table_list TableName, char *Name) { memory_table *Table = &Memory->Slot[TableName]; Table->Name = Name; - Table->Address = (uint64 *)GlobalMemory->Address + GlobalMemory->CurrentPosition; + Table->Address = (uint64 *)((uint8 *)GlobalMemory->Address + GlobalMemory->CurrentPosition); Table->Size = Size; GlobalMemory->CurrentPosition += Size; } @@ -11,8 +11,21 @@ static void* AllocateMemory(memory *Memory, uint64 Size, memory_table_list TableName) { void *Address; memory_table *Table = &Memory->Slot[TableName]; - Assert(Table->CurrentPosition + Size < Table->Size); - Address = (uint64 *)Table->Address + Table->CurrentPosition; + if (Table->CurrentPosition + Size > Table->Size) { + return NULL; + } + Address = (uint64 *)((uint8 *)Table->Address + Table->CurrentPosition); Table->CurrentPosition += Size; return Address; } + +// Returns 0-1 range wherever Pointer is in relation to StartingPointer to Size*Amount. +static real32 +Memory_NormalizedPosition(void *StartingPointer, uint32 Amount, uint32 Size, void *Pointer) +{ + real32 Result = 0; + uint64 TotalSize = Amount*Size; + uint64 PointerLocationSize = (uint8 *)Pointer - (uint8 *)StartingPointer; + Result = (real32)PointerLocationSize / (real32)TotalSize; + return Result; +} -- cgit v1.2.3