1
0
Fork 0
mirror of https://github.com/zeldaret/oot.git synced 2025-02-03 10:04:31 +00:00
oot/src/libultra_boot_O1/osGetMemSize.c

34 lines
553 B
C
Raw Normal View History

#include "global.h"
2020-03-17 00:31:30 -04:00
#define STEP 0x100000
2020-03-22 22:19:43 +01:00
u32 osGetMemSize(void) {
2020-03-17 00:31:30 -04:00
u32* ptr;
u32 size;
u32 data0;
u32 data1;
size = 0x400000;
2020-03-22 22:19:43 +01:00
while (size < 0x800000) {
2020-03-17 00:31:30 -04:00
ptr = (u32*)(0xA0000000 + size);
data0 = *ptr;
2020-03-22 22:19:43 +01:00
data1 = ptr[STEP / 4 - 1];
2020-03-17 00:31:30 -04:00
*ptr ^= ~0;
2020-03-22 22:19:43 +01:00
ptr[STEP / 4 - 1] ^= ~0;
2020-03-17 00:31:30 -04:00
2020-03-22 22:19:43 +01:00
if ((*ptr != (data0 ^ ~0)) || (ptr[STEP / 4 - 1] != (data1 ^ ~0))) {
2020-03-17 00:31:30 -04:00
return size;
2020-03-22 22:19:43 +01:00
}
2020-03-17 00:31:30 -04:00
*ptr = data0;
2020-03-22 22:19:43 +01:00
ptr[STEP / 4 - 1] = data1;
2020-03-17 00:31:30 -04:00
size += STEP;
}
return size;
}