2018-08-19 09:46:58 +02:00
|
|
|
#include "malloc.h"
|
|
|
|
#include <stdlib.h>
|
|
|
|
#include "..\Global\global.h"
|
|
|
|
|
2019-12-02 14:49:19 +01:00
|
|
|
char* GameMalloc(int size)
|
2019-02-09 09:35:20 +01:00
|
|
|
{
|
|
|
|
//printf("Size: %d, MallocFree: %d\n", size, MallocFree);
|
|
|
|
return GameMallocReal(size);
|
|
|
|
}
|
|
|
|
|
2018-08-19 09:46:58 +02:00
|
|
|
/*
|
2019-12-02 14:49:19 +01:00
|
|
|
void InitGameMalloc()
|
2018-08-19 09:46:58 +02:00
|
|
|
{
|
|
|
|
char* buffer = (char*)malloc(GAME_BUFFER_SIZE);
|
|
|
|
MallocBuffer = buffer;
|
|
|
|
MallocSize = GAME_BUFFER_SIZE;
|
|
|
|
MallocPtr = buffer;
|
|
|
|
MallocFree = GAME_BUFFER_SIZE;
|
|
|
|
MallocUsed = 0;
|
|
|
|
}
|
|
|
|
|
2019-12-02 14:49:19 +01:00
|
|
|
char* GameMalloc(int size)
|
2018-08-19 09:46:58 +02:00
|
|
|
{
|
2019-11-27 15:12:35 +01:00
|
|
|
int memSize = (size + 3) & -4;
|
2018-08-19 09:46:58 +02:00
|
|
|
if (memSize > MallocFree)
|
|
|
|
{
|
|
|
|
DB_Log(0, "Out of memory");
|
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
char* ptr = MallocPtr;
|
|
|
|
MallocFree -= memSize;
|
|
|
|
MallocUsed += memSize;
|
|
|
|
MallocPtr += memSize;
|
|
|
|
memset(ptr, 0, 4 * (memSize >> 2));
|
|
|
|
return ptr;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2019-12-02 14:49:19 +01:00
|
|
|
void GameFree(int size)
|
2018-08-19 09:46:58 +02:00
|
|
|
{
|
2019-11-27 15:12:35 +01:00
|
|
|
int memSize = (size + 3) & -4;
|
2018-08-19 09:46:58 +02:00
|
|
|
MallocPtr -= memSize;
|
|
|
|
MallocFree += memSize;
|
|
|
|
MallocUsed -= memSize;
|
|
|
|
}
|
|
|
|
|
2019-12-02 14:49:19 +01:00
|
|
|
void* Malloc(int size)
|
2018-08-19 09:46:58 +02:00
|
|
|
{
|
|
|
|
return malloc(size);
|
|
|
|
}
|
|
|
|
|
2019-12-02 14:49:19 +01:00
|
|
|
void Free(void* ptr)
|
2018-08-19 09:46:58 +02:00
|
|
|
{
|
|
|
|
free(ptr);
|
|
|
|
}*/
|
|
|
|
|
|
|
|
void Inject_Malloc()
|
|
|
|
{
|
2019-02-09 09:35:20 +01:00
|
|
|
INJECT(0x0040101E, GameMalloc);
|
2018-08-19 09:46:58 +02:00
|
|
|
/*INJECT(0x004A7CB0, InitGameMalloc);
|
|
|
|
INJECT(0x0040101E, GameMalloc);
|
|
|
|
INJECT(0x00403116, GameFree);
|
|
|
|
INJECT(0x004E2220, Malloc);
|
|
|
|
INJECT(0x004E2C90, Free);*/
|
|
|
|
}
|