Merge pull request #194 from Kelebek1/fragment61
Some checks failed
C/C++ CI / build (push) Has been cancelled

fragment61
This commit is contained in:
Maide 2025-04-26 22:36:03 +01:00 committed by GitHub
commit b6c54ac2c2
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
19 changed files with 6664 additions and 370 deletions

View File

@ -56,6 +56,7 @@ extern f32 gSineTable[];
extern f32 gCosineTable[0x1000];
extern s16 gArctanTable[0x401];
extern s32 D_B0000504;
extern s32 D_B0000800;
extern u8 D_1000000[];
extern u8 D_8000000[];
@ -574,6 +575,47 @@ extern u8 D_3024000[];
extern u8 D_3009000[];
extern u8 D_3012000[];
extern u8 D_301B000[];
extern u8 D_2028AE0[];
extern u8 D_20293E0[];
extern u8 D_200DFA0[];
extern u8 D_200F3E0[];
extern u8 D_2010820[];
extern u8 D_2011C60[];
extern u8 D_20130A0[];
extern u8 D_2029CE0[];
extern u8 D_20068E0[];
extern u8 D_200AC00[];
extern u8 D_202C080[];
extern u8 D_202C500[];
extern u8 D_202C980[];
extern u8 D_202CE00[];
extern u8 D_202D280[];
extern u8 D_202D700[];
extern u8 D_202DB80[];
extern u8 D_202E000[];
extern u8 D_202A8C0[];
extern u8 D_202B4A0[];
extern u8 D_2014F00[];
extern u8 D_20154B0[];
extern u8 D_2015A60[];
extern u8 D_2016D40[];
extern u8 D_2017740[];
extern u8 D_2019040[];
extern u8 D_2019680[];
extern u8 D_2018D20[];
extern u8 D_2018A00[];
extern u8 D_20199A0[];
extern u8 D_2019360[];
extern u8 D_2019FE0[];
extern u8 D_2017A60[];
extern u8 D_2017D80[];
extern u8 D_20183C0[];
extern u8 D_20186E0[];
extern u8 D_2019CC0[];
extern u8 D_20180A0[];
extern u8 D_201A300[];
extern u8 D_20165C0[];
extern u8 D_2016980[];
extern LEODiskID D_800818E0;

View File

@ -829,4 +829,51 @@ D_82E01F68 = 0x82E01F68; // size:0x438
D_3024000 = 0x3024000;
D_3009000 = 0x3009000;
D_3012000 = 0x3012000;
D_301B000 = 0x301B000;
D_301B000 = 0x301B000;
D_8423D3D8 = 0x8423D3D8; // size:0x20
D_8423D3A8 = 0x8423D3A8; // size:0x2C
D_2028AE0 = 0x2028AE0;
D_20293E0 = 0x20293E0;
D_200DFA0 = 0x200DFA0;
D_200F3E0 = 0x200F3E0;
D_2010820 = 0x2010820;
D_2011C60 = 0x2011C60;
D_20130A0 = 0x20130A0;
D_84211B50 = 0x84211B50; // size:0x4D10
D_B0000800 = 0xB0000800;
D_842168A0 = 0x842168A0; // size:0x13610
D_2029CE0 = 0x2029CE0;
D_84210DA0 = 0x84210DA0; // size:0x38
D_20068E0 = 0x20068E0;
D_200AC00 = 0x200AC00;
D_202C080 = 0x202C080;
D_202C500 = 0x202C500;
D_202C980 = 0x202C980;
D_202CE00 = 0x202CE00;
D_202D280 = 0x202D280;
D_202D700 = 0x202D700;
D_202DB80 = 0x202DB80;
D_202E000 = 0x202E000;
D_202A8C0 = 0x202A8C0;
D_202B4A0 = 0x202B4A0;
D_2014F00 = 0x2014F00;
D_20154B0 = 0x20154B0;
D_2015A60 = 0x2015A60;
D_2016D40 = 0x2016D40;
D_2017740 = 0x2017740;
D_2019040 = 0x2019040;
D_2019680 = 0x2019680;
D_2018D20 = 0x2018D20;
D_2018A00 = 0x2018A00;
D_20199A0 = 0x20199A0;
D_2019360 = 0x2019360;
D_2019FE0 = 0x2019FE0;
D_2017A60 = 0x2017A60;
D_2017D80 = 0x2017D80;
D_20183C0 = 0x20183C0;
D_20186E0 = 0x20186E0;
D_2019CC0 = 0x2019CC0;
D_20180A0 = 0x20180A0;
D_201A300 = 0x201A300;
D_20165C0 = 0x20165C0;
D_2016980 = 0x2016980;

View File

@ -344,4 +344,44 @@ D_0302A9C0 = 0x0302A9C0;
D_0302B740 = 0x0302B740;
D_0302C4C0 = 0x0302C4C0;
D_0302D480 = 0x0302D480;
D_301B000 = 0x301B000;
D_301B000 = 0x301B000;
D_B0000800 = 0xB0000800;
D_200F3E0 = 0x200F3E0;
D_2010820 = 0x2010820;
D_2011C60 = 0x2011C60;
D_20130A0 = 0x20130A0;
D_2029CE0 = 0x2029CE0;
D_20068E0 = 0x20068E0;
D_200AC00 = 0x200AC00;
D_202C080 = 0x202C080;
D_202C500 = 0x202C500;
D_202C980 = 0x202C980;
D_202CE00 = 0x202CE00;
D_202D280 = 0x202D280;
D_202D700 = 0x202D700;
D_202DB80 = 0x202DB80;
D_202E000 = 0x202E000;
D_202A8C0 = 0x202A8C0;
D_202B4A0 = 0x202B4A0;
D_2014F00 = 0x2014F00;
D_20154B0 = 0x20154B0;
D_2015A60 = 0x2015A60;
D_2016D40 = 0x2016D40;
D_2017740 = 0x2017740;
D_2019040 = 0x2019040;
D_2019680 = 0x2019680;
D_2018D20 = 0x2018D20;
D_2018A00 = 0x2018A00;
D_20199A0 = 0x20199A0;
D_2019360 = 0x2019360;
D_2019FE0 = 0x2019FE0;
D_2017A60 = 0x2017A60;
D_2017D80 = 0x2017D80;
D_20183C0 = 0x20183C0;
D_20186E0 = 0x20186E0;
D_2019CC0 = 0x2019CC0;
D_20180A0 = 0x20180A0;
D_201A300 = 0x201A300;
D_20165C0 = 0x20165C0;
D_2016980 = 0x2016980;
D_200DFA0 = 0x200DFA0;

View File

@ -158,7 +158,7 @@ void func_80021F04(unk_func_80026268_arg0* arg0, unk_D_800AE4E8_004_1_000_010_00
arg1->unk_00 = arg0->unk_00.unk_01;
}
func_80021A68(arg1->unk_01, arg0->unk_02);
func_80021A68(arg1->unk_01, (u16)arg0->unk_02);
arg1->unk_03 = arg0->unk_04;
arg1->unk_04 = arg0->unk_05;

View File

@ -58,7 +58,7 @@ typedef struct unk_D_800AE540_0874 {
/* 0x002 */ u8 unk_002;
/* 0x003 */ u8 unk_003;
/* 0x004 */ char unk004[0x10];
/* 0x014 */ char unk_014[0x4];
/* 0x014 */ char unk_014[4];
/* 0x018 */ char unk018[0x10];
/* 0x028 */ unk_func_80026268_arg0 unk_028[1];
/* 0x07C */ char unk07C[0x1A4];
@ -71,7 +71,7 @@ typedef struct unk_D_800AE540_0004 {
/* 0x001 */ u8 unk_001;
/* 0x002 */ u8 unk_002;
/* 0x004 */ Controller* controller;
/* 0x008 */ char unk_008[0x4];
/* 0x008 */ char unk_008[4];
/* 0x00C */ char unk00C[0xC];
/* 0x018 */ s32 unk_018;
/* 0x01C */ unk_func_80026268_arg0 unk_01C[1];

View File

@ -14,12 +14,17 @@ typedef struct unk_D_8380565C {
} unk_D_8380565C; // size >= 0x838
typedef struct unk_D_838067F0_0168_0000 {
/* 0x000 */ u8 unk_000;
/* 0x001 */ u8 unk_001;
/* 0x002 */ u8 unk_002;
/* 0x003 */ u8 unk_003;
/* 0x004 */ unk_func_80026268_arg0 unk_004[3];
/* 0x100 */ char unk100[0xBD8];
union {
struct {
/* 0x000 */ u8 unk_000;
/* 0x001 */ u8 unk_001;
/* 0x002 */ u8 unk_002;
/* 0x003 */ u8 unk_003;
};
s32 raw;
};
/* 0x004 */ unk_func_80026268_arg0 unk_004;
/* 0x058 */ u16 unk_058[0x640];
} unk_D_838067F0_0168_0000; // size = 0xCD8
typedef struct unk_D_838067F0_0168 {
@ -60,6 +65,17 @@ typedef struct unk_D_838067F0 {
/* 0x0168 */ unk_D_838067F0_0168 unk_0168[12];
} unk_D_838067F0; // size = 0x1D088
typedef struct unk_D_8380548C {
/* 0x00 */ u8 unk_00;
/* 0x01 */ u8 unk_01;
/* 0x02 */ s16 unk_02;
/* 0x04 */ s16 unk_04;
/* 0x06 */ s16 unk_06;
/* 0x08 */ s16 unk_08;
/* 0x0A */ s16 unk_0A;
/* 0x0C */ s16 unk_0C;
} unk_D_8380548C; // size = 0xE
void func_83800020(s32 arg0);
void func_8380008C(s32 arg0);
void func_83800098(s32 arg0, s32 arg1);

View File

@ -13,17 +13,6 @@
#include "src/memmap.h"
#include "src/memory.h"
typedef struct unk_D_8380548C {
/* 0x00 */ u8 unk_00;
/* 0x01 */ u8 unk_01;
/* 0x02 */ s16 unk_02;
/* 0x04 */ s16 unk_04;
/* 0x06 */ s16 unk_06;
/* 0x08 */ s16 unk_08;
/* 0x0A */ s16 unk_0A;
/* 0x0C */ s16 unk_0C;
} unk_D_8380548C; // size = 0xE
typedef struct unk_D_83806778 {
/* 0x00 */ u8 unk_00;
/* 0x01 */ u8 unk_01;

View File

@ -99,7 +99,7 @@ s32 func_83802700(unk_D_838067F0* arg0, unk_D_838067F0_0168* arg1, s32 arg2, unk
arg1->unk_2692 = arg0->unk_001C;
for (i = 0; i < 3; i++) {
arg1->unk_0000[i].unk_004[0].unk_00.unk_00 = 0;
arg1->unk_0000[i].unk_004.unk_00.unk_00 = 0;
*(s32*)&arg1->unk_0000[i].unk_000 = 0;
}
@ -118,7 +118,7 @@ s32 func_83802700(unk_D_838067F0* arg0, unk_D_838067F0_0168* arg1, s32 arg2, unk
for (j = 0; j < 3; j++) {
if (i < temp_s3->unk_00) {
if (func_80022DF4(var_v0, temp_s3->unk_02[i++]) != 0) {
var_s4 += func_80022E18(arg1->unk_0000[j].unk_004, 1, var_v0);
var_s4 += func_80022E18(&arg1->unk_0000[j].unk_004, 1, var_v0);
}
}
}
@ -130,24 +130,25 @@ s32 func_83802700(unk_D_838067F0* arg0, unk_D_838067F0_0168* arg1, s32 arg2, unk
s32 var_s1_3 = arg2 * 3;
for (j = 0; j < 3; j++) {
if (var_s1_3 < arg3->unk_000) {
_bcopy(&arg3->unk_004[var_s1_3++], &arg1->unk_0000[var_s4].unk_004[0], 0x54);
func_800228B0(arg1->unk_0000[var_s4++].unk_004);
_bcopy(&arg3->unk_004[var_s1_3++], &arg1->unk_0000[var_s4].unk_004,
sizeof(arg1->unk_0000[var_s4].unk_004));
func_800228B0(&arg1->unk_0000[var_s4++].unk_004);
}
}
}
for (i = 0; i < var_s4; i++) {
func_8001B0DC(&arg1->unk_0000[i].unk_004[1], 0, &arg1->unk_0000[i].unk_004[0]);
func_8001B0DC(arg1->unk_0000[i].unk_058, 0, &arg1->unk_0000[i].unk_004);
arg1->unk_0000[i].unk_000 = arg0->unk_0018;
arg1->unk_0000[i].unk_001 = arg0->unk_001C;
arg1->unk_0000[i].unk_002 = arg2 * 3 + i;
arg1->unk_0000[i].unk_003 = arg1->unk_0000[i].unk_004[0].unk_00.unk_00;
arg1->unk_0000[i].unk_003 = arg1->unk_0000[i].unk_004.unk_00.unk_00;
arg1->unk_0000[i].unk_004[0].unk_53 = arg2 * 3 + i;
arg1->unk_0000[i].unk_004[0].unk_52 = (arg0->unk_0018 * 0x10) | arg0->unk_001C;
arg1->unk_0000[i].unk_004.unk_53 = arg2 * 3 + i;
arg1->unk_0000[i].unk_004.unk_52 = (arg0->unk_0018 * 0x10) | arg0->unk_001C;
func_83802660(arg0, &arg1->unk_0000[i].unk_004[0]);
func_83802660(arg0, &arg1->unk_0000[i].unk_004);
}
return var_s4;
@ -238,7 +239,7 @@ unk_D_838067F0_0168* func_83802C74(unk_D_838067F0_0168* arg0, s32 arg1) {
void func_83802C98(unk_D_838067F0* arg0) {
unk_D_838067F0_0168* ptr = func_83802C74(arg0->unk_0160, arg0->unk_0028);
unk_func_80026268_arg0* temp_a1 = &ptr->unk_0000[arg0->unk_0024].unk_004[0];
unk_func_80026268_arg0* temp_a1 = &ptr->unk_0000[arg0->unk_0024].unk_004;
if (temp_a1->unk_00.unk_00 != 0) {
arg0->unk_0000 = 7;
@ -667,7 +668,7 @@ void func_8380419C(s32 arg0, s32 arg1, unk_D_838067F0_0168* arg2) {
s32 i;
for (i = 0; i < 3; i++) {
if (arg2->unk_0000[i].unk_004[0].unk_00.unk_00 != 0) {
if (arg2->unk_0000[i].unk_004.unk_00.unk_00 != 0) {
func_84200420(arg0 + i * 0x84, arg1, 0x84, 0x2C, 0x64, 0x64, 0xC8, 0xFF);
} else {
func_84200420(arg0 + i * 0x84, arg1, 0x84, 0x2C, 0x3C, 0x3C, 0xA0, 0xFF);
@ -677,21 +678,20 @@ void func_8380419C(s32 arg0, s32 arg1, unk_D_838067F0_0168* arg2) {
gSPDisplayList(gDisplayListHead++, D_8006F518);
for (i = 0; i < 3; i++) {
if (arg2->unk_0000[i].unk_004[0].unk_00.unk_00 != 0) {
func_8001C6AC(arg0 + (i * 0x84) + 2, arg1 + 2, 0x28, 0x28, &arg2->unk_0000[i].unk_004[1].unk_00.unk_00,
0x28, 0);
if (arg2->unk_0000[i].unk_004.unk_00.unk_00 != 0) {
func_8001C6AC(arg0 + (i * 0x84) + 2, arg1 + 2, 0x28, 0x28, &arg2->unk_0000[i].unk_058, 0x28, 0);
}
}
func_8001F3F4();
for (i = 0; i < 3; i++) {
if (arg2->unk_0000[i].unk_004[0].unk_00.unk_00 != 0) {
if (arg2->unk_0000[i].unk_004.unk_00.unk_00 != 0) {
func_8001F324(0xFF, 0xFF, 0xFF, 0xFF);
func_8001EBE0(4, 0);
func_8001F1E8(arg0 + (i * 0x84) + 0x2C, arg1 + 5, arg2->unk_0000[i].unk_004[0].unk_30);
func_8001F1E8(arg0 + (i * 0x84) + 0x2C, arg1 + 5, arg2->unk_0000[i].unk_004.unk_30);
func_8001EBE0(4, 0);
func_8001F1E8(arg0 + (i * 0x84) + 0x2C, arg1 + 0x17, "L%d", arg2->unk_0000[i].unk_004[0].unk_24);
func_8001F1E8(arg0 + (i * 0x84) + 0x2C, arg1 + 0x17, "L%d", arg2->unk_0000[i].unk_004.unk_24);
}
}

View File

@ -2,11 +2,360 @@
#define _FRAGMENT61_H_
#include "global.h"
#include "src/11BA0.h"
#include "src/1AB70.h"
#include "src/fragments/47/fragment47.h"
void func_842001B8(s16, s16, s16, s16);
void func_84200420(s16, s16, s16, s16, u8, u8, u8, u8);
void func_84200738(s16, s16, s16, s16);
void func_8420092C(s16, s16, s16, s16, u8, u8, u8, u8);
void func_8420112C(s16, s16, s16, s16, u8, u8, u8, u8);
struct unk_D_842168A0;
struct unk_D_84229EB0;
typedef struct unk_D_8423D3A8 {
/* 0x00 */ u8 unk_00;
/* 0x01 */ u8 unk_01;
/* 0x02 */ u8 unk_02;
/* 0x03 */ u8 unk_03;
/* 0x04 */ s16 unk_04;
/* 0x06 */ s16 unk_06;
/* 0x08 */ s16 unk_08;
/* 0x0A */ s16 unk_0A;
/* 0x0C */ s16 unk_0C;
/* 0x0E */ unk_D_800A7440 unk_0E;
/* 0x16 */ unk_D_800A7440 unk_16;
/* 0x20 */ s32 unk_20;
/* 0x24 */ unk_D_86002F58_004_000_010* unk_24;
/* 0x28 */ unk_func_8001B1FC* unk_28;
/* 0x2C */ unk_D_838067F0_0168_0000* unk_2C;
} unk_D_8423D3A8; // size >= 0x30
typedef struct unk_D_842168A0_13608 {
/* 0x00 */ char unk04[0x4];
} unk_D_842168A0_13608; // size >= 0x4
typedef struct unk_D_84229EB0_00024 {
/* 0x0000 */ unk_D_838067F0_0168_0000 unk_0000[6];
/* 0x4D10 */ u16 unk_4D10;
/* 0x4D12 */ char unk_4D12[2];
/* 0x4D14 */ char unk4D14[0xA];
/* 0x4D1E */ s16 unk_4D1E;
/* 0x4D20 */ s16 unk_4D20;
/* 0x4D24 */ struct unk_D_84229EB0_00024* unk_4D24;
/* 0x4D28 */ struct unk_D_84229EB0_00024* unk_4D28;
/* 0x4D2C */ char unk4D2C[0x4];
} unk_D_84229EB0_00024; // size = 0x4D30
typedef struct unk_D_84211B50 {
/* 0x0000 */ u8 unk_0000;
/* 0x0001 */ u8 unk_0001;
/* 0x0002 */ u8 unk_0002;
/* 0x0003 */ u8 unk_0003;
/* 0x0004 */ u8 unk_0004;
/* 0x0006 */ s16 unk_0006;
/* 0x0008 */ s16 unk_0008;
/* 0x000A */ s16 unk_000A;
/* 0x000C */ s16 unk_000C;
/* 0x000E */ s16 unk_000E;
/* 0x0010 */ s16 unk_0010;
/* 0x0012 */ s16 unk_0012;
/* 0x0014 */ s16 unk_0014;
/* 0x0016 */ s16 unk_0016;
/* 0x0018 */ s16 unk_0018;
/* 0x001A */ s16 unk_001A;
/* 0x001C */ u16 unk_001C;
/* 0x001E */ char unk_001E[2];
/* 0x0020 */ char unk0020[0x10];
/* 0x0030 */ unk_D_838067F0_0168_0000 unk_0030[6];
/* 0x4D40 */ struct unk_D_842168A0* unk_4D40;
/* 0x4D44 */ unk_D_8423D3A8* unk_4D44;
/* 0x4D48 */ struct unk_D_84229EB0* unk_4D48;
} unk_D_84211B50; // size = 0x4D4C
typedef struct unk_D_842168A0_0013C {
/* 0x00 */ u32 unk_00;
/* 0x04 */ unk_func_80026268_arg0 unk_04[1];
} unk_D_842168A0_0013C; // size >= 0x58
typedef struct unk_D_842168A0 {
/* 0x00000 */ u8 unk_00000;
/* 0x00001 */ u8 unk_00001;
/* 0x00002 */ u8 unk_00002;
/* 0x00003 */ u8 unk_00003;
/* 0x00004 */ u8 unk_00004;
/* 0x00005 */ u8 unk_00005;
/* 0x00006 */ u8 unk_00006;
/* 0x00007 */ u8 unk_00007;
/* 0x00008 */ u8 unk_00008;
/* 0x00009 */ u8 unk_00009;
/* 0x0000A */ s16 unk_0000A;
/* 0x0000C */ s16 unk_0000C;
/* 0x0000E */ s16 unk_0000E;
/* 0x00010 */ s16 unk_00010;
/* 0x00012 */ s16 unk_00012;
/* 0x00014 */ s16 unk_00014;
/* 0x00016 */ s16 unk_00016;
/* 0x00018 */ s16 unk_00018;
/* 0x0001A */ s16 unk_0001A;
/* 0x0001C */ unk_D_838067F0_003C unk_0001C[13];
/* 0x0013A */ char unk0013A[0x2];
/* 0x0013C */ unk_D_842168A0_0013C* unk_0013C;
/* 0x00140 */ unk_D_838067F0_0168* unk_00140;
/* 0x00144 */ char unk00144[0x4];
/* 0x00148 */ unk_D_838067F0_0168 unk_00148[8];
/* 0x13608 */ unk_D_84211B50* unk_13608;
/* 0x1360C */ unk_D_8423D3A8* unk_1360C;
} unk_D_842168A0; // size = 0x13610
typedef struct unk_D_84229EB0 {
/* 0x00000 */ u8 unk_00000;
/* 0x00001 */ u8 unk_00001;
/* 0x00002 */ u8 unk_00002;
/* 0x00003 */ u8 unk_00003;
/* 0x00004 */ u8 unk_00004;
/* 0x00005 */ s8 unk_00005;
/* 0x00006 */ s16 unk_00006;
/* 0x00008 */ s16 unk_00008;
/* 0x0000A */ s16 unk_0000A;
/* 0x0000C */ u8 unk_0000C;
/* 0x0000D */ u8 unk_0000D;
/* 0x0000E */ s16 unk_0000E;
/* 0x00010 */ s16 unk_00010;
/* 0x00012 */ s16 unk_00012;
/* 0x00014 */ s16 unk_00014;
/* 0x00016 */ s16 unk_00016;
/* 0x00018 */ s16 unk_00018;
/* 0x0001A */ s16 unk_0001A;
/* 0x0001C */ s16 unk_0001C;
/* 0x0001E */ u8 unk_0001E;
/* 0x0001F */ u8 unk_0001F;
/* 0x00020 */ u8 unk_00020;
/* 0x00024 */ unk_D_84229EB0_00024* unk_00024;
/* 0x00028 */ unk_D_84229EB0_00024 unk_00028[3];
/* 0x0E7B8 */ char unk0E7B8[0x4D30];
/* 0x134E8 */ unk_D_84211B50* unk_134E8;
/* 0x134EC */ unk_D_842168A0* unk_134EC;
/* 0x134F0 */ unk_D_8423D3A8* unk_134F0;
/* 0x134F4 */ char unk134F4[0x4];
} unk_D_84229EB0; // size = 0x134F8
typedef struct unk_D_8423D3D8 {
/* 0x00 */ u8 unk_00;
/* 0x01 */ u8 unk_01;
/* 0x02 */ s16 unk_02;
/* 0x04 */ unk_D_800AE540_0004* unk_04;
} unk_D_8423D3D8; // size = 0x8
typedef struct unk_D_84211704 {
/* 0x00 */ s16 unk_00;
/* 0x02 */ s16 unk_02;
/* 0x04 */ s16 unk_04;
/* 0x06 */ s16 unk_06;
/* 0x08 */ s16 unk_08;
/* 0x0A */ s8 unk_0A;
/* 0x0B */ s8 unk_0B;
/* 0x0C */ s16 unk_0C;
/* 0x0E */ u16 unk_0E;
} unk_D_84211704; // size = 0x10
s32 func_84200020(s32 arg0);
char* func_84200088(s32 arg0);
char* func_842000C0(s32 arg0);
char* func_842000F8(s32 arg0);
char* func_84200130(s32 arg0);
char* func_84200160(s32 arg0);
char* func_84200190(char* arg0, s32 arg1, s32 arg2);
void func_842001B8(s16 arg0, s16 arg1, s16 arg2, s16 arg3);
void func_84200420(s16 arg0, s16 arg1, s16 arg2, s16 arg3, u8 arg4, u8 arg5, u8 arg6, u8 arg7);
void func_84200738(s16 arg0, s16 arg1, s16 arg2, s16 arg3);
void func_8420092C(s16 arg0, s16 arg1, s16 arg2, s16 arg3, u8 arg4, u8 arg5, u8 arg6, u8 arg7);
void func_8420112C(s16 arg0, s16 arg1, s16 arg2, s16 arg3, u8 arg4, u8 arg5, u8 arg6, u8 arg7);
void func_8420192C(s16 arg0, s16 arg1);
void func_84201A00(s16 arg0, s16 arg1);
void func_84201AD4(s16 arg0, s16 arg1, s16 arg2);
void func_84201BC4(s16 arg0, s16 arg1, s16 arg2, Color_RGBA8* arg3, Color_RGBA8* arg4);
void func_84201D6C(void);
void func_84201E70(s16 arg0, s16 arg1, s16 arg2, s32 arg3);
void func_84201F04(s16 arg0, s16 arg1, s16 arg2);
void func_84202208(void);
s32 func_84202284(void);
s16 func_842023E4(void);
void func_842024DC(s16 arg0, s16 arg1);
void func_84202718(UNUSED s16 arg0, s16 arg1, s16 arg2);
s16 func_84202844(s16 arg0, s16 arg1, s16 arg2, s32 arg3);
void func_84202974(UNUSED s16 arg0, UNUSED s32 arg1);
void func_84202A64(s16 arg0, s32 arg1, s16 arg2);
void func_84202AF4(s16 arg0, s16 arg1, s16 arg2);
void func_84202C20(void);
void func_84202D18(unk_D_8423D3D8* arg0, s16 arg1);
s32 func_84202EB0(unk_D_8423D3D8* arg0, s16 arg1);
void func_8420305C(s32 arg0);
void func_84203100(void);
void func_8420318C(s16 arg0, s16 arg1);
s32 func_84203210(void);
s32 func_842034E4(void);
void func_842037AC(void);
void func_842039B4(void);
void func_84203AB8(void);
s32 func_84203BBC(void);
void func_84203C90(void);
void func_84203D74(void);
s32 func_84203E6C(s32 arg0, UNUSED s32 arg1);
s32 func_84204070(s32 arg0, unk_func_80011B94* arg1);
void func_84204210(void);
void func_84204294(s32 arg0);
void func_8420448C(void);
void func_84204660(s32 arg0, s16 arg1, s16 arg2);
void func_84204760(s32 arg0);
void func_84204934(s16 arg0, f32 arg1);
void func_84204A3C(s16 arg0, f32 arg1);
void func_84204B50(void);
void func_84204BF8(void);
void func_84204C9C(void);
void func_84204D5C(void);
void func_84204E0C(void);
void func_84204F78(void);
void func_842050CC(void);
void func_84205200(void);
void func_8420545C(void);
void func_8420563C(void);
s32 func_8420570C(void);
void func_842057AC(void);
void func_8420594C(void);
void func_84205B3C(void);
s32 func_84205C18(s16 arg0);
s32 func_84205D48(s16 arg0, s32 arg1);
s16 func_84205E54(void);
void func_84205E80(s16 arg0, s16 arg1, s32 arg2);
void func_84205F18(unk_D_84211B50* arg0, s16 arg1, s16 arg2);
void func_84206144(unk_D_84211B50* arg0);
void func_842062D4(unk_D_84211B50* arg0, s32 arg1);
void func_842068DC(unk_D_84211B50* arg0);
s32 func_84206990(unk_D_84211B50* arg0);
s32 func_84206A68(unk_D_84211B50* arg0);
void func_84206BC4(unk_D_84211B50* arg0);
void func_84206BDC(unk_D_84211B50* arg0);
void func_84206BF0(unk_D_84211B50* a0);
void func_84206D10(unk_D_84211B50* arg0);
void func_84206DE8(unk_D_84211B50* arg0);
void func_84206E88(unk_D_84211B50* arg0);
void func_84206EE0(unk_D_84211B50* arg0);
void func_84206F1C(unk_D_84211B50* arg0);
void func_84206F64(unk_D_84211B50* arg0);
void func_84206FB0(unk_D_84211B50* arg0);
void func_84206FF8(unk_D_84211B50* arg0);
void func_84207040(unk_D_84211B50* arg0);
void func_84207190(unk_D_84211B50* arg0);
void func_8420720C(unk_D_84211B50* arg0);
void func_842073A4(unk_D_84211B50* arg0);
void func_84207530(unk_D_84211B50* arg0);
void func_84207634(unk_D_84211B50* arg0);
void func_842076A0(unk_D_84211B50* arg0);
void func_842076F8(unk_D_84211B50* arg0);
s32 func_8420776C(unk_D_84211B50* arg0);
s32 func_842078C0(unk_D_84211B50* arg0, unk_D_842168A0* arg1, unk_D_8423D3A8* arg2, unk_D_84229EB0* arg3, s16 arg4, u16 arg5,
char* arg6, s16 arg7, s16 arg8, s16 arg9);
s32 func_842079B4(unk_D_84211B50* arg0, s16 arg1);
s32 func_842079F0(unk_D_84211B50*);
s32 func_84207A1C(unk_D_84211B50*);
s32 func_84207AAC(unk_D_84211B50*);
s32 func_84207BD4(unk_D_84211B50*, unk_D_838067F0_0168_0000*);
s32 func_84207D5C(unk_D_84211B50*);
s32 func_84207E3C(unk_D_84211B50*, unk_D_838067F0_0168_0000*);
s32 func_8420804C(unk_D_84211B50*, unk_D_838067F0_0168_0000*);
s32 func_842081A8(unk_D_84211B50* arg0);
void func_842081B4(unk_D_84211B50* arg0, unk_func_80026268_arg0* arg1, s16 arg2);
void func_84209340(unk_D_842168A0*, s32);
s32 func_8420AF1C(unk_D_842168A0*, unk_D_84211B50*, unk_D_8423D3A8*, s16, s16, s16, s16, s16, unk_D_842168A0_0013C*);
s32 func_8420B0C8(unk_D_842168A0*);
s32 func_8420B1D0(unk_D_842168A0*, s16);
s32 func_8420B20C(unk_D_842168A0*);
s32 func_8420B238(unk_D_842168A0*);
void func_8420B264(unk_D_842168A0*);
s32 func_8420B334(unk_D_842168A0*);
s32 func_8420B37C(unk_D_842168A0*);
void func_8420B390(s16 arg0, s16 arg1, s16 arg2, s16 arg3, s8* arg4);
void func_8420B40C(s16 arg0, s16 arg1, s16 arg2, s16 arg3);
void func_8420B5A4(s16 arg0, s16 arg1, s16 arg2);
void func_8420B71C(s16 arg0, s16 arg1, s32 arg2);
s16 func_8420B870(s16 arg0, s16 arg1, char* arg2);
void func_8420B8CC(unk_D_8423D3A8* arg0, s32 arg1);
void func_8420C360(unk_D_8423D3A8* arg0);
void func_8420C368(unk_D_8423D3A8* arg0);
void func_8420C484(unk_D_8423D3A8* arg0);
void func_8420C4DC(unk_D_8423D3A8* arg0);
s32 func_8420C504(unk_D_8423D3A8* arg0);
s32 func_8420C580(unk_D_8423D3A8* arg0);
s32 func_8420C60C(unk_D_8423D3A8* arg0, s16 arg1, s16 arg2, s16 arg3, s16 arg4, s16 arg5,
unk_D_838067F0_0168_0000* arg6, s16 arg7);
s32 func_8420C6D8(unk_D_8423D3A8* arg0, s16 arg1, s16 arg2, unk_D_838067F0_0168_0000* arg3);
s32 func_8420C788(unk_D_8423D3A8* arg0);
void func_8420C7B0(s16 arg0, s16 arg1, s16 arg2, char* arg3);
void func_8420C844(unk_D_84211704* arg0);
void func_8420C930(unk_D_84211704* arg0);
void func_8420CA00(unk_D_84211704* arg0);
void func_8420CAD0(unk_D_84211704* arg0);
void func_8420CBA0(unk_D_84211704* arg0);
void func_8420CC54(unk_D_84211704* arg0);
void func_8420CCAC(unk_D_84211704* arg0);
void func_8420CE24(unk_D_84211704* arg0);
void func_8420CFC4(unk_D_84211704* arg0);
void func_8420D144(unk_D_84211704* arg0);
void func_8420D2BC(unk_D_84211704* arg0);
void func_8420D370(unk_D_84211704* arg0, s16 arg1);
void func_8420D464(unk_D_84211704* arg0, s16 arg1);
void func_8420D4F8(s32 arg0);
void func_8420D75C(void);
void func_8420D938(void);
void func_8420D978(void);
s32 func_8420D9B0(void);
s32 func_8420DA28(s16 arg0, Controller* arg1);
s32 func_8420DAF4(s16 arg0);
s16 func_8420DB48(s16 arg0);
s32 func_8420DBA0(unk_D_84229EB0_00024* arg0);
void func_8420DC78(unk_D_84229EB0_00024* arg0);
void func_8420DD14(unk_D_84229EB0* arg0, s16 arg1, s16 arg2, unk_D_84229EB0_00024* arg3);
void func_8420E46C(s16 arg0, s16 arg1);
void func_8420E63C(unk_D_84229EB0* arg0);
void func_8420EA88(unk_D_84229EB0* arg0);
void func_8420EB7C(unk_D_84229EB0* arg0);
void func_8420ED0C(unk_D_84229EB0* arg0);
void func_8420EE54(unk_D_84229EB0* arg0, s32 arg1);
unk_D_84229EB0_00024* func_8420F1BC(unk_D_84229EB0_00024* arg0, s32 arg1);
unk_D_84229EB0_00024* func_8420F1E0(unk_D_84229EB0_00024* arg0, s32 arg1);
s32 func_8420F204(unk_D_84229EB0_00024* arg0, s16 arg1);
void func_8420F37C(unk_D_84229EB0* arg0);
void func_8420F4FC(unk_D_84229EB0* arg0);
void func_8420F524(unk_D_84229EB0* arg0);
void func_8420F53C(unk_D_84229EB0* arg0);
void func_8420F598(unk_D_84229EB0* arg0);
void func_8420F5F0(unk_D_84229EB0* arg0);
void func_8420F654(unk_D_84229EB0* arg0);
void func_8420F754(unk_D_84229EB0* arg0);
void func_8420F86C(unk_D_84229EB0* arg0);
void func_8420F9C8(unk_D_84229EB0* arg0);
void func_8420FA88(unk_D_84229EB0* arg0);
void func_8420FB4C(unk_D_84229EB0* arg0);
void func_8420FC0C(unk_D_84229EB0* arg0);
void func_8420FCCC(unk_D_84229EB0* arg0);
void func_8420FDDC(unk_D_84229EB0* arg0);
void func_8420FE50(unk_D_84229EB0* arg0);
void func_8420FE90(unk_D_84229EB0* arg0);
void func_8420FEC0(unk_D_84229EB0* arg0);
void func_8420FFB0(unk_D_84229EB0* arg0);
void func_8421009C(unk_D_84229EB0* arg0);
void func_8421015C(unk_D_84229EB0* arg0);
void func_84210328(unk_D_84229EB0* arg0);
void func_8421059C(unk_D_84229EB0* arg0);
void func_84210668(unk_D_84229EB0* arg0);
s32 func_842106FC(unk_D_84229EB0* arg0);
s32 func_8421089C(unk_D_84229EB0* arg0, unk_D_84211B50* arg1, unk_D_842168A0* arg2, unk_D_8423D3A8* arg3,
s16 arg4, s16 arg5, s16 arg6, s16 arg7);
s32 func_84210A18(unk_D_84229EB0* arg0);
s32 func_84210A48(unk_D_84229EB0* arg0, u16 arg1, char* arg2, unk_D_838067F0_0168_0000* arg3);
s32 func_84210B54(unk_D_84229EB0* arg0);
s32 func_84210B60(unk_D_84229EB0* arg0, unk_D_84229EB0_00024** arg1);
void func_84210C80(unk_D_84229EB0* arg0, s16 arg1);
#endif // _FRAGMENT61_H_

File diff suppressed because it is too large Load Diff

View File

@ -1,51 +1,815 @@
#include "global.h"
#include "fragment61.h"
#include "src/12D80.h"
#include "src/1C720.h"
#include "src/1CF30.h"
#include "src/20470.h"
#include "src/22630.h"
#include "src/232C0.h"
#include "src/26820.h"
#include "src/2E110.h"
#include "src/49790.h"
#include "src/F420.h"
#include "src/controller.h"
#include "src/geo_layout.h"
#include "src/math_util.h"
#include "src/memmap.h"
#include "src/fragments/47/fragment47.h"
#include "src/memory.h"
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2DB900/func_84204070.s")
typedef struct unk_D_8423E518 {
/* 0x00 */ u8 unk_00;
/* 0x01 */ u8 unk_01;
/* 0x02 */ u8 unk_02;
/* 0x03 */ u8 unk_03;
/* 0x04 */ u16 unk_04;
/* 0x06 */ char unk_06[1];
/* 0x07 */ char unk_07[0xD];
} unk_D_8423E518; // size = 0x14
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2DB900/func_84204210.s")
GraphNode* D_8423D400;
unk_D_86002F58_004_000 D_8423D408[2][6];
unk_D_86002F58_004_000_004* D_8423E4E8[6];
unk_D_86002F58_004_000_004* D_8423E500;
u8* D_8423E508[4];
unk_D_8423E518 D_8423E518[4];
s16 D_8423E568;
s16 D_8423E56A;
s16 D_8423E56C;
s16 D_8423E56E;
Controller* D_8423E570;
s16 D_8423E574;
s16 D_8423E576;
s16 D_8423E578;
s32 D_8423E57C;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2DB900/func_84204294.s")
unk_D_8380548C D_84210DA0[] = {
{
0x01,
0x00,
134,
210,
64,
0,
0,
1472,
},
{
0x01,
0x00,
258,
210,
64,
-32768,
-32768,
1664,
},
{
0x01,
0x00,
382,
210,
64,
0,
0,
1408,
},
{
0x01,
0x00,
506,
210,
64,
-32768,
-32768,
1600,
},
};
u8 D_84210DD8[] = {
1, 0, 0, 0xBE, 1, 0x70, 0, 0x4C, 0, 0, 0, 0, 6, 0x20, 1, 0, 1, 0xC2, 1, 0x70, 0, 0x64, 0x80, 0, 0x80, 0, 5, 0xE0,
};
u32 D_84210DF4[] = {
0x0C000000, 0x05000000, 0x0B00002D, 0x00000000, 0x028001E0, 0x00000000, 0xFDBD0000,
0x00000243, 0x05000000, 0x0D000000, 0x05000000, 0x0F000002, 0x05000000, 0x0A000000,
&D_800AC840, 0x06000000, 0x06000000, 0x06000000, 0x06000000, 0x01000000, 0x00000000,
};
Vtx D_84210E48[] = {
VTX(-32, 64, 0, 0, 0, 0xFF, 0xFF, 0xFF, 0xFF), VTX(-32, 32, 0, 0, 1024, 0xFF, 0xFF, 0xFF, 0xFF),
VTX(32, 32, 0, 2048, 1024, 0xFF, 0xFF, 0xFF, 0xFF), VTX(32, 64, 0, 2048, 0, 0xFF, 0xFF, 0xFF, 0xFF),
VTX(-32, 32, 0, 0, 0, 0xFF, 0xFF, 0xFF, 0xFF), VTX(-32, 0, 0, 0, 1024, 0xFF, 0xFF, 0xFF, 0xFF),
VTX(32, 0, 0, 2048, 1024, 0xFF, 0xFF, 0xFF, 0xFF), VTX(32, 32, 0, 2048, 0, 0xFF, 0xFF, 0xFF, 0xFF),
VTX(-16, 39, 0, 0, 0, 0xFF, 0xFF, 0xFF, 0xFF), VTX(-16, 15, 0, 0, 768, 0xFF, 0xFF, 0xFF, 0xFF),
VTX(16, 15, 0, 1024, 768, 0xFF, 0xFF, 0xFF, 0xFF), VTX(16, 39, 0, 1024, 0, 0xFF, 0xFF, 0xFF, 0xFF),
};
static Gfx D_84210F08[] = {
gsSPSetGeometryMode(G_CULL_BACK),
gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_PASS2),
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),
gsSPVertex(D_84210E48, 12, 0),
gsDPLoadTextureBlock(0x0F000000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_NOMIRROR | G_TX_CLAMP,
G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD),
gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0),
gsDPLoadTextureBlock(0x0F001000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_NOMIRROR | G_TX_CLAMP,
G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD),
gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0),
gsDPLoadTextureBlock(0x0E000000, G_IM_FMT_IA, G_IM_SIZ_8b, 32, 24, 0, G_TX_NOMIRROR | G_TX_CLAMP,
G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD),
gsSP2Triangles(8, 9, 10, 0, 8, 10, 11, 0),
gsSPEndDisplayList(),
};
static u32 D_84210FF0[] = {
0x17000000, 0x00000000, 0x00000000, 0x00000000, D_84210E48, 0x05000000, 0x22040000,
0x00000000, 0x08000000, func_84204070, D_84210F08, 0x06000000, 0x01000000, 0x00000000,
};
static Vtx D_84211028[] = {
VTX(-38, 60, 0, 0, 0, 0xFF, 0xFF, 0xFF, 0xFF), VTX(-38, 40, 0, 0, 640, 0xFF, 0xFF, 0xFF, 0xFF),
VTX(38, 40, 0, 2432, 640, 0xFF, 0xFF, 0xFF, 0xFF), VTX(38, 60, 0, 2432, 0, 0xFF, 0xFF, 0xFF, 0xFF),
VTX(-38, 40, 0, 0, 0, 0xFF, 0xFF, 0xFF, 0xFF), VTX(-38, 20, 0, 0, 640, 0xFF, 0xFF, 0xFF, 0xFF),
VTX(38, 20, 0, 2432, 640, 0xFF, 0xFF, 0xFF, 0xFF), VTX(38, 40, 0, 2432, 0, 0xFF, 0xFF, 0xFF, 0xFF),
VTX(-38, 20, 0, 0, 0, 0xFF, 0xFF, 0xFF, 0xFF), VTX(-38, 0, 0, 0, 640, 0xFF, 0xFF, 0xFF, 0xFF),
VTX(38, 0, 0, 2432, 640, 0xFF, 0xFF, 0xFF, 0xFF), VTX(38, 20, 0, 2432, 0, 0xFF, 0xFF, 0xFF, 0xFF),
};
static Gfx D_842110E8[] = {
gsSPSetGeometryMode(G_CULL_BACK),
gsDPSetCombineLERP(0, 0, 0, TEXEL0, TEXEL0, 0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, 0, 0, COMBINED),
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),
gsSPVertex(D_84211028, 12, 0),
gsDPLoadTextureBlock(0x0F000000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 76, 20, 0, G_TX_NOMIRROR | G_TX_CLAMP,
G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD),
gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0),
gsDPLoadTextureBlock(0x0F000BE0, G_IM_FMT_RGBA, G_IM_SIZ_16b, 76, 20, 0, G_TX_NOMIRROR | G_TX_CLAMP,
G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD),
gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0),
gsDPLoadTextureBlock(0x0F0017C0, G_IM_FMT_RGBA, G_IM_SIZ_16b, 76, 20, 0, G_TX_NOMIRROR | G_TX_CLAMP,
G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD),
gsSP2Triangles(8, 9, 10, 0, 8, 10, 11, 0),
gsSPEndDisplayList(),
};
static u32 D_842111D0[] = {
0x17000000, 0x00000000, 0x00000000, 0x00000000, D_84211028, 0x05000000, 0x22050000,
0x00000000, 0x08000000, func_84204070, D_842110E8, 0x06000000, 0x01000000, 0x00000000,
};
static Vtx D_84211208[] = {
VTX(-50, 64, 0, 0, 0, 0xFF, 0xFF, 0xFF, 0xFF), VTX(-50, 48, 0, 0, 512, 0xFF, 0xFF, 0xFF, 0xFF),
VTX(50, 48, 0, 3200, 512, 0xFF, 0xFF, 0xFF, 0xFF), VTX(50, 64, 0, 3200, 0, 0xFF, 0xFF, 0xFF, 0xFF),
VTX(-50, 48, 0, 0, 0, 0xFF, 0xFF, 0xFF, 0xFF), VTX(-50, 32, 0, 0, 512, 0xFF, 0xFF, 0xFF, 0xFF),
VTX(50, 32, 0, 3200, 512, 0xFF, 0xFF, 0xFF, 0xFF), VTX(50, 48, 0, 3200, 0, 0xFF, 0xFF, 0xFF, 0xFF),
VTX(-50, 32, 0, 0, 0, 0xFF, 0xFF, 0xFF, 0xFF), VTX(-50, 16, 0, 0, 512, 0xFF, 0xFF, 0xFF, 0xFF),
VTX(50, 16, 0, 3200, 512, 0xFF, 0xFF, 0xFF, 0xFF), VTX(50, 32, 0, 3200, 0, 0xFF, 0xFF, 0xFF, 0xFF),
VTX(-50, 16, 0, 0, 0, 0xFF, 0xFF, 0xFF, 0xFF), VTX(-50, 0, 0, 0, 512, 0xFF, 0xFF, 0xFF, 0xFF),
VTX(50, 0, 0, 3200, 512, 0xFF, 0xFF, 0xFF, 0xFF), VTX(50, 16, 0, 3200, 0, 0xFF, 0xFF, 0xFF, 0xFF),
};
static Gfx D_84211308[] = {
gsSPSetGeometryMode(G_CULL_BACK),
gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_PASS2),
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),
gsSPVertex(D_84211208, 16, 0),
gsDPLoadTextureBlock(0x0F000000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 100, 16, 0, G_TX_NOMIRROR | G_TX_CLAMP,
G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD),
gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0),
gsDPLoadTextureBlock(0x0F000C80, G_IM_FMT_RGBA, G_IM_SIZ_16b, 100, 16, 0, G_TX_NOMIRROR | G_TX_CLAMP,
G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD),
gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0),
gsDPLoadTextureBlock(0x0F001900, G_IM_FMT_RGBA, G_IM_SIZ_16b, 100, 16, 0, G_TX_NOMIRROR | G_TX_CLAMP,
G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD),
gsSP2Triangles(8, 9, 10, 0, 8, 10, 11, 0),
gsDPLoadTextureBlock(0x0F002580, G_IM_FMT_RGBA, G_IM_SIZ_16b, 100, 16, 0, G_TX_NOMIRROR | G_TX_CLAMP,
G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD),
gsSP2Triangles(12, 13, 14, 0, 12, 14, 15, 0),
gsSPEndDisplayList(),
};
static u32 D_84211430[] = {
0x17000000, 0x00000000, 0x00000000, 0x00000000, D_84211208, 0x05000000, 0x22040000,
0x00000000, 0x08000000, func_84204070, D_84211308, 0x06000000, 0x01000000, 0x00000000,
};
static Vtx D_84211468[] = {
VTX(-36, 12, 0, 0, 0, 0xFF, 0xFF, 0xFF, 0xFF),
VTX(-36, -12, 0, 0, 768, 0xFF, 0xFF, 0xFF, 0xFF),
VTX(36, -12, 0, 2304, 768, 0xFF, 0xFF, 0xFF, 0xFF),
VTX(36, 12, 0, 2304, 0, 0xFF, 0xFF, 0xFF, 0xFF),
};
static Gfx D_842114A8[] = {
gsSPSetGeometryMode(G_CULL_BACK),
gsDPSetCombineLERP(0, 0, 0, 0, TEXEL0, 0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, 0, 0, COMBINED),
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),
gsSPVertex(D_84211468, 4, 0),
gsDPLoadTextureBlock_4b(0x0F000000, G_IM_FMT_I, 80, 24, 0, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_CLAMP,
G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD),
gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0),
gsSPEndDisplayList(),
};
static u32 D_84211510[] = {
0x17000000, 0x00000000, 0x00000000, 0x00000000, D_84211468, 0x05000000, 0x22050000,
0x00000000, 0x08000000, func_84204070, D_842114A8, 0x06000000, 0x01000000,
};
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2DB900/func_8420448C.s")
s16 D_84211544[] = { 0x46, 0x28, 0x1E, 0x1E, 0x1E, 0x1E, 0x28, 0x3C, 0x5A, 0x78, 0x6E, 0x64 };
s16 D_8421155C[] = { 0x14, 0x3C, 0x5F, 0x78, 0x82, 0x87, 0x82, 0x78, 0x6E, 0x69, 0x66, 0x64 };
s16 D_84211574[] = { 0x46, 0x32, 0x28, 0x1E, 0x19, 0x14, 0x14, 0x14, 0x19, 0x1E, 0x28, 0x32 };
s16 D_8421158C[] = {
0x64, 0x6E, 0x82, 0x96, 0xA0, 0xA0, 0x78, 0x50, 0x32, 0x1E, 0xA, 5,
};
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2DB900/func_84204660.s")
s32 func_84204070(s32 arg0, unk_func_80011B94* arg1) {
u32 var_a0;
u8* var_a3;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2DB900/func_84204760.s")
if (arg0 == 5) {
// clang-format off
switch (D_8006F09C->unk_000.unk_14) {
case 0:
var_a0 = D_8423E508[0]; var_a3 = D_201D820;
break;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2DB900/func_84204934.s")
case 1:
var_a0 = D_8423E508[1]; var_a3 = D_201DB20;
break;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2DB900/func_84204A3C.s")
case 2:
var_a0 = D_8423E508[2]; var_a3 = D_201DE20;
break;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2DB900/func_84204B50.s")
case 3:
var_a0 = D_8423E508[3]; var_a3 = D_201E120;
break;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2DB900/func_84204BF8.s")
case 4:
var_a0 = D_2029CE0;
var_a3 = NULL;
break;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2DB900/func_84204C9C.s")
case 5:
var_a0 = D_201A620;
var_a3 = NULL;
break;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2DB900/func_84204D5C.s")
default:
var_a0 = D_2028420;
var_a3 = NULL;
break;
}
// clang-format on
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2DB900/func_84204E0C.s")
gDPPipeSync(gDisplayListHead++);
gDPSetEnvColor(gDisplayListHead++, 0, 0, 0, D_8006F09C->unk_01D);
gSPSegment(gDisplayListHead++, 0x0F, Memmap_GetSegmentVaddr(var_a0));
gSPSegment(gDisplayListHead++, 0x0E, Memmap_GetSegmentVaddr(var_a3));
gSPDisplayList(gDisplayListHead++, arg1->unk_00.unk_14);
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2DB900/func_84204F78.s")
func_80015684();
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2DB900/func_842050CC.s")
return 0;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2DB900/func_84205200.s")
void func_84204210(void) {
if (D_8423E56C == 3) {
s16 tmp = (D_84210DA0[D_8423E568].unk_02 - (D_84210DA0[D_8423E568].unk_06 / 2)) - 0x1E;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2DB900/func_8420545C.s")
func_80020928(tmp, D_84210DA0[D_8423E568].unk_04 - 0x20);
}
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2DB900/func_8420563C.s")
void func_84204294(s32 arg0) {
UNUSED s32 pad;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2DB900/func_8420570C.s")
if (D_84210DA0[arg0].unk_00 != 0) {
if (D_84210DA0[arg0].unk_01 == 0) {
func_8001F324(0xFF, 0xFF, 0xFF, 0xFF);
func_8001EBE0(8, 0);
func_8001F1E8(((arg0 * 128) - (func_8001F5B0(8, 0, D_8423E518[arg0].unk_06) / 2)) + 0x80, 0x5C,
D_8423E518[arg0].unk_06);
func_8001F324(0xFF, 0xBE, 0xFF, 0xFF);
func_8001EBE0(4, 0);
func_8001F1E8(((arg0 * 128) - (func_8001F5B0(4, 0, "ID 00000") / 2)) + 0x80, 0x73, "ID %05d",
D_8423E518[arg0].unk_04);
} else {
func_8001F324(0xFF, 0xFF, 0xFF, 0xFF);
func_8001EBE0(8, 0);
func_8001F1E8(((arg0 * 128) - (func_8001F5B0(8, 0, "???????") / 2)) + 0x80, 0x5C, "???????");
func_8001F324(0xFF, 0xBE, 0xFF, 0xFF);
func_8001EBE0(4, 0);
func_8001F1E8(((arg0 * 128) - (func_8001F5B0(4, 0, "ID *****") / 2)) + 0x80, 0x73, "ID *****");
}
}
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2DB900/func_842057AC.s")
void func_8420448C(void) {
s32 tmp;
char* temp_v0;
char sp20[0x100];
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2DB900/func_8420594C.s")
func_8001F3F4();
func_84204294(0);
func_84204294(1);
func_84204294(2);
func_84204294(3);
func_8001F324(0xFF, 0xFF, 0xFF, 0xFF);
func_8001EBE0(0x10, 0);
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2DB900/func_84205B3C.s")
temp_v0 = func_84200130(0xB);
tmp = func_8001F5B0(0x10, 0, temp_v0) / 2;
func_8001F1E8(0x140 - tmp, 0x198, temp_v0);
func_8001EBE0(8, 0);
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2DB900/func_84205C18.s")
if (D_8423E56A == 0) {
temp_v0 = func_84200130(0xC);
} else {
temp_v0 = func_84200130(0xD);
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2DB900/func_84205D48.s")
tmp = func_8001F5B0(8, 0, temp_v0) / 2;
func_8001F1E8(0x1C0 - tmp, 0x102, temp_v0);
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2DB900/func_84205E54.s")
if (D_8423E56A == 0) {
temp_v0 = func_84200130(0xE);
tmp = func_8001F5B0(8, 0, temp_v0) / 2;
func_8001F1E8(0xC0 - tmp, 0xF6, temp_v0);
func_8001F324(0xFF, 0xBA, 0xCC, 0xFF);
func_8002D600(2, D_8423E578);
temp_v0 = func_84200190(sp20, sizeof(sp20), 0xF);
tmp = func_8001F5B0(8, 0, temp_v0) / 2;
func_8001F1E8(0xC0 - tmp, 0x10E, temp_v0);
}
func_8001F444();
}
void func_84204660(s32 arg0, s16 arg1, s16 arg2) {
Color_RGBA8 sp2C;
if (D_84210DA0[arg0].unk_00 != 0) {
if (D_84210DA0[arg0].unk_01 == 0) {
func_8000E840(&sp2C, 0x1E, 0x1E, 0x82, 0xFF);
} else {
func_8000E840(&sp2C, 0x64, 0x1E, 0x1E, 0xFF);
}
} else {
func_8000E840(&sp2C, 0x1E, 0x1E, 0x82, 0x80);
}
func_8420092C((arg0 * 128) + 0x44, arg1 + 0x54, 0x78, arg2, sp2C.r, sp2C.g, sp2C.b, sp2C.a);
}
void func_84204210(void);
void func_84204760(s32 arg0) {
UNUSED s32 pad;
s16 sp32;
s16 temp_s0;
if (D_8423E56C != 0) {
temp_s0 = (0x38 - D_8423E574) / 2;
sp32 = (0x28 - D_8423E576) / 2;
func_80015094(D_8423D400);
func_84204210();
if (D_8423E574 > 0) {
func_84204660(0, temp_s0, D_8423E574);
func_84204660(1, temp_s0, D_8423E574);
func_84204660(2, temp_s0, D_8423E574);
func_84204660(3, temp_s0, D_8423E574);
if (D_8423E56A == 0) {
func_8420092C(0x44, temp_s0 + 0xF0, 0xF8, D_8423E574, 0x78, 0x1E, 0x64, 0xFF);
}
func_8420092C(0x144, temp_s0 + 0xF0, 0xF8, D_8423E574, 0x78, 0x1E, 0x64, 0xFF);
}
if (D_8423E576 > 0) {
func_8420112C(0x38, sp32 + 0x190, 0x210, D_8423E576, 0x1E, 0x1E, 0x82, 0x96);
}
if (D_8423E574 == 0x38) {
func_8420448C();
}
}
}
void func_84204934(s16 arg0, f32 arg1) {
s16 var_a2;
f32 var_fa0;
if (arg0 == D_8423E568) {
var_fa0 = 0.06f;
var_a2 = 0x3000;
} else {
var_fa0 = 0.02f;
var_a2 = 0x2000;
}
D_8423D408[0][arg0].unk_030.x = ((SINS(D_84210DA0[arg0].unk_0A) * var_fa0) + 1.0f) * arg1;
D_8423D408[0][arg0].unk_030.y = ((COSS(D_84210DA0[arg0].unk_0A) * var_fa0) + 1.0f) * arg1;
D_8423D408[1][arg0].unk_030.x = ((SINS(D_84210DA0[arg0].unk_0A) * var_fa0) + 1.0f) * arg1;
D_8423D408[1][arg0].unk_030.y = ((COSS(D_84210DA0[arg0].unk_0A) * var_fa0) + 1.0f) * arg1;
D_84210DA0[arg0].unk_0A += var_a2 + ((MathUtil_Random16() & 0xF) * 0x10);
}
void func_84204A3C(s16 arg0, f32 arg1) {
f32 var_fv0;
s16 var_v0;
if (arg0 == D_8423E568) {
var_v0 = D_84210DA0[arg0].unk_0C * 2;
var_fv0 = 1.5f;
} else {
var_v0 = D_84210DA0[arg0].unk_0C;
var_fv0 = 1.0f;
}
D_8423D408[0][arg0].unk_01E.z = SINS(D_84210DA0[arg0].unk_08) * (1536.0f * var_fv0);
D_8423D408[0][arg0].unk_024.x =
(D_84210DA0[arg0].unk_02 - 320.0f) - (SINS(D_84210DA0[arg0].unk_08) * (6.0f * var_fv0));
D_8423D408[1][arg0].unk_024.x =
(D_84210DA0[arg0].unk_02 - 320.0f) - (SINS(D_84210DA0[arg0].unk_08) * (6.0f * var_fv0));
D_84210DA0[arg0].unk_08 += var_v0;
}
void func_84204B50(void) {
s16 i;
s16 var_v1;
s32 var_a0;
if (D_8423E568 >= 4) {
if (D_8423E568 == 4) {
var_v1 = 0;
var_a0 = 1;
} else {
var_v1 = 3;
var_a0 = -1;
}
for (i = 0; i < 4; i++) {
if (D_84210DA0[var_v1].unk_00 != 0) {
D_8423E568 = var_v1;
func_80048B90(1);
break;
}
var_v1 = (var_v1 + var_a0) & 3;
}
}
}
void func_84204BF8(void) {
s16 var_v0;
s16 i;
if (D_8423E568 < 4) {
var_v0 = D_8423E568 / 2 + 4;
for (i = 0; i < 2; i++) {
if (D_84210DA0[var_v0].unk_00 != 0) {
D_8423E568 = var_v0;
func_80048B90(1);
break;
}
var_v0 ^= 1;
}
}
}
void func_84204C9C(void) {
s16 i;
if ((D_8423E568 > 0) && (D_8423E568 < 4)) {
for (i = D_8423E568 - 1; i >= 0; i--) {
if (D_84210DA0[i].unk_00 != 0) {
D_8423E568 = i;
func_80048B90(1);
break;
}
}
} else if ((D_8423E568 == 5) && (D_84210DA0[4].unk_00 != 0)) {
D_8423E568 = 4;
func_80048B90(1);
}
}
void func_84204D5C(void) {
s16 i;
if (D_8423E568 < 3) {
for (i = D_8423E568 + 1; i < 4; i++) {
if (D_84210DA0[i].unk_00 != 0) {
D_8423E568 = i;
func_80048B90(1);
break;
}
}
} else if (D_8423E568 == 4) {
D_8423E568 = 5;
func_80048B90(1);
}
}
void func_84204E0C(void) {
s16 i;
if (BTN_IS_PRESSED(D_8423E570, BTN_A)) {
if (D_84210DA0[D_8423E568].unk_01 == 0) {
func_80048B90(0x01100012);
D_8423E56C = 4;
} else {
func_80048B90(8);
D_8423E56C = 6;
}
} else if ((D_8423E57C != 0) && (BTN_IS_PRESSED(D_8423E570, BTN_B))) {
D_8423E56C = 5;
func_80048B90(3);
} else if (BTN_IS_PRESSED(D_8423E570, BTN_DUP)) {
func_84204B50();
} else if (BTN_IS_PRESSED(D_8423E570, BTN_DDOWN)) {
func_84204BF8();
} else if (BTN_IS_PRESSED(D_8423E570, BTN_DLEFT)) {
func_84204C9C();
} else if (BTN_IS_PRESSED(D_8423E570, BTN_DRIGHT)) {
func_84204D5C();
}
for (i = 0; i < 6; i++) {
func_84204934(i, 1.0f);
func_84204A3C(i, 1.0f);
}
}
void func_84204F78(void) {
s16 i;
for (i = 0; i < 12; i++) {
D_8423D408[0][i].unk_030.x = D_84211544[D_8423E56E] / 100.0f;
D_8423D408[0][i].unk_030.y = D_8421155C[D_8423E56E] / 100.0f;
}
D_8423E574 = ((((D_8423E56E * 0x32) + 0x32) / 12) + 6) & (u16)~1;
D_8423E576 = ((((D_8423E56E * 0x24) + 0x24) / 12) + 4) & (u16)~1;
D_8423E56E++;
if (D_8423E56E == 12) {
D_8423E56C = 3;
}
}
void func_842050CC(void) {
if (D_8423E56E++ < 12) {
D_8423D408[0][D_8423E568].unk_030.x = D_84211574[D_8423E56E] / 100.0f;
D_8423D408[0][D_8423E568].unk_030.y = D_8421158C[D_8423E56E] / 100.0f;
D_8423D408[1][D_8423E568].unk_030.x = D_84211574[D_8423E56E] / 100.0f;
D_8423D408[1][D_8423E568].unk_030.y = D_8421158C[D_8423E56E] / 100.0f;
D_8423D408[0][D_8423E568].unk_01E.z = 0;
} else {
func_8001BCF0(&D_8423D408[0][D_8423E568]);
func_8001BCF0(&D_8423D408[1][D_8423E568]);
D_8423E56C = 0;
}
}
void func_84205200(void) {
s16 i;
D_8423E56E--;
if (D_8423E56E == 0) {
for (i = 0; i < 6; i++) {
if (i != D_8423E568) {
func_8001BCF0(&D_8423D408[0][i]);
func_8001BCF0(&D_8423D408[1][i]);
}
}
D_8423E574 = 0;
D_8423E576 = 0;
D_8423E56C = 2;
} else {
for (i = 0; i < 6; i++) {
if (i == D_8423E568) {
func_84204934(i, 1.0f);
func_84204A3C(i, 1.0f);
} else {
func_84204934(i, D_8423E56E / 12.0f);
func_84204A3C(i, D_8423E56E / 12.0f);
}
D_8423E574 = ((((D_8423E56E * 0x32) + 0x32) / 12) + 6) & (u16)~1;
D_8423E576 = ((((D_8423E56E * 0x24) + 0x24) / 12) + 4) & (u16)~1;
}
}
}
void func_8420545C(void) {
s16 i;
D_8423E56E--;
if (D_8423E56E == 0) {
for (i = 0; i < 6; i++) {
func_8001BCF0(&D_8423D408[0][i]);
func_8001BCF0(&D_8423D408[1][i]);
}
D_8423E568 = -2;
D_8423E574 = 0;
D_8423E576 = 0;
D_8423E56C = 0;
} else {
for (i = 0; i < 6; i++) {
func_84204934(i, D_8423E56E / 12.0f);
func_84204A3C(i, D_8423E56E / 12.0f);
}
D_8423E574 = ((((D_8423E56E * 0x32) + 0x32) / 12) + 6) & (u16)~1;
D_8423E576 = ((((D_8423E56E * 0x24) + 0x24) / 12) + 4) & (u16)~1;
}
}
void func_8420563C(void) {
s16 var_s0;
s16 i;
if (D_84210DA0[D_8423E568].unk_01 == 0x15) {
var_s0 = 0x11;
} else {
var_s0 = 0x12;
}
func_8420DA28(var_s0, D_8423E570);
if (func_8420DB48(var_s0) != -1) {
D_8423E56C = 3;
}
for (i = 0; i < 6; i++) {
func_84204934(i, 1.0f);
func_84204A3C(i, 1.0f);
}
}
s32 func_8420570C(void) {
switch (D_8423E56C) {
case 1:
func_84204F78();
break;
case 3:
func_84204E0C();
break;
case 4:
func_84205200();
break;
case 2:
func_842050CC();
break;
case 5:
func_8420545C();
break;
case 6:
func_8420563C();
break;
}
return 1;
}
void func_842057AC(void) {
s16 i;
for (i = 0; i < 4; i++) {
if (D_8423E518[i].unk_01 != 0) {
switch (D_8423E518[i].unk_01) {
case 1:
D_8423E508[i] = D_201E420;
break;
case 2:
D_8423E508[i] = D_2020420;
break;
case 3:
D_8423E508[i] = D_2022420;
break;
case 7:
D_8423E508[i] = D_2024420;
break;
}
if (D_8423E518[i].unk_00 != 0) {
D_84210DA0[i].unk_01 = 0x14;
}
} else {
D_8423E508[i] = D_2026420;
if (D_8423E518[i].unk_00 == 2) {
D_84210DA0[i].unk_01 = 0x15;
} else {
D_84210DA0[i].unk_00 = 0;
D_84210DA0[i].unk_01 = 1;
}
}
}
}
void func_8420594C(void) {
s16 i;
if (D_8423E56A != 0) {
D_84210DD8[0] = 0;
} else {
D_84210DD8[0] = 1;
}
for (i = 0; i < 6; i++) {
if (D_84210DA0[i].unk_00 != 0) {
func_8001BC34(D_8423D408[0] + i, 0, 0, D_8423E4E8[i]);
func_8001BC34(D_8423D408[1] + i, 0, 0, D_8423E500);
func_8000E88C(&D_8423D408[0][i].unk_024, D_84210DA0[i].unk_02 - 0x140, 0xF0 - D_84210DA0[i].unk_04, -579.f);
func_8000E88C(&D_8423D408[1][i].unk_024, D_84210DA0[i].unk_02 - 0x140, 0xE4 - D_84210DA0[i].unk_04,
-579.0f);
D_8423D408[1][i].unk_01D = 0xB4;
}
}
if (D_84210DD8[0] != 0) {
D_8423E578 = func_80028E68();
if (D_8423E578 == 0) {
D_84210DD8[0] = 0;
D_8423D408[0][4].unk_01D = 0xA0;
D_8423D408[1][4].unk_01D = 0x64;
}
}
if (!D_84210DA0) {}
}
void func_84205B3C(void) {
s32 i;
u8 temp_s3 = Cont_GetControllerBits();
unk_D_800AC910_040 sp48;
for (i = 0; i < 4; i++) {
func_80025040(i, &sp48);
func_80021A90(D_8423E518[i].unk_06, sp48.unk_02);
D_8423E518[i].unk_04 = sp48.unk_00;
D_8423E518[i].unk_01 = func_80024F68(i);
D_8423E518[i].unk_00 = func_80024F00(i);
D_8423E518[i].unk_02 = func_80025370(i);
D_8423E518[i].unk_03 = (temp_s3 & (1 << i)) != 0;
}
}
s32 func_84205C18(s16 arg0) {
s32 i;
MemoryBlock* temp_v0 = func_80002D10(main_pool_get_available(), 0);
unk_D_86002F58_004_000* var_s2;
D_8423D400 = process_geo_layout(temp_v0, D_84210DF4);
D_8423E56A = arg0;
D_8423E4E8[3] = D_8423E4E8[2] = D_8423E4E8[1] = D_8423E4E8[0] = process_geo_layout(temp_v0, D_84210FF0);
D_8423E4E8[4] = process_geo_layout(temp_v0, D_842111D0);
D_8423E4E8[5] = process_geo_layout(temp_v0, D_84211430);
D_8423E500 = process_geo_layout(temp_v0, D_84211510);
func_80002D60(temp_v0);
func_8001BB20();
var_s2 = &D_8423D408[0][0];
for (i = 0; i < 12; var_s2++, i++) {
func_8001BB58(var_s2);
D_8423D408[0][i].unk_000.unk_14 = i;
}
func_84205B3C();
func_842057AC();
return 8;
}
s32 func_84205D48(s16 arg0, s32 arg1) {
if (D_8423E56C == 0) {
func_8420594C();
if (D_84210DA0[arg0].unk_00 != 0) {
D_8423E568 = arg0;
} else {
for (D_8423E568 = 0; D_8423E568 < 5; D_8423E568++) {
if (D_84210DA0[D_8423E568].unk_00 != 0) {
break;
}
}
}
D_8423E570 = &gControllers[arg0];
D_8423E57C = arg1;
D_8423E56E = 0;
D_8423E56C = 1;
return 1;
}
return 0;
}
s16 func_84205E54(void) {
if (D_8423E56C == 0) {
return D_8423E568;
}
return -1;
}

View File

@ -1,79 +1,942 @@
#include "global.h"
#include "fragment61.h"
#include "src/1AB70.h"
#include "src/1CF30.h"
#include "src/232C0.h"
#include "src/26820.h"
#include "src/49790.h"
#include "src/hal_libc.h"
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2DD710/func_84205E80.s")
s16 D_842115B0[] = { 0x78, 0xFC, 0x180, 0x78, 0xFC, 0x180 };
s16 D_842115BC[] = {
4, 4, 4, 0x30, 0x30, 0x30,
};
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2DD710/func_84205F18.s")
void func_84205E80(s16 arg0, s16 arg1, s32 arg2) {
if (arg2 & 0x80000000) {
func_84200420(arg0, arg1, 0x84, 0x2C, 0x64, 0x64, 0xC8, 0xFF);
} else {
func_84200420(arg0, arg1, 0x84, 0x2C, 0x3C, 0x3C, 0xA0, 0xFF);
}
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2DD710/func_84206144.s")
void func_84205F18(unk_D_84211B50* arg0, s16 arg1, s16 arg2) {
s16 i;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2DD710/func_842062D4.s")
func_842001B8(arg1, arg2, 0x208, 0x60);
if (((D_800AE540.unk_0001 == 0) || (D_800AE540.unk_0001 == 8)) && (arg0->unk_0004 != 0) && (arg0->unk_0006 > 0) &&
(arg0->unk_0006 < 6)) {
func_84200420(arg1 + 4, arg2 + 4, 0x74, 0x58, 0, 0, 0, 0xFF);
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2DD710/func_84206870.s")
gSPDisplayList(gDisplayListHead++, D_8006F518);
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2DD710/func_842068DC.s")
func_8001C6AC(arg1 + 0x32, arg2 + 0x32, 0x14, 0x14, D_20068E0, 0x14, 0);
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2DD710/func_84206990.s")
gSPDisplayList(gDisplayListHead++, D_8006F630);
} else {
func_84200420(arg1 + 4, arg2 + 4, 0x74, 0x58, 0x64, 0x64, 0xC8, 0xFF);
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2DD710/func_84206A68.s")
for (i = 0; i < 6; i++) {
s16 tmp1 = D_842115B0[i] + arg1;
s16 tmp2 = D_842115BC[i] + arg2;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2DD710/func_84206BC4.s")
func_84205E80(tmp1, tmp2, arg0->unk_0030[i].raw);
}
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2DD710/func_84206BDC.s")
void func_84206144(unk_D_84211B50* arg0) {
s16 temp_s0 = arg0->unk_0018 + (arg0->unk_0010 * 0x84) + 0x78;
s16 temp_a1 = arg0->unk_001A + (arg0->unk_0012 * 0x2C) + 4;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2DD710/func_84206BF0.s")
if (arg0->unk_0001 == 0xD) {
if (arg0->unk_000C > 0) {
temp_a1 = ((temp_a1 + ((arg0->unk_000C * 0x2C) / 4)) - 0x2C);
} else {
temp_a1 = (temp_a1 + ((arg0->unk_000C * 0x2C) / 4) + 0x2C);
}
func_84200738(temp_s0, temp_a1, 0x84, 0x2C);
} else if (arg0->unk_0001 == 0xC) {
if (arg0->unk_000C > 0) {
temp_s0 = ((temp_s0 + ((arg0->unk_000C * 0x84) / 4)) - 0x84);
} else {
temp_s0 = (temp_s0 + ((arg0->unk_000C * 0x84) / 4) + 0x84);
}
func_84200738(temp_s0, temp_a1, 0x84, 0x2C);
} else if (arg0->unk_0001 == 8) {
func_84200738(temp_s0, temp_a1, 0x84, 0x2C);
}
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2DD710/func_84206D10.s")
void func_842062D4(unk_D_84211B50* arg0, s32 arg1) {
char* temp_v0_10;
char* temp_v0_4;
char* temp_v0_5;
char* temp_v0_6;
char* temp_v0_7;
char* temp_v0_8;
s32 i;
s16 sp42;
s16 sp40;
char* temp_v0_9;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2DD710/func_84206DE8.s")
if ((arg0->unk_0001 != 1) && (arg0->unk_0001 != 0) && ((arg1 != 0) || (arg0->unk_0003 != 0))) {
func_84205F18(arg0, arg0->unk_0018, arg0->unk_001A);
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2DD710/func_84206E88.s")
gSPDisplayList(gDisplayListHead++, D_8006F518);
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2DD710/func_84206EE0.s")
for (i = 0; i < 6; i++) {
if (arg0->unk_0030[i].unk_004.unk_00.unk_00 != 0) {
s16 tmp1 = D_842115B0[i] + arg0->unk_0018 + 2;
s16 tmp2 = D_842115BC[i] + arg0->unk_001A + 2;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2DD710/func_84206F1C.s")
func_8001C6AC(tmp1, tmp2, 0x28, 0x28, arg0->unk_0030[i].unk_058, 0x28, 0);
}
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2DD710/func_84206F64.s")
gSPDisplayList(gDisplayListHead++, D_8006F630);
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2DD710/func_84206FB0.s")
func_8001F3F4();
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2DD710/func_84206FF8.s")
if (((D_800AE540.unk_0001 == 0) || (D_800AE540.unk_0001 == 8)) && (arg0->unk_0004 != 0) &&
(arg0->unk_0006 > 0) && (arg0->unk_0006 < 6)) {
func_8001EBE0(8, 0);
temp_v0_4 = func_84200130(arg0->unk_0006 + 0x2A);
func_8001F1E8((arg0->unk_0018 - (func_8001F5B0(8, 0, temp_v0_4) / 2)) + 0x3C, arg0->unk_001A + 8,
temp_v0_4);
if (arg0->unk_0000 == 0) {
temp_v0_5 = func_84200130(0x31);
func_8001F1E8((arg0->unk_0018 - (func_8001F5B0(8, 0, temp_v0_5) / 2)) + 0x3C, arg0->unk_001A + 0x1C,
temp_v0_5);
} else {
temp_v0_6 = func_84200130(0x32);
func_8001F1E8((arg0->unk_0018 - (func_8001F5B0(8, 0, temp_v0_6) / 2)) + 0x3C, arg0->unk_001A + 0x1C,
temp_v0_6);
}
func_8001EBE0(4, 0);
temp_v0_7 = func_84200130(0x33);
func_8001F1E8((arg0->unk_0018 - (func_8001F5B0(4, 0, temp_v0_7) / 2)) + 0x3C, arg0->unk_001A + 0x46,
temp_v0_7);
} else {
func_8001EBE0(4, 0);
if (arg0->unk_0000 == 0) {
temp_v0_8 = func_84200130(0x34);
func_8001F1E8((arg0->unk_0018 - (func_8001F5B0(4, 0, temp_v0_8) / 2)) + 0x3C, arg0->unk_001A + 9,
temp_v0_8);
} else {
temp_v0_9 = func_84200130(0x35);
func_8001F1E8((arg0->unk_0018 - (func_8001F5B0(4, 0, temp_v0_9) / 2)) + 0x3C, arg0->unk_001A + 9,
temp_v0_9);
}
temp_v0_10 = func_84200130(0x36);
func_8001F1E8((arg0->unk_0018 - (func_8001F5B0(4, 0, temp_v0_10) / 2)) + 0x3C, arg0->unk_001A + 0x1A,
temp_v0_10);
func_8001EBE0(8, 0);
func_8001F1E8((arg0->unk_0018 - (func_8001F5B0(8, 0, arg0->unk_001E) / 2)) + 0x3C, arg0->unk_001A + 0x2F,
arg0->unk_001E);
func_8001EBE0(4, 0);
func_8001F1E8((arg0->unk_0018 - (func_8001F5B0(4, 0, "ID 00000") / 2)) + 0x3C, arg0->unk_001A + 0x46,
"ID %05d", arg0->unk_001C);
}
func_8001EBE0(4, 0);
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2DD710/func_84207040.s")
for (i = 0; i < 6; i++) {
if (arg0->unk_0030[i].unk_004.unk_00.unk_00 != 0) {
s16 tmp1 = D_842115B0[i] + arg0->unk_0018 + 0x2C;
s16 tmp2 = D_842115BC[i] + arg0->unk_001A + 5;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2DD710/func_84207190.s")
func_8001F1E8(tmp1, tmp2, arg0->unk_0030[i].unk_004.unk_30);
}
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2DD710/func_8420720C.s")
func_8001EBE0(4, 0);
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2DD710/func_842073A4.s")
for (i = 0; i < 6; i++) {
if (arg0->unk_0030[i].unk_004.unk_00.unk_00 != 0) {
sp42 = D_842115B0[i] + arg0->unk_0018 + 0x2C;
sp40 = D_842115BC[i] + arg0->unk_001A + 0x17;
func_8001F1E8(sp42, sp40, "%s %d", func_84200160(0x15), arg0->unk_0030[i].unk_004.unk_24);
}
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2DD710/func_84207530.s")
func_8001F444();
func_84206144(arg0);
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2DD710/func_84207634.s")
if (arg0->unk_0003 > 0) {
arg0->unk_0003--;
}
}
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2DD710/func_842076A0.s")
void func_84206870(unk_D_84211B50* arg0) {
s16 temp_v0 = arg0->unk_0010 + (arg0->unk_0012 * 3);
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2DD710/func_842076F8.s")
if (arg0->unk_0030[temp_v0].unk_004.unk_00.unk_00 != 0) {
arg0->unk_0030[temp_v0].unk_004.unk_00.unk_00 = 0;
arg0->unk_0030[temp_v0].raw = 0;
arg0->unk_0006 -= 1;
}
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2DD710/func_8420776C.s")
void func_842068DC(unk_D_84211B50* arg0) {
s16 sp1E = arg0->unk_0010 + (arg0->unk_0012 * 3);
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2DD710/func_842078C0.s")
if (func_8420B334(arg0->unk_4D40) != 0) {
if (arg0->unk_0030[sp1E].unk_004.unk_00.unk_00 != 0) {
arg0->unk_0030[sp1E].unk_004.unk_00.unk_00 = 0;
arg0->unk_0030[sp1E].raw = 0;
arg0->unk_0006--;
}
arg0->unk_0030[sp1E].raw |= 0x80000000;
arg0->unk_0004 = 1;
arg0->unk_0001 = 3;
}
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2DD710/func_842079B4.s")
s32 func_84206990(unk_D_84211B50* arg0) {
s16 i;
s16 temp_v0;
s32 var_s0 = 0;
unk_func_80022C28_ret* temp_s3;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2DD710/func_842079F0.s")
temp_v0 = func_80028E68();
if (temp_v0 < 0xA) {
temp_s3 = func_80022CC0(0x10, 0, temp_v0, arg0->unk_001E, arg0->unk_001E, arg0->unk_001C);
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2DD710/func_84207A1C.s")
for (i = 0; i < arg0->unk_0006; i++) {
func_80022F24(&arg0->unk_0030[i].unk_004.unk_00.unk_00, 1, temp_s3);
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2DD710/func_84207AAC.s")
func_80022D8C(temp_s3);
func_800286D8();
var_s0 = 1;
}
return var_s0;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2DD710/func_84207BD4.s")
s32 func_84206A68(unk_D_84211B50* arg0) {
UNUSED s32 pad;
s32 temp_v1;
s16 i;
s16 sp8[3];
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2DD710/func_84207D5C.s")
for (i = 0; i < 3; i++) {
sp8[i] = 0x3E7;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2DD710/func_84207E3C.s")
for (i = 0; i < arg0->unk_0006; i++) {
temp_v1 = arg0->unk_0030[i].unk_004.unk_24;
if (sp8[2] >= temp_v1) {
sp8[2] = temp_v1;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2DD710/func_8420804C.s")
if (sp8[1] >= temp_v1) {
sp8[2] = sp8[1];
sp8[1] = temp_v1;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2DD710/func_842081A8.s")
if (sp8[0] >= temp_v1) {
sp8[1] = sp8[0];
sp8[0] = temp_v1;
}
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2DD710/func_842081B4.s")
switch (D_800AE540.unk_0001) {
default:
temp_v1 = 0;
break;
case 3:
temp_v1 = (s16)(sp8[0] + sp8[1] + sp8[2]);
temp_v1 = temp_v1 >= 0x9C;
break;
case 4:
temp_v1 = (s16)(sp8[0] + sp8[1] + sp8[2]);
temp_v1 = temp_v1 >= 0x51;
break;
case 5:
temp_v1 = (s16)(sp8[0] + sp8[1] + sp8[2]);
temp_v1 = temp_v1 >= 0x33;
break;
}
return temp_v1;
}
void func_84206BC4(unk_D_84211B50* arg0) {
arg0->unk_0018 = arg0->unk_0014 + 0x280;
arg0->unk_001A = arg0->unk_0016;
}
void func_84206BDC(unk_D_84211B50* arg0) {
arg0->unk_0018 = arg0->unk_0014;
arg0->unk_001A = arg0->unk_0016;
}
void func_84206BF0(unk_D_84211B50* a0) {
unk_D_84211B50* arg0 = a0;
s16 temp_v0;
s16 temp_v1;
s16 tmp;
func_8420DAF4(1);
if (func_8420DB48(1) >= 0) {
tmp = a0->unk_0010 + a0->unk_0012 * 3;
temp_v0 = a0->unk_0014 + (a0->unk_0010 * 0x84) + 0x74;
temp_v1 = a0->unk_0016 + (a0->unk_0012 * 0x2C);
arg0->unk_0030[tmp].raw |= 0x80000000;
func_8420C60C(a0->unk_4D44, a0->unk_0002, 0x30, 0xEC, temp_v0, temp_v1, &a0->unk_0030[tmp], 2);
a0->unk_0001 = 6;
}
a0->unk_0018 = a0->unk_0014;
a0->unk_001A = a0->unk_0016;
a0->unk_0003 = 2;
}
void func_84206D10(unk_D_84211B50* arg0) {
s16 sp26 = arg0->unk_0010 + (arg0->unk_0012 * 3);
s32 temp_v0 = func_8420C788(arg0->unk_4D44);
if (temp_v0 == 1) {
func_8420B334(arg0->unk_4D40);
arg0->unk_0004 = 0;
arg0->unk_0001 = 3;
} else if (temp_v0 == 2) {
arg0->unk_0030[sp26].raw &= ~0x80000000;
func_8420DA28(1, NULL);
arg0->unk_000A = 0;
arg0->unk_0001 = 8;
}
arg0->unk_0018 = arg0->unk_0014;
arg0->unk_001A = arg0->unk_0016;
}
void func_84206DE8(unk_D_84211B50* arg0) {
arg0->unk_000A++;
if (arg0->unk_000A <= 0) {
arg0->unk_0018 = arg0->unk_0014 + 0x280;
arg0->unk_0003 = 2;
} else if (arg0->unk_000A == 0xA) {
arg0->unk_000A = 0;
arg0->unk_0018 = arg0->unk_0014;
if (arg0->unk_0006 == arg0->unk_0008) {
arg0->unk_0003 = 2;
arg0->unk_0001 = 7;
} else {
// clang-format off
*(s8*)&arg0->unk_0001 = 2; arg0->unk_0003 = 2;
// clang-format on
}
} else {
arg0->unk_0018 = (arg0->unk_0014 - (arg0->unk_000A << 6)) + 0x280;
arg0->unk_0003 = 2;
}
arg0->unk_001A = arg0->unk_0016;
}
void func_84206E88(unk_D_84211B50* arg0) {
arg0->unk_000A++;
if (arg0->unk_000A == 0xA) {
arg0->unk_0001 = 0;
arg0->unk_000A = 0;
arg0->unk_0018 = arg0->unk_0014 + 0x280;
} else {
arg0->unk_0018 = arg0->unk_0014 - (arg0->unk_000A << 6);
}
arg0->unk_001A = arg0->unk_0016;
arg0->unk_0003 = 2;
}
void func_84206EE0(unk_D_84211B50* arg0) {
func_842068DC(arg0);
arg0->unk_0018 = arg0->unk_0014;
arg0->unk_001A = arg0->unk_0016;
arg0->unk_0003 = 2;
}
void func_84206F1C(unk_D_84211B50* arg0) {
if (arg0->unk_0010 > 0) {
arg0->unk_0010--;
arg0->unk_000C = -1;
arg0->unk_000E = -4;
arg0->unk_0001 = 0xC;
func_80048B90(1);
}
}
void func_84206F64(unk_D_84211B50* arg0) {
if (arg0->unk_0010 < 2) {
arg0->unk_0010++;
arg0->unk_000C = 1;
arg0->unk_000E = 4;
arg0->unk_0001 = 0xC;
func_80048B90(1);
}
}
void func_84206FB0(unk_D_84211B50* arg0) {
if (arg0->unk_0012 > 0) {
arg0->unk_0012--;
arg0->unk_000C = -1;
arg0->unk_000E = -4;
arg0->unk_0001 = 0xD;
func_80048B90(1);
}
}
void func_84206FF8(unk_D_84211B50* arg0) {
if (arg0->unk_0012 <= 0) {
arg0->unk_0012++;
arg0->unk_000C = 1;
arg0->unk_000E = 4;
arg0->unk_0001 = 0xD;
func_80048B90(1);
}
}
void func_84207040(unk_D_84211B50* arg0) {
Controller* cont = &gControllers[arg0->unk_0002];
if (arg0->unk_000A < 8) {
arg0->unk_000A++;
} else if (BTN_IS_PRESSED(cont, BTN_A)) {
s32 temp_v0 = arg0->unk_0010 + (arg0->unk_0012 * 3);
if (arg0->unk_0030[temp_v0].unk_004.unk_00.unk_00 != 0) {
func_80048B90(2);
arg0->unk_0001 = 0xB;
}
} else if (BTN_IS_PRESSED(cont, BTN_B)) {
func_80048B90(3);
arg0->unk_0001 = 0x10;
} else if (BTN_IS_PRESSED(cont, BTN_DUP)) {
func_84206FB0(arg0);
} else if (BTN_IS_PRESSED(cont, BTN_DDOWN)) {
func_84206FF8(arg0);
} else if (BTN_IS_PRESSED(cont, BTN_DRIGHT)) {
func_84206F64(arg0);
} else if (BTN_IS_PRESSED(cont, BTN_DLEFT)) {
func_84206F1C(arg0);
}
arg0->unk_0018 = arg0->unk_0014;
arg0->unk_001A = arg0->unk_0016;
arg0->unk_0003 = 2;
}
void func_84207190(unk_D_84211B50* arg0) {
func_8420DAF4(1);
if (func_8420DB48(1) >= 0) {
if (func_84206A68(arg0) != 0) {
arg0->unk_0001 = 0xF;
} else if (arg0->unk_0000 == 0) {
arg0->unk_0001 = 7;
} else {
arg0->unk_0001 = 0xE;
}
}
arg0->unk_0003 = 2;
}
void func_8420720C(unk_D_84211B50* arg0) {
Controller* cont = &gControllers[arg0->unk_0002];
s16 i;
func_8420DA28(0, cont);
switch (func_8420DB48(0)) {
case 0:
i = arg0->unk_0006;
if (i == 6) {
i--;
}
arg0->unk_0010 = i % 3;
arg0->unk_0012 = i / 3;
arg0->unk_0008 = 6;
arg0->unk_0001 = 2;
break;
case 1:
func_8420B238(arg0->unk_4D40);
arg0->unk_000A = 0;
arg0->unk_0001 = 5;
break;
case 2:
if (func_84206990(arg0) != 0) {
arg0->unk_0001 = 9;
} else {
arg0->unk_0001 = 0xA;
}
break;
case 3:
func_8420DA28(1, NULL);
arg0->unk_0010 = 0;
arg0->unk_0012 = 0;
arg0->unk_000A = 0;
arg0->unk_0001 = 8;
break;
case 4:
for (i = 0; i < 6; i++) {
arg0->unk_0030[i].raw = 0;
arg0->unk_0030[i].unk_004.unk_00.unk_00 = 0;
}
func_8420B264(arg0->unk_4D40);
arg0->unk_0006 = 0;
arg0->unk_0010 = 0;
arg0->unk_0012 = 0;
arg0->unk_0008 = 6;
arg0->unk_0001 = 2;
break;
}
arg0->unk_0018 = arg0->unk_0014;
arg0->unk_001A = arg0->unk_0016;
}
void func_842073A4(unk_D_84211B50* arg0) {
Controller* cont = &gControllers[arg0->unk_0002];
s16 i;
func_8420DA28(0xA, cont);
switch (func_8420DB48(0xA)) {
case 0:
i = arg0->unk_0006;
if (i == 6) {
i--;
}
arg0->unk_0010 = i % 3;
arg0->unk_0012 = i / 3;
arg0->unk_0008 = 6;
arg0->unk_0001 = 2;
break;
case 1:
func_8420B238(arg0->unk_4D40);
func_84210A48(arg0->unk_4D48, arg0->unk_001C, arg0->unk_001E, arg0->unk_0030);
arg0->unk_0001 = 3;
break;
case 2:
func_8420DA28(1, NULL);
arg0->unk_0010 = 0;
arg0->unk_0012 = 0;
arg0->unk_000A = 0;
arg0->unk_0001 = 8;
break;
case 3:
for (i = 0; i < 6; i++) {
arg0->unk_0030[i].raw = 0;
arg0->unk_0030[i].unk_004.unk_00.unk_00 = 0;
}
func_8420B264(arg0->unk_4D40);
arg0->unk_0006 = 0;
arg0->unk_0010 = 0;
arg0->unk_0012 = 0;
arg0->unk_0008 = 6;
arg0->unk_0001 = 2;
break;
}
arg0->unk_0018 = arg0->unk_0014;
arg0->unk_001A = arg0->unk_0016;
}
void func_84207530(unk_D_84211B50* arg0) {
UNUSED s16 pad;
s16 sp1C = 0xD;
s32 temp_v0_2;
Controller* cont = &gControllers[arg0->unk_0002];
switch (D_800AE540.unk_0001) {
case 3:
break;
case 4:
sp1C = 0xE;
break;
case 5:
sp1C = 0xF;
break;
}
func_8420DA28(sp1C, cont);
temp_v0_2 = func_8420DB48(sp1C);
if (temp_v0_2 != -1) {
if (temp_v0_2 == 0) {
arg0->unk_0010 = 2;
arg0->unk_0012 = 1;
arg0->unk_0008 = 6;
arg0->unk_0001 = 2;
} else {
func_8420DA28(1, NULL);
arg0->unk_0010 = 0;
arg0->unk_0012 = 0;
arg0->unk_000A = 0;
arg0->unk_0001 = 8;
}
}
arg0->unk_0018 = arg0->unk_0014;
arg0->unk_001A = arg0->unk_0016;
}
void func_84207634(unk_D_84211B50* arg0) {
Controller* cont = &gControllers[arg0->unk_0002];
func_8420DA28(2, cont);
if (func_8420DB48(2) >= 0) {
func_8420B238(arg0->unk_4D40);
arg0->unk_000A = 0;
arg0->unk_0001 = 5;
}
}
void func_842076A0(unk_D_84211B50* arg0) {
Controller* cont = &gControllers[arg0->unk_0002];
func_8420DA28(3, cont);
if (func_8420DB48(3) >= 0) {
arg0->unk_0001 = 7;
}
}
void func_842076F8(unk_D_84211B50* arg0) {
if (arg0->unk_000E > 0) {
arg0->unk_000C++;
if (arg0->unk_000C >= arg0->unk_000E) {
arg0->unk_0001 = 8;
}
} else {
arg0->unk_000C--;
if (arg0->unk_000E >= arg0->unk_000C) {
arg0->unk_0001 = 8;
}
}
arg0->unk_0018 = arg0->unk_0014;
arg0->unk_001A = arg0->unk_0016;
arg0->unk_0003 = 2;
}
s32 func_8420776C(unk_D_84211B50* arg0) {
s32 sp1C = 0;
switch (arg0->unk_0001) {
case 0:
func_84206BC4(arg0);
break;
case 1:
func_84206BC4(arg0);
break;
case 3:
func_84206BDC(arg0);
break;
case 2:
func_84206EE0(arg0);
break;
case 4:
func_84206DE8(arg0);
sp1C = 1;
break;
case 5:
func_84206E88(arg0);
sp1C = 1;
break;
case 6:
func_84206D10(arg0);
break;
case 7:
func_8420720C(arg0);
break;
case 8:
func_84207040(arg0);
break;
case 9:
func_84207634(arg0);
break;
case 10:
func_842076A0(arg0);
break;
case 11:
func_84206BF0(arg0);
break;
case 12:
func_842076F8(arg0);
break;
case 13:
func_842076F8(arg0);
break;
case 14:
func_842073A4(arg0);
break;
case 15:
func_84207530(arg0);
break;
case 16:
func_84207190(arg0);
break;
}
return sp1C;
}
s32 func_842078C0(unk_D_84211B50* arg0, unk_D_842168A0* arg1, unk_D_8423D3A8* arg2, unk_D_84229EB0* arg3, s16 arg4,
u16 arg5, char* arg6, s16 arg7, s16 arg8, s16 arg9) {
s32 i;
arg0->unk_0000 = arg4;
arg0->unk_0001 = 1;
arg0->unk_0002 = arg9;
arg0->unk_0004 = 0;
arg0->unk_0006 = 0;
arg0->unk_0008 = 6;
arg0->unk_000A = 0;
arg0->unk_0010 = 0;
arg0->unk_0012 = 0;
arg0->unk_0014 = arg7;
arg0->unk_0016 = arg8;
arg0->unk_0018 = arg7 + 0x280;
arg0->unk_001A = arg8;
arg0->unk_001C = arg5;
arg0->unk_4D40 = arg1;
arg0->unk_4D44 = arg2;
arg0->unk_4D48 = arg3;
for (i = 0; i < 6; i++) {
arg0->unk_0030[i].raw = 0;
arg0->unk_0030[i].unk_004.unk_00.unk_00 = 0;
}
HAL_Strcpy(arg0->unk_001E, arg6);
return 1;
}
s32 func_842079B4(unk_D_84211B50* arg0, s16 arg1) {
if (arg0->unk_0001 != 1) {
return 0;
}
arg0->unk_0001 = 4;
arg0->unk_000A = -arg1;
return 1;
}
s32 func_842079F0(unk_D_84211B50* arg0) {
if (arg0->unk_0001 != 3) {
return 0;
}
arg0->unk_0001 = 5;
arg0->unk_000A = 0;
return 1;
}
s32 func_84207A1C(unk_D_84211B50* arg0) {
s16 i;
if (arg0->unk_0001 != 3) {
return 0;
}
for (i = 0; i < 6; i++) {
arg0->unk_0030[i].raw = 0;
arg0->unk_0030[i].unk_004.unk_00.unk_00 = 0;
}
func_8420B264(arg0->unk_4D40);
arg0->unk_0006 = 0;
arg0->unk_0008 = 6;
arg0->unk_0010 = 0;
arg0->unk_0012 = 0;
arg0->unk_0001 = 2;
return 1;
}
s32 func_84207AAC(unk_D_84211B50* arg0) {
s32 temp_v0;
s32 temp_v1;
temp_v1 = arg0->unk_0010 + (arg0->unk_0012 * 3);
if (arg0->unk_0001 == 3) {
if (arg0->unk_0006 == 0) {
arg0->unk_0001 = 5;
arg0->unk_000A = 0;
return -1;
}
arg0->unk_0030[temp_v1].raw &= 0x7FFFFFFF;
if (arg0->unk_0030[temp_v1].raw == 0) {
temp_v0 = temp_v1 - 1;
arg0->unk_0010 = temp_v0 % 3;
arg0->unk_0012 = temp_v0 / 3;
func_84206870(arg0);
arg0->unk_0001 = 2;
} else {
func_8420DA28(1, NULL);
arg0->unk_000A = 0;
arg0->unk_0001 = 8;
}
return 1;
}
return 0;
}
s32 func_84207BD4(unk_D_84211B50* arg0, unk_D_838067F0_0168_0000* arg1) {
s32 var_v0 = arg0->unk_0010 + (arg0->unk_0012 * 3);
if (arg0->unk_0001 != 3) {
return 0;
}
if (arg0->unk_0030[var_v0].unk_004.unk_00.unk_00 == 0) {
arg0->unk_0006 += 1;
}
arg0->unk_0030[var_v0] = *arg1;
if (arg0->unk_0006 == arg0->unk_0008) {
arg0->unk_0003 = 2;
arg0->unk_0004 = 0;
if (func_84206A68(arg0) != 0) {
arg0->unk_0001 = 15;
} else if (arg0->unk_0000 == 0) {
arg0->unk_0001 = 7;
} else {
arg0->unk_0001 = 0xE;
}
} else {
do {
var_v0 = (var_v0 + 1) % 6;
} while (arg0->unk_0030[var_v0].unk_004.unk_00.unk_00 != 0);
arg0->unk_0010 = var_v0 % 3;
arg0->unk_0012 = var_v0 / 3;
arg0->unk_0001 = 2;
}
return 1;
}
s32 func_84207D5C(unk_D_84211B50* arg0) {
s32 idx = (arg0->unk_0010 + (arg0->unk_0012 * 3));
if (arg0->unk_0001 != 3) {
return 0;
}
if (arg0->unk_0006 == 0) {
return 0;
}
if (arg0->unk_0004 == 0) {
return 0;
}
if ((D_800AE540.unk_0001 != 0) && (D_800AE540.unk_0000 != 8)) {
return 0;
}
arg0->unk_0003 = 2;
arg0->unk_0004 = 0;
arg0->unk_0008 = arg0->unk_0006;
arg0->unk_0030[idx].raw = 0;
if (arg0->unk_0000 == 0) {
arg0->unk_0001 = 7;
} else {
arg0->unk_0001 = 0xE;
}
return 1;
}
s32 func_84207E3C(unk_D_84211B50* arg0, unk_D_838067F0_0168_0000* arg1) {
s32 i;
u8 temp_a2;
unk_D_838067F0_0168_0000* ptr;
ptr = &arg0->unk_0030[0];
temp_a2 = arg1->unk_004.unk_00.unk_00;
if (arg1->unk_004.unk_00.unk_00 == 0) {
return 0;
}
for (i = 0; i < 6; i++, ptr++) {
if ((ptr->unk_004.unk_00.unk_00 != 0) && !(ptr->raw & 0x80000000)) {
if (D_800AE540.unk_0001 == 0) {
if (ptr->raw == arg1->raw) {
return 0;
}
} else if (ptr->unk_004.unk_00.unk_00 == temp_a2) {
return 0;
}
}
}
return 1;
}
s32 func_8420804C(unk_D_84211B50* arg0, unk_D_838067F0_0168_0000* arg1) {
s32 i;
unk_D_838067F0_0168_0000* ptr;
if (arg1->unk_004.unk_00.unk_00 == 0) {
return 0;
}
ptr = &arg0->unk_0030[0];
for (i = 0; i < 6; i++, ptr++) {
if ((ptr->unk_004.unk_00.unk_00 != 0) && !(ptr->raw & 0x80000000) && (ptr->raw == arg1->raw)) {
return 1;
}
}
return 0;
}
s32 func_842081A8(unk_D_84211B50* arg0) {
return arg0->unk_0001 == 0;
}
void func_842081B4(unk_D_84211B50* arg0, unk_func_80026268_arg0* arg1, s16 arg2) {
s32 i;
arg0->unk_0006 = arg2;
arg0->unk_0008 = arg2;
for (i = 0; i < arg2; i++) {
func_8001B0DC(arg0->unk_0030[i].unk_058, 0, &arg1[i]);
arg0->unk_0030[i].unk_004 = arg1[i];
arg0->unk_0030[i].unk_000 = (arg1[i].unk_52 & 0x70) >> 4;
arg0->unk_0030[i].unk_001 = arg1[i].unk_52 & 0xF;
arg0->unk_0030[i].unk_002 = arg1[i].unk_53;
arg0->unk_0030[i].unk_003 = arg1[i].unk_00.unk_00;
}
}

File diff suppressed because it is too large Load Diff

View File

@ -1,161 +1,510 @@
#include "global.h"
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2E2C20/func_8420B390.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2E2C20/func_8420B40C.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2E2C20/func_8420B5A4.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2E2C20/func_8420B71C.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2E2C20/func_8420B870.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2E2C20/func_8420B8CC.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2E2C20/func_8420C360.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2E2C20/func_8420C368.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2E2C20/func_8420C484.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2E2C20/func_8420C4DC.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2E2C20/func_8420C504.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2E2C20/func_8420C580.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2E2C20/func_8420C60C.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2E2C20/func_8420C6D8.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2E2C20/func_8420C788.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2E2C20/func_8420C7B0.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2E2C20/func_8420C844.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2E2C20/func_8420C930.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2E2C20/func_8420CA00.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2E2C20/func_8420CAD0.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2E2C20/func_8420CBA0.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2E2C20/func_8420CC54.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2E2C20/func_8420CCAC.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2E2C20/func_8420CE24.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2E2C20/func_8420CFC4.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2E2C20/func_8420D144.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2E2C20/func_8420D2BC.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2E2C20/func_8420D370.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2E2C20/func_8420D464.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2E2C20/func_8420D4F8.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2E2C20/func_8420D75C.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2E2C20/func_8420D938.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2E2C20/func_8420D978.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2E2C20/func_8420D9B0.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2E2C20/func_8420DA28.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2E2C20/func_8420DAF4.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2E2C20/func_8420DB48.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2E2C20/func_8420DBA0.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2E2C20/func_8420DC78.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2E2C20/func_8420DD14.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2E2C20/func_8420E46C.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2E2C20/func_8420E63C.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2E2C20/func_8420EA88.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2E2C20/func_8420EB7C.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2E2C20/func_8420ED0C.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2E2C20/func_8420EE54.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2E2C20/func_8420F1BC.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2E2C20/func_8420F1E0.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2E2C20/func_8420F204.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2E2C20/func_8420F37C.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2E2C20/func_8420F4FC.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2E2C20/func_8420F524.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2E2C20/func_8420F53C.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2E2C20/func_8420F598.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2E2C20/func_8420F5F0.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2E2C20/func_8420F654.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2E2C20/func_8420F754.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2E2C20/func_8420F86C.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2E2C20/func_8420F9C8.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2E2C20/func_8420FA88.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2E2C20/func_8420FB4C.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2E2C20/func_8420FC0C.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2E2C20/func_8420FCCC.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2E2C20/func_8420FDDC.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2E2C20/func_8420FE50.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2E2C20/func_8420FE90.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2E2C20/func_8420FEC0.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2E2C20/func_8420FFB0.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2E2C20/func_8421009C.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2E2C20/func_8421015C.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2E2C20/func_84210328.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2E2C20/func_8421059C.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2E2C20/func_84210668.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2E2C20/func_842106FC.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2E2C20/func_8421089C.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2E2C20/func_84210A18.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2E2C20/func_84210A48.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2E2C20/func_84210B54.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2E2C20/func_84210B60.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/61/fragment61_2E2C20/func_84210C80.s")
#include "fragment61.h"
#include "src/19840.h"
#include "src/1AB70.h"
#include "src/1CF30.h"
#include "src/20470.h"
#include "src/225A0.h"
#include "src/22630.h"
#include "src/232C0.h"
#include "src/26820.h"
#include "src/2E110.h"
#include "src/49790.h"
#include "src/6BC0.h"
#include "src/F420.h"
#include "src/dp_intro.h"
#include "src/hal_libc.h"
typedef struct unk_D_842115F0 {
/* 0x00 */ Color_RGB8 unk_00[4];
/* 0x0C */ u8* unk_0C;
} unk_D_842115F0; // size = 0x10
unk_D_842115F0 D_842115F0[] = {
{
{
{ 0xB4, 0xB4, 0xB4 },
{ 0x5A, 0x5A, 0x5A },
{ 0xF0, 0xF0, 0xF0 },
{ 0x00, 0x00, 0x00 },
},
D_2017740,
},
{
{
{ 0xD2, 0x64, 0x28 },
{ 0xA0, 0x32, 0x1E },
{ 0xF0, 0x96, 0x32 },
{ 0x00, 0x00, 0x00 },
},
D_2019040,
},
{
{
{ 0x3C, 0x64, 0xDC },
{ 0x1E, 0x1E, 0x96 },
{ 0x50, 0x96, 0xF0 },
{ 0x00, 0x00, 0x00 },
},
D_20199A0,
},
{
{
{ 0xAA, 0x46, 0xDC },
{ 0x64, 0x1E, 0xA0 },
{ 0xC8, 0x96, 0xF0 },
{ 0x00, 0x00, 0x00 },
},
D_2019680,
},
{
{
{ 0x96, 0x82, 0x3C },
{ 0x5A, 0x50, 0x1E },
{ 0xF0, 0xC8, 0x78 },
{ 0x00, 0x00, 0x00 },
},
D_2018D20,
},
{
{
{ 0x64, 0x96, 0x96 },
{ 0x1E, 0x50, 0x50 },
{ 0x64, 0xB4, 0xB4 },
{ 0x00, 0x00, 0x00 },
},
D_2018A00,
},
{
{
{ 0x3C, 0x64, 0xDC },
{ 0x1E, 0x1E, 0x96 },
{ 0x50, 0x96, 0xF0 },
{ 0x00, 0x00, 0x00 },
},
D_20199A0,
},
{
{
{ 0x6E, 0xA0, 0x1E },
{ 0x28, 0x5A, 0x1E },
{ 0xC8, 0xF0, 0x50 },
{ 0x00, 0x00, 0x00 },
},
D_2019360,
},
{
{
{ 0xA0, 0x8C, 0xB4 },
{ 0x5A, 0x46, 0x6E },
{ 0xDC, 0xC8, 0xF0 },
{ 0x00, 0x00, 0x00 },
},
D_2019FE0,
},
{
{
{ 0xC8, 0x3C, 0x3C },
{ 0x8C, 0x1E, 0x1E },
{ 0xF0, 0x64, 0x64 },
{ 0x00, 0x00, 0x00 },
},
D_2017A60,
},
{
{
{ 0x32, 0x96, 0xDC },
{ 0x1E, 0x64, 0xA0 },
{ 0x46, 0xB4, 0xF0 },
{ 0x00, 0x00, 0x00 },
},
D_2017D80,
},
{
{
{ 0x1E, 0xAA, 0x1E },
{ 0x1E, 0x6E, 0x1E },
{ 0x64, 0xC8, 0x64 },
{ 0x00, 0x00, 0x00 },
},
D_20183C0,
},
{
{
{ 0xB4, 0x96, 0x1E },
{ 0x78, 0x64, 0x1E },
{ 0xF0, 0xF0, 0x32 },
{ 0x00, 0x00, 0x00 },
},
D_20186E0,
},
{
{
{ 0xC8, 0x5A, 0x96 },
{ 0x8C, 0x1E, 0x5A },
{ 0xF0, 0x8C, 0xB4 },
{ 0x00, 0x00, 0x00 },
},
D_2019CC0,
},
{
{
{ 0x64, 0xBE, 0xBE },
{ 0x1E, 0x8C, 0x8C },
{ 0xB4, 0xF0, 0xF0 },
{ 0x00, 0x00, 0x00 },
},
D_20180A0,
},
{
{
{ 0x1E, 0xA0, 0x8C },
{ 0x1E, 0x64, 0x50 },
{ 0x64, 0xDC, 0xC8 },
{ 0x00, 0x00, 0x00 },
},
D_201A300,
},
};
s16 D_842116F0[] = { 0x14A, 0x15E, 0xFC, 0xE4 };
s16 D_842116F8[] = { 0x7C, 0x95, 0xAE, 0x95 };
void func_8420B390(s16 arg0, s16 arg1, s16 arg2, s16 arg3, s8* arg4) {
if (arg2 == arg3) {
func_8001F324(0xFF, 0xFF, 0, 0xFF);
} else {
func_8001F324(0xFF, 0xFF, 0xFF, 0xFF);
}
func_8001F1E8(arg0, arg1, arg4);
}
void func_8420B40C(s16 arg0, s16 arg1, s16 arg2, s16 arg3) {
if (arg2 != 0) {
func_80020928(arg0 + 0x19C, arg1 + (arg3 * 0x16) + 0x3A);
func_8001F3F4();
func_8001EBE0(8, 0);
func_8001F3B4(0x16);
switch (arg2) {
case 1:
func_8001F1E8(arg0 + 0x19C, arg1 + 0x20, func_84200130(0));
break;
case 2:
func_8001F1E8(arg0 + 0x19C, arg1 + 0x20, func_84200130(1));
break;
case 3:
func_8001F1E8(arg0 + 0x19C, arg1 + 0xA, func_84200130(2));
break;
}
func_8001EBE0(8, 0);
func_8420B390(arg0 + 0x1CE, arg1 + 0x3A, 0, arg3, func_84200130(3));
func_8420B390(arg0 + 0x1CE, arg1 + 0x50, 1, arg3, func_84200130(4));
func_8001F444();
}
}
void func_8420B5A4(s16 arg0, s16 arg1, s16 arg2) {
unk_D_842115F0* sp34 = &D_842115F0[func_800219FC(arg2)];
unk_D_842115F0* sp30 = &D_842115F0[func_800219FC(arg2)];
gDPSetEnvColor(gDisplayListHead++, sp34->unk_00->r, sp34->unk_00->g, sp34->unk_00->b, 255);
gDPSetPrimColor(gDisplayListHead++, 0, 0, (sp30->unk_00 + 1)->r, (sp30->unk_00 + 1)->g, (sp30->unk_00 + 1)->b, 255);
func_8001CADC(arg0, arg1, 0x14, 0x28, D_20165C0, 0x18, 0);
func_8001CADC(arg0 + 0x38, arg1, 0x14, 0x28, D_2016980, 0x18, 0);
func_8001C330(arg0 + 0x14, arg1, 0x24, 0x28, 0, 0, 0, 0x400, 0);
}
void func_8420B71C(s16 arg0, s16 arg1, s32 arg2) {
s16 i;
s16 var_a3;
if (arg2 != 0) {
gSPDisplayList(gDisplayListHead++, D_8006F4E0);
gDPSetAlphaCompare(gDisplayListHead++, G_AC_NONE);
for (i = 0; i < 0x54; i += 0x14) {
var_a3 = CLAMP_MIN(0x54 - i, 20);
func_8001C6AC(arg0, arg1 + i, 0x64, var_a3, (i * 0xC8) + arg2, 0x64, 0x200000);
}
gSPDisplayList(gDisplayListHead++, D_8006F630);
}
}
s16 func_8420B870(s16 arg0, s16 arg1, char* arg2) {
if (arg0 >= 2) {
arg1 -= func_8001F5B0(8, 0, arg2, arg1);
}
return arg1;
}
void func_8420B8CC(unk_D_8423D3A8* arg0, s32 arg1) {
UNUSED s32 pad[2];
s16 i;
s16 temp_s4;
s16 temp_s5;
char* temp_v0_8;
unk_func_80026268_arg0* temp_s6;
temp_s4 = arg0->unk_06;
temp_s5 = arg0->unk_08;
temp_s6 = &arg0->unk_2C->unk_004;
if (arg0->unk_00 != 0) {
func_842001B8(temp_s4, temp_s5, arg0->unk_0A, arg0->unk_0C);
if ((arg0->unk_0A == 0x228) && (arg0->unk_0C == 0xCC)) {
if (arg0->unk_2C->unk_000 == 4) {
func_84200420(temp_s4 + 4, temp_s5 + 4, 0x190, 0x1C, 0xAA, 0x3C, 0x96, 0xFF);
} else {
switch (arg0->unk_2C->unk_001) {
case 0:
func_84200420(temp_s4 + 4, temp_s5 + 4, 0x190, 0x1C, 0xAA, 0x3C, 0x3C, 0xFF);
break;
case 9:
func_84200420(temp_s4 + 4, temp_s5 + 4, 0x190, 0x1C, 0xAA, 0x3C, 0x96, 0xFF);
break;
default:
func_84200420(temp_s4 + 4, temp_s5 + 4, 0x190, 0x1C, 0xB4, 0x8C, 0x28, 0xFF);
break;
}
}
func_84200420(temp_s4 + 0x68, temp_s5 + 0x20, 0x12C, 0x54, 0xB4, 0xAA, 0x64, 0xFF);
func_84200420(temp_s4 + 0x194, temp_s5 + 4, 0x90, 0x78, 0x32, 0x32, 0x82, 0xFF);
func_84200420(temp_s4 + 4, temp_s5 + 0x74, 0x220, 0x54, 0xA0, 0x96, 0x32, 0xFF);
gSPDisplayList(gDisplayListHead++, D_8006F518);
func_8001C6AC(temp_s4 + 0x108, temp_s5 + 0x77, 0x1C, 0x1A, D_2014F00, 0x1C, 0);
func_8001C6AC(temp_s4 + 0xF0, temp_s5 + 0x90, 0x1C, 0x1A, D_20154B0, 0x1C, 0);
func_8001C6AC(temp_s4 + 0x11C, temp_s5 + 0x90, 0x1C, 0x1A, D_2016010, 0x1C, 0);
func_8001C6AC(temp_s4 + 0x108, temp_s5 + 0xA9, 0x1C, 0x1A, D_2015A60, 0x1C, 0);
if ((arg0->unk_2C->unk_000 != 4) && (arg0->unk_2C->unk_001 == 0xD)) {
func_8001C6AC(temp_s4 + 0x14, temp_s5 + 0x78, 0x40, 0x14, D_2016D40, 0x40, 0);
}
gDPSetCombineLERP(gDisplayListHead++, ENVIRONMENT, PRIMITIVE, TEXEL0, PRIMITIVE, TEXEL0, 0, ENVIRONMENT, 0,
ENVIRONMENT, PRIMITIVE, TEXEL0, PRIMITIVE, TEXEL0, 0, ENVIRONMENT, 0);
func_8420B5A4(temp_s4 + 0x6A, temp_s5 + 0x26, temp_s6->unk_06);
if (temp_s6->unk_06 != temp_s6->unk_07) {
func_8420B5A4(temp_s4 + 0xBA, temp_s5 + 0x26, temp_s6->unk_07);
}
gSPDisplayList(gDisplayListHead++, D_8006F630);
func_8420B71C(temp_s4 + 4, temp_s5 + 0x20, arg0->unk_20);
func_8420B40C(temp_s4, temp_s5, arg0->unk_01, arg0->unk_02);
func_8001F3F4();
func_8001EBE0(8, 0);
func_8001F1E8(temp_s4 + 0xC, temp_s5 + 8, temp_s6->unk_30);
func_8001EBE0(8, 0);
func_8001F1E8(temp_s4 + 0x84, temp_s5 + 8, "%s %d", func_84200160(0x15), temp_s6->unk_24);
func_8001EBE0(4, 0);
func_8001F1E8(temp_s4 + 0xE8, temp_s5 + 0xC, "%s%03d", func_84200160(0x16), temp_s6->unk_00.unk_00);
func_8001EBE0(4, 0);
func_8001F1E8(temp_s4 + 0x13C, temp_s5 + 0xC, func_84200088(temp_s6->unk_00.unk_00));
func_8001EBE0(8, 0);
func_8001F1E8(temp_s4 + 0x76, temp_s5 + 0x5A, "%s", func_84200160(8));
func_8001EBE0(8, 0);
func_8001F1E8(temp_s4 + 0xA4, temp_s5 + 0x5A, "%3d", temp_s6->unk_26);
func_8001EBE0(4, 0);
func_8001F1E8(temp_s4 + 0x116, temp_s5 + 0x25, func_84200130(5));
func_8001F1E8(temp_s4 + 0x116, temp_s5 + 0x38, func_84200130(6));
func_8001F1E8(temp_s4 + 0x116, temp_s5 + 0x4B, func_84200130(7));
func_8001F1E8(temp_s4 + 0x116, temp_s5 + 0x5E, func_84200130(8));
func_8001EBE0(4, 0);
func_8001F1E8(temp_s4 + 0x15E, temp_s5 + 0x25, "%3d", temp_s6->unk_28);
func_8001F1E8(temp_s4 + 0x15E, temp_s5 + 0x38, "%3d", temp_s6->unk_2A);
func_8001F1E8(temp_s4 + 0x15E, temp_s5 + 0x4B, "%3d", temp_s6->unk_2C);
func_8001F1E8(temp_s4 + 0x15E, temp_s5 + 0x5E, "%3d", temp_s6->unk_2E);
func_8001EBE0(4, 0);
temp_v0_8 = func_84200130(9);
func_8001F1E8((temp_s4 - (func_8001F5B0(4, 0, temp_v0_8) / 2)) + 0x90, temp_s5 + 0x26, temp_v0_8);
temp_v0_8 = func_842000F8(func_800219FC(temp_s6->unk_06));
func_8001F1E8((temp_s4 - (func_8001F5B0(4, 0, temp_v0_8) / 2)) + 0x90, temp_s5 + 0x3A, temp_v0_8);
if (temp_s6->unk_06 != temp_s6->unk_07) {
temp_v0_8 = func_84200130(0xA);
func_8001F1E8((temp_s4 - (func_8001F5B0(4, 0, temp_v0_8) / 2)) + 0xE0, temp_s5 + 0x26, temp_v0_8);
temp_v0_8 = func_842000F8(func_800219FC(temp_s6->unk_07));
func_8001F1E8((temp_s4 - (func_8001F5B0(4, 0, temp_v0_8) / 2)) + 0xE0, temp_s5 + 0x3A, temp_v0_8);
}
func_8001EBE0(8, 0);
{
s16 sp80;
Color_RGB8* color;
u8 temp_a0;
for (i = 0; i < 4; i++) {
temp_a0 = temp_s6->unk_09[i];
if (temp_a0 == 0) {
break;
}
color = &D_842115F0[D_80072338[temp_a0 - 1].unk_01].unk_00[2];
sp80 = func_8420B870(i, D_842116F0[i], func_842000C0(temp_a0));
func_8001F324(color->r, color->g, color->b, 0xFF);
func_8001F1E8(temp_s4 + sp80, D_842116F8[i] + temp_s5, func_842000C0(temp_s6->unk_09[i]));
}
func_8001F444();
gSPDisplayList(gDisplayListHead++, D_8006F518);
for (i = 0; i < 4; i++) {
if (temp_s6->unk_09[i] == 0) {
break;
}
sp80 = func_8420B870(i, D_842116F0[i], func_842000C0(temp_s6->unk_09[i]));
func_8001C6AC((temp_s4 + sp80) - 0x18, D_842116F8[i] + temp_s5, 0x14, 0x14,
D_842115F0[D_80072338[temp_s6->unk_09[i] - 1].unk_01].unk_0C, 0x14, 0);
}
}
gSPDisplayList(gDisplayListHead++, D_8006F630);
arg0->unk_20 = 0;
}
}
}
void func_8420C360(unk_D_8423D3A8* arg0) {
}
void func_8420C368(unk_D_8423D3A8* arg0) {
Controller* cont = &gControllers[arg0->unk_03];
if (BTN_IS_PRESSED(cont, BTN_A)) {
if (arg0->unk_01 == 0) {
func_80048B90(3);
} else if (arg0->unk_02 == 0) {
func_80048B90(0x22);
} else {
func_80048B90(3);
}
arg0->unk_04 = 0;
arg0->unk_00 = 3;
} else if (BTN_IS_PRESSED(cont, BTN_B)) {
func_80048B90(3);
arg0->unk_04 = 0;
arg0->unk_02 = 1;
arg0->unk_00 = 3;
} else if (BTN_IS_PRESSED(cont, BTN_DUP | BTN_DDOWN) && (arg0->unk_01 != 0)) {
func_80048B90(1);
arg0->unk_02 ^= 1;
}
arg0->unk_06 = arg0->unk_0E.x1;
arg0->unk_08 = arg0->unk_0E.y2;
arg0->unk_0A = 0x228;
arg0->unk_0C = 0xCC;
arg0->unk_20 = func_8001B9D4(arg0->unk_28);
}
void func_8420C484(unk_D_8423D3A8* arg0) {
arg0->unk_06 = arg0->unk_0E.x1;
arg0->unk_08 = arg0->unk_0E.y2;
arg0->unk_0A = 0x228;
arg0->unk_0C = 0xCC;
arg0->unk_00 = 1;
arg0->unk_20 = func_8001B9D4(arg0->unk_28);
}
void func_8420C4DC(unk_D_8423D3A8* arg0) {
arg0->unk_06 = arg0->unk_16.x1;
arg0->unk_08 = arg0->unk_16.y2;
arg0->unk_0A = 0x8C;
arg0->unk_0C = 0x34;
arg0->unk_00 = 0;
}
s32 func_8420C504(unk_D_8423D3A8* arg0) {
arg0->unk_24 = func_80019760(1);
arg0->unk_28 = func_8001B1FC(arg0->unk_24, 0x64, 0x54, 0, 0, 0x64, 0x54, NULL);
arg0->unk_28->unk_00 &= ~2;
arg0->unk_00 = 0;
arg0->unk_03 = 0;
arg0->unk_04 = 0;
arg0->unk_20 = 0;
return 0x10;
}
s32 func_8420C580(unk_D_8423D3A8* arg0) {
s32 sp1C = 0;
switch (arg0->unk_00) {
case 0:
sp1C = 0;
func_8420C360(arg0);
break;
case 1:
sp1C = 0;
func_8420C368(arg0);
break;
case 2:
func_8420C484(arg0);
sp1C = 1;
break;
case 3:
func_8420C4DC(arg0);
sp1C = 1;
break;
}
return sp1C;
}
s32 func_8420C60C(unk_D_8423D3A8* arg0, s16 arg1, s16 arg2, s16 arg3, s16 arg4, s16 arg5,
unk_D_838067F0_0168_0000* arg6, s16 arg7) {
if (arg0->unk_00 != 0) {
return 0;
}
func_8001B2D8(arg0->unk_28, &arg6->unk_004, 0x108D);
arg0->unk_00 = 2;
arg0->unk_01 = arg7;
arg0->unk_02 = 0;
arg0->unk_03 = arg1;
arg0->unk_04 = 0;
arg0->unk_20 = 0;
arg0->unk_2C = arg6;
func_80005FC0(&arg0->unk_0E, arg2, arg3, arg2 + 0x227, arg3 + 0xCB);
func_80005FC0(&arg0->unk_16, arg4, arg5, arg4 + 0x8B, arg5 + 0x33);
return 1;
}
s32 func_8420C6D8(unk_D_8423D3A8* arg0, s16 arg1, s16 arg2, unk_D_838067F0_0168_0000* arg3) {
if (arg0->unk_00 != 1) {
return 0;
}
while (func_80001C90() == 0) {}
func_8001B2D8(arg0->unk_28, &arg3->unk_004, 0x108D);
arg0->unk_2C = arg3;
func_80005FC0(&arg0->unk_16, arg1, arg2, arg1 + 0x8B, arg2 + 0x33);
return 1;
}
s32 func_8420C788(unk_D_8423D3A8* arg0) {
s16 var_v1 = 0;
if (arg0->unk_00 == 0) {
var_v1 = arg0->unk_02 + 1;
}
return var_v1;
}

View File

@ -0,0 +1,646 @@
#include "fragment61.h"
#include "src/19840.h"
#include "src/1AB70.h"
#include "src/1CF30.h"
#include "src/20470.h"
#include "src/225A0.h"
#include "src/22630.h"
#include "src/232C0.h"
#include "src/26820.h"
#include "src/2E110.h"
#include "src/49790.h"
#include "src/6BC0.h"
#include "src/F420.h"
#include "src/dp_intro.h"
#include "src/hal_libc.h"
s16 D_8423E580;
Controller* D_8423E584;
s16 D_8423E588;
s16 D_8423E58A;
s16 D_84211700 = 0;
unk_D_84211704 D_84211704[] = {
{
132,
300,
376,
136,
0,
4,
0,
8481,
0x0374,
},
{
132,
300,
376,
136,
0,
1,
0,
8481,
0x0002,
},
{
132,
300,
376,
136,
0,
1,
0,
26907,
0x0002,
},
{
132,
300,
376,
136,
0,
1,
0,
-32503,
0x0001,
},
{
210,
300,
220,
108,
0,
3,
0,
8481,
0x006C,
},
{
210,
150,
220,
108,
0,
3,
0,
8481,
0x006C,
},
{
210,
300,
290,
108,
0,
3,
2,
-32503,
0x0052,
},
{
210,
150,
290,
108,
0,
3,
2,
-32503,
0x0052,
},
{
110,
300,
420,
92,
0,
1,
0,
26907,
0x0002,
},
{
210,
300,
290,
82,
0,
2,
0,
8481,
0x000A,
},
{
132,
300,
376,
136,
0,
3,
0,
8481,
0x0052,
},
{
70,
320,
500,
92,
0,
1,
0,
26907,
0x0002,
},
{
160,
320,
320,
82,
0,
2,
0,
8481,
0x000A,
},
{
110,
300,
420,
136,
0,
1,
0,
-32503,
0x0002,
},
{
110,
300,
420,
136,
0,
1,
0,
-32503,
0x0002,
},
{
110,
300,
420,
136,
0,
1,
0,
-32503,
0x0002,
},
{
132,
180,
376,
92,
-22,
1,
0,
26889,
0x0002,
},
{
120,
160,
400,
64,
0,
1,
0,
26889,
0x0002,
},
{
120,
160,
400,
64,
0,
1,
0,
26889,
0x0002,
},
{
210,
300,
290,
82,
0,
2,
1,
8481,
0x000A,
},
};
void func_8420C7B0(s16 arg0, s16 arg1, s16 arg2, char* arg3) {
if (arg2 == D_8423E58A) {
func_8001F324(0xFF, 0xFF, 0, 0xFF);
} else {
func_8001F324(0xFF, 0xFF, 0xFF, 0xFF);
}
func_8001F1E8(arg0 + 0x3C, arg1 + (arg2 * 0x1C) + 0xC, arg3);
}
void func_8420C844(unk_D_84211704* arg0) {
func_8001F3F4();
func_8001EBE0(0x10, 0);
func_8420C7B0(arg0->unk_00, arg0->unk_02, 0, func_84200130(0x15));
func_8420C7B0(arg0->unk_00, arg0->unk_02, 1, func_84200130(0x16));
func_8420C7B0(arg0->unk_00, arg0->unk_02, 2, func_84200130(0x17));
func_8420C7B0(arg0->unk_00, arg0->unk_02, 3, func_84200130(0x18));
func_8001F444();
if (D_8423E58A >= 0) {
func_80020928(arg0->unk_00 + 0x10, arg0->unk_02 + (D_8423E58A * 0x1C) + 0xC);
}
}
void func_8420C930(unk_D_84211704* arg0) {
func_8001F3F4();
func_8001EBE0(0x10, 0);
func_8420C7B0(arg0->unk_00, arg0->unk_02, 0, func_84200130(0x19));
func_8420C7B0(arg0->unk_00, arg0->unk_02, 1, func_84200130(0x1A));
func_8420C7B0(arg0->unk_00, arg0->unk_02, 2, func_84200130(0x1B));
func_8001F444();
if (D_8423E58A >= 0) {
func_80020928(arg0->unk_00 + 0x10, arg0->unk_02 + (D_8423E58A * 0x1C) + 0xC);
}
}
void func_8420CA00(unk_D_84211704* arg0) {
func_8001F3F4();
func_8001EBE0(0x10, 0);
func_8420C7B0(arg0->unk_00, arg0->unk_02, 0, func_84200130(0x15));
func_8420C7B0(arg0->unk_00, arg0->unk_02, 1, func_84200130(0x17));
func_8420C7B0(arg0->unk_00, arg0->unk_02, 2, func_84200130(0x18));
func_8001F444();
if (D_8423E58A >= 0) {
func_80020928(arg0->unk_00 + 0x10, arg0->unk_02 + (D_8423E58A * 0x1C) + 0xC);
}
}
void func_8420CAD0(unk_D_84211704* arg0) {
func_8001F3F4();
func_8001EBE0(0x10, 0);
func_8420C7B0(arg0->unk_00, arg0->unk_02, 0, func_84200130(0x1C));
func_8420C7B0(arg0->unk_00, arg0->unk_02, 1, func_84200130(0x1D));
func_8420C7B0(arg0->unk_00, arg0->unk_02, 2, func_84200130(0x1E));
func_8001F444();
if (D_8423E58A >= 0) {
func_80020928(arg0->unk_00 + 0x10, arg0->unk_02 + (D_8423E58A * 0x1C) + 0xC);
}
}
void func_8420CBA0(unk_D_84211704* arg0) {
func_8001F3F4();
func_8001EBE0(0x10, 0);
func_8420C7B0(arg0->unk_00, arg0->unk_02, 0, func_84200130(0x1F));
func_8420C7B0(arg0->unk_00, arg0->unk_02, 1, func_84200130(0x20));
func_8001F444();
if (D_8423E58A >= 0) {
func_80020928(arg0->unk_00 + 0x10, arg0->unk_02 + (D_8423E58A * 0x1C) + 0xC);
}
}
void func_8420CC54(unk_D_84211704* arg0) {
func_8001F3F4();
func_8001EBE0(0x10, 0);
func_8001F1E8(arg0->unk_00 + 0x2D, arg0->unk_02 + 0x38, func_84200130(0x21));
func_8001F444();
}
void func_8420CCAC(unk_D_84211704* arg0) {
gSPDisplayList(gDisplayListHead++, D_8006F518);
func_8001C6AC(arg0->unk_00 + 0x18, arg0->unk_02 + 0x26, 0x4C, 0x14, D_2029CE0, 0x4C, 0);
func_8001C6AC(arg0->unk_00 + 0x18, arg0->unk_02 + 0x3A, 0x4C, 0x14, D_202A8C0, 0x4C, 0);
func_8001C6AC(arg0->unk_00 + 0x18, arg0->unk_02 + 0x4E, 0x4C, 0x14, D_202B4A0, 0x4C, 0);
gSPDisplayList(gDisplayListHead++, D_8006F630);
func_8001F3F4();
func_8001EBE0(0x10, 0);
func_8001F1E8(arg0->unk_00 + 0x78, arg0->unk_02 + 0x38, func_84200130(0x22));
func_8001F444();
}
void func_8420CE24(unk_D_84211704* arg0) {
gSPDisplayList(gDisplayListHead++, D_8006F518);
func_8001C6AC(arg0->unk_00 + 0x18, arg0->unk_02 + arg0->unk_08 + 0x26, 0x4C, 0x14, D_2029CE0, 0x4C, 0);
func_8001C6AC(arg0->unk_00 + 0x18, arg0->unk_02 + arg0->unk_08 + 0x3A, 0x4C, 0x14, D_202A8C0, 0x4C, 0);
func_8001C6AC(arg0->unk_00 + 0x18, arg0->unk_02 + arg0->unk_08 + 0x4E, 0x4C, 0x14, D_202B4A0, 0x4C, 0);
gSPDisplayList(gDisplayListHead++, D_8006F630);
func_8001F3F4();
func_8001EBE0(0x10, 0);
func_8001F3B4(0x1E);
func_8001F1E8(arg0->unk_00 + 0x78, arg0->unk_02 + arg0->unk_08 + 0x29, func_84200130(0x23));
func_8001F444();
}
void func_8420CFC4(unk_D_84211704* arg0) {
gSPDisplayList(gDisplayListHead++, D_8006F518);
func_8001C6AC(arg0->unk_00 + 0x10, arg0->unk_02 + 0x10, 0x4C, 0x14, D_2029CE0, 0x4C, 0);
func_8001C6AC(arg0->unk_00 + 0x10, arg0->unk_02 + 0x24, 0x4C, 0x14, D_202A8C0, 0x4C, 0);
func_8001C6AC(arg0->unk_00 + 0x10, arg0->unk_02 + 0x38, 0x4C, 0x14, D_202B4A0, 0x4C, 0);
gSPDisplayList(gDisplayListHead++, D_8006F630);
func_8001F3F4();
func_8001EBE0(0x10, 0);
func_8001F3B4(0x1C);
func_8001F1E8(arg0->unk_00 + 0x68, arg0->unk_02 + 0x14, func_84200130(0x24));
func_8001F444();
}
void func_8420D144(unk_D_84211704* arg0) {
gSPDisplayList(gDisplayListHead++, D_8006F518);
func_8001C6AC(arg0->unk_00 + 0x10, arg0->unk_02 + 0x10, 0x4C, 0x14, D_2029CE0, 0x4C, 0);
func_8001C6AC(arg0->unk_00 + 0x10, arg0->unk_02 + 0x24, 0x4C, 0x14, D_202A8C0, 0x4C, 0);
func_8001C6AC(arg0->unk_00 + 0x10, arg0->unk_02 + 0x38, 0x4C, 0x14, D_202B4A0, 0x4C, 0);
gSPDisplayList(gDisplayListHead++, D_8006F630);
func_8001F3F4();
func_8001EBE0(0x10, 0);
func_8001F1E8(arg0->unk_00 + 0x68, arg0->unk_02 + 0x22, func_84200130(0x25));
func_8001F444();
}
void func_8420D2BC(unk_D_84211704* arg0) {
func_8001F3F4();
func_8001EBE0(0x10, 0);
func_8420C7B0(arg0->unk_00, arg0->unk_02, 0, func_84200130(0x26));
func_8420C7B0(arg0->unk_00, arg0->unk_02, 1, func_84200130(0x20));
func_8001F444();
if (D_8423E58A >= 0) {
func_80020928(arg0->unk_00 + 0x10, arg0->unk_02 + (D_8423E58A * 0x1C) + 0xC);
}
}
void func_8420D370(unk_D_84211704* arg0, s16 arg1) {
char sp28[0x100];
s32 tmp;
char* sp20;
func_8001F3F4();
func_8001EBE0(0x10, 0);
func_8001F3B4(0x1C);
func_8002D600(2, arg1);
sp20 = func_84200190(sp28, sizeof(sp28), 0x27);
tmp = ((arg0->unk_04 - func_8001F5B0(0, 0, sp20)) / 2);
func_8001F1E8(arg0->unk_00 + tmp, arg0->unk_02 + 0x14, sp20);
sp20 = func_84200130(0x28);
tmp = ((arg0->unk_04 - func_8001F5B0(0, 0, sp20)) / 2);
func_8001F1E8(arg0->unk_00 + tmp, arg0->unk_02 + 0x56, sp20);
func_8001F444();
}
void func_8420D464(unk_D_84211704* arg0, s16 arg1) {
func_8001F3F4();
func_8001EBE0(0x10, 0);
if (arg1 == 0) {
func_8001F1E8(arg0->unk_00 + 0x18, arg0->unk_02 + 0x14, func_84200130(0x29));
} else {
func_8001F1E8(arg0->unk_00 + 0x39, arg0->unk_02 + 0x14, func_84200130(0x2A));
}
func_8001F444();
}
void func_8420D4F8(s32 arg0) {
s16 tmp2;
s16 var_a3;
unk_D_84211704* temp_s0;
if ((D_84211700 != 0) && (D_8423E588 > 0)) {
temp_s0 = &D_84211704[D_8423E580];
if (D_8423E588 < 4) {
var_a3 = (temp_s0->unk_06 * D_8423E588) / 4;
if (var_a3 < 0x10) {
var_a3 = 0x10;
}
tmp2 = temp_s0->unk_02 + ((temp_s0->unk_06 - var_a3) / 2);
func_80020460(temp_s0->unk_00, tmp2, temp_s0->unk_04, var_a3, temp_s0->unk_0C);
} else {
func_80020460(temp_s0->unk_00, temp_s0->unk_02, temp_s0->unk_04, temp_s0->unk_06, temp_s0->unk_0C);
switch (D_8423E580) {
case 0:
func_8420C844(temp_s0);
break;
case 1:
func_8420CC54(temp_s0);
break;
case 2:
func_8420CCAC(temp_s0);
break;
case 3:
func_8420CE24(temp_s0);
break;
case 4:
func_8420C930(temp_s0);
break;
case 5:
func_8420C930(temp_s0);
break;
case 6:
func_8420CAD0(temp_s0);
break;
case 7:
func_8420CAD0(temp_s0);
break;
case 8:
func_8420CFC4(temp_s0);
break;
case 9:
func_8420CBA0(temp_s0);
break;
case 10:
func_8420CA00(temp_s0);
break;
case 11:
func_8420D144(temp_s0);
break;
case 12:
func_8420D2BC(temp_s0);
break;
case 13:
func_8420D370(temp_s0, 0x9B);
break;
case 14:
func_8420D370(temp_s0, 0x50);
break;
case 15:
func_8420D370(temp_s0, 0x32);
break;
case 16:
func_8420CE24(temp_s0);
break;
case 17:
func_8420D464(temp_s0, 0);
break;
case 18:
func_8420D464(temp_s0, 1);
break;
case 19:
func_8420CBA0(temp_s0);
break;
}
}
}
}
void func_8420D75C(void) {
s16 tmp = D_84211704[D_8423E580].unk_0A;
if (D_8423E584 != NULL) {
if (BTN_IS_PRESSED(D_8423E584, BTN_A)) {
s32 tmp2 = (D_84211704[D_8423E580].unk_0E >> (D_8423E58A * 3));
switch (tmp2 & 7) {
case 1:
func_80048B90(3);
break;
case 2:
func_80048B90(2);
break;
case 3:
func_80048B90(0x1C);
break;
case 4:
func_80048B90(0x20);
break;
case 5:
func_80048B90(0x21);
break;
case 6:
if (func_80028E68() < 0xC) {
func_80048B90(0x20);
} else {
func_80048B90(8);
}
break;
}
D_84211700 = 3;
} else if (BTN_IS_PRESSED(D_8423E584, BTN_B)) {
func_80048B90(3);
D_8423E58A = -1;
D_84211700 = 3;
} else if (BTN_IS_PRESSED(D_8423E584, BTN_DUP)) {
func_80048B90(1);
D_8423E58A -= 1;
if (D_8423E58A < 0) {
D_8423E58A = tmp - 1;
}
} else if (BTN_IS_PRESSED(D_8423E584, BTN_DDOWN)) {
func_80048B90(1);
D_8423E58A += 1;
if (D_8423E58A >= tmp) {
D_8423E58A = 0;
}
}
}
D_8423E588 = 4;
}
void func_8420D938(void) {
D_8423E588++;
if (D_8423E588 >= 5) {
D_8423E588 = 4;
D_84211700 = 2;
}
}
void func_8420D978(void) {
D_8423E588--;
if (D_8423E588 < 0) {
D_8423E588 = 0;
D_84211700 = 4;
}
}
s32 func_8420D9B0(void) {
s32 sp1C = 0;
switch (D_84211700) {
case 2:
sp1C = 0;
func_8420D75C();
break;
case 1:
func_8420D938();
sp1C = 1;
break;
case 3:
func_8420D978();
sp1C = 1;
break;
}
return sp1C;
}
s32 func_8420DA28(s16 arg0, Controller* arg1) {
if (D_84211700 == 0) {
switch (arg0) {
case 8:
func_80048B90(0x1F);
case 11:
func_80048B90(0x1E);
break;
}
func_80048B90(4);
D_8423E580 = arg0;
D_8423E58A = D_84211704[arg0].unk_0B;
D_8423E588 = 0;
D_8423E584 = arg1;
D_84211700 = 1;
return 1;
}
return 0;
}
s32 func_8420DAF4(s16 arg0) {
if ((D_84211700 == 2) && (arg0 == D_8423E580)) {
D_8423E58A = -1;
D_84211700 = 3;
return 1;
}
return 0;
}
s16 func_8420DB48(s16 arg0) {
if ((D_84211700 == 4) && (arg0 == D_8423E580)) {
D_84211700 = 0;
return D_8423E58A + 1;
}
return -1;
}

File diff suppressed because it is too large Load Diff

View File

@ -16,6 +16,8 @@
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F1D60/func_843075D0.s")
void func_84307630(void) {}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F1D60/func_84307638.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F1D60/func_84307748.s")

View File

@ -590,7 +590,8 @@ def dump_data(offset, struct, counts):
for count in member["counts"]:
for i in range(count):
if member["type"] in STRUCTS:
out = output_struct(data, member["type"], out, offset + member["offset"], indent + (" " * i))
#print(f"Reading {member['type']} from offset {offset + member['offset']} with size {STRUCTS[member['type']]['size']}")
out = output_struct(data, member["type"], out, offset + member["offset"] + (i * STRUCTS[member['type']]['size']), indent + (" " * i))
else:
base_size = BASE_TYPES[member["type"]]
out = output_type(member["type"], base_size, offset + member["offset"] + (i * base_size), out)
@ -657,11 +658,13 @@ def dump_data(offset, struct, counts):
#######################################################################
parse_structs()
#for s in STRUCTS:
# if "unk_D_83407B00" in s:
# print(s)
#exit()
calc_struct_sizes()
# for s in STRUCTS:
# if "unk_D_842115F0" in s or "Color_RGB" in s:
# print(s)
# print(f"\t\t{STRUCTS[s]}")
# print()
# exit()
#print(f"{len(STRUCTS)} structs parsed in")
def dump(offset, type_name):

View File

@ -2100,16 +2100,29 @@
- [0x2DD710, c, fragments/61/fragment61_2DD710]
- [0x2DFB60, c, fragments/61/fragment61_2DFB60]
- [0x2E2C20, c, fragments/61/fragment61_2E2C20]
- [0x2E85D0, data, fragments/61/fragment61_data]
- [0x2E9120, rodata, fragments/61/fragment61_rodata_2E9120]
- [0x2E9150, rodata, fragments/61/fragment61_rodata_2E9150]
- [0x2E91D0, rodata, fragments/61/fragment61_rodata_2E91D0]
- [0x2E9250, rodata, fragments/61/fragment61_rodata_2E9250]
- [0x2E92B0, rodata, fragments/61/fragment61_rodata_2E92B0]
- [0x2E92E0, rodata, fragments/61/fragment61_rodata_2E92E0]
- [0x2E9350, rodata, fragments/61/fragment61_rodata_2E9350]
- [0x2E4040, c, fragments/61/fragment61_2E4040]
- [0x2E5430, c, fragments/61/fragment61_2E5430]
- {vram: 0x84211B30, type: bss, name: fragments/61/fragment61_bss}
- [0x2E85D0, .data, fragments/61/fragment61_2D78B0]
- [0x2E8630, .data, fragments/61/fragment61_2DB900]
- [0x2E8E40, .data, fragments/61/fragment61_2DD710]
- [0x2E8E60, .data, fragments/61/fragment61_2DFB60]
- [0x2E8E80, .data, fragments/61/fragment61_2E2C20]
- [0x2E8F90, .data, fragments/61/fragment61_2E4040]
- [0x2E90E0, .data, fragments/61/fragment61_2E5430]
- [0x2E9120, .rodata, fragments/61/fragment61_2D78B0]
- [0x2E9150, .rodata, fragments/61/fragment61_2DB900]
- [0x2E91D0, .rodata, fragments/61/fragment61_2DD710]
- [0x2E9250, .rodata, fragments/61/fragment61_2DFB60]
- [0x2E92B0, .rodata, fragments/61/fragment61_2E2C20]
- [0x2E92E0, .rodata, fragments/61/fragment61_2E4040]
- [0x2E9350, .rodata, fragments/61/fragment61_2E5430]
- {vram: 0x84211B30, type: .bss, name: fragments/61/fragment61_2D78B0}
- {vram: 0x8423D400, type: .bss, name: fragments/61/fragment61_2DB900}
- {vram: 0x8423E580, type: .bss, name: fragments/61/fragment61_2E4040}
- name: fragment61_relocs
type: code