Split librfu into separate C files in its own directory, rfu_initializeAPI matching except for register differences
This commit is contained in:
109
src/librfu_rfu.c
Normal file
109
src/librfu_rfu.c
Normal file
@@ -0,0 +1,109 @@
|
||||
#include "global.h"
|
||||
#include "main.h"
|
||||
|
||||
#include "librfu.h"
|
||||
|
||||
struct RfuUnk1
|
||||
{
|
||||
u8 unk_0[0x14];
|
||||
u32 unk_14;
|
||||
u32 unk_18;
|
||||
struct RfuIntrStruct unk_1c;
|
||||
};
|
||||
|
||||
struct RfuUnk2
|
||||
{
|
||||
u8 unk_0[0x68];
|
||||
u32 unk_68;
|
||||
u32 unk_6c;
|
||||
u8 unk_70[0x70];
|
||||
};
|
||||
|
||||
struct RfuUnk3
|
||||
{
|
||||
u32 unk_0;
|
||||
u32 unk_4;
|
||||
u8 unk_8[0xD4];
|
||||
u32 unk_dc;
|
||||
};
|
||||
|
||||
extern u32 *gUnknown_03007890;
|
||||
extern u32 *gUnknown_03007894;
|
||||
extern struct RfuUnk3* gUnknown_03007898;
|
||||
extern struct RfuUnk2* gUnknown_03007880[4];
|
||||
extern struct RfuUnk1* gUnknown_03007870[4];
|
||||
extern void* sub_82E53F4;
|
||||
extern void rfu_STC_clearAPIVariables(void);
|
||||
|
||||
// Nonmatching, only register differences
|
||||
/*u16 rfu_initializeAPI(u32 *unk0, u16 unk1, IntrFunc *interrupt, bool8 copyInterruptToRam)
|
||||
{
|
||||
u16 i;
|
||||
u16 *v13;
|
||||
u16 *v12;
|
||||
u16 num;
|
||||
|
||||
if (((u32)unk0 & 0xF000000) == 0x2000000 && copyInterruptToRam)
|
||||
{
|
||||
return 2;
|
||||
}
|
||||
|
||||
if ((u32)unk0 & 3)
|
||||
return 2;
|
||||
|
||||
// Nintendo pls, just use a ternary for once
|
||||
if (copyInterruptToRam)
|
||||
{
|
||||
// An assert/debug print may have existed before, ie
|
||||
// printf("%s %u < %u", "somefile.c:12345", unk1, num)
|
||||
// to push this into r3?
|
||||
num = 0xe64;
|
||||
if (unk1 < num)
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (copyInterruptToRam == FALSE)
|
||||
{
|
||||
num = 0x504; // same as above, this should be r3 not r0
|
||||
if (unk1 < num)
|
||||
return 1;
|
||||
}
|
||||
gUnknown_03007890 = unk0;
|
||||
gUnknown_03007894 = unk0 + (0xB4 / sizeof(u32));
|
||||
gUnknown_03007898 = (struct RfuUnk3*)(unk0 + (0xDC / sizeof(u32)));
|
||||
gUnknown_03007880[0] = (struct RfuUnk2*)(unk0 + (0x1BC / sizeof(u32)));
|
||||
gUnknown_03007870[0] = (struct RfuUnk1*)(unk0 + (0x37C / sizeof(u32)));
|
||||
|
||||
for (i = 1; i < 4; i++, num)
|
||||
{
|
||||
gUnknown_03007880[i] = (struct RfuUnk2*)&gUnknown_03007880[i-1]->unk_70;
|
||||
gUnknown_03007870[i] = (struct RfuUnk1*)&gUnknown_03007870[i-1]->unk_1c;
|
||||
}
|
||||
|
||||
gUnknown_03007898->unk_dc = (u32)&gUnknown_03007870[3]->unk_1c;
|
||||
STWI_init_all(&gUnknown_03007870[3]->unk_1c, interrupt, copyInterruptToRam);
|
||||
rfu_STC_clearAPIVariables();
|
||||
|
||||
for (i = 0; i < 4; i++)
|
||||
{
|
||||
gUnknown_03007880[i]->unk_68 = 0;
|
||||
gUnknown_03007880[i]->unk_6c = 0;
|
||||
gUnknown_03007870[i]->unk_14 = 0;
|
||||
gUnknown_03007870[i]->unk_18 = 0;
|
||||
}
|
||||
|
||||
// Not matching, register differences
|
||||
v12 = (u16*)((u32)&sub_82E53F4 & ~1);
|
||||
v13 = (u16*)gUnknown_03007898->unk_8;
|
||||
|
||||
for (i = 47; i != 0xFFFF; i--)
|
||||
{
|
||||
*v13 = *v12;
|
||||
++v12;
|
||||
++v13;
|
||||
}
|
||||
|
||||
gUnknown_03007898->unk_4 = (u32)(&gUnknown_03007898->unk_8[1]);
|
||||
|
||||
return 0;
|
||||
}*/
|
||||
Reference in New Issue
Block a user