Files
perfect_dark/src/lib/ultra/os/getmemsize.c
T
2022-10-16 18:50:22 +10:00

35 lines
490 B
C

#include <os_internal.h>
#include <rcp.h>
#include <R4300.h>
#define STEP 0x100000
u32 osGetMemSize(void)
{
u32* ptr;
u32 size = 0x400000;
u32 data0;
u32 data1;
while (size < 0x800000) {
ptr = (u32*) (0xA0000000 + size);
data0 = *ptr;
data1 = ptr[STEP / 4 - 1];
*ptr ^= ~0;
ptr[STEP / 4 - 1] ^= ~0;
if (*ptr != (data0 ^ ~0) || ptr[STEP / 4 - 1] != (data1 ^ ~0)) {
return size;
}
*ptr = data0;
ptr[STEP / 4 - 1] = data1;
size += STEP;
}
return size;
}