This commit is contained in:
Ethan Roseman 2020-11-30 17:25:34 -05:00
parent f65c26b900
commit 1a3c834629
1 changed files with 114 additions and 83 deletions

View File

@ -21,9 +21,9 @@ typedef struct UnkAl48 {
/* 0x00 */ s32 unk_00; /* 0x00 */ s32 unk_00;
/* 0x04 */ s32 unk_04; /* 0x04 */ s32 unk_04;
/* 0x08 */ char unk_08[4]; /* 0x08 */ char unk_08[4];
/* 0x0C */ u16 unk_0C; /* 0x0C */ s16 unk_0C;
/* 0x0E */ s8 unk_0E; /* 0x0E */ u8 unk_0E;
/* 0x0F */ s8 unk_0F; /* 0x0F */ u8 unk_0F;
/* 0x10 */ s8 unk_10; /* 0x10 */ s8 unk_10;
/* 0x11 */ char unk_11[0x31]; /* 0x11 */ char unk_11[0x31];
/* 0x42 */ s8 unk_42; /* 0x42 */ s8 unk_42;
@ -34,11 +34,17 @@ typedef struct UnkAl48 {
} UnkAl48; // size = 0x48 } UnkAl48; // size = 0x48
typedef struct UnkAl19E0Sub { typedef struct UnkAl19E0Sub {
/* 0x0 */ s16 unk_0; /* 0x0 */ u16 unk_0;
/* 0x2 */ s16 unk_2; /* 0x2 */ u16 unk_2;
/* 0x4 */ s16 unk_4; /* 0x4 */ u16 unk_4;
} UnkAl19E0Sub; } UnkAl19E0Sub;
typedef struct UnkAl19E0Sub2 {
/* 0x0 */ u8 unk_00;
/* 0x1 */ u8 unk_01;
/* 0x2 */ char unk_02[2];
} UnkAl19E0Sub2;
typedef struct UnkAl19E0 { typedef struct UnkAl19E0 {
/* 0x0000 */ f32 unk_00; /* 0x0000 */ f32 unk_00;
/* 0x0004 */ s32* unk_04; /* 0x0004 */ s32* unk_04;
@ -47,7 +53,7 @@ typedef struct UnkAl19E0 {
/* 0x0014 */ alUnk2* unk_14; /* 0x0014 */ alUnk2* unk_14;
/* 0x0018 */ char unk_18[0x24]; /* 0x0018 */ char unk_18[0x24];
/* 0x003C */ UnkAl19E0Sub* unk_3C; /* 0x003C */ UnkAl19E0Sub* unk_3C;
/* 0x0040 */ s8 unk_40[16]; /* 0x0040 */ UnkAl19E0Sub2 unk_40[4];
/* 0x0050 */ s8 unk_50; /* 0x0050 */ s8 unk_50;
/* 0x0051 */ s8 unk_51; /* 0x0051 */ s8 unk_51;
/* 0x0052 */ s8 unk_52; /* 0x0052 */ s8 unk_52;
@ -90,8 +96,8 @@ typedef struct UnkAl19E0 {
/* 0x1304 */ s32* unk_1304; /* 0x1304 */ s32* unk_1304;
/* 0x1308 */ s32* unk_1308; /* 0x1308 */ s32* unk_1308;
/* 0x130C */ char unk_130C[0x4]; /* 0x130C */ char unk_130C[0x4];
/* 0x1310 */ s32** unk_1310; /* 0x1310 */ s32* unk_1310[3];
/* 0x1314 */ char unk_1314[0xC]; /* 0x131C */ char unk_131C[4];
/* 0x1320 */ UnkAl48 unk_1320[24]; /* 0x1320 */ UnkAl48 unk_1320[24];
} UnkAl19E0; // size = 0x19E0 } UnkAl19E0; // size = 0x19E0
@ -114,123 +120,148 @@ void func_800532F4(s32);
void func_80053370(s32); void func_80053370(s32);
void func_800533A8(alUnk2*); void func_800533A8(alUnk2*);
void al_LoadINIT(UnkAl19E0*, s32, ALHeap*); void al_LoadINIT(UnkAl19E0*, s32, ALHeap*);
s32 al_CopyFileTableEntry(s16 arg0, s32 arg1, s32* arg2); s32 al_CopyFileTableEntry(u16 arg0, s32 arg1, s32* arg2);
void al_LoadPER(UnkAl19E0*, s32*); void al_LoadPER(UnkAl19E0*, s32*);
void al_LoadPRG(UnkAl19E0*, s32*); void al_LoadPRG(UnkAl19E0*, s32*);
void al_DmaCopy(s32*, s32*, s32); void al_DmaCopy(s32*, s32*, s32);
s32* alHeapAlloc(ALHeap*, s32, s32); s32* alHeapAlloc(ALHeap*, s32, s32);
INCLUDE_ASM(s32, "code_2e230_len_2190", func_80052E5C); //INCLUDE_ASM(s32, "code_2e230_len_2190", func_80052E5C);
/*void func_80052E5C(s32 arg0) { void func_80052E5C(s32 arg0) {
UnkAl19E0* temp_s4; UnkAl19E0** temp_s4 = &D_8009A5C0;
UnkAl19E0* temp4;
s32* temp_v0_2; s32* temp_v0_2;
ALHeap* alHeap; ALHeap* alHeap;
s32 i; u32 i;
s32* subroutine_arg6; s32* subroutine_arg6;
s32* subroutine_arg7; s32* subroutine_arg7;
s32* subroutine_arg8; s32* subroutine_arg8;
UnkAlA9C** temp1 = &D_8009A664;
UnkAlA9C** temp1_1;
UnkAl6CC** temp2 = &D_8009A640;
UnkAl6CC** temp2_1;
UnkAlA9C** temp3;
UnkAl48* temp5;
u8 temp6[4];
u8* temp7;
s32** temp8;
alHeap = D_80078E54->unk_18; alHeap = D_80078E54->unk_18;
D_8009A5C0 = alHeapAlloc(alHeap, 1, 0x19E0); *temp_s4 = alHeapAlloc(alHeap, 1, 0x19E0);
temp_s4 = D_8009A5C0;
D_8009A664 = alHeapAlloc(alHeap, 1, 0xA9C); (*temp1) = alHeapAlloc(alHeap, 1, 0xA9C);
D_8009A5FC = alHeapAlloc(alHeap, 1, 0xA9C); D_8009A5FC = alHeapAlloc(alHeap, 1, 0xA9C);
D_8009A5CC = alHeapAlloc(alHeap, 1, 0xA9C); D_8009A5CC = alHeapAlloc(alHeap, 1, 0xA9C);
D_8009A640 = alHeapAlloc(alHeap, 1, 0x6CC); (*temp2) = alHeapAlloc(alHeap, 1, 0x6CC);
D_8009A628 = alHeapAlloc(alHeap, 1, 0x834); D_8009A628 = alHeapAlloc(alHeap, 1, 0x834);
D_8009A628->unk_00 = D_8009A5C0; D_8009A628->unk_00 = *(temp_s4);
D_8009A664->unk_04 = D_8009A640; (*temp1)->unk_04 = (*temp2);
temp_v0_2 = alHeapAlloc(alHeap, 1, 0x8000); temp_v0_2 = alHeapAlloc(alHeap, 1, 0x8000);
temp_s4->unk_5C = temp_v0_2[0]; temp4 = *temp_s4;
temp_s4->unk_60 = temp_v0_2[0x1400]; temp4->unk_5C = &temp_v0_2[0];
temp_s4->unk_64 = temp_v0_2[0x1C00]; temp4->unk_60 = &temp_v0_2[0x1400];
temp_s4->unk_68 = temp_v0_2[0x1400]; temp4->unk_64 = &temp_v0_2[0x1C00];
temp4->unk_68 = &temp_v0_2[0x1400];
for (i = 0; i < 1; i++) { for (i = 0; i < 1; i++) {
temp_s4->unk_6C = alHeapAlloc(alHeap, 1, 0xA9C); temp4->unk_6C = alHeapAlloc(alHeap, 1, 0xA9C);
} }
temp_s4->unk_A0 = alHeapAlloc(alHeap, 1, 0x5200); temp4->unk_A0 = alHeapAlloc(alHeap, 1, 0x5200);
temp_s4->unk_04 = alHeapAlloc(alHeap, 1, 0x30); temp4->unk_04 = alHeapAlloc(alHeap, 1, 0x30);
temp_s4->unk_54 = alHeapAlloc(alHeap, 1, 0x360); temp4->unk_54 = alHeapAlloc(alHeap, 1, 0x360);
temp_s4->unk_58 = alHeapAlloc(alHeap, 1, 0x200); temp4->unk_58 = alHeapAlloc(alHeap, 1, 0x200);
temp_s4->unk_94 = alHeapAlloc(alHeap, 1, 0x40); temp4->unk_94 = alHeapAlloc(alHeap, 1, 0x40);
temp_s4->unk_00 = arg0; temp4->unk_00 = arg0;
func_800532F4(temp_s4->unk_04); func_800532F4(temp4->unk_04);
func_80053370(temp_s4->unk_08); func_80053370(temp4->unk_08);
func_800533A8(temp_s4->unk_14); func_800533A8(temp4->unk_14);
func_8005610C(); func_8005610C();
temp_s4->unk_A4 = 0; temp4->unk_A4 = 0;
temp_s4->unk_A8 = 0; temp4->unk_A8 = 0;
for (i = 0; i < 1; i++) { for (i = 0; i < 1; i++) {
temp_s4->unk_70 = 0; temp4->unk_70 = 0;
temp_s4->unk_71 = 0; temp4->unk_71 = 0;
} }
for (i = 0; i < 4; i++) { for (i = 0; i < 4; i++) {
temp_s4->unk_40[i * 4 + 0] = 0; temp4->unk_40[i].unk_00 = 0;
temp_s4->unk_40[i * 4 + 1] = 0; temp4->unk_40[i].unk_01 = 0;
} }
for (i = 0; i < 24; i++) { for (i = 0; i < 24; i++) {
func_80056EC0(i, 0); func_80056EC0((u8)i, 0);
func_80057224(i, temp_s4->unk_04); func_80057224((u8)i, temp4->unk_04);
temp_s4->unk_1320[i].unk_00 = 0; temp5 = &temp4->unk_1320[i];
temp_s4->unk_1320[i].unk_04 = 0; temp5->unk_00 = 0;
temp_s4->unk_1320[i].unk_0C = -1; temp5->unk_04 = 0;
temp_s4->unk_1320[i].unk_0E = 0xFF; temp5->unk_0C = -1;
temp_s4->unk_1320[i].unk_0F = 0xFF; temp5->unk_0E = 0xFF;
temp_s4->unk_1320[i].unk_10 = 0; temp5->unk_0F = 0xFF;
temp_s4->unk_1320[i].unk_42 = 0; temp5->unk_10 = 0;
temp_s4->unk_1320[i].unk_43 = 0; temp5->unk_42 = 0;
temp_s4->unk_1320[i].unk_44 = 0; temp5->unk_43 = 0;
temp_s4->unk_1320[i].unk_45 = 0; temp5->unk_44 = 0;
temp5->unk_45 = 0;
} }
al_LoadINIT(temp_s4, 0xF00000, alHeap); al_LoadINIT(temp4, 0xF00000, alHeap);
for (i = 0; i < 3; i++) { for (i = 0; i < 3; i++) {
temp_s4->unk_1310[i] = alHeapAlloc(alHeap, 1, 0x840); temp4->unk_1310[i] = alHeapAlloc(alHeap, 1, 0x840);
} }
func_8004E158(D_8009A664, 1, 0, temp_s4); temp2_1 = &D_8009A640;
func_8004E344(D_8009A664, &subroutine_arg8, 0, 3, 0xFF, 0xFF); temp3 = &D_8009A5FC;
func_8004E158(D_8009A5FC, 2, 2, temp_s4); temp1_1 = &D_8009A664;
func_8004E344(D_8009A5FC, &subroutine_arg8, 2, 0xFF, 0xFF, 0xFF); func_8004E158((*temp1_1), 1, 0, temp4);
func_8004B440(D_8009A640, 4, 1, temp_s4, 0x10); temp6[0] = 0;
func_80050B90(D_8009A628, 6, 1, temp_s4); temp6[1] = 3;
func_80052614(temp_s4); temp6[2] = 0xff;
al_LoadBKHeaders(temp_s4, alHeap); temp6[3] = 0xff;
if (al_CopyFileTableEntry(temp_s4->unk_3C->unk_0, 0x20, &subroutine_arg6) == 0) { temp7 = &temp6[0];
al_DmaCopy(subroutine_arg6, temp_s4->unk_A0, *subroutine_arg7 & 0xFFFFFF); func_8004E344((*temp1_1), temp7);
func_8004E158((*temp3), 2, 2, temp4);
temp6[0] = 2;
temp6[1] = 0xff;
temp6[2] = 0xff;
temp6[3] = 0xff;
func_8004E344((*temp3), temp7);
func_8004B440((*temp2_1), 4, 1, temp4, 0x10);
func_80050B90(D_8009A628, 6, 1, temp4);
func_80052614(temp4);
al_LoadBKHeaders(temp4, alHeap);
if (al_CopyFileTableEntry(temp4->unk_3C->unk_0, 0x20, &subroutine_arg7) == 0) {
al_DmaCopy(&subroutine_arg6, temp4->unk_A0, ((s32)&subroutine_arg8 & 0xFFFFFF));
} }
func_8004B62C(D_8009A640); func_8004B62C((*temp2_1));
if (al_CopyFileTableEntry(temp_s4->unk_3C->unk_2, 0x40, &subroutine_arg6) == 0) { if (al_CopyFileTableEntry(temp4->unk_3C->unk_2, 0x40, &subroutine_arg6) == 0) {
al_LoadPER(temp_s4, subroutine_arg6); al_LoadPER(temp4, subroutine_arg6);
} }
if (al_CopyFileTableEntry(temp_s4->unk_3C->unk_4, 0x40, &subroutine_arg6) == 0) { if (al_CopyFileTableEntry(temp4->unk_3C->unk_4, 0x40, &subroutine_arg6) == 0) {
al_LoadPRG(temp_s4, subroutine_arg6); al_LoadPRG(temp4, subroutine_arg6);
} }
temp_s4->unk_12F0 = temp_s4->unk_5EC; temp4->unk_12EC = &temp4->unk_4EC;
temp_s4->unk_12F4 = temp_s4->unk_AC; temp4->unk_12F0 = &temp4->unk_5EC;
temp_s4->unk_12F8 = temp_s4->unk_EC; temp4->unk_12F4 = &temp4->unk_AC;
temp_s4->unk_12FC = temp_s4->unk_9EC; temp4->unk_12F8 = &temp4->unk_EC;
temp_s4->unk_1300 = temp_s4->unk_DEC; temp4->unk_12FC = &temp4->unk_9EC;
temp_s4->unk_12EC = temp_s4->unk_4EC; temp4->unk_1300 = &temp4->unk_DEC;
temp_s4->unk_1304 = temp_s4->unk_11EC; temp4->unk_1304 = &temp4->unk_11EC;
temp_s4->unk_1308 = temp_s4->unk_4EC; temp4->unk_1308 = &temp4->unk_4EC;
temp_s4->unk_53 = 0; temp4->unk_53 = 0;
temp_s4->unk_52 = 0; temp4->unk_52 = 0;
temp_s4->unk_51 = 0; temp4->unk_51 = 0;
temp_s4->unk_50 = 0; temp4->unk_50 = 0;
func_80057ED0(0); func_80057ED0(0);
func_80055050(alHeap); func_80055050(alHeap);
}*/ }
INCLUDE_ASM(void, "code_2e230_len_2190", func_800532F4, s32 arg0); INCLUDE_ASM(void, "code_2e230_len_2190", func_800532F4, s32 arg0);
@ -312,7 +343,7 @@ INCLUDE_ASM(s32, "code_2e230_len_2190", func_80054248);
INCLUDE_ASM(void, "code_2e230_len_2190", al_LoadINIT, UnkAl19E0* arg0, s32 arg1, ALHeap* arg2); INCLUDE_ASM(void, "code_2e230_len_2190", al_LoadINIT, UnkAl19E0* arg0, s32 arg1, ALHeap* arg2);
INCLUDE_ASM(s32, "code_2e230_len_2190", al_CopyFileTableEntry, s16 arg0, s32 arg1, s32* arg2); INCLUDE_ASM(s32, "code_2e230_len_2190", al_CopyFileTableEntry, u16 arg0, s32 arg1, s32* arg2);
INCLUDE_ASM(void, "code_2e230_len_2190", al_LoadPER, UnkAl19E0* arg0, s32* arg1); INCLUDE_ASM(void, "code_2e230_len_2190", al_LoadPER, UnkAl19E0* arg0, s32* arg1);