mirror of
https://github.com/zeldaret/st
synced 2026-07-09 06:43:27 -04:00
6062d1f43c
* start overlay 1 * match courselist and delink a lot of files (+ remove SysObject) * fix build issues * fix regressions
101 lines
2.4 KiB
C++
101 lines
2.4 KiB
C++
#include "System/SysNew.hpp"
|
|
#include "global.h"
|
|
|
|
extern "C" {
|
|
void *func_02001654(void *);
|
|
void *func_020145b0(UnkId *, s32);
|
|
void *func_020010c0(void *);
|
|
void *func_02001308(void *);
|
|
UnkId *func_02001488(void);
|
|
UnkId *func_02014704();
|
|
UnkId *func_020011c8(UnkId *, void *);
|
|
UnkId *func_02014630(UnkId *, void *);
|
|
UnkId *func_02001684(UnkId *, void *);
|
|
unk32 func_020011f4(void *);
|
|
}
|
|
extern char *data_0204372c[];
|
|
|
|
// non-matching
|
|
void *SysNew(UnkStruct_02011e10_Sub1 *param1, s32 length, s32 param3) {
|
|
void *newPtr = NULL;
|
|
|
|
switch (param1->mId) {
|
|
case UnkId_EXPH:
|
|
newPtr = func_020010c0(param1);
|
|
break;
|
|
case UnkId_FRMH:
|
|
newPtr = func_02001308(param1);
|
|
break;
|
|
case UnkId_UNTH:
|
|
newPtr = func_02001654(param1);
|
|
break;
|
|
case UnkId_UNSH:
|
|
newPtr = func_020145b0(func_02014704(), length);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
return newPtr;
|
|
}
|
|
|
|
void SysDelete(void *ptr) {
|
|
UnkId *pUnkId;
|
|
|
|
if (ptr != NULL) {
|
|
pUnkId = func_02001488();
|
|
|
|
switch (*pUnkId) {
|
|
case UnkId_EXPH:
|
|
func_020011c8(pUnkId, ptr);
|
|
break;
|
|
case UnkId_UNTH:
|
|
func_02001684(pUnkId, ptr);
|
|
break;
|
|
case UnkId_UNSH:
|
|
func_02014630(func_02014704(), ptr);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
void *func_02011f10(s32 length) {
|
|
return SysNew(data_0204999c.mUnk_00[1], length, 4);
|
|
}
|
|
|
|
void *func_02011f30(s32 length) {
|
|
return func_02011f10(length);
|
|
}
|
|
|
|
void *operator new(unsigned long length, u32 id, u32 idLength) {
|
|
void *pvVar1;
|
|
UnkStruct_02011e10_Sub1 *pUVar5;
|
|
|
|
pUVar5 = data_0204999c.mUnk_00[id];
|
|
pvVar1 = SysNew(pUVar5, length, idLength);
|
|
|
|
if (pvVar1 == NULL) {
|
|
switch (id) {
|
|
case HeapIndex_1:
|
|
GAME_ASSERT(pvVar1 != NULL, 183, "%sノメモリガタリマセン.\nサイズ=%d\nノコリ =%d", data_0204372c[id], length,
|
|
func_020011f4(pUVar5));
|
|
break;
|
|
default:
|
|
GAME_ASSERT(pvVar1 != NULL, 187, "%sノメモリガタリマセン.\nサイズ=%d", data_0204372c[id], length);
|
|
break;
|
|
}
|
|
}
|
|
|
|
return pvVar1;
|
|
}
|
|
|
|
void operator delete(void *ptr) {
|
|
SysDelete(ptr);
|
|
}
|
|
|
|
void operator delete[](void *ptr) {
|
|
SysDelete(ptr);
|
|
}
|