mirror of
https://github.com/zeldaret/st
synced 2026-05-29 16:44:47 -04:00
135 lines
3.0 KiB
C++
135 lines
3.0 KiB
C++
#include "global.h"
|
|
#include "types.h"
|
|
|
|
void func_0203b920(void);
|
|
void func_02011da0(void);
|
|
void func_0203cdb8(void);
|
|
void main(void);
|
|
|
|
void func_02000a78(void);
|
|
void* func_0200093c(unk32, u32*, unk32);
|
|
void func_020009fc(void);
|
|
void func_02000950(unk32*);
|
|
void func_01ffbd70(void);
|
|
|
|
#define UNK_027FFF9C (*(u32*)0x027FFF9C)
|
|
#define REG_IME (*(u32*)0x04000208)
|
|
#define REG_VCOUNT (*(u32*)0x04000006)
|
|
#define RAM_PALETTES ((u32*)0x05000000)
|
|
#define RAM_OAM ((u32*)0x07000000)
|
|
|
|
typedef void (*UnkStruct_027e0000_Callback)(void);
|
|
struct UnkStruct_027e0000 {
|
|
unk8 mUnk_00[0x3FFC];
|
|
UnkStruct_027e0000_Callback mUnk_3FFC;
|
|
};
|
|
extern UnkStruct_027e0000* data_027e0000;
|
|
|
|
extern unk32* data_0204cde0;
|
|
extern unk32* data_0204cdf8;
|
|
extern unk32* data_02044dc0;
|
|
extern unk32* data_02044dc0;
|
|
|
|
struct BuildInfo {
|
|
/* 00 */ unk32* mUnk_00;
|
|
/* 04 */ unk32* mUnk_04;
|
|
/* 08 */ unk32* mUnk_08;
|
|
/* 0C */ unk32* mUnk_0C;
|
|
/* 10 */ unk32* mUnk_10;
|
|
/* 14 */ unk32* mUnk_14;
|
|
/* 18 */ unk32 mUnk_18;
|
|
/* 1C */ unk32 mUnk_1C;
|
|
/* 20 */ unk32 mUnk_20;
|
|
/* 24 */ char mUnk_24[28];
|
|
/* 3D */ char mUnk_3D[40];
|
|
};
|
|
extern BuildInfo gBuildInfo;
|
|
|
|
struct UnkStruct_02049a2c {
|
|
/* 00 */ unk8 mUnk_00[0xE8];
|
|
/* E8 */
|
|
|
|
void func_02013394(void);
|
|
};
|
|
extern UnkStruct_02049a2c* data_02049a2c;
|
|
|
|
// non-matching
|
|
ARM void Entry(void) {
|
|
unk32* puVar1;
|
|
unk32* puVar2;
|
|
u32 uVar3;
|
|
unk32* puVar4;
|
|
|
|
REG_IME = 0x04000000;
|
|
|
|
do {
|
|
} while (REG_VCOUNT != 0x0);
|
|
|
|
func_02000a78();
|
|
func_0200093c(0, (u32*)data_027e0000, 0x4000);
|
|
func_0200093c(0, RAM_PALETTES, 0x400);
|
|
func_0200093c(0x200, RAM_OAM, 0x400);
|
|
func_02000950(gBuildInfo.mUnk_14);
|
|
func_020009fc();
|
|
puVar4 = gBuildInfo.mUnk_10;
|
|
puVar1 = gBuildInfo.mUnk_0C;
|
|
|
|
for (puVar2 = puVar1; puVar2 < puVar4; puVar2 = puVar2 + 0x1) {
|
|
*puVar2 = 0x0;
|
|
}
|
|
|
|
uVar3 = (u32)puVar1 & 0xFFFFFFE0;
|
|
|
|
do {
|
|
// inline asm?
|
|
// coproc_moveto_Data_Synchronization(0x0);
|
|
// coproc_moveto_Invalidate_Instruction_Cache_by_MVA(uVar3);
|
|
// coproc_moveto_Invalidate_Data_Cache_by_MVA(uVar3);
|
|
uVar3 = uVar3 + 0x20;
|
|
} while ((int)uVar3 < (int)puVar4);
|
|
|
|
UNK_027FFF9C = 0x0;
|
|
data_027e0000->mUnk_3FFC = func_01ffbd70;
|
|
|
|
func_0203b920();
|
|
func_02011da0();
|
|
func_0203cdb8();
|
|
main();
|
|
}
|
|
|
|
// non-matching
|
|
ARM void* func_0200093c(unk32 param1, u32* param2, unk32 param3) {
|
|
u32* p = param2 + param3;
|
|
|
|
while (param2 < p) {
|
|
*p++ = param1;
|
|
}
|
|
|
|
return param2;
|
|
}
|
|
|
|
void AutoloadCallback(void) {
|
|
}
|
|
|
|
void func_02000b60(void) {
|
|
}
|
|
|
|
BuildInfo gBuildInfo = {
|
|
.mUnk_00 = data_0204cde0,
|
|
.mUnk_04 = data_0204cdf8,
|
|
.mUnk_08 = data_02044dc0,
|
|
.mUnk_0C = data_02044dc0,
|
|
.mUnk_10 = (unk32*)0x02051AE0,
|
|
.mUnk_14 = NULL,
|
|
.mUnk_18 = 0x04027539,
|
|
.mUnk_1C = 0x04027539,
|
|
.mUnk_20 = 0xDEC00621,
|
|
"\xDE\xC0\x06![SDK+NINTENDO:BACKUP]",
|
|
"[SDK+MEI:libASR_V1.0.5-CW2.0-SDK4.0]"
|
|
};
|
|
|
|
// non-matching
|
|
void main(void) {
|
|
data_02049a2c->func_02013394();
|
|
}
|