diff --git a/include/color.h b/include/color.h index 341d7822..65dd15dc 100644 --- a/include/color.h +++ b/include/color.h @@ -79,6 +79,7 @@ typedef union{ } Color_RGBA14; #define RGBA8(r, g, b, a) ((((r) & 0xFF) << 24) | (((g) & 0xFF) << 16) | (((b) & 0xFF) << 8) | (((a) & 0xFF) << 0)) +#define RGBA5551(r, g, b, a) ((((r) << 8) & 0xF800) | (((g) << 3) & 0x7C0) | (((b) >> 2) & 0x3E) | ((a) & 0x1)) #define RGBA16_GET_R(pixel) ((((pixel) & 0xF800) >> 11) & 0xFF) #define RGBA16_GET_G(pixel) ((((pixel) & 0x7C0) >> 6) & 0xFF) diff --git a/include/global.h b/include/global.h index 5510c24d..50adb062 100644 --- a/include/global.h +++ b/include/global.h @@ -7,14 +7,13 @@ typedef unsigned int uintptr_t; #include "macros.h" - #include "attributes.h" #include "functions.h" -#include "variables.h" #include "sections.h" #include "gfx.h" #include "color.h" #include "sound.h" +#include "string.h" #include "math.h" typedef struct unk_D_86002F58_004_000_00C_028 { @@ -502,4 +501,18 @@ typedef struct arg1_func_81407874_014_000_010 { /* 0x0F */ u8 unk_0F; } arg1_func_81407874_014_000_010; // size >= 0x10 +typedef struct func_88002628_sp38 { + /* 0x000 */ OSThread thread; + /* 0x1B0 */ char unk1B0[0x10]; +} func_88002628_sp38; // size = 0x1C0 + +typedef struct unk_func_88500020 { + /* 0x00 */ s32 unk_00; + /* 0x04 */ s32 unk_04; + /* 0x08 */ s32 unk_08; + /* 0x0C */ u8* unk_0C; +} unk_func_88500020; // size = 0x10 + +#include "variables.h" + #endif diff --git a/include/variables.h b/include/variables.h index 18c4e33e..e7135016 100644 --- a/include/variables.h +++ b/include/variables.h @@ -101,6 +101,20 @@ extern u8 D_04008000[]; extern u8 D_04009000[]; extern u8 D_0400A000[]; extern u8 D_0400B000[]; +extern u8 D_4006A60[]; +extern u8 D_40022E0[]; +extern u8 D_4002368[]; +extern u8 D_40025F0[]; +extern u8 D_4002878[]; +extern u8 D_4002B00[]; +extern u8 D_4002D88[]; +extern u8 D_4003010[]; +extern u8 D_4003298[]; +extern u8 D_4003520[]; +extern u8 D_4001638[]; +extern u8 D_4001680[]; +extern u8 D_40016C8[]; +extern u8 D_4001710[]; extern u8 D_800818E0[0x20]; @@ -212,4 +226,6 @@ typedef struct unk_D_70B10 { /* 0x00 */ char unk00[0x20]; } unk_D_70B10; // size = 0x20 +extern unk_func_88500020 D_800758E0; + #endif diff --git a/linker_scripts/us/symbol_addrs.txt b/linker_scripts/us/symbol_addrs.txt index a5dc9bd2..0efedea0 100644 --- a/linker_scripts/us/symbol_addrs.txt +++ b/linker_scripts/us/symbol_addrs.txt @@ -359,3 +359,22 @@ D_86C11530 = 0x86C11530; // size:0xAD0 D_879060BC = 0x879060BC; // size:0x2 D_86E04D60 = 0x86E04D60; // size:0xAD0 D_86E05830 = 0x86E05830; // size:0x3610 +D_4006A60 = 0x4006A60; +D_40022E0 = 0x40022E0; +D_4002368 = 0x4002368; +D_40025F0 = 0x40025F0; +D_4002878 = 0x4002878; +D_4002B00 = 0x4002B00; +D_4002D88 = 0x4002D88; +D_4003010 = 0x4003010; +D_4003298 = 0x4003298; +D_4003520 = 0x4003520; +D_88217C20 = 0x88217C20; // size:0x4 +D_88217C24 = 0x88217C24; // size:0x4 +D_88217C28 = 0x88217C28; // size:0x4 +D_88217C2C = 0x88217C2C; // size:0x4 +D_88217C48 = 0x88217C48; // size:0x4 +D_88217C4C = 0x88217C4C; // size:0x4 +D_88217C50 = 0x88217C50; // size:0x4 +D_88217C54 = 0x88217C54; // size:0x4 +D_88217C58 = 0x88217C58; // size:0x4 \ No newline at end of file diff --git a/src/19840.h b/src/19840.h index 05d058a8..b431dc1d 100644 --- a/src/19840.h +++ b/src/19840.h @@ -17,7 +17,7 @@ typedef struct unk_func_80019600 { /* 0x04 */ OSMesgQueue* queue; /* 0x08 */ void* unk_08; /* 0x0C */ void* unk_0C; - /* 0x10 */ struct MainPoolState* pool; + /* 0x10 */ MainPoolState* pool; /* 0x14 */ s32 size; /* 0x18 */ arg1_func_80010CA8 unk_18; } unk_func_80019600; // size >= 0x1C diff --git a/src/1AB70.c b/src/1AB70.c index c7ecc2a4..a4c2e9c8 100644 --- a/src/1AB70.c +++ b/src/1AB70.c @@ -1,4 +1,4 @@ -#include "global.h" +#include "1AB70.h" #pragma GLOBAL_ASM("asm/us/nonmatchings/1AB70/func_80019F70.s") diff --git a/src/1AB70.h b/src/1AB70.h new file mode 100644 index 00000000..16242bc8 --- /dev/null +++ b/src/1AB70.h @@ -0,0 +1,14 @@ +#ifndef _1AB70_H_ +#define _1AB70_H_ + +#include "global.h" + +typedef struct unk_func_88201DA0_034_008 { + /* 0x00 */ char unk00[0x4]; +} unk_func_88201DA0_034_008; // size >= 1 + +void func_8001B058(void); +void func_8001B0DC(unk_func_88201DA0_034_008*, s32, s32); + + +#endif // _1AB70_H_ diff --git a/src/22630.c b/src/22630.c index 954c7486..c59de7e9 100644 --- a/src/22630.c +++ b/src/22630.c @@ -122,14 +122,14 @@ char* func_80021B7C(char* arg0, char* arg1) { #pragma GLOBAL_ASM("asm/us/nonmatchings/22630/func_80021C20.s") -void func_80021C40(char* arg0, char* arg1) { +char* func_80021C40(char* arg0, char* arg1) { char sp1C[11]; _bcopy(arg1, sp1C, 0xA); sp1C[10] = 'P'; - func_80021A90(arg0, sp1C); + return func_80021A90(arg0, sp1C); } extern char D_8006FEE8[][0x1C]; diff --git a/src/22630.h b/src/22630.h index 63d1f264..6d6785d6 100644 --- a/src/22630.h +++ b/src/22630.h @@ -4,6 +4,7 @@ #include "global.h" #include "memory.h" #include "29BA0.h" +#include "2D340.h" typedef enum { POKEMON_ROM_NONE = 0, @@ -51,6 +52,48 @@ typedef struct unk_D_800AE4E8_004_1_000_010 { /* 0x2C */ u8 unk_2C[11]; } unk_D_800AE4E8_004_1_000_010; // size = 0x37 +typedef struct unk_func_80022C28_ret { + /* 0x00 */ s8 unk_00; + /* 0x01 */ s8 unk_01; + /* 0x02 */ s8 unk_02; + /* 0x03 */ s8 unk_03; + /* 0x04 */ s8 unk_04; + /* 0x05 */ char unk05[0x3]; + /* 0x08 */ s16 unk_08; + /* 0x0A */ s16 unk_0A; +} unk_func_80022C28_ret; // size = 0xC + +typedef struct unk_func_8820BE14_sp { + /* 0x00 */ u8 unk_00; + /* 0x01 */ char unk01[0x3]; + /* 0x04 */ u8 unk_04; + /* 0x05 */ char unk05[0x1]; + /* 0x06 */ u8 unk_06; + /* 0x07 */ u8 unk_07; + /* 0x08 */ u8 unk_08; + /* 0x09 */ u8 unk_09; + /* 0x0A */ u8 unk_0A; + /* 0x0B */ u8 unk_0B; + /* 0x0C */ u8 unk_0C; + /* 0x0E */ s16 unk_0E; + /* 0x0E */ s32 unk_10; + /* 0x0E */ s16 unk_14; + /* 0x0E */ s16 unk_16; + /* 0x0E */ s16 unk_18; + /* 0x0E */ s16 unk_1A; + /* 0x0E */ s16 unk_1C; + /* 0x0E */ s16 unk_1E; + /* 0x20 */ char unk20[0x4]; + /* 0x24 */ u8 unk_24; + /* 0x25 */ u8 unk_25; + /* 0x26 */ char unk26[0xA]; + /* 0x30 */ char unk_30[11]; + /* 0x3B */ char unk_3B[11]; + /* 0x46 */ char unk46[0xC]; + /* 0x52 */ u8 unk_52; + /* 0x53 */ u8 unk_53; +} unk_func_8820BE14_sp; // size = 0x54 + u16 func_80021A30(u8* arg0); u32 func_80021A48(u8* arg0); void func_80021A68(u8* arg0, s32 arg1); @@ -59,7 +102,7 @@ char* func_80021A90(char* arg0, char* arg1); void func_80021B5C(char*, char*); char* func_80021B7C(char* arg0, char* arg1); void func_80021C20(char*, char*); -void func_80021C40(char* arg0, char* arg1); +char* func_80021C40(char* arg0, char* arg1); char* func_80021C80(char* arg0, char* arg1); char* func_80021CA4(char* arg0, s32 arg1); char* func_80021CE0(s32 arg0, s8* arg1); @@ -71,11 +114,16 @@ u32 func_80022170(s32 arg0, s32 arg1, u16 arg2, u16 arg3, s32 arg4); void func_80022338(unk_func_80026268_arg0* arg0); u32 func_800224B8(s32 arg0, u16 arg1); u16 func_800226C0(s32 arg0, u32 arg1); +void func_80022734(unk_func_8820BE14_sp*); +void func_800228B0(unk_func_8820BE14_sp*); u8 func_80022A38(s32 arg0); u8 func_80022A60(s32 arg0); -s32 func_80022C28(s32, s32, s32, s32); -void func_80022D8C(void*); -s32 func_80022E18(unk_func_80026268_arg0*, s32, void*); +unk_func_80022C28_ret* func_80022C28(s32, s32, s32, s32); +unk_func_80022C28_ret* func_80022CC0(s32, s32, s32, s32, char*, s32); +void func_80022D24(unk_func_80022C28_ret*); +void func_80022D8C(unk_func_80022C28_ret*); +s32 func_80022E18(unk_func_80026268_arg0*, s32, unk_func_80022C28_ret*); +s32 func_80022F24(unk_func_88205880_00D0*, s32, unk_func_80022C28_ret*); void func_80023068(void); char* func_8002311C(s32 arg0); s32 func_80023130(u8* arg0); @@ -90,12 +138,19 @@ void func_80023D60(s32); void func_80023F78(s32 arg0); void func_80024040(s32 arg0); s32 func_800240A0(void); +void func_80024208(s32); s32 func_80024A48(s32, s32, s32); s32 func_80024EF4(void); s32 func_80024F00(s32); +u8 func_80024F68(s32); s32 func_80024FB0(s32 arg0); -void func_800251B0(s32, s8*); +s32 func_80025084(s32); +s32 func_8002513C(s32); +char* func_800251B0(s32, s8*); s32 func_80025370(s32); s32 func_8002539C(s32); +void func_80025540(s32); +void func_800256F4(s32, s32, s32); +void func_80026E4C(s32); #endif // _6BC0_H_ diff --git a/src/26820.c b/src/26820.c index e0b05f4a..7b4cd211 100644 --- a/src/26820.c +++ b/src/26820.c @@ -721,11 +721,13 @@ s32 func_8002797C(s32 arg0, s32 arg1, s32 arg2, void* arg3) { break; case 22: - _bcopy(&D_800AE4E8[2].unk_04.unk2->unk_1EC8.unk_0002[arg2], arg3, 0x8C); + _bcopy(&D_800AE4E8[2].unk_04.unk2->unk_1EC8.unk_0002[arg2], arg3, + sizeof(unk_D_800AE4E8_004_2_1EC8_0002)); break; case 23: - _bcopy(&D_800AE4E8[2].unk_04.unk2->unk_3280.unk_0002[arg2], arg3, 0x8C); + _bcopy(&D_800AE4E8[2].unk_04.unk2->unk_3280.unk_0002[arg2], arg3, + sizeof(unk_D_800AE4E8_004_2_1EC8_0002)); break; } sp2C = 1; diff --git a/src/26820.h b/src/26820.h index 983befe3..567821c3 100644 --- a/src/26820.h +++ b/src/26820.h @@ -52,6 +52,9 @@ void func_80026C0C(s32 arg0, s32 arg1); void func_8002707C(s32 arg0, s32 arg1); s32 func_800270AC(s32 arg0); s32 func_80027108(s32 arg0); +s32 func_80027164(s32, s32); +s32 func_80027184(s32, s32); +void func_800272BC(s32, s32, char*); s16 func_800275E0(s32 arg0, s32 arg1); s32 func_8002797C(s32 arg0, s32 arg1, s32 arg2, void* arg3); s32 func_80027C24(s32 arg0, s32 arg1, s32 arg2, void* arg3); diff --git a/src/2C1C0.c b/src/2C1C0.c index 6caf70b4..640f4db5 100644 --- a/src/2C1C0.c +++ b/src/2C1C0.c @@ -224,7 +224,7 @@ void func_8002BA34(s16 arg0, s16 arg1, s16 arg2, s16 arg3) { void func_8002BB7C(s32 arg0, s32 arg1, s32 arg2) { s32 i; unk_func_80026268_arg0 sp48; - void* temp_v0; + unk_func_80022C28_ret* temp_v0; unk_D_800AE540_0004* temp_s4; char sp34[11]; diff --git a/src/2D340.c b/src/2D340.c index 37688036..ae9bc21b 100644 --- a/src/2D340.c +++ b/src/2D340.c @@ -1,4 +1,4 @@ -#include "global.h" +#include "2D340.h" #pragma GLOBAL_ASM("asm/us/nonmatchings/2D340/func_8002C740.s") diff --git a/src/2D340.h b/src/2D340.h new file mode 100644 index 00000000..1a7e4819 --- /dev/null +++ b/src/2D340.h @@ -0,0 +1,64 @@ +#ifndef _3D340_H_ +#define _3D340_H_ + +#include "global.h" +#include "src/1C720.h" +#include "src/1AB70.h" + +typedef struct unk_func_88205880_00D0 { + /* 0x000 */ unk_func_80026268_arg0 unk_000[20]; + /* 0x690 */ s32 unk_690; + /* 0x694 */ s32 unk_694; + /* 0x698 */ s32 unk_698; + /* 0x69C */ u32 unk_69C; +} unk_func_88205880_00D0; // size = 0x6A0 + +typedef struct unk_func_88200FA0_030_038 { + /* 0x00 */ unk_func_88205880_00D0** unk_00; + /* 0x04 */ s32 unk_04; + /* 0x08 */ s32 unk_08; +} unk_func_88200FA0_030_038; // size = 0xC + +typedef struct unk_func_88201DA0_034 { + /* 0x0000 */ s32 unk_000; + /* 0x0004 */ char unk004[0x4]; + /* 0x0008 */ unk_func_88201DA0_034_008 unk_008; + /* 0x000C */ char unk00C[0xC7C]; +} unk_func_88201DA0_034; // size = 0xC88 + +typedef struct unk_func_88201DA0_038 { + /* 0x00 */ unk_func_88201DA0_034* unk_00; + /* 0x04 */ s32 unk_04; + /* 0x08 */ s32 unk_08; + /* 0x0C */ s32 unk_0C; +} unk_func_88201DA0_038; // size = 0x10 + +typedef struct unk_func_88205880_A030 { + /* 0x00 */ unk_func_88205880_00D0** unk_00; + /* 0x04 */ s32 unk_04; + /* 0x08 */ s32 unk_08; +} unk_func_88205880_A030; // size = 0xC + +typedef struct unk_func_8820BE14_06C_000 { + /* 0x00 */ s32 unk_00; + /* 0x04 */ unk_func_88200FA0_030_038 unk_04; +} unk_func_8820BE14_06C_000; // size = 0x10 + +typedef struct unk_func_8820BE14_06C { + /* 0x00 */ unk_func_8820BE14_06C_000* unk_00; + /* 0x04 */ s32 unk_04; + /* 0x08 */ s32 unk_08; + /* 0x0C */ s32 unk_0C; +} unk_func_8820BE14_06C; // size = 0x10 + +void func_8002C740(s8*, unk_func_88201DA0_034*, s32, s32, s32); +void func_8002C758(unk_func_8820BE14_06C*, s32, s32, MemoryPool*); +void func_8002C88C(unk_func_8820BE14_06C*, u8*, s32); +void func_8002C990(unk_func_8820BE14_06C*, s32); +void func_8002CBC0(unk_func_88200FA0_030_038*, s32, MemoryPool*); +void func_8002CBB0(unk_func_88205880_A030*, void*, s32, s32); +void func_8002CC2C(unk_func_88200FA0_030_038*, char*, s32); +void func_8002D3F0(f32*); +Color_RGBA8 func_8002D444(Color_RGBA8, f32); + +#endif // _3D340_H_ diff --git a/src/2E460.h b/src/2E460.h index b912b088..fb10860d 100644 --- a/src/2E460.h +++ b/src/2E460.h @@ -2,11 +2,31 @@ #define _2E460_H_ #include "global.h" -#include "src/fragments/26/fragment26.h" +typedef struct ret_func_8002ED08 { + /* 0x00 */ u8 unk_00[12]; +} ret_func_8002ED08; // size = 0xC + +typedef struct unk_func_8820E99C_030_030 { + /* 0x00 */ s32 unk_00; + /* 0x04 */ s32 unk_04; + /* 0x08 */ s32 unk_08; + /* 0x0C */ s32 unk_0C; + /* 0x10 */ s32 unk_10; +} unk_func_8820E99C_030_030; // size = 0x14 + +void func_8002D8C8(unk_func_88500020*, s32, s32); +s32 func_8002EC08(s32); +s32 func_8002ECDC(s32); +s32 func_8002E0F4(unk_func_8820E99C_030_030*); +void func_8002E8E4(s32, s32, s32, s32); +s32 func_8002EE1C(s32, s32, s32); void func_8002EE78(void); -void func_8002EEA8(unk_func_88001300_034*); +void func_8002EEA8(OSMesg); +ret_func_8002ED08* func_8002ED08(u8); void func_8002EF18(s32*); void func_8002EF44(void); +s32 func_8002F1C0(u8); +s32 func_8002F264(s32); #endif // _2E460_H_ diff --git a/src/2FEA0.c b/src/2FEA0.c index e0f9e84f..b6558f2b 100644 --- a/src/2FEA0.c +++ b/src/2FEA0.c @@ -67,7 +67,8 @@ void func_8002F2A0(void) { FRAGMENT_LOAD(fragment3); var_s0 = FRAGMENT_LOAD_AND_CALL(fragment14, 0, 0); break; - case 10: // seems to be the "snap mode" code. However, the asset UI isnt loaded, so this call will crash. + case 10: // seems to be the "snap mode" code. However, the asset UI isnt loaded, so this call will + // crash. FRAGMENT_LOAD(fragment3); var_s0 = FRAGMENT_LOAD_AND_CALL(fragment15, 0, 0); break; @@ -75,7 +76,8 @@ void func_8002F2A0(void) { FRAGMENT_LOAD(fragment5); var_s0 = FRAGMENT_LOAD_AND_CALL(fragment16, 0, 0); break; - case 12: // crashes. This fragment is the "Demo" cutscene bin, but this code passes an invalid demo ID, which doesnt exist. + case 12: // crashes. This fragment is the "Demo" cutscene bin, but this code passes an invalid demo ID, + // which doesnt exist. FRAGMENT_LOAD(fragment3); var_s0 = FRAGMENT_LOAD_AND_CALL(fragment17, 0, 0); break; diff --git a/src/fragments/22/fragment22.c b/src/fragments/22/fragment22.c index 97324fdf..9a644550 100644 --- a/src/fragments/22/fragment22.c +++ b/src/fragments/22/fragment22.c @@ -2450,10 +2450,10 @@ void func_88000020(unk_func_88001300_000* arg0, s32 arg1, s32 arg2) { ((func885007CC)Memmap_GetFragmentVaddr(func_885007CC))(arg0, sizeof(unk_func_88001300_000)); arg0->unk_18 = func_8800008C; - arg0->unk_10 = arg1; - arg0->unk_12 = arg2; - arg0->unk_16 = 0x4C; - arg0->unk_14 = 0x4C; + arg0->unk_10.unk_00 = arg1; + arg0->unk_10.unk_02 = arg2; + arg0->unk_14.unk_02 = 0x4C; + arg0->unk_14.unk_00 = 0x4C; } s32 func_8800008C(unk_func_88001300_000* arg0, s32 arg1, s32 arg2) { @@ -2503,10 +2503,10 @@ void func_8800071C(unk_func_8800071C* arg0, s32 arg1, s32 arg2, s32 arg3, s32 ar ((func885007CC)Memmap_GetFragmentVaddr(func_885007CC))(arg0, sizeof(unk_func_8800071C)); arg0->unk_00.unk_18 = func_880007C0; - arg0->unk_00.unk_10 = arg1; - arg0->unk_00.unk_12 = arg2; - arg0->unk_00.unk_14 = arg3; - arg0->unk_00.unk_16 = arg4; + arg0->unk_00.unk_10.unk_00 = arg1; + arg0->unk_00.unk_10.unk_02 = arg2; + arg0->unk_00.unk_14.unk_00 = arg3; + arg0->unk_00.unk_14.unk_02 = arg4; arg0->unk_2C = arg5; arg0->unk_30 = arg6; arg0->unk_34 = arg7; @@ -2516,8 +2516,8 @@ void func_8800071C(unk_func_8800071C* arg0, s32 arg1, s32 arg2, s32 arg3, s32 ar s32 func_880007C0(unk_func_88001300_000* arg0, s32 arg1, s32 arg2) { unk_func_8800071C* ptr = (unk_func_8800071C*)arg0; - func_880001A8(ptr->unk_00.unk_10, ptr->unk_00.unk_12, ptr->unk_00.unk_14, ptr->unk_00.unk_16, ptr->unk_2C, - ptr->unk_30, ptr->unk_34, ptr->unk_38); + func_880001A8(ptr->unk_00.unk_10.unk_00, ptr->unk_00.unk_10.unk_02, ptr->unk_00.unk_14.unk_00, + ptr->unk_00.unk_14.unk_02, ptr->unk_2C, ptr->unk_30, ptr->unk_34, ptr->unk_38); return 0; } @@ -2526,10 +2526,10 @@ void func_88000830(unk_func_88000830* arg0, s32 arg1, s32 arg2, s32 arg3, s32 ar arg0->unk_00.unk_1C = func_880008C4; arg0->unk_00.unk_18 = func_880008E0; - arg0->unk_00.unk_10 = arg1; - arg0->unk_00.unk_12 = arg2; - arg0->unk_00.unk_14 = arg3; - arg0->unk_00.unk_16 = arg4; + arg0->unk_00.unk_10.unk_00 = arg1; + arg0->unk_00.unk_10.unk_02 = arg2; + arg0->unk_00.unk_14.unk_00 = arg3; + arg0->unk_00.unk_14.unk_02 = arg4; arg0->unk_34 = arg5; arg0->unk_30 = arg6; arg0->unk_2C = NULL; @@ -2553,11 +2553,11 @@ s32 func_880008E0(unk_func_88000830* arg0, s32 arg1, s32 arg2) { gDPSetCombineMode(gDisplayListHead++, G_CC_DECALRGBA, G_CC_DECALRGBA); gDPLoadTextureBlock(gDisplayListHead++, arg0->unk_30[arg0->unk_2C], G_IM_FMT_RGBA, G_IM_SIZ_16b, arg0->unk_34, - arg0->unk_00.unk_16, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, - G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); + arg0->unk_00.unk_14.unk_02, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); - gSPTextureRectangle(gDisplayListHead++, arg1 << 3, arg2 << 3, (arg0->unk_00.unk_14 + arg1) << 3, - (arg2 + arg0->unk_00.unk_16) << 3, G_TX_RENDERTILE, 0, 0, 0x0200, 0x0200); + gSPTextureRectangle(gDisplayListHead++, arg1 << 3, arg2 << 3, (arg0->unk_00.unk_14.unk_00 + arg1) << 3, + (arg2 + arg0->unk_00.unk_14.unk_02) << 3, G_TX_RENDERTILE, 0, 0, 0x0200, 0x0200); return 0; } @@ -2566,10 +2566,10 @@ void func_88000C18(unk_func_88000C18* arg0, s32 arg1, s32 arg2, s32 arg3, s32 ar arg0->unk_00.unk_1C = func_88000CB0; arg0->unk_00.unk_24 = func_88000CC0; - arg0->unk_00.unk_10 = arg1; - arg0->unk_00.unk_12 = arg2; - arg0->unk_00.unk_14 = arg3; - arg0->unk_00.unk_16 = arg4; + arg0->unk_00.unk_10.unk_00 = arg1; + arg0->unk_00.unk_10.unk_02 = arg2; + arg0->unk_00.unk_14.unk_00 = arg3; + arg0->unk_00.unk_14.unk_02 = arg4; arg0->unk_2C = arg5; arg0->unk_30 = -1; @@ -2591,8 +2591,8 @@ void func_88000CC8(unk_func_88000CC8* arg0, s32 arg1, s32 arg2, unk_func_8850002 arg0->unk_00.unk_18 = func_88000E30; arg0->unk_00.unk_1C = func_88000D80; - arg0->unk_00.unk_10 = arg1; - arg0->unk_00.unk_12 = arg2; + arg0->unk_00.unk_10.unk_00 = arg1; + arg0->unk_00.unk_10.unk_02 = arg2; arg0->unk_2C = arg3; arg0->unk_30[0] = arg4; arg0->unk_30[1] = arg5; @@ -2725,8 +2725,8 @@ void func_88001300(unk_func_88001300* arg0, s32 arg1, s32 arg2, s32 arg3, u8* ar arg0->unk_00.unk_20 = func_88001D0C; arg0->unk_00.unk_24 = func_88001CBC; - arg0->unk_00.unk_10 = arg1; - arg0->unk_00.unk_12 = arg2; + arg0->unk_00.unk_10.unk_00 = arg1; + arg0->unk_00.unk_10.unk_02 = arg2; arg0->unk_3C = mem_pool_alloc(arg6, sizeof(unk_func_88001300_03C)); ((func8850C284)Memmap_GetFragmentVaddr(func_8850C284))(arg0->unk_3C, 2, 4, arg6); @@ -2789,14 +2789,15 @@ void func_88001300(unk_func_88001300* arg0, s32 arg1, s32 arg2, s32 arg3, u8* ar temp_s0 = mem_pool_alloc(arg6, sizeof(unk_func_88001300_000)); ((func885007CC)Memmap_GetFragmentVaddr(func_885007CC))(temp_s0, sizeof(unk_func_88001300_000)); // clang-format off - temp_s0->unk_10 = 0x1E4; temp_s0->unk_12 = 0x34; + temp_s0->unk_10.unk_00 = 0x1E4; temp_s0->unk_10.unk_02 = 0x34; // clang-format on - temp_s0->unk_14 = 0x4C; - temp_s0->unk_16 = 0x4C; + temp_s0->unk_14.unk_00 = 0x4C; + temp_s0->unk_14.unk_02 = 0x4C; ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0->unk_2C, temp_s0); arg0->unk_38 = mem_pool_alloc(arg6, sizeof(unk_func_88001300_038)); - ((func88502274)Memmap_GetFragmentVaddr(func_88502274))(arg0->unk_38, 0, 0, temp_s0->unk_14, temp_s0->unk_16); + ((func88502274)Memmap_GetFragmentVaddr(func_88502274))(arg0->unk_38, 0, 0, temp_s0->unk_14.unk_00, + temp_s0->unk_14.unk_02); arg0->unk_38->unk_28 |= 0x200; ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(temp_s0, arg0->unk_38); @@ -3079,11 +3080,6 @@ s32 func_880025D8(unk_func_88001300* arg0) { return sp24 - 1; } -typedef struct func_88002628_sp38 { - /* 0x000 */ OSThread thread; - /* 0x1B0 */ char unk1B0[0x10]; -} func_88002628_sp38; // size = 0x1C0 - s32 func_88002628(s32 arg0, UNUSED s32 arg1) { MemoryPool* sp44; u8* sp40; diff --git a/src/fragments/23/fragment23.h b/src/fragments/23/fragment23.h new file mode 100644 index 00000000..d46ddc2f --- /dev/null +++ b/src/fragments/23/fragment23.h @@ -0,0 +1,720 @@ +#ifndef _FRAGMENT23_H_ +#define _FRAGMENT23_H_ + +#include "global.h" +#include "src/fragments/26/fragment26.h" +#include "src/fragments/29/fragment29.h" +#include "src/2D340.h" +#include "src/22630.h" +#include "src/2E460.h" + +struct unk_func_8821421C_038_04C_000; +struct unk_func_8820B12C_02C; +struct unk_func_8821421C_034; +struct unk_func_8821421C_038; +struct unk_func_8821421C_03C; +struct unk_func_8821421C_07C; +struct unk_func_8820E99C; +struct unk_func_8821421C_02C; + +typedef struct unk_func_8820EFD8 { + /* 0x00 */ char unk00[0x4]; + /* 0x04 */ s32 unk_04; + /* 0x08 */ char* unk_08; +} unk_func_8820EFD8; // size >= 0xC + +typedef struct unk_func_88200FA0_030 { + /* 0x00 */ unk_func_88001300_000 unk_00; + /* 0x2C */ unk_func_88001300_038* unk_2C; + /* 0x30 */ unk_func_88200FA0_030_030* unk_30; + /* 0x34 */ unk_func_88503298* unk_34; + /* 0x38 */ unk_func_88200FA0_030_038 unk_38; +} unk_func_88200FA0_030; // size = 0x44 + +typedef struct unk_func_88200FA0 { + /* 0x00 */ unk_func_88001300_000 unk_00; + /* 0x2C */ unk_func_885088F4* unk_2C; + /* 0x30 */ unk_func_88200FA0_030* unk_30; +} unk_func_88200FA0; // size = 0x34 + +typedef struct unk_func_88205880 { + /* 0x0000 */ unk_func_88001300_000 unk_0000; + /* 0x002C */ unk_func_88203ED8* unk_002C; + /* 0x0030 */ char unk0030[0x64]; + /* 0x0094 */ unk_func_88201DA0* unk_0094; + /* 0x0098 */ unk_func_88205880_0098 unk_0098; + /* 0x00D0 */ unk_func_88205880_00D0 unk_00D0[12]; + /* 0x5050 */ unk_func_88205880_00D0 unk_5050[12]; + /* 0x9FD0 */ unk_func_88205880_00D0* unk_9FD0[12]; + /* 0xA000 */ unk_func_88205880_00D0* unk_A000[12]; + /* 0xA030 */ unk_func_88205880_A030 unk_A030[2]; +} unk_func_88205880; // size = 0xA048 + +typedef struct unk_func_882062E4 { + /* 0x0000 */ char unk_00[0x54]; +} unk_func_882062E4; // size = 0x54 + +typedef struct unk_func_88208C5C { + /* 0x00 */ unk_func_88001300_000 unk_00; + /* 0x2C */ unk_func_8850143C* unk_2C; + /* 0x30 */ s32 unk_30; + /* 0x34 */ s32 unk_34; + /* 0x38 */ s32 unk_38; +} unk_func_88208C5C; // size = 0x3C + +typedef struct unk_func_882079D8 { + /* 0x00 */ unk_func_88001300_000 unk_00; + /* 0x2C */ unk_func_88205880_00D0* unk_2C; +} unk_func_882079D8; // size = 0x30 + +typedef struct unk_func_8820BE14_030 { + /* 0x00 */ s16 unk_00; + /* 0x02 */ s16 unk_02; + /* 0x04 */ MemoryPool* unk_04; + /* 0x08 */ unk_func_88001300_000_000* unk_08; + /* 0x0C */ unk_func_88205880_00D0* unk_0C; + /* 0x10 */ s32 unk_10; + /* 0x14 */ unk_func_88001300_000* unk_14; + /* 0x18 */ s32 unk_18; +} unk_func_8820BE14_030; // size >= 0x1C + +typedef struct unk_func_8820B12C_02C_020 { + /* 0x00 */ unk_func_88200FA0_030_030_1AE680 unk_00; // unk_func_882025E0_024 + /* 0x54 */ u16 unk_54; + /* 0x56 */ u16 unk_56; + /* 0x58 */ s32 unk_58; + /* 0x5C */ s32 unk_5C; + /* 0x60 */ s32 unk_60; + /* 0x64 */ s32 unk_64; + /* 0x68 */ s32 unk_68; + /* 0x6C */ s32 unk_6C; + /* 0x70 */ s32 unk_70; + /* 0x74 */ unk_func_88001300_01C unk_74; + /* 0x78 */ unk_func_88001300_018 unk_78; + /* 0x7C */ unk_func_88001300_020 unk_7C; + /* 0x80 */ unk_func_88001300_018 unk_80; + /* 0x84 */ unk_func_8820BE14_02C_038_084* unk_84; + /* 0x88 */ s32* unk_88; + /* 0x8C */ u32 unk_8C; +} unk_func_8820B12C_02C_020; // size = 0x90 + +typedef s32 (*unk_func_8820B12C_02C_010)(struct unk_func_8820B12C_02C* arg0, Controller* arg1); +typedef void (*unk_func_8820B12C_02C_014)(struct unk_func_8820B12C_02C* arg0, s32 arg1); + +typedef struct unk_func_8820B12C_02C { + /* 0x00 */ char unk00[0x4]; + /* 0x04 */ struct unk_func_8820B12C_02C* unk_04; + /* 0x08 */ struct unk_func_8820B12C_02C* unk_08; + /* 0x0C */ char unk0C[0x4]; + /* 0x10 */ unk_func_8820B12C_02C_010 unk_10; + /* 0x14 */ unk_func_8820B12C_02C_014 unk_14; + /* 0x18 */ s32 unk_18; + /* 0x1C */ s32 unk_1C; + /* 0x20 */ unk_func_8820B12C_02C_020* unk_20[2]; + /* 0x28 */ s32 unk_28; + /* 0x2C */ s32 unk_2C; + /* 0x30 */ s32 unk_30; + /* 0x34 */ s32 unk_34; + /* 0x38 */ unk_func_88217740* unk_38; + /* 0x3C */ unk_func_88509F48* unk_3C; + /* 0x40 */ unk_func_8850CD44* unk_40; + /* 0x44 */ FragmentEntry unk_44; + /* 0x48 */ unk_func_8820BE14_030* unk_48; + /* 0x4C */ unk_func_882173EC* unk_4C[2]; + /* 0x54 */ unk_func_882079D8* unk_54[2]; + /* 0x5C */ unk_func_8850878C* unk_5C[6]; + /* 0x74 */ s32 unk_74; +} unk_func_8820B12C_02C; // size = 0x78 + +typedef struct unk_func_8820B12C_000 { + /* 0x00 */ char unk00[0x4]; + /* 0x04 */ struct unk_func_8820B12C_000* unk_04; + /* 0x08 */ struct unk_func_8820B12C_000* unk_08; + /* 0x0C */ char unk0C[0x4]; + /* 0x10 */ unk_func_88203ED8_064_010 unk_10; + /* 0x14 */ unk_func_88203ED8_064_014 unk_14; + /* 0x18 */ char unk18[0x4]; + /* 0x1C */ s32 unk_1C; + /* 0x20 */ s32 unk_20; + /* 0x24 */ struct unk_func_8820BE14_02C* unk_24; +} unk_func_8820B12C_000; // size = 0x28 + +typedef struct unk_func_8820B12C { + /* 0x00 */ unk_func_8820B12C_000 unk_00; + /* 0x28 */ unk_func_88001300_03C* unk_28; + /* 0x28 */ unk_func_8820B12C_02C* unk_2C; +} unk_func_8820B12C; // size = 0x30 + +typedef struct unk_func_8820BE14_02C_070 { + /* 0x0000 */ unk_func_88001300_000 unk_0000; + /* 0x002C */ unk_func_88205880_00D0* unk_002C; + /* 0x0030 */ s16 unk_0030; + /* 0x0032 */ char unk0032[0x7]; + /* 0x0039 */ u8 unk_0039[2][0xC80]; +} unk_func_8820BE14_02C_070; // size = 0x193C + +typedef struct unk_func_8820BE14_02C_078_034 { + /* 0x00 */ unk_func_88001300_000 unk_00; + /* 0x2C */ unk_func_88001300_038* unk_2C; + /* 0x30 */ unk_func_88200FA0_030_030* unk_30; +} unk_func_8820BE14_02C_078_034; // size = 0x34 + +typedef struct unk_func_8820BE14_02C_078 { + /* 0x00 */ unk_func_88001300_000 unk_00; + /* 0x2C */ unk_func_88001300_038* unk_2C; + /* 0x30 */ unk_func_88200FA0_030_030* unk_30; + /* 0x34 */ unk_func_8820BE14_02C_078_034* unk_34; + /* 0x38 */ unk_func_8820BE14_06C unk_38; + /* 0x48 */ s32 unk_48; + /* 0x4C */ s32 unk_4C; + /* 0x50 */ s32 unk_50; + /* 0x54 */ s32 unk_54; + /* 0x58 */ s32 unk_58; + /* 0x5C */ s32 unk_5C; +} unk_func_8820BE14_02C_078; // size = 0x60 + +typedef struct unk_func_8820BE14_02C { + /* 0x00 */ unk_func_88001300_000 unk_00; + /* 0x2C */ unk_func_88001300_038* unk_2C; + /* 0x30 */ unk_func_88208C5C* unk_30[2]; + /* 0x38 */ unk_func_8820BE14_02C_038* unk_38[2]; + /* 0x40 */ unk_func_88217740* unk_40; + /* 0x44 */ unk_func_882149A0* unk_44[8]; + /* 0x64 */ unk_func_88500994* unk_64; + /* 0x68 */ unk_func_88500994* unk_68; + /* 0x6C */ unk_func_88500994* unk_6C; + /* 0x70 */ unk_func_8820BE14_02C_070* unk_70; + /* 0x74 */ unk_func_8820B12C* unk_74; + /* 0x78 */ unk_func_8820BE14_02C_078* unk_78[2]; + /* 0x80 */ unk_func_88509F48* unk_80; + /* 0x84 */ unk_func_889000C4* unk_84; + /* 0x88 */ unk_func_8850878C* unk_88; + /* 0x8C */ unk_func_8820BE14_06C* unk_8C; + /* 0x90 */ char unk90[0x10]; +} unk_func_8820BE14_02C; // size = 0xA0 + +typedef struct unk_func_8820BE14 { + /* 0x00 */ unk_func_88001300_000 unk_00; + /* 0x2C */ unk_func_8820BE14_02C* unk_2C; + /* 0x30 */ unk_func_8820BE14_030 unk_30; + /* 0x4C */ char** unk_4C; + /* 0x50 */ char** unk_50; + /* 0x54 */ char** unk_54; + /* 0x58 */ char** unk_58; + /* 0x5C */ char** unk_5C; + /* 0x60 */ char** unk_60; + /* 0x64 */ char** unk_64; + /* 0x68 */ unk_func_88509F48* unk_68; + /* 0x6C */ unk_func_8820BE14_06C unk_6C; + /* 0x7C */ unk_func_8820BE14_06C unk_7C; + /* 0x8C */ unk_func_8820BE14_06C unk_8C; +} unk_func_8820BE14; // size = 0x9C + +typedef struct unk_func_882170A8 { + /* 0x00 */ unk_func_88001300_000 unk_00; + /* 0x2C */ unk_func_8820BE14_02C_038* unk_2C; + /* 0x30 */ s32 unk_30; +} unk_func_882170A8; // size = 0x34 + +typedef struct unk_D_88217C6C { + /* 0x00 */ s16 unk_00; + /* 0x02 */ s16 unk_02; + /* 0x04 */ s16 unk_04; + /* 0x06 */ s16 unk_06; + /* 0x08 */ u8* unk_08; + /* 0x0C */ s16 unk_0C; + /* 0x10 */ Color_RGBA8* unk_10; + /* 0x14 */ s32 unk_14; +} unk_D_88217C6C; // size = 0x18 + +typedef struct unk_func_8821421C_02C_06C_02C_068 { + /* 0x00 */ unk_func_88001300_000 unk_00; + /* 0x2C */ s32 unk_2C; +} unk_func_8821421C_02C_06C_02C_068; // size = 0x30 + +typedef struct unk_func_8820E99C_030 { + /* 0x00 */ unk_func_88001300_000 unk_00; + /* 0x2C */ unk_func_88001300_038* unk_2C; + /* 0x30 */ unk_func_8820E99C_030_030 unk_30; + /* 0x44 */ unk_func_8820E99C_030_044* unk_44; +} unk_func_8820E99C_030; // size = 0x48 + +typedef struct unk_func_8820E99C { + /* 0x00 */ unk_func_88001300_000 unk_00; + /* 0x2C */ unk_func_88001300_038* unk_2C; + /* 0x30 */ unk_func_8820E99C_030* unk_30; + /* 0x34 */ s32 unk_34; +} unk_func_8820E99C; // size = 0x38 + +typedef struct unk_func_8821421C_034 { + /* 0x00 */ unk_func_88001300_000 unk_00; + /* 0x2C */ unk_func_88001300_038* unk_2C; + /* 0x30 */ unk_func_88001300_03C* unk_30; + /* 0x34 */ unk_func_8850878C* unk_34; +} unk_func_8821421C_034; // size = 0x38 + +typedef struct unk_func_8821421C_038_02C { + /* 0x00 */ unk_func_88001300_000 unk_00; + /* 0x2C */ unk_func_8850143C* unk_2C; + /* 0x30 */ unk_func_8821421C_038_050* unk_30; +} unk_func_8821421C_038_02C; // size = 0x34 + +typedef struct spE8_func_882121E0 { + /* 0x00 */ char* unk_00[3]; +} spE8_func_882121E0; // size >= 0xC + +typedef struct unk_func_8821421C_02C_030 { + /* 0x00 */ unk_func_88001300_000 unk_00; + /* 0x2C */ unk_func_8850143C* unk_2C; + /* 0x30 */ s32 unk_30; + /* 0x34 */ s32 unk_34; + /* 0x38 */ spE8_func_882121E0* unk_38; +} unk_func_8821421C_02C_030; // size = 0x3C + +typedef struct unk_func_8821421C_02C_06C_02C_060_02C_000 { + /* 0x00 */ u8 unk_00; + /* 0x01 */ u8 unk_01; +} unk_func_8821421C_02C_06C_02C_060_02C_000; // size = 0x2 + +typedef struct unk_func_8821421C_02C_06C_02C_060_02C { + /* 0x00 */ unk_func_8821421C_02C_06C_02C_060_02C_000 unk_00; + /* 0x02 */ unk_func_8821421C_02C_06C_02C_060_02C_000 unk_02; +} unk_func_8821421C_02C_06C_02C_060_02C; // size >= 0x4 + +typedef struct unk_func_8821421C_02C_06C_02C_060 { + /* 0x00 */ unk_func_88001300_000 unk_00; + /* 0x2C */ unk_func_8821421C_02C_06C_02C_060_02C unk_2C; +} unk_func_8821421C_02C_06C_02C_060; // size = 0x30 + +typedef struct unk_func_8821421C_02C_06C_02C { + /* 0x00 */ char unk00[0x10]; + /* 0x10 */ unk_func_882025E0_010 unk_10; + /* 0x14 */ unk_func_882025E0_014 unk_14; + /* 0x18 */ s32 unk_18; + /* 0x1C */ s32 unk_1C; + /* 0x20 */ unk_func_8820BE14_02C_038* unk_20[2]; + /* 0x28 */ struct unk_func_8820E99C* unk_28; + /* 0x2C */ unk_func_8820BE14_02C_038* unk_2C[2]; + /* 0x34 */ struct unk_func_8820E99C* unk_34; + /* 0x38 */ s32 unk_38; + /* 0x3C */ s32 unk_3C; + /* 0x40 */ s32 unk_40; + /* 0x44 */ s32 unk_44; + /* 0x48 */ unk_func_88217740* unk_48; + /* 0x4C */ unk_func_88509F48* unk_4C; + /* 0x50 */ unk_func_8850CD44* unk_50; + /* 0x54 */ char unk54[0x4]; + /* 0x58 */ unk_func_882173EC* unk_58[2]; + /* 0x60 */ unk_func_8821421C_02C_06C_02C_060* unk_60[2]; + /* 0x68 */ unk_func_8821421C_02C_06C_02C_068* unk_68[2]; + /* 0x70 */ unk_func_8821421C_02C_06C_02C_060* unk_70[2]; + /* 0x78 */ unk_func_882025E0_03C unk_78[5]; +} unk_func_8821421C_02C_06C_02C; // size = 0xB4 + +typedef struct unk_func_8821421C_02C_06C_000 { + /* 0x00 */ char unk00[0x4]; + /* 0x04 */ struct unk_func_88203ED8_064* unk_04; + /* 0x08 */ struct unk_func_88203ED8_064* unk_08; + /* 0x0C */ char unk0C[0x4]; + /* 0x10 */ unk_func_88203ED8_064_010 unk_10; + /* 0x14 */ unk_func_88203ED8_064_014 unk_14; + /* 0x18 */ char unk18[0x4]; + /* 0x1C */ s32 unk_1C; + /* 0x20 */ s32 unk_20; + /* 0x24 */ struct unk_func_8821421C_02C* unk_24; +} unk_func_8821421C_02C_06C_000; // size = 0x28 + +typedef struct unk_func_8821421C_02C_06C { + /* 0x00 */ unk_func_8821421C_02C_06C_000 unk_00; + /* 0x28 */ unk_func_88001300_03C* unk_28; + /* 0x2C */ unk_func_8821421C_02C_06C_02C* unk_2C; +} unk_func_8821421C_02C_06C; // size = 0x30 + +typedef struct unk_func_8821421C_02C_070 { + /* 0x00 */ unk_func_88001300_000 unk_00; + /* 0x2C */ unk_func_88001300_038* unk_2C; + /* 0x30 */ unk_func_88200FA0_030_030* unk_30; + /* 0x34 */ unk_func_88205880_A030 unk_34; + /* 0x40 */ s32 unk_40; + /* 0x44 */ s32 unk_44; + /* 0x48 */ s32 unk_48; +} unk_func_8821421C_02C_070; // size = 0x4C + +typedef struct unk_func_8821421C_02C { + /* 0x00 */ unk_func_88001300_000 unk_00; + /* 0x2C */ unk_func_88001300_038* unk_2C; + /* 0x30 */ unk_func_8821421C_02C_030* unk_30[2]; + /* 0x38 */ unk_func_8820BE14_02C_038* unk_38[2]; + /* 0x40 */ unk_func_88217740* unk_40; + /* 0x44 */ unk_func_882149A0* unk_44[6]; + /* 0x5C */ unk_func_88500994* unk_5C; + /* 0x60 */ unk_func_88500994* unk_60; + /* 0x64 */ unk_func_88500994* unk_64; + /* 0x68 */ unk_func_8850878C* unk_68; + /* 0x6C */ unk_func_8821421C_02C_06C* unk_6C; + /* 0x70 */ unk_func_8821421C_02C_070* unk_70[2]; + /* 0x78 */ struct unk_func_8821421C_03C* unk_78; + /* 0x78 */ struct unk_func_8821421C_03C* unk_7C; + /* 0x80 */ s32 unk_80; + /* 0x84 */ struct unk_func_8821421C_038* unk_84; + /* 0x88 */ struct unk_func_8821421C_034* unk_88; + /* 0x8C */ unk_func_88509F48* unk_8C; + /* 0x90 */ struct unk_func_8821421C_07C* unk_90; + /* 0x94 */ unk_func_882025E0_03C unk_94[1]; + /* 0xA0 */ unk_func_889000C4* unk_A0; +} unk_func_8821421C_02C; // size = 0xA4 + +typedef void (*unk_func_8821421C_038_04C_000_014)(struct unk_func_8821421C_038_04C_000*, Controller*); + +typedef struct unk_func_8821421C_038_04C_000 { + /* 0x00 */ char unk00[0x4]; + /* 0x04 */ struct unk_func_88203ED8_064* unk_04; + /* 0x08 */ struct unk_func_88203ED8_064* unk_08; + /* 0x0C */ char unk0C[0x4]; + /* 0x10 */ unk_func_88203ED8_064_010 unk_10; + /* 0x14 */ unk_func_8821421C_038_04C_000_014 unk_14; + /* 0x18 */ char unk18[0x4]; + /* 0x1C */ s32 unk_1C; + /* 0x20 */ s32 unk_20; + /* 0x24 */ struct unk_func_8821421C_038* unk_24; +} unk_func_8821421C_038_04C_000; // size = 0x28 + +typedef struct unk_func_8821421C_038_04C { + /* 0x00 */ unk_func_8821421C_038_04C_000 unk_00; + /* 0x28 */ unk_func_88001300_03C* unk_28; +} unk_func_8821421C_038_04C; // size = 0x2C + +typedef struct unk_func_8821421C_03C { + /* 0x00 */ s32 unk_00; + /* 0x04 */ unk_func_8820BE14_06C unk_04; +} unk_func_8821421C_03C; // size = 0x14 + +typedef struct unk_func_8821421C_07C { + /* 0x00 */ s32 unk_00; + /* 0x04 */ s32 unk_04; + /* 0x08 */ char unk_08[4]; // unk size + /* 0x0C */ char unk0C[0x8]; +} unk_func_8821421C_07C; // size = 0x14 + +typedef struct unk_func_8821421C_038 { + /* 0x00 */ unk_func_88001300_000 unk_00; + /* 0x2C */ unk_func_8821421C_038_02C* unk_2C; + /* 0x30 */ unk_func_8820BE14_02C_038* unk_30; + /* 0x34 */ unk_func_8821421C_038_034* unk_34; + /* 0x38 */ unk_func_88500994* unk_38; + /* 0x3C */ unk_func_88500994* unk_3C; + /* 0x40 */ unk_func_8850878C* unk_40; + /* 0x44 */ unk_func_88001300_038* unk_44; + /* 0x48 */ unk_func_8821421C_034* unk_48; + /* 0x4C */ unk_func_8821421C_038_04C* unk_4C; + /* 0x50 */ unk_func_8821421C_038_050* unk_50[1]; + /* 0x54 */ char unk54[0xC]; + /* 0x60 */ s32 unk_60; + /* 0x64 */ unk_func_8820BE14_06C unk_64; + /* 0x74 */ char unk74[0x4]; +} unk_func_8821421C_038; // size = 0x78 + +typedef struct unk_func_8821421C { + /* 0x00 */ unk_func_88001300_000 unk_00; + /* 0x2C */ unk_func_8821421C_02C* unk_2C; + /* 0x34 */ unk_func_88509F48* unk_30; + /* 0x34 */ unk_func_8821421C_034* unk_34; + /* 0x38 */ unk_func_8821421C_038* unk_38; + /* 0x3C */ unk_func_8821421C_03C unk_3C[3]; + /* 0x78 */ s32 unk_78; + /* 0x7C */ unk_func_8821421C_07C unk_7C[4]; +} unk_func_8821421C; // size = 0xCC + +extern Color_RGBA8 D_882181B0[2]; +extern Color_RGBA8 D_882181B8[2]; +extern Color_RGBA8 D_882181C0[2]; +extern Color_RGBA8 D_882181C8[2]; +extern Color_RGBA8 D_882181D0[2]; +extern Color_RGBA8 D_882181D8[2]; +extern Color_RGBA8 D_882181E0[2]; +extern Color_RGBA8 D_882181E8[2]; +extern Color_RGBA8 D_882181F0[2]; +extern Color_RGBA8 D_882181F8[2]; +extern Color_RGBA8 D_88218200[2]; +extern Color_RGBA8 D_88218208[2]; +extern Color_RGBA8 D_88218210[2]; +extern Color_RGBA8 D_88218218[2]; +extern Color_RGBA8 D_88218220[2]; +extern Color_RGBA8 D_88218228[2]; +extern Color_RGBA8 D_88218230[2]; +extern Color_RGBA8 D_88218238[2]; + +extern u32 D_8821E100[]; +extern u32 D_88218FD0[]; +extern u32 D_8821B868[]; +extern u32 D_8821AAE0[]; +extern u32 D_88219D58[]; +extern u32 D_88218248[]; +extern u32 D_8821C5F0[]; +extern u32 D_8821D378[]; +extern u32 D_8821EE88[]; +extern u32 D_882220D8[]; +extern u32 D_882225C0[]; +extern u32 D_88222AA8[]; +extern u32 D_88222F90[]; +extern u32* D_88223470[]; +extern u32 D_88223488[]; +extern u32 D_88223E48[]; + +s32 func_88200020(void); +void func_882000E4(void); +s32 func_88200110(UNUSED s32 arg0, UNUSED s32 arg1); +s32 func_88200190(s32 arg0, s32 arg1); + +void func_88200290(unk_func_88503298* arg0, s32 arg1, s32 arg2, MemoryPool* arg3); +void func_882004BC(unk_func_88503298* arg0, s8* arg1); +void func_882004C8(unk_func_88200FA0_030* arg0, s32 arg1, s32 arg2, unk_func_88001300_000* arg3, MemoryPool* arg4); +void func_88200968(unk_func_88200FA0_030* arg0, s32 arg1); +void func_882009B4(s32 arg0, s32 arg1, char* arg2, s32 arg3); +s32 func_88200A30(unk_func_88200FA0_030* arg0, Controller* arg1); +void func_88200ACC(unk_func_88200FA0_030* arg0); +void func_88200AF4(unk_func_88200FA0_030* arg0); +s32 func_88200B60(unk_func_88200FA0_030* arg0, Controller* arg1); +void func_88200C44(unk_func_88200FA0* arg0, s32 arg1, s32 arg2, s32 arg3, MemoryPool* arg4); +s32 func_88200F00(unk_func_88200FA0* arg0); +void func_88200FA0(unk_func_88200FA0* arg0); +s32 func_8820104C(s32 arg0, UNUSED s32 arg1); + +void func_88201210(unk_func_88205880_00D0* arg0); +void func_88201294(s32 arg0, s32 arg1, s32 arg2, unk_func_88205880_00D0* arg3); +s32 func_8820130C(s32 arg0, s32 arg1, s32 arg2, unk_func_88205880_00D0* arg3, s32 arg4); +void func_88201360(unk_func_88205880_00D0* arg0, s32 arg1, s32 arg2, s32 arg3); +s32 func_882013F8(unk_func_88205880_A030* arg0); +s32 func_88201440(unk_func_88205880_A030* arg0); +void func_88202054(unk_func_88201DA0* arg0, u32 arg1, u32 arg2); +void func_8820213C(unk_func_88201DA0* arg0, unk_func_88205880_00D0* arg1, u32 arg2); +void func_88202228(unk_func_88203ED8* arg0, s32 arg1); +s32 func_88202254(unk_func_88201DA0* arg0, Controller* arg1); +void func_88202394(unk_func_88201DA0* arg0, Controller* arg1); +void func_88202450(unk_func_88205880_00D0* arg0, s32 arg1, s32 arg2); +void func_8820253C(unk_func_8820253C* arg0, s32 arg1, s32 arg2, unk_func_88205880_00D0* arg3); +void func_882025AC(unk_func_8820253C* arg0, unk_func_88205880_00D0* arg1); +s32 func_882025B4(unk_func_8820253C* arg0, s32 arg1, s32 arg2); +void func_882025E0(unk_func_882025E0_1A9780* arg0, unk_func_88200FA0_030_030* arg1, unk_func_88200FA0_030_030* arg2, unk_func_88203ED8* arg3, MemoryPool* arg4); +void func_88202738(unk_func_882025E0_1A9780* arg0, s32 arg1); +void func_88202758(unk_func_882025E0_1A9780* arg0); +void func_882027F0(unk_func_882025E0_1A9780* arg0, s32 arg1); +void func_88202810(unk_func_882025E0_1A9780* arg0, unk_func_88205880_00D0** arg1, unk_func_88205880_00D0** arg2); +void func_882028EC(unk_func_882025E0_1A9780* arg0, unk_func_88001300_000_010* arg1, unk_func_88001300_000_010* arg2); +void func_88202A2C(unk_func_88200FA0_030_030* arg0); +void func_88202B74(unk_func_88200FA0_030_030* arg0); +void func_88202CBC(unk_func_882025E0_1A9780* arg0); +void func_88202D60(unk_func_882025E0_1A9780* arg0, s32 arg1); +void func_88202E74(unk_func_882025E0_1A9780* arg0, s32 arg1); +void func_88202E98(unk_func_882025E0_1A9780* arg0); +void func_88202EB8(unk_func_882025E0_1A9780* arg0); +s32 func_88202ED8(unk_func_882025E0_1A9780* arg0); +void func_88202EF4(unk_func_882025E0_1A9780* arg0); +void func_88202F2C(unk_func_882025E0_1A9780* arg0); +s32 func_88202F70(unk_func_882025E0_1A9780* arg0, Controller* arg1); +void func_8820399C(unk_func_8820399C* arg0, s32 arg1, unk_func_8850143C* arg2); +s32 func_88203A20(unk_func_8820399C* arg0, s32 arg1, s32 arg2); +s32 func_88204BA8(unk_func_88203ED8* arg0); +void func_88204BFC(unk_func_88203ED8* arg0, s32 arg1); +s32 func_88204C28(unk_func_88203ED8* arg0, Controller* arg1); +void func_88204C74(unk_func_88203ED8* arg0); +void func_88204CBC(unk_func_88203ED8* arg0); +void func_88204DC0(unk_func_88203ED8_064* arg0, unk_func_88203ED8* arg1); +u32 func_88204E0C(unk_func_88205880_00D0* arg0, s32 arg1, s32 arg2, s32 arg3); +s32 func_88204EE8(unk_func_88203ED8* arg0); +void func_8820508C(unk_func_88203ED8* arg0, s32 arg1); +s32 func_882051EC(unk_func_88203ED8* arg0, Controller* arg1); +s32 func_882052F4(unk_func_88203ED8_064* arg0, Controller* arg1); +void func_882057B4(unk_func_88203ED8* arg0, Controller* arg1); +s32 func_88205DD0(unk_func_88205880* arg0, Controller* arg1); +void func_88205DF8(unk_func_88205880* arg0); +void func_88205E94(unk_func_88205880* arg0); + +void func_88206110(unk_func_8820BE14_sp* arg0); +s32 func_882062E4(unk_func_882062E4* arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4); +s32 func_88206868(unk_func_8820BE14_02C_078_034* arg0, Controller* arg1); +s32 func_882068B4(unk_func_88001300_034* arg0, Controller* arg1); +s32 func_882069C0(void); +void func_88206A20(unk_func_8820BE14_02C_078_034* arg0, s32 arg1, s32 arg2, MemoryPool* arg3); +s32 func_88206BA0(void); +u32 func_88206E50(unk_func_8820BE14_02C_078* arg0); +void func_88206E80(unk_func_8820BE14_02C_078* arg0, u32 arg1); +void func_88206F0C(unk_func_8820BE14_02C_078* arg0, u32 arg1); +s32 func_88206F44(unk_func_8820BE14_02C_078* arg0, Controller* arg1); +s32 func_88207154(unk_func_8820BE14_02C_078* arg0, Controller* arg1); +void func_8820723C(unk_func_88205880_00D0* arg0, s32 arg1, s32 arg2, s32 arg3); +void func_882079D8(unk_func_882079D8* arg0, s32 arg1, s32 arg2, s32 arg3, unk_func_88205880_00D0* arg4); +void func_88207A54(unk_func_882079D8* arg0, unk_func_88205880_00D0* arg1); +s32 func_88207A5C(unk_func_882079D8* arg0, s32 arg1, s32 arg2); +void func_88207BFC(unk_func_8820B12C_02C* arg0, s32 arg1); +void func_88207C34(unk_func_8820B12C_02C* arg0, s32 arg1); +void func_88207C54(unk_func_8820B12C_02C* arg0); +void func_88207CEC(unk_func_8820B12C_02C* arg0, s32 arg1); +void func_88207D0C(unk_func_8820B12C_02C* arg0, s32 arg1); +void func_88207D18(unk_func_8820B12C_02C* arg0); +void func_88207D38(unk_func_8820B12C_02C* arg0, unk_func_88205880_00D0** arg1, unk_func_88205880_00D0** arg2); +void func_88207E14(unk_func_8820B12C_02C* arg0, unk_func_88001300_000_010* arg1, unk_func_88001300_000_010* arg2); +void func_88207F84(unk_func_8820B12C_02C* arg0, s32 arg1); +void func_88208124(unk_func_8820B12C_02C* arg0); +s32 func_88208160(unk_func_8820B12C_02C* arg0); +void func_8820817C(unk_func_8820B12C_02C_020* arg0, unk_func_8820B12C_02C_020* arg1); +void func_8820820C(unk_func_8820B12C_02C_020* arg0, s32 arg1, s32 arg2); +void func_88208250(unk_func_8820B12C_02C_020* arg0, unk_func_8820B12C_02C_020* arg1); +void func_882082BC(unk_func_8820B12C_02C_020* arg0); +void func_882082FC(unk_func_8820B12C_02C* arg0, Controller* arg1); +void func_882083D0(unk_func_8820B12C_02C* arg0, Controller* arg1, s32 arg2); +void func_88208508(unk_func_8820B12C_02C* arg0); +s32 func_88208600(unk_func_8820B12C_02C* arg0, Controller* arg1); +unk_func_88205880_00D0* func_88208BFC(unk_func_8820B12C_02C* arg0); +void func_88208C5C(unk_func_88208C5C* arg0, unk_func_8850143C* arg1); +s32 func_88208CE4(unk_func_88208C5C* arg0, s32 arg1, s32 arg2); +u32 func_882091E4(unk_func_88208C5C* arg0); +void func_882091F8(unk_func_88208C5C* arg0, u32 arg1); +void func_8820920C(unk_func_8820BE14_02C_070* arg0, s32 arg1, s32 arg2); +void func_8820927C(s32 arg0, s32 arg1, ret_func_8002ED08* arg2, s32 arg3); +s32 func_8820938C(unk_func_8820BE14_02C_070* arg0, s32 arg1, s32 arg2); +void func_88209A88(unk_func_8820BE14_02C_070* arg0, unk_func_88205880_00D0* arg1); +s32 func_88209AF0(unk_func_8820BE14_06C* arg0); +s32 func_8820ADEC(unk_func_8820BE14_02C* arg0); +s32 func_8820AF78(unk_func_8820BE14_02C* arg0, Controller* arg1); +s32 func_8820AFC4(unk_func_8820BE14_02C* arg0, Controller* arg1); +void func_8820B0A0(unk_func_8820BE14_02C* arg0, s32 arg1); +void func_8820B0E0(unk_func_8820B12C_02C* arg0); +void func_8820B12C(unk_func_8820B12C* arg0, unk_func_8820BE14_02C* arg1); +s32 func_8820B178(unk_func_8820BE14_06C_000* arg0, s32 arg1, s32 arg2, s32 arg3); +s32 func_8820B2A4(unk_func_8820BE14_02C* arg0); +s32 func_8820B3AC(unk_func_8820BE14_02C* arg0); +void func_8820B3C0(s32 arg0, s32 arg1, s32 arg2, unk_func_88200FA0_030_038* arg3); +void func_8820B480(unk_func_88200FA0_030_038* arg0, s32 arg1); +void func_8820B504(unk_func_8820BE14_02C* arg0, s32 arg1); +s32 func_8820B714(unk_func_8820BE14_02C* arg0, Controller* arg1); +s32 func_8820B838(unk_func_8820B12C* arg0, Controller* arg1); +void func_8820C510(unk_func_8820BE14* arg0); +void func_8820C5BC(unk_func_8820BE14* arg0); +void func_8820C63C(unk_func_8820BE14* arg0); +void func_8820C700(s32 arg0, s32 arg1); + +void func_8820C930(s32 arg0, s32 arg1, s32 arg2, unk_func_8820BE14_06C* arg3); +void func_8820C97C(s32 arg0, s32 arg1, s32 arg2, unk_func_8820BE14_06C* arg3, s32 arg4, char* arg5, s32 arg6); +void func_8820CA2C(unk_func_8821421C_07C* arg0); +s32 func_8820CAB4(unk_func_8821421C_07C* arg0, s32 arg1, char* arg2); +void func_8820CBA0(unk_func_8821421C_02C_030* arg0, unk_func_8850143C* arg1, spE8_func_882121E0* arg2); +s32 func_8820CC30(unk_func_8821421C_02C_030* arg0, s32 arg1, s32 arg2); +s32 func_8820D0E4(unk_func_8821421C_02C_030* arg0); +void func_8820D0EC(unk_func_8821421C_02C_030* arg0, s32 arg1); +void func_8820D0F4(unk_func_8821421C_034* arg0, s32 arg1, s32 arg2, MemoryPool* arg3); +s32 func_8820D564(unk_func_8821421C_034* arg0, Controller* arg1); +void func_8820D5E8(unk_func_8821421C_034* arg0, s32 arg1); +void func_8820D614(unk_func_8821421C_034* arg0, char* arg1); +s32 func_8820D620(unk_func_8821421C_034* arg0, Controller* arg1); +s32 func_8820D754(spE8_func_882121E0* arg0, s32 arg1); +void func_8820D7C8(s32 arg0, s32 arg1, s8* arg2, s32 arg3, s32 arg4, unk_func_88200FA0_030_030* arg5); +s32 func_8820DB98(unk_func_8821421C_02C_070* arg0, Controller* arg1); +void func_8820DBE4(unk_func_8821421C_02C_070* arg0, s32 arg1); +s32 func_8820DC10(unk_func_8821421C_02C_070* arg0); +void func_8820DC1C(unk_func_8821421C_02C_070* arg0, s32 arg1); +void func_8820DC90(unk_func_8821421C_02C_070* arg0); +void func_8820DCC4(unk_func_8821421C_02C_070* arg0); +s32 func_8820DCD4(unk_func_8821421C_02C_070* arg0, Controller* arg1); +void func_8820DDC0(unk_func_8821421C_02C_070* arg0, s32 arg1); +s32 func_8820DDE4(u8* arg0, s32 arg1, s32 arg2, s32 arg3); +void func_8820DF38(s32 arg0, s32 arg1, u8* arg2, s32 arg3, s32 arg4, unk_func_8820BE14_02C_038* arg5); +void func_8820E5BC(unk_func_8821421C_02C_06C_02C_060* arg0, s32 arg1, s32 arg2, s32 arg3); +void func_8820E638(unk_func_8821421C_02C_06C_02C_060* arg0, unk_func_8821421C_02C_06C_02C_060_02C_000 arg1); +s32 func_8820E654(unk_func_8821421C_02C_06C_02C_060* arg0, s32 arg1, s32 arg2); +void func_8820E680(unk_func_8820E99C_030* arg0, s32 arg1); +void func_8820E6A0(unk_func_8820E99C_030* arg0, s32 arg1, s32 arg2, MemoryPool* arg3); +void func_8820E7B0(unk_func_8820E99C_030* arg0, s32 arg1); +s32 func_8820E818(unk_func_8820E99C_030* arg0); +s32 func_8820E850(unk_func_8820E99C_030* arg0, s32 arg1, s32 arg2); +s32 func_8820E90C(unk_func_8820E99C_030* arg0, Controller* arg1); +void func_8820E978(unk_func_8820E99C* arg0, s32 arg1, s32 arg2); +void func_8820E99C(unk_func_8820E99C* arg0, s32 arg1, s32 arg2, MemoryPool* arg3); +void func_8820EBF0(unk_func_8820E99C* arg0, s32 arg1); +s32 func_8820EC1C(unk_func_8820E99C* arg0, Controller* arg1); +void func_8820EC68(unk_func_8820E99C* arg0); +void func_8820EC9C(unk_func_8820E99C* arg0); +void func_8820ECAC(unk_func_8821421C_038_02C* arg0, unk_func_8850143C* arg1); +s32 func_8820ED14(unk_func_8821421C_038_02C* arg0, s32 arg1, s32 arg2); +void func_8820EFD0(unk_func_8821421C_038_02C* arg0, unk_func_8821421C_038_050* arg1); +void func_8820EFD8(s32 arg0, s32 arg1, unk_func_8820EFD8* arg2, s32 arg3, s32 arg4, unk_func_8821421C_038_034* arg5); +void func_8820FFF8(unk_func_8821421C_038* arg0, unk_func_8821421C_07C* arg1); +s32 func_8821004C(unk_func_8821421C_038* arg0); +s32 func_88210168(unk_func_8821421C_038* arg0, Controller* arg1); +void func_882101B4(unk_func_8821421C_038* arg0, s32 arg1); +void func_882101E0(unk_func_8821421C_038* arg0, s32 arg1); +s32 func_88210234(unk_func_8821421C_038* arg0, Controller* arg1); +void func_88210334(unk_func_8821421C_038_04C* arg0, unk_func_8821421C_038* arg1); +s32 func_88210380(unk_func_8821421C_038_04C* arg0, Controller* arg1); +void func_882107D0(unk_func_8821421C_02C_06C_02C* arg0, s32 arg1); +void func_882107F0(unk_func_8821421C_02C_06C_02C* arg0); +void func_88210888(unk_func_8821421C_02C_06C_02C* arg0, s32 arg1); +void func_882108A8(unk_func_8821421C_02C_06C_02C* arg0); +void func_88210B38(unk_func_8821421C_02C_06C_02C* arg0, s32 arg1); +void func_88210BFC(unk_func_8821421C_02C_06C_02C* arg0, s32 arg1); +void func_88210D2C(unk_func_8821421C_02C_06C_02C* arg0, s32 arg1); +void func_88210D50(unk_func_8821421C_02C_06C_02C* arg0); +s32 func_88210D8C(unk_func_8821421C_02C_06C_02C* arg0); +void func_88210DA8(void); +s32 func_88210DB0(s32 arg0, unk_func_8820BE14_06C* arg1); +s32 func_88210DF4(s32 arg0, unk_func_8820BE14_06C* arg1); +void func_88210E70(unk_func_8820BE14_02C_038* arg0, u8* arg1); +void func_88210E98(unk_func_8820BE14_02C_038* arg0, s32 arg1); +void func_88210F00(unk_func_8820BE14_02C_038* arg0); +void func_88210F74(unk_func_8820BE14_02C_038* arg0, s32 arg1, s32 arg2); +void func_88211088(unk_func_8820BE14_02C_038* arg0, s32 arg1); +void func_882110E0(unk_func_8820BE14_02C_038* arg0, unk_func_8820BE14_02C_038* arg1, unk_func_8820E99C* arg2); +s32 func_882111C0(unk_func_8821421C_02C_06C_02C_060_02C_000* arg0, unk_func_8821421C_02C_06C_02C_060_02C_000* arg1); +void func_882111F8(unk_func_8820BE14_02C_038* arg0, s32 arg1, s32 arg2); +void func_882112E4(unk_func_8820BE14_02C_038* arg0, unk_func_8820BE14_02C_038* arg1); +void func_88211380(unk_func_8821421C_02C_06C_02C* arg0, Controller* arg1); +void func_88211508(unk_func_8821421C_02C_06C_02C* arg0, Controller* arg1); +void func_88211794(unk_func_8821421C_02C_06C_02C* arg0, Controller* arg1); +s32 func_882118CC(unk_func_8821421C_02C_06C_02C* arg0, Controller* arg1); +u8* func_88212150(unk_func_8821421C_02C_06C_02C* arg0); +s32 func_8821347C(unk_func_8821421C_02C* arg0); +s32 func_882135D4(unk_func_8821421C_02C* arg0, Controller* arg1); +s32 func_88213618(unk_func_8821421C_02C* arg0, Controller* arg1); +void func_882136F8(unk_func_8821421C_02C* arg0, s32 arg1); +void func_88213738(unk_func_8821421C_02C* arg0); +void func_88213774(unk_func_8821421C_02C_06C* arg0, unk_func_8821421C_02C* arg1); +s32 func_882137B4(unk_func_8821421C_03C* arg0, s32 arg1, s32 arg2, s32 arg3); +s32 func_882138D4(unk_func_8821421C_02C* arg0); +void func_882139C0(unk_func_8821421C_02C* arg0, s32 arg1); +s32 func_88213B90(unk_func_8821421C_02C* arg0, Controller* arg1); +s32 func_88213CA0(unk_func_8821421C_02C_06C* arg0, Controller* arg1); +void func_8821421C(unk_func_8821421C* arg0, s32 arg1, s32 arg2, MemoryPool* arg3, s32 arg4, char** arg5); +void func_88214720(unk_func_8821421C* arg0); +void func_882147BC(unk_func_8821421C* arg0); +void func_8821483C(s32 arg0); + +void func_882149A0(unk_func_882149A0* arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4, s32 arg5, s32 arg6, Color_RGBA8 arg7, Color_RGBA8 arg8, Color_RGBA8 arg9); +s32 func_88214A58(unk_func_882149A0* arg0, s32 arg1, s32 arg2); +void func_882158BC(unk_func_882149A0* arg0); +void func_882158CC(unk_func_8820BE14_02C_038* arg0, s32 arg1, s32 arg2, s32 arg3, void (*arg4)(), s32 arg5, s32 arg6, MemoryPool* arg7); +void func_88215974(unk_func_88200FA0_030_030* arg0, s32 arg1); +void func_882159AC(unk_func_8820BE14_02C_038* arg0, unk_func_88507D4C* arg1); +s32 func_882159BC(unk_func_8820BE14_02C_038* arg0); +s32 func_88215D18(unk_func_8820BE14_02C_038* arg0, s32 arg1, s32 arg2, s32 arg3); +void func_88216000(unk_func_8820BE14_02C_038* arg0, s32 arg1, s32 arg2); +s32 func_882169D4(unk_func_8820BE14_02C_038* arg0, Controller* arg1); +void func_88216F18(unk_func_8820BE14_02C_038* arg0, s32 arg1); +void func_88217018(unk_func_8820BE14_02C_038* arg0, unk_func_8820BE14_06C_000* arg1, u32 arg2); +void func_882170A8(unk_func_882170A8* arg0, s32 arg1, s32 arg2, unk_func_8820BE14_02C_038* arg3, s32 arg4); +void func_8821711C(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4); +s32 func_8821738C(unk_func_882170A8* arg0, s32 arg1, s32 arg2); +void func_882173EC(unk_func_882173EC* arg0, s32 arg1, s32 arg2); +s32 func_88217460(unk_func_882173EC* arg0); +void func_882175F4(unk_func_882173EC* arg0, unk_func_88001300_000_010 arg1, unk_func_88001300_000_010 arg2); +void func_88217650(unk_func_8821421C_02C_06C_02C_068* arg0, s32 arg1, s32 arg2); +s32 func_882176C4(unk_func_8821421C_02C_06C_02C_068* arg0); +void func_88217718(unk_func_8821421C_02C_06C_02C_068* arg0, unk_func_88001300_000_010 arg1); +void func_88217740(unk_func_88217740* arg0, s32 arg1, s32 arg2); +s32 func_882177A8(unk_func_88217740* arg0, s32 arg1, s32 arg2); +void func_88217BA0(unk_func_88217740* arg0, s32 arg1); +void func_88217BAC(unk_func_88217740* arg0); +void func_88217BB8(unk_func_88217740* arg0); +void func_88217BC0(unk_func_88217740* arg0); + + +#endif // _FRAGMENT23_H_ diff --git a/src/fragments/23/fragment23_1A8590.c b/src/fragments/23/fragment23_1A8590.c index 33c20039..98ef7c4f 100644 --- a/src/fragments/23/fragment23_1A8590.c +++ b/src/fragments/23/fragment23_1A8590.c @@ -1,9 +1,69 @@ -#include "global.h" +#include "fragment23.h" +#include "src/1CF30.h" +#include "src/29BA0.h" +#include "src/3FB0.h" +#include "src/memory.h" +#include "src/stage_loader.h" -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1A8590/func_88200020.s") +s32 func_88200020(void) { + unk_D_800AC870* sp1C; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1A8590/func_882000E4.s") + main_pool_push_state('TERM'); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1A8590/func_88200110.s") + sp1C = func_8001E94C(0x1C, 0); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1A8590/func_88200190.s") + ASSET_LOAD(D_04000000, fragment29_misc_1, 0); + FRAGMENT_LOAD(fragment26); + FRAGMENT_LOAD(fragment29); + + func_80007754(); + return sp1C; +} + +void func_882000E4(void) { + func_8000771C(); + + main_pool_pop_state('TERM'); +} + +s32 func_88200110(UNUSED s32 arg0, UNUSED s32 arg1) { + func_8820C700(func_88200020(), 1); + func_80007990(1); + func_80006CB4(0xA); + func_882000E4(); + + FRAGMENT_LOAD_AND_CALL2(fragment22, 1, 0); + return 0x25; +} + +s32 func_88200190(s32 arg0, s32 arg1) { + s32 temp_s0; + s32 var_s1; + + if (arg0 == 5) { + return func_88200110(arg0, arg1); + } + temp_s0 = func_88200020(); + + var_s1 = func_8820104C(arg0, arg1); + while (var_s1 != 0) { + switch (var_s1) { + case 1: + func_8820C700(temp_s0, 0); + break; + + case 2: + func_8821483C(temp_s0); + break; + + case 3: + func_88205F1C(temp_s0); + break; + } + var_s1 = func_8820104C(var_s1, arg1); + } + + func_882000E4(); + + return 0x25; +} diff --git a/src/fragments/23/fragment23_1A8800.c b/src/fragments/23/fragment23_1A8800.c index c2d9c884..84300187 100644 --- a/src/fragments/23/fragment23_1A8800.c +++ b/src/fragments/23/fragment23_1A8800.c @@ -1,27 +1,337 @@ -#include "global.h" +#include "fragment23.h" +#include "src/1CF30.h" +#include "src/20330.h" +#include "src/29BA0.h" +#include "src/2D340.h" +#include "src/2E110.h" +#include "src/2E460.h" +#include "src/49790.h" +#include "src/memmap.h" +#include "src/memory.h" +#include "src/stage_loader.h" -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1A8800/func_88200290.s") +static char** D_88224F90; +static char** D_88224F94; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1A8800/func_882004BC.s") +static u16 D_88217BF0[4] = { 6, 7, 8, 9 }; +static Color_RGBA8 D_88217BF8 = { 0xA0, 0x96, 0x64, 0xFF }; +static u16 D_88217BFC[4] = { 2, 3, 4, 5 }; +static Color_RGBA8 D_88217C04 = { 0x64, 0x96, 0xB4, 0xFF }; +static Color_RGBA8 D_88217C08 = { 0x3C, 0x64, 0x78, 0xFF }; +static Color_RGBA8 D_88217C0C = { 0xA0, 0x96, 0x64, 0xFF }; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1A8800/func_882004C8.s") +void func_88200290(unk_func_88503298* arg0, s32 arg1, s32 arg2, MemoryPool* arg3) { + s32 i; + s32 temp_v0; + s32 var_s1; + unk_func_885012A4* temp_s0; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1A8800/func_88200968.s") + var_s1 = 0; + for (i = 0; i < 4; i++) { + temp_v0 = func_8001F5B0(0x10, 0, func_8002D7C0(NULL, 0, D_88224F94, D_88217BF0[i])); + if (var_s1 < temp_v0) { + var_s1 = temp_v0; + } + } + var_s1 += 0x10; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1A8800/func_882009B4.s") + ((func885007CC)Memmap_GetFragmentVaddr(func_885007CC))(arg0, sizeof(unk_func_88503298)); + arg0->unk_00.unk_10.unk_00 = ((0x280 - var_s1) / 2) - arg1; + arg0->unk_00.unk_10.unk_02 = arg2; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1A8800/func_88200A30.s") + arg0->unk_2C = mem_pool_alloc(arg3, sizeof(unk_func_88001300_038)); + ((func88502274)Memmap_GetFragmentVaddr(func_88502274))(arg0->unk_2C, 0, 0, var_s1, 0x68); + arg0->unk_2C->unk_28 |= 0x200; + arg0->unk_2C->unk_28 |= 0x400; + arg0->unk_2C->unk_28 &= ~1; + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0, arg0->unk_2C); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1A8800/func_88200ACC.s") + temp_s0 = mem_pool_alloc(arg3, sizeof(unk_func_885012A4)); + ((func885012A4)Memmap_GetFragmentVaddr(func_885012A4))(temp_s0, 0, 0, var_s1, 0x68, D_88217BF8); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0->unk_2C, temp_s0); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1A8800/func_88200AF4.s") + arg0->unk_30 = mem_pool_alloc(arg3, sizeof(unk_func_8850878C)); + ((func8850878C)Memmap_GetFragmentVaddr(func_8850878C))(arg0->unk_30, 8, 8, 0, 0x10); + arg0->unk_30->unk_3C = 0x20; + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(temp_s0, arg0->unk_30); +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1A8800/func_88200B60.s") +void func_882004BC(unk_func_88503298* arg0, s8* arg1) { + arg0->unk_30->unk_40 = arg1; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1A8800/func_88200C44.s") +void func_882004C8(unk_func_88200FA0_030* arg0, s32 arg1, s32 arg2, unk_func_88001300_000* arg3, MemoryPool* arg4) { + s32 i; + s32 j; + char* temp_s0; + s32 temp_v0; + s32 var_s2; + unk_func_885012A4* temp_s0_2; + unk_func_8850B254* sp6C; + UNUSED s32 pad1[3]; + unk_func_88503298* temp_s0_3; + unk_func_8850878C* temp_s1; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1A8800/func_88200F00.s") + if ((arg2 <= 0) || (arg2 >= 5)) { + arg2 = 0; + } else { + arg2--; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1A8800/func_88200FA0.s") + var_s2 = func_8001F5B0(0x10, 0, func_8002D7C0(NULL, 0, D_88224F94, 1)); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1A8800/func_8820104C.s") + for (j = 0; j < 4; j++) { + temp_v0 = func_8001F5B0(0x10, 0, func_8002D7C0(NULL, 0, D_88224F94, D_88217BFC[j])); + if (var_s2 < temp_v0) { + var_s2 = temp_v0; + } + } + var_s2 += 0x10; + + ((func885007CC)Memmap_GetFragmentVaddr(func_885007CC))(arg0, sizeof(unk_func_88200FA0_030)); + arg0->unk_00.unk_20 = func_88200A30; + arg0->unk_00.unk_10.unk_00 = (0x280 - var_s2) / 2; + arg0->unk_00.unk_10.unk_02 = arg1; + + arg0->unk_2C = mem_pool_alloc(arg4, sizeof(unk_func_88001300_038)); + ((func88502274)Memmap_GetFragmentVaddr(func_88502274))(arg0->unk_2C, 0, 0, var_s2, 0xA4); + arg0->unk_2C->unk_28 |= 0x200; + arg0->unk_2C->unk_28 |= 0x400; + arg0->unk_2C->unk_28 &= ~1; + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0, arg0->unk_2C); + + sp6C = mem_pool_alloc(arg4, sizeof(unk_func_8850B254)); + ((func8850B254)Memmap_GetFragmentVaddr(func_8850B254))(sp6C, 0, 0, var_s2, 0x18, D_88217C04, D_88217C08); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0->unk_2C, sp6C); + + temp_s1 = mem_pool_alloc(arg4, sizeof(unk_func_8850878C)); + temp_s0 = func_8002D7C0(NULL, 0, D_88224F94, 1); + ((func8850878C)Memmap_GetFragmentVaddr(func_8850878C))(temp_s1, (var_s2 - func_8001F5B0(0x10, 0, temp_s0)) / 2, 0, + temp_s0, 0x10); + temp_s1->unk_3C = 0x1C; + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(sp6C, temp_s1); + + func_8002CBC0(&arg0->unk_38, 4, arg4); + + for (i = 0; i < 4; i++) { + func_8002CC2C(&arg0->unk_38, func_8002D7C0(NULL, 0, D_88224F94, D_88217BFC[i]), i); + } + + temp_s0_2 = mem_pool_alloc(arg4, sizeof(unk_func_885012A4)); + ((func885012A4)Memmap_GetFragmentVaddr(func_885012A4))(temp_s0_2, 0, 0x1C, var_s2, 0x88, D_88217C0C); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0->unk_2C, temp_s0_2); + + arg0->unk_30 = mem_pool_alloc(arg4, sizeof(unk_func_88200FA0_030_030)); + ((func885060BC)Memmap_GetFragmentVaddr(func_885060BC))(arg0->unk_30, 0, 4, func_882009B4, var_s2, 0x20, 4, 1, arg4); + ((func88506384)Memmap_GetFragmentVaddr(func_88506384))(arg0->unk_30, &arg0->unk_38, arg4); + ((func88506BFC)Memmap_GetFragmentVaddr(func_88506BFC))(arg0->unk_30, arg2); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(temp_s0_2, arg0->unk_30); + + arg0->unk_34 = mem_pool_alloc(arg4, sizeof(unk_func_88503298)); + func_88200290(arg0->unk_34, arg0->unk_00.unk_10.unk_00, 0xB4, arg4); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0, arg0->unk_34); + func_88200968(arg0, arg2); + + temp_s0_3 = mem_pool_alloc(arg4, sizeof(unk_func_88503298)); + ((func88503298)Memmap_GetFragmentVaddr(func_88503298))(temp_s0_3, arg0->unk_2C, arg3); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0, temp_s0_3); +} + +void func_88200968(unk_func_88200FA0_030* arg0, s32 arg1) { + func_882004BC(arg0->unk_34, func_8002D7C0(NULL, 0, D_88224F94, arg1 + 6)); +} + +void func_882009B4(s32 arg0, s32 arg1, char* arg2, s32 arg3) { + static Color_RGBA8 D_88217C10 = { 0xF0, 0xF0, 0xF0, 0xFF }; + + func_8001F3F4(); + func_8001F324(D_88217C10.r, D_88217C10.g, D_88217C10.b, D_88217C10.a); + func_8001EBE0(0x10, 0); + func_8001F1E8(arg0 + 8, arg1 + 4, arg2); + func_8001F444(); +} + +s32 func_88200A30(unk_func_88200FA0_030* arg0, Controller* arg1) { + s32 sp1C; + + if (arg0->unk_2C->unk_30 & 2) { + sp1C = arg0->unk_30->unk_00.unk_20(arg0->unk_30, arg1); + if ((sp1C & 1) && (sp1C & 8)) { + func_88200968(arg0, arg0->unk_30->unk_38); + } + } else if (!(arg0->unk_2C->unk_28 & 1)) { + sp1C = 2; + } else { + sp1C = 1; + } + return sp1C; +} + +void func_88200ACC(unk_func_88200FA0_030* arg0) { + arg0->unk_2C->unk_28 |= 1; + arg0->unk_34->unk_2C->unk_28 |= 1; +} + +void func_88200AF4(unk_func_88200FA0_030* arg0) { + arg0->unk_2C->unk_2C = 0xB; + arg0->unk_34->unk_2C->unk_2C = 0xB; + while (arg0->unk_2C->unk_28 & 1) { + func_8002EEA8(NULL); + } +} + +s32 func_88200B60(unk_func_88200FA0_030* arg0, Controller* arg1) { + s32 var_s0; + s32 var_s1 = 0; + + func_88200ACC(arg0); + + while (var_s1 == 0) { + func_8002EEA8(NULL); + var_s0 = func_88200A30(arg0, arg1); + if (!(var_s0 & 1)) { + if (arg1->buttonPressed & 0x4000) { + var_s0 = 0x80000003; + var_s1 = 1; + } else if (arg1->buttonPressed & 0x8000) { + func_80048B90(0x1C); + var_s0 = 1; + var_s1 = arg0->unk_30->unk_38 + 2; + } + } + ((func8850BC94)Memmap_GetFragmentVaddr(func_8850BC94))(var_s0); + } + func_88200AF4(arg0); + return var_s1; +} + +void func_88200C44(unk_func_88200FA0* arg0, s32 arg1, s32 arg2, s32 arg3, MemoryPool* arg4) { + static Color_RGBA8 D_88217C14 = { 0x1E, 0x50, 0x50, 0xFF }; + static Color_RGBA8 D_88217C18 = { 0x00, 0x0A, 0x0A, 0xFF }; + + unk_func_88001300_000* sp4C; + unk_func_88500EE4* sp48; + unk_func_88509A2C* sp44; + unk_func_88509E34* sp40; + + ((func885007CC)Memmap_GetFragmentVaddr(func_885007CC))(arg0, 0x34); + arg0->unk_00.unk_10.unk_00 = arg1; + arg0->unk_00.unk_10.unk_02 = arg2; + + sp4C = mem_pool_alloc(arg4, sizeof(unk_func_88001300_000)); + ((func885031E8)Memmap_GetFragmentVaddr(func_885031E8))(sp4C, 0, 0, 0x280, 0x1E0); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0, sp4C); + + sp48 = mem_pool_alloc(arg4, sizeof(unk_func_88500EE4)); + ((func88500EE4)Memmap_GetFragmentVaddr(func_88500EE4))(sp48, 0, 0, 0x280, 0x1E0, D_88223E48, D_88217C14, + D_88217C18); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(sp4C, sp48); + + arg0->unk_2C = mem_pool_alloc(arg4, sizeof(unk_func_885088F4)); + ((func885088F4)Memmap_GetFragmentVaddr(func_885088F4))(arg0->unk_2C, 0x41, 0x15C, 0xDC); + if (func_80007604() == 0) { + arg0->unk_2C->unk_2C = 5; + } + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(sp4C, arg0->unk_2C); + + sp44 = mem_pool_alloc(arg4, sizeof(unk_func_88509A2C)); + ((func88509A2C)Memmap_GetFragmentVaddr(func_88509A2C))(sp44, 0x38, 0x22, func_80029080(), + func_8002D7C0(NULL, 0, D_88224F90, 0)); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0->unk_2C, sp44); + + sp40 = mem_pool_alloc(arg4, sizeof(unk_func_88509E34)); + ((func88509E34)Memmap_GetFragmentVaddr(func_88509E34))(sp40, 0, 0, func_8002D7C0(NULL, 0, D_88224F94, 0)); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0->unk_2C, sp40); + + arg0->unk_30 = mem_pool_alloc(arg4, sizeof(unk_func_88200FA0_030)); + func_882004C8(arg0->unk_30, 0x78, arg3, sp4C, arg4); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0, arg0->unk_30); + + arg0->unk_00.unk_24(&arg0->unk_00, 1); +} + +s32 func_88200F00(unk_func_88200FA0* arg0) { + s32 sp34 = 0; + + while (sp34 == 0) { + func_800079C4(); + ((func885008C4)Memmap_GetFragmentVaddr(func_885008C4))(arg0); + ((func88500828)Memmap_GetFragmentVaddr(func_88500828))(arg0, 0, 0); + func_80007778(); + func_8002EF18(&sp34); + } + return sp34; +} + +void func_88200FA0(unk_func_88200FA0* arg0) { + s32 sp24; + s32 i; + + while (func_80007604() != 0) { + func_8002EEA8(NULL); + } + + func_8001F738(gPlayer1Controller); + + sp24 = func_88200B60(arg0->unk_30, gPlayer1Controller); + if (sp24 == 1) { + arg0->unk_2C->unk_2C = 9; + func_80006CB4(8); + + i = 10; + while (i-- > 0) { + func_8002EEA8(NULL); + } + } + func_8002EEA8(sp24); + + osStopThread(NULL); +} + +s32 func_8820104C(s32 arg0, UNUSED s32 arg1) { + MemoryPool* sp34; + void* sp30; + u8* sp2C; + func_88002628_sp38* sp28; + UNUSED s32 pad; + s32 sp20; + + main_pool_push_state('SLTM'); + + sp2C = main_pool_alloc(0x1000, 0); + sp34 = mem_pool_try_init(0x8000, 0); + + func_8002D510(); + D_88224F90 = func_8002D5AC(0x2A); + D_88224F94 = func_8002D5AC(1); + + sp30 = mem_pool_alloc(sp34, sizeof(unk_func_88200FA0)); + func_88200C44(sp30, 0, 0, arg0, sp34); + + sp28 = ALIGN16((u32)mem_pool_alloc(sp34, sizeof(func_88002628_sp38))); + osCreateThread(&sp28->thread, 0x32, func_88200FA0, sp30, sp2C + 0x1000, osGetThreadPri(NULL) - 1); + + func_8002EE78(); + func_8001F738(gPlayer1Controller); + + osStartThread(&sp28->thread); + + func_80006C6C(8); + sp20 = func_88200F00(sp30); + + osDestroyThread(&sp28->thread); + + main_pool_pop_state('SLTM'); + + if (sp20 == 1) { + FRAGMENT_LOAD_AND_CALL2(fragment22, 1, 0); + return 0; + } + + if (sp20 == 5) { + FRAGMENT_LOAD_AND_CALL2(fragment24, 1, 0); + return 0; + } + + return sp20 - 1; +} diff --git a/src/fragments/23/fragment23_1A9780.c b/src/fragments/23/fragment23_1A9780.c index a9b6d60c..d2c30914 100644 --- a/src/fragments/23/fragment23_1A9780.c +++ b/src/fragments/23/fragment23_1A9780.c @@ -1,111 +1,1589 @@ -#include "global.h" +#include "fragment23.h" +#include "src/1AB70.h" +#include "src/1CF30.h" +#include "src/20330.h" +#include "src/22630.h" +#include "src/26820.h" +#include "src/29BA0.h" +#include "src/2D340.h" +#include "src/2E110.h" +#include "src/2E460.h" +#include "src/3FB0.h" +#include "src/49790.h" +#include "src/hal_libc.h" +#include "src/memmap.h" +#include "src/memory.h" +#include "src/stage_loader.h" +#include "src/fragments/29/fragment29.h" -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1A9780/func_88201210.s") +static char** D_88224FA0; +static char** D_88224FA4; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1A9780/func_88201294.s") +void func_88201210(unk_func_88205880_00D0* arg0) { + s32 i; + s32 temp_s3; + unk_func_80026268_arg0* tmp = arg0->unk_000; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1A9780/func_8820130C.s") + temp_s3 = func_80029080(); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1A9780/func_88201360.s") + for (i = 0; i < arg0->unk_690; i++, tmp++) { + if ((tmp->unk_00 > 0) && (tmp->unk_00 < 0x98)) { + func_800256F4(temp_s3, tmp->unk_00, 3); + } + } +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1A9780/func_882013F8.s") +void func_88201294(s32 arg0, s32 arg1, s32 arg2, unk_func_88205880_00D0* arg3) { + unk_func_80022C28_ret* sp1C = func_80022C28(arg0, arg1, arg2, 1); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1A9780/func_88201440.s") + func_80022F24(arg3, arg3->unk_690, sp1C); + if ((arg0 == 0x10) || (arg0 == 0x11) || (arg0 == 0x12)) { + func_80022D24(sp1C); + } else { + func_80022D8C(sp1C); + } +} + +s32 func_8820130C(s32 arg0, s32 arg1, s32 arg2, unk_func_88205880_00D0* arg3, s32 arg4) { + s32 sp1C; + unk_func_80022C28_ret* sp18; + + sp18 = func_80022C28(arg0, arg1, arg2, 0); + if (sp18 == 0) { + return 0; + } + sp1C = func_80022E18(&arg3->unk_000, arg4, sp18); + func_80022D8C(sp18); + return sp1C; +} + +void func_88201360(unk_func_88205880_00D0* arg0, s32 arg1, s32 arg2, s32 arg3) { + s32 i; + s32 temp_v0; + + for (i = 0; i < arg3; i++, arg0++) { + bzero(arg0->unk_000, sizeof(unk_func_80026268_arg0) * 20); + arg0->unk_690 = func_8820130C(arg1, arg2, i, arg0, 0x14); + arg0->unk_694 = arg1; + arg0->unk_698 = i; + arg0->unk_69C = 0; + } +} + +s32 func_882013F8(unk_func_88205880_A030* arg0) { + s32 i; + unk_func_88205880_00D0** var_a0 = arg0->unk_00; + + for (i = 0; i < arg0->unk_08; i++) { + if (var_a0[i]->unk_690 == 0) { + return 0; + } + } + + return 1; +} + +s32 func_88201440(unk_func_88205880_A030* arg0) { + s32 i; + unk_func_88205880_00D0** var_a0 = arg0->unk_00; + + for (i = 0; i < arg0->unk_08; i++) { + if (var_a0[i]->unk_690 > 0) { + return 0; + } + } + + return 1; +} + +void func_88201488(); +static Color_RGBA8 D_88217C20 = { 0xF0, 0xF0, 0xF0, 0xFF }; +static Color_RGBA8 D_88217C24 = { 0x28, 0x28, 0x64, 0xFF }; +static Color_RGBA8 D_88217C28 = { 0x3C, 0x3C, 0x82, 0xFF }; +static Color_RGBA8 D_88217C2C = { 0x78, 0x78, 0x96, 0xFF }; #pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1A9780/func_88201488.s") -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1A9780/func_88201DA0.s") +void func_88201DA0(unk_func_88201DA0* arg0, s32 arg1, s32 arg2, unk_func_88001300_000* arg3, FragmentEntry arg4, + unk_func_88205880_0098* arg5, MemoryPool* arg6) { + static Color_RGBA8 D_88217C30 = { 0x32, 0x64, 0x64, 0xFF }; + + UNUSED s32 pad[2]; + unk_func_88503298* sp44; + + ((func885007CC)Memmap_GetFragmentVaddr(func_885007CC))(arg0, sizeof(unk_func_88201DA0)); + + arg0->unk_00.unk_20 = func_88202254; + arg0->unk_00.unk_24 = func_88202228; + arg0->unk_00.unk_10.unk_00 = arg1; + arg0->unk_00.unk_10.unk_02 = arg2; + + arg0->unk_34 = main_pool_alloc(0xFAA0, 0); + arg0->unk_48 = arg4; + arg0->unk_4C = arg5; + + arg0->unk_2C = mem_pool_alloc(arg6, sizeof(unk_func_88001300_038)); + ((func88502274)Memmap_GetFragmentVaddr(func_88502274))(arg0->unk_2C, 0, 0, 0x212, 0x148); + arg0->unk_2C->unk_28 |= 0x200; + arg0->unk_2C->unk_28 |= 0x400; + arg0->unk_2C->unk_28 &= ~1; + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0, arg0->unk_2C); + + arg0->unk_58 = mem_pool_alloc(arg6, sizeof(unk_func_8850182C)); + ((func8850182C)Memmap_GetFragmentVaddr(func_8850182C))(arg0->unk_58, 0, 0, arg0->unk_2C->unk_14, 0x1C, D_88217C30); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0->unk_2C, arg0->unk_58); + + arg0->unk_50 = mem_pool_alloc(arg6, sizeof(unk_func_8850878C)); + arg0->unk_54 = mem_pool_alloc(arg6, sizeof(char) * 18); + arg0->unk_54[0] = '\x00'; + ((func8850878C)Memmap_GetFragmentVaddr(func_8850878C))(arg0->unk_50, 0, 4, arg0->unk_54, 8); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0->unk_58, arg0->unk_50); + + arg0->unk_30 = mem_pool_alloc(arg6, sizeof(unk_func_88200FA0_030_030)); + ((func885060BC)Memmap_GetFragmentVaddr(func_885060BC))(arg0->unk_30, 0, 0x1C, func_88201488, 0x6A, 0x4B, 4, 5, + arg6); + ((func88506238)Memmap_GetFragmentVaddr(func_88506238))(arg0->unk_30, 0x14, arg6); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0->unk_2C, arg0->unk_30); + + sp44 = mem_pool_alloc(arg6, sizeof(unk_func_88503298)); + ((func88503298)Memmap_GetFragmentVaddr(func_88503298))(sp44, arg0->unk_2C, arg3); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0, sp44); + + func_88202228(&arg0->unk_00, 1); +} + +void func_88202054(unk_func_88201DA0* arg0, u32 arg1, u32 arg2) { + static u16 D_88217C34[] = { 0x32, 0x33 }; + static Color_RGBA8 D_88217C38[] = { + { 0x96, 0x64, 0x1E, 0xFF }, + { 0x32, 0x64, 0x64, 0xFF }, + }; + + HAL_Strcpy(arg0->unk_54, func_8002D7C0(NULL, 0, D_88224FA4, D_88217C34[arg1 - 1])); + sprintf(&arg0->unk_54[strlen(arg0->unk_54)], " No.%d", arg2 + 1); + + arg0->unk_50->unk_00.unk_10.unk_00 = + (arg0->unk_2C->unk_14 - func_8001F5B0(arg0->unk_50->unk_2C, arg0->unk_50->unk_38, arg0->unk_54)) / 2; + arg0->unk_58->unk_2C = D_88217C38[arg1 - 1]; +} + +void func_8820213C(unk_func_88201DA0* arg0, unk_func_88205880_00D0* arg1, u32 arg2) { + unk_func_80026268_arg0* ptr = arg1->unk_000; + s32 i; + + arg0->unk_5C = arg1; + arg0->unk_60 = arg2; + + for (i = 0; i < arg1->unk_690; i++, ptr++) { + arg0->unk_34[i].unk_000 = ptr; + func_8001B0DC(&arg0->unk_34[i].unk_008, 0, ptr); + } + + func_8002C740(&arg0->unk_38, arg0->unk_34, 0xC88, 0x14, arg1->unk_690); + + ((func885063B8)Memmap_GetFragmentVaddr(func_885063B8))(arg0->unk_30, &arg0->unk_38); + + func_88202054(arg0, arg2 >> 0x10, arg2 & 0xFFFF); +} + +void func_88202228(unk_func_88203ED8* arg0, s32 arg1) { + arg0->unk_00.unk_2A = arg1; + arg0->unk_30->unk_00.unk_24(arg0->unk_30, arg1); +} + +s32 func_88202254(unk_func_88201DA0* arg0, Controller* arg1) { + s32 var_v1; + + if (arg0->unk_2C->unk_30 & 2) { + var_v1 = arg0->unk_30->unk_00.unk_20(arg0->unk_30, arg1); + if (var_v1 == 0) { + if (arg1->buttonPressed & 0x4000) { + var_v1 = 0x80000002; + } else if (arg1->buttonPressed & 0x8000) { + func_80048B90(2); + + arg0->unk_4C->unk_0C = arg0->unk_34[arg0->unk_30->unk_38].unk_000; + arg0->unk_4C->unk_10 = arg0->unk_60 >> 0x10; + + arg0->unk_48(1, arg0->unk_4C); + + arg0->unk_30->unk_00.unk_24(arg0->unk_30, 0x100); + if (arg0->unk_48(4, arg0->unk_4C) == 1) { + arg0->unk_5C->unk_69C = 1; + } + arg0->unk_30->unk_00.unk_24(arg0->unk_30, 1); + var_v1 = 1; + } + } + } else { + var_v1 = 1; + } + return var_v1; +} + +void func_88202394(unk_func_88201DA0* arg0, Controller* arg1) { + s32 var_s0; + s32 var_s1 = NULL; + + ((func88502C98)Memmap_GetFragmentVaddr(func_88502C98))(arg0->unk_2C); + + while (var_s1 == 0) { + func_8002EEA8(var_s1); + var_s0 = func_88202254(arg0, arg1); + if (!(var_s0 & 1) && (var_s0 & 2)) { + var_s0 |= 1; + var_s1 = 1; + } + ((func8850BC94)Memmap_GetFragmentVaddr(func_8850BC94))(var_s0); + } + arg0->unk_2C->unk_2C = 0xB; +} + +void func_88202450(unk_func_88205880_00D0* arg0, s32 arg1, s32 arg2) { + static Color_RGBA8 D_88217C40 = { 0xF0, 0xF0, 0xF0, 0xFF }; + + char sp28[8]; + s32 sp24 = func_8001F5B0(4, 0, "00"); + UNUSED s32 pad; + + func_8001F3F4(); + func_8001EBE0(4, 0); + func_8001F324(D_88217C40.r, D_88217C40.g, D_88217C40.b, D_88217C40.a); + sprintf(sp28, "%d", arg0->unk_690); + func_8001F1E8(((arg1 + sp24) - func_8001F5B0(0, 0, sp28)) + 0x1C, arg2 + 4, sp28); + func_8001F444(); + if (arg0->unk_690 > 0) { + func_8002D8C8(&D_800758E0, arg1, arg2 + 2); + } +} + +void func_8820253C(unk_func_8820253C* arg0, s32 arg1, s32 arg2, unk_func_88205880_00D0* arg3) { + ((func885007CC)Memmap_GetFragmentVaddr(func_885007CC))(arg0, sizeof(unk_func_8820253C)); + + arg0->unk_00.unk_18 = func_882025B4; + arg0->unk_00.unk_10.unk_00 = arg1; + arg0->unk_00.unk_10.unk_02 = arg2; + + func_882025AC(arg0, arg3); +} + +void func_882025AC(unk_func_8820253C* arg0, unk_func_88205880_00D0* arg1) { + arg0->unk_2C = arg1; +} + +s32 func_882025B4(unk_func_8820253C* arg0, s32 arg1, s32 arg2) { + if (arg0->unk_2C != NULL) { + func_88202450(arg0->unk_2C, arg1, arg2); + } +} + +void func_882025E0(unk_func_882025E0_1A9780* arg0, unk_func_88200FA0_030_030* arg1, unk_func_88200FA0_030_030* arg2, + unk_func_88203ED8* arg3, MemoryPool* arg4) { + static Color_RGBA8 D_88217C44 = { 0xF0, 0xF0, 0xF0, 0xFF }; + + s32 i; + char* temp_s2; + + ((func88500668)Memmap_GetFragmentVaddr(func_88500668))(arg0, sizeof(unk_func_882025E0_1A9780)); + + arg0->unk_14 = func_88202738; + arg0->unk_10 = func_88202F70; + arg0->unk_18 = 0; + arg0->unk_1C = 0; + arg0->unk_24[0] = arg1; + arg0->unk_24[1] = arg2; + arg0->unk_38 = 1; + arg0->unk_20 = arg3; + arg0->unk_2C = 0; + + for (i = 0; i < 5; i++) { + temp_s2 = func_8002D7C0(NULL, 0, D_88224FA4, i + 6); + + arg0->unk_3C[i].unk_00 = mem_pool_alloc(arg4, sizeof(unk_func_8850878C)); + ((func8850878C)Memmap_GetFragmentVaddr(func_8850878C))(arg0->unk_3C[i].unk_00, 0, 0, temp_s2, 0x10); + arg0->unk_3C[i].unk_00->unk_30 = D_88217C44; + arg0->unk_3C[i].unk_00->unk_44 = arg0->unk_3C[i].unk_00->unk_44; + arg0->unk_3C[i].unk_08 = 0; + arg0->unk_3C[i].unk_04 = 0; + } +} + +void func_88202738(unk_func_882025E0_1A9780* arg0, s32 arg1) { + arg0->unk_18 = arg1; + func_88202758(arg0); +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1A9780/func_88202054.s") +void func_88202758(unk_func_882025E0_1A9780* arg0) { + s32 i; + s32 temp_s3 = arg0->unk_18 & 0xFF; + s32 temp_s4 = arg0->unk_18 & 0xFF00; + s32 var_v0; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1A9780/func_8820213C.s") + for (i = 0; i < 2; i++) { + var_v0 = 0; + if (i == arg0->unk_1C) { + var_v0 = 1; + } + arg0->unk_24[i]->unk_00.unk_24(&arg0->unk_24[i]->unk_00, (var_v0 & temp_s3) | temp_s4); + } +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1A9780/func_88202228.s") +void func_882027F0(unk_func_882025E0_1A9780* arg0, s32 arg1) { + arg0->unk_1C = arg1; + func_88202758(arg0); +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1A9780/func_88202254.s") +void func_88202810(unk_func_882025E0_1A9780* arg0, unk_func_88205880_00D0** arg1, unk_func_88205880_00D0** arg2) { + switch (arg0->unk_2C) { + case 0: + *arg1 = arg0->unk_24[0]->unk_2C->unk_00[arg0->unk_24[0]->unk_38]; + *arg2 = NULL; + break; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1A9780/func_88202394.s") + case 1: + *arg1 = arg0->unk_24[0]->unk_2C->unk_00[arg0->unk_34]; + *arg2 = arg0->unk_24[0]->unk_2C->unk_00[arg0->unk_24[0]->unk_38]; + break; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1A9780/func_88202450.s") + case 2: + *arg1 = arg0->unk_24[0]->unk_2C->unk_00[arg0->unk_24[0]->unk_38]; + *arg2 = arg0->unk_24[1]->unk_2C->unk_00[arg0->unk_24[1]->unk_38]; + break; + } +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1A9780/func_8820253C.s") +void func_882028EC(unk_func_882025E0_1A9780* arg0, unk_func_88001300_000_010* arg1, unk_func_88001300_000_010* arg2) { + switch (arg0->unk_2C) { + case 0: + arg1->unk_00 = arg0->unk_24[0]->unk_00.unk_10.unk_00; + arg1->unk_02 = arg0->unk_24[0]->unk_00.unk_10.unk_02 + (arg0->unk_24[0]->unk_38 * arg0->unk_24[0]->unk_3E); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1A9780/func_882025AC.s") + arg2->unk_00 = arg0->unk_24[1]->unk_00.unk_10.unk_00; + arg2->unk_02 = arg0->unk_24[1]->unk_00.unk_10.unk_02 + (arg0->unk_24[1]->unk_38 * arg0->unk_24[1]->unk_3E); + break; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1A9780/func_882025B4.s") + case 1: + arg1->unk_00 = arg0->unk_24[0]->unk_00.unk_10.unk_00; + arg1->unk_02 = arg0->unk_24[0]->unk_00.unk_10.unk_02 + (arg0->unk_34 * arg0->unk_24[0]->unk_3E); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1A9780/func_882025E0.s") + arg2->unk_00 = arg0->unk_24[0]->unk_00.unk_10.unk_00; + arg2->unk_02 = arg0->unk_24[0]->unk_00.unk_10.unk_02 + (arg0->unk_24[0]->unk_38 * arg0->unk_24[0]->unk_3E); + break; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1A9780/func_88202738.s") + case 2: + arg1->unk_00 = arg0->unk_24[0]->unk_00.unk_10.unk_00; + arg1->unk_02 = arg0->unk_24[0]->unk_00.unk_10.unk_02 + (arg0->unk_24[0]->unk_38 * arg0->unk_24[0]->unk_3E); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1A9780/func_88202758.s") + arg2->unk_00 = arg0->unk_24[1]->unk_00.unk_10.unk_00; + arg2->unk_02 = arg0->unk_24[1]->unk_00.unk_10.unk_02 + (arg0->unk_24[1]->unk_38 * arg0->unk_24[1]->unk_3E); + break; + } +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1A9780/func_882027F0.s") +void func_88202A2C(unk_func_88200FA0_030_030* arg0) { + s32 i; + s32 count = arg0->unk_2C->unk_08; + unk_func_88205880_00D0** temp_v0 = arg0->unk_2C->unk_00; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1A9780/func_88202810.s") + for (i = 0; i < count; i++) { + if (temp_v0[i]->unk_690 == 0) { + arg0->unk_34[i] |= 4; + } + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1A9780/func_882028EC.s") + ((func88506CE4)Memmap_GetFragmentVaddr(func_88506CE4))(arg0); +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1A9780/func_88202A2C.s") +void func_88202B74(unk_func_88200FA0_030_030* arg0) { + s32 i; + s32 count = arg0->unk_2C->unk_08; + unk_func_88205880_00D0** temp_v0 = arg0->unk_2C->unk_00; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1A9780/func_88202B74.s") + for (i = 0; i < count; i++) { + if (temp_v0[i]->unk_690 > 0) { + arg0->unk_34[i] |= 4; + } + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1A9780/func_88202CBC.s") + ((func88506CE4)Memmap_GetFragmentVaddr(func_88506CE4))(arg0); +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1A9780/func_88202D60.s") +void func_88202CBC(unk_func_882025E0_1A9780* arg0) { + ((func8850628C)Memmap_GetFragmentVaddr(func_8850628C))(arg0->unk_24[0]); + ((func8850628C)Memmap_GetFragmentVaddr(func_8850628C))(arg0->unk_24[1]); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1A9780/func_88202E74.s") + switch (arg0->unk_2C) { + case 0: + func_88202A2C(arg0->unk_24[0]); + func_88202B74(arg0->unk_24[1]); + break; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1A9780/func_88202E98.s") + case 1: + case 2: + case 3: + func_88202A2C(arg0->unk_24[0]); + func_88202A2C(arg0->unk_24[1]); + break; + } +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1A9780/func_88202EB8.s") +void func_88202D60(unk_func_882025E0_1A9780* arg0, s32 arg1) { + switch (arg1) { + case 0: + func_88202CBC(arg0); + func_88215974(arg0->unk_24[0], 1); + func_88215974(arg0->unk_24[1], 1); + func_882027F0(arg0, 0); + func_88217BB8(arg0->unk_20->unk_40); + break; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1A9780/func_88202ED8.s") + case 1: + func_88215974(arg0->unk_24[1], 0); + func_882027F0(arg0, 1); + func_88217BAC(arg0->unk_20->unk_40); + break; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1A9780/func_88202EF4.s") + case 2: + func_88215974(arg0->unk_24[0], 0); + func_882027F0(arg0, 0); + func_88217BAC(arg0->unk_20->unk_40); + break; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1A9780/func_88202F2C.s") + case 3: + func_88215974(arg0->unk_24[1], 0); + func_882027F0(arg0, 1); + func_88217BAC(arg0->unk_20->unk_40); + break; + } + arg0->unk_30 = arg1; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1A9780/func_88202F70.s") +void func_88202E74(unk_func_882025E0_1A9780* arg0, s32 arg1) { + arg0->unk_2C = arg1; + func_88202D60(arg0, 0); +} +void func_88202E98(unk_func_882025E0_1A9780* arg0) { + func_88202D60(arg0, 0); +} + +void func_88202EB8(unk_func_882025E0_1A9780* arg0) { + unk_func_88200FA0_030_030* temp_t6 = arg0->unk_24[0]; + + arg0->unk_24[0] = arg0->unk_24[1]; + arg0->unk_24[1] = temp_t6; + + arg0->unk_38 = !arg0->unk_38; +} + +s32 func_88202ED8(unk_func_882025E0_1A9780* arg0) { + s32 var_v1 = 0; + + if (arg0->unk_30 == 0) { + var_v1 = 1; + } + return var_v1; +} + +void func_88202EF4(unk_func_882025E0_1A9780* arg0) { + unk_func_88205880_00D0** temp_v0 = &arg0->unk_24[0]->unk_2C->unk_00[arg0->unk_34]; + unk_func_88205880_00D0** temp_a2 = &arg0->unk_24[0]->unk_2C->unk_00[arg0->unk_24[0]->unk_38]; + unk_func_88205880_00D0* temp_a3; + + temp_a3 = *temp_a2; + *temp_a2 = *temp_v0; + *temp_v0 = temp_a3; +} + +void func_88202F2C(unk_func_882025E0_1A9780* arg0) { + unk_func_88205880_00D0* temp_a3; + unk_func_88205880_00D0** temp_v0 = &arg0->unk_24[0]->unk_2C->unk_00[arg0->unk_24[0]->unk_38]; + unk_func_88205880_00D0** temp_a1 = &arg0->unk_24[1]->unk_2C->unk_00[arg0->unk_24[1]->unk_38]; + + temp_a3 = *temp_a1; + *temp_a1 = *temp_v0; + *temp_v0 = temp_a3; +} + +s32 func_88202F70(unk_func_882025E0_1A9780* arg0, Controller* arg1) { + s32 var_a2; + + var_a2 = arg0->unk_24[arg0->unk_1C]->unk_00.unk_20(arg0->unk_24[arg0->unk_1C], arg1); + + if (var_a2 & 1) { + return var_a2; + } + + if (var_a2 == 0) { + if (arg1->buttonPressed & 0x4000) { + var_a2 = 0x80000002; + } else if (arg1->buttonPressed & 0x8000) { + var_a2 = 0x80000004; + } + } + + switch (arg0->unk_30) { + case 0: + if (var_a2 & 2) { + ((func8850628C)Memmap_GetFragmentVaddr(func_8850628C))(arg0->unk_20->unk_6C->unk_24[0]); + ((func8850628C)Memmap_GetFragmentVaddr(func_8850628C))(arg0->unk_20->unk_6C->unk_24[1]); + } else if (var_a2 & 4) { + switch (arg0->unk_2C) { + case 0: + if (func_88201440(arg0->unk_24[0]->unk_2C) != 0) { + func_80048B90(8); + ((func8850A10C)Memmap_GetFragmentVaddr(func_8850A10C))( + arg0->unk_20->unk_60, arg0->unk_3C[0].unk_00, arg0->unk_3C[0].unk_04, + arg0->unk_3C[0].unk_08); + ((func8850A3CC)Memmap_GetFragmentVaddr(func_8850A3CC))(arg0->unk_20->unk_60, arg1); + var_a2 = 1; + } else if (func_882013F8(arg0->unk_24[1]->unk_2C) != 0) { + func_80048B90(8); + ((func8850A10C)Memmap_GetFragmentVaddr(func_8850A10C))( + arg0->unk_20->unk_60, arg0->unk_3C[4].unk_00, arg0->unk_3C[4].unk_04, + arg0->unk_3C[4].unk_08); + ((func8850A3CC)Memmap_GetFragmentVaddr(func_8850A3CC))(arg0->unk_20->unk_60, arg1); + var_a2 = 1; + } else { + arg0->unk_24[0]->unk_34[arg0->unk_24[0]->unk_38] |= 2; + func_88202D60(arg0, 1); + var_a2 |= 1; + } + break; + + case 1: + if (func_88201440(arg0->unk_24[0]->unk_2C) != 0) { + func_80048B90(8); + ((func8850A10C)Memmap_GetFragmentVaddr(func_8850A10C))( + arg0->unk_20->unk_60, arg0->unk_3C[1].unk_00, arg0->unk_3C[1].unk_04, + arg0->unk_3C[1].unk_08); + ((func8850A3CC)Memmap_GetFragmentVaddr(func_8850A3CC))(arg0->unk_20->unk_60, arg1); + var_a2 = 1; + } else { + arg0->unk_34 = arg0->unk_24[0]->unk_38; + ((func8850628C)Memmap_GetFragmentVaddr(func_8850628C))(arg0->unk_24[0]); + arg0->unk_24[0]->unk_34[arg0->unk_24[0]->unk_38] |= 2; + func_88202D60(arg0, 2); + var_a2 |= 1; + } + break; + + case 2: + if ((func_88201440(arg0->unk_24[0]->unk_2C) != 0) || + (func_88201440(arg0->unk_24[1]->unk_2C) != 0)) { + func_80048B90(8); + ((func8850A10C)Memmap_GetFragmentVaddr(func_8850A10C))( + arg0->unk_20->unk_60, arg0->unk_3C[2].unk_00, arg0->unk_3C[2].unk_04, + arg0->unk_3C[2].unk_08); + ((func8850A3CC)Memmap_GetFragmentVaddr(func_8850A3CC))(arg0->unk_20->unk_60, arg1); + var_a2 = 1; + } else { + arg0->unk_24[0]->unk_34[arg0->unk_24[0]->unk_38] |= 2; + func_88202D60(arg0, 3); + var_a2 |= 1; + } + break; + + case 3: + if (func_88201440(arg0->unk_24[0]->unk_2C) != 0) { + func_80048B90(8); + ((func8850A10C)Memmap_GetFragmentVaddr(func_8850A10C))( + arg0->unk_20->unk_60, arg0->unk_3C[3].unk_00, arg0->unk_3C[3].unk_04, + arg0->unk_3C[3].unk_08); + ((func8850A3CC)Memmap_GetFragmentVaddr(func_8850A3CC))(arg0->unk_20->unk_60, arg1); + var_a2 = 1; + } + break; + } + } + break; + + case 1: + if (var_a2 & 2) { + func_88202D60(arg0, 0); + var_a2 |= 1; + } else if (var_a2 & 4) { + arg0->unk_24[0]->unk_34[arg0->unk_24[0]->unk_38] |= 0x100; + } + break; + + case 2: + if (var_a2 & 2) { + func_88202D60(arg0, 0); + var_a2 |= 1; + } else if (var_a2 & 4) { + if (arg0->unk_34 == arg0->unk_24[0]->unk_38) { + var_a2 = 0x80000101; + } else { + arg0->unk_24[0]->unk_34[arg0->unk_24[0]->unk_38] |= 2; + arg0->unk_24[0]->unk_34[arg0->unk_34] |= 0x100; + arg0->unk_24[0]->unk_34[arg0->unk_24[0]->unk_38] |= 0x100; + } + } + break; + + case 3: + if (var_a2 & 2) { + func_88202D60(arg0, 0); + var_a2 |= 1; + } else if (var_a2 & 4) { + arg0->unk_24[1]->unk_34[arg0->unk_24[1]->unk_38] |= 2; + arg0->unk_24[0]->unk_34[arg0->unk_24[0]->unk_38] |= 0x100; + arg0->unk_24[1]->unk_34[arg0->unk_24[1]->unk_38] |= 0x100; + } + break; + } + return var_a2; +} + +void func_88203538(); +static Color_RGBA8 D_88217C48 = { 0xF0, 0xF0, 0xF0, 0xFF }; +static Color_RGBA8 D_88217C4C = { 0x5A, 0x5A, 0xA6, 0xFF }; +static Color_RGBA8 D_88217C50 = { 0x40, 0x40, 0x74, 0xFF }; +static Color_RGBA8 D_88217C54 = { 0x78, 0x78, 0xF1, 0xFF }; +static Color_RGBA8 D_88217C58 = { 0x5E, 0x5E, 0xBE, 0xFF }; #pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1A9780/func_88203538.s") -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1A9780/func_8820399C.s") +void func_8820399C(unk_func_8820399C* arg0, s32 arg1, unk_func_8850143C* arg2) { + ((func885007CC)Memmap_GetFragmentVaddr(func_885007CC))(arg0, sizeof(unk_func_8820399C)); + + arg0->unk_00.unk_18 = func_88203A20; + arg0->unk_00.unk_14.unk_00 = arg2->unk_00.unk_14.unk_00; + arg0->unk_00.unk_14.unk_02 = arg2->unk_00.unk_14.unk_02; + arg0->unk_2C = func_8002EC08(func_80024F68(func_80029080())); + arg0->unk_30 = arg1; +} + +s32 func_88203A20(unk_func_8820399C* arg0, s32 arg1, s32 arg2) { + static Color_RGBA8 D_88217C5C = { 0xF0, 0xF0, 0xF0, 0xFF }; + + char* sp2C; + s32 temp_v0; + s32 var_s0; + + if (arg0->unk_30 == 0) { + sp2C = func_8002D7C0(NULL, 0, D_88224FA4, 0xB); + } else { + sp2C = func_8002D7C0(NULL, 0, D_88224FA4, 0xC); + } + temp_v0 = func_8001F5B0(8, 0, sp2C); + + gDPPipeSync(gDisplayListHead++); + + gDPSetCycleType(gDisplayListHead++, G_CYC_COPY); + gDPSetRenderMode(gDisplayListHead++, G_RM_NOOP, G_RM_NOOP2); + gDPSetAlphaCompare(gDisplayListHead++, G_AC_THRESHOLD); + gDPSetTexturePersp(gDisplayListHead++, G_TP_NONE); + + if (arg0->unk_30 == 0) { + var_s0 = (((arg0->unk_00.unk_14.unk_00 - temp_v0) - 0x20) / 2) + arg1 + 0x20; + + gDPLoadTextureBlock(gDisplayListHead++, D_88223470[arg0->unk_2C], G_IM_FMT_RGBA, G_IM_SIZ_16b, 24, 26, 0, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, + G_TX_NOLOD); + gSPTextureRectangle(gDisplayListHead++, (var_s0 - 0x20) << 2, (arg2 + 2) << 2, (var_s0 - 9) << 2, + (arg2 + 0x1B) << 2, G_TX_RENDERTILE, 0, 0, 0x1000, 0x0400); + } else { + var_s0 = (((arg0->unk_00.unk_14.unk_00 - temp_v0) - 0x30) / 2) + arg1 + 0x30; + + gDPLoadTextureBlock(gDisplayListHead++, D_88223488, G_IM_FMT_RGBA, G_IM_SIZ_16b, 48, 26, 0, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, + G_TX_NOLOD); + gSPTextureRectangle(gDisplayListHead++, (var_s0 - 0x30) << 2, (arg2 + 2) << 2, (var_s0 - 9) << 2, + (arg2 + 0x1B) << 2, G_TX_RENDERTILE, 0, 0, 0x1000, 0x0400); + } + + gDPPipeSync(gDisplayListHead++); + + gDPSetAlphaCompare(gDisplayListHead++, G_AC_NONE); + + func_8001F3F4(); + func_8001F324(D_88217C5C.r, D_88217C5C.g, D_88217C5C.b, D_88217C5C.a); + func_8001EBE0(8, 0); + func_8001F1E8(var_s0, arg2 + 5, sp2C); + func_8001F444(); + + return 0; +} + +#ifdef NON_MATCHING +void func_88203ED8(unk_func_88203ED8* arg0, s32 arg1, s32 arg2, unk_func_88205880_A030* arg3, + unk_func_88001300_000* arg4, unk_func_88201DA0* arg5, s32 arg6, char** arg7, MemoryPool* arg8) { + static Color_RGBA8 D_88217C60 = { 0x6C, 0x6C, 0x7E, 0xFF }; + static Color_RGBA8 D_88217C64 = { 0x50, 0x50, 0x86, 0xFF }; + static Color_RGBA8 D_88217C68 = { 0x79, 0x79, 0xCB, 0xFF }; + static unk_D_88217C6C D_88217C6C[] = { + { + 249, + 36, + 54, + 42, + D_88218FD0, + 48, + D_882181B8, + 0, + }, + { + 249, + 84, + 54, + 42, + D_88219D58, + 48, + D_882181C0, + 1, + }, + { + 249, + 132, + 54, + 42, + D_8821AAE0, + 48, + D_882181C8, + 0, + }, + { + 249, + 180, + 54, + 42, + D_8821B868, + 48, + D_882181D0, + 1, + }, + { + 249, + 228, + 54, + 42, + D_88218248, + 48, + D_882181B0, + 0, + }, + }; + static Color_RGBA8 D_88217CE4 = { 0xFF, 0xFF, 0x00, 0xFF }; + static Color_RGBA8 D_88217CE8 = { 0x2D, 0x1A, 0x41, 0xFF }; + static Color_RGBA8 D_88217CEC = { 0x6F, 0x5F, 0x7F, 0xFF }; + static Color_RGBA8* D_88217CF0[5] = { D_882181F0, D_88218208, D_88218200, D_88218210, D_882181F8 }; + + s32 i; + s32 j; + s32 x; + s32 spB4; + unk_func_885012A4* spA8; + unk_func_885012A4* spA4; + unk_func_885012A4* spA0; + unk_func_885012A4* sp9C; + unk_func_885012A4* sp98; + unk_func_88001300_000* sp94; + unk_func_88001300_000* sp90; + unk_func_8850143C* sp8C; + unk_func_8850143C* sp88; + char* temp_s1_2; + unk_func_88001300_03C_01C* temp_s0; + unk_func_8850143C* temp_s0_2; + unk_func_8850878C* temp_s0_3; + unk_func_88503298* temp_s0_4; + unk_D_88217C6C* ptr; + unk_func_882149A0* ptr2; + + ((func885007CC)Memmap_GetFragmentVaddr(func_885007CC))(arg0, sizeof(unk_func_88203ED8)); + arg0->unk_00.unk_1C = func_88204BA8; + arg0->unk_00.unk_20 = func_88204C28; + arg0->unk_00.unk_24 = func_88204BFC; + // clang-format off + arg0->unk_00.unk_10.unk_00 = arg1; arg0->unk_00.unk_10.unk_02 = arg2; + // clang-format on + arg0->unk_5C = arg5; + + arg0->unk_64 = mem_pool_alloc(arg8, sizeof(unk_func_88203ED8_064)); + func_88204DC0(arg0->unk_64, arg0); + + arg0->unk_2C = mem_pool_alloc(arg8, sizeof(unk_func_88001300_038)); + ((func88502274)Memmap_GetFragmentVaddr(func_88502274))(arg0->unk_2C, 0, 0, 0x228, 0x172); + arg0->unk_2C->unk_28 |= 0x400; + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0, arg0->unk_2C); + + sp98 = mem_pool_alloc(arg8, sizeof(unk_func_885012A4)); + ((func885012A4)Memmap_GetFragmentVaddr(func_885012A4))(sp98, 0, 0, 0x228, 6, D_88217C60); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0->unk_2C, sp98); + + sp9C = mem_pool_alloc(arg8, sizeof(unk_func_885012A4)); + ((func885012A4)Memmap_GetFragmentVaddr(func_885012A4))(sp9C, 0, 0x138, 0x228, 6, D_88217C60); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0->unk_2C, sp9C); + + spA0 = mem_pool_alloc(arg8, sizeof(unk_func_885012A4)); + ((func885012A4)Memmap_GetFragmentVaddr(func_885012A4))(spA0, 0, 6, 0xA, 0x132, D_88217C60); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0->unk_2C, spA0); + + spA4 = mem_pool_alloc(arg8, sizeof(unk_func_885012A4)); + ((func885012A4)Memmap_GetFragmentVaddr(func_885012A4))(spA4, 0x21E, 6, 0xA, 0x132, D_88217C60); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0->unk_2C, spA4); + + spA8 = mem_pool_alloc(arg8, sizeof(unk_func_885012A4)); + ((func885012A4)Memmap_GetFragmentVaddr(func_885012A4))(spA8, 0xF3, 6, 0x42, 0x132, D_88217C60); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0->unk_2C, spA8); + + sp90 = mem_pool_alloc(arg8, sizeof(unk_func_88001300_000)); + ((func8850AB48)Memmap_GetFragmentVaddr(func_8850AB48))(sp90, 8, 4, 0xED, 0x136); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0->unk_2C, sp90); + + sp94 = mem_pool_alloc(arg8, sizeof(unk_func_88001300_000)); + ((func8850AB48)Memmap_GetFragmentVaddr(func_8850AB48))(sp94, 0x133, 4, 0xED, 0x136); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0->unk_2C, sp94); + + sp88 = mem_pool_alloc(arg8, sizeof(unk_func_8850143C)); + ((func8850143C)Memmap_GetFragmentVaddr(func_8850143C))(sp88, 0xA, 6, 0xE9, 0x1E, D_88217C64, D_88217C68); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0->unk_2C, sp88); + + sp8C = mem_pool_alloc(arg8, sizeof(unk_func_8850143C)); + ((func8850143C)Memmap_GetFragmentVaddr(func_8850143C))(sp8C, 0x135, 6, 0xE9, 0x1E, D_88217C64, D_88217C68); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0->unk_2C, sp8C); + + arg0->unk_30 = mem_pool_alloc(arg8, sizeof(unk_func_8820399C)); + func_8820399C(arg0->unk_30, 0, sp88); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(sp88, arg0->unk_30); + + arg0->unk_34 = mem_pool_alloc(arg8, sizeof(unk_func_8820399C)); + func_8820399C(arg0->unk_34, 1, sp8C); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(sp8C, arg0->unk_34); + + arg0->unk_40 = mem_pool_alloc(arg8, sizeof(unk_func_88217740)); + func_88217740(arg0->unk_40, 0xF4, 0xA); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0->unk_2C, arg0->unk_40); + + ptr = &D_88217C6C[0]; + for (i = 0; i < 5; i++, ptr++) { + ptr2 = mem_pool_alloc(arg8, sizeof(unk_func_882149A0)); + arg0->unk_44[i] = ptr2; + func_882149A0(ptr2, ptr->unk_00, ptr->unk_02, ptr->unk_04, ptr->unk_06, ptr->unk_08, ptr->unk_0C, + ptr->unk_10[0], ptr->unk_10[1], D_88217C60); + if (ptr->unk_14 != 0) { + func_882158BC(ptr2); + } + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0->unk_2C, ptr2); + } + + arg0->unk_68 = mem_pool_alloc(arg8, sizeof(unk_func_88001300_03C)); + ((func8850C284)Memmap_GetFragmentVaddr(func_8850C284))(arg0->unk_68, 5, 1, arg8); + ((func8850BF80)Memmap_GetFragmentVaddr(func_8850BF80))(arg0->unk_64, arg0->unk_68); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1A9780/func_88203A20.s") + for (j = 0; j < 5; j++) { + arg0->unk_68->unk_18[arg0->unk_68->unk_2C * j] = arg0->unk_44[j]; + } + ((func8850CB48)Memmap_GetFragmentVaddr(func_8850CB48))(arg0->unk_68, 0); + + temp_s0 = mem_pool_alloc(arg8, sizeof(unk_func_88001300_03C_01C)); + ((func88503340)Memmap_GetFragmentVaddr(func_88503340))(temp_s0, 0, 0, 0x10, 0x10, D_88217CE4); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0->unk_2C, temp_s0); + arg0->unk_68->unk_1C = temp_s0; + + temp_s0_2 = mem_pool_alloc(arg8, sizeof(unk_func_8850143C)); + ((func8850143C)Memmap_GetFragmentVaddr(func_8850143C))(temp_s0_2, 0, 0x13E, 0x228, 0x34, D_88217CE8, D_88217CEC); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0->unk_2C, temp_s0_2); + + arg0->unk_58 = mem_pool_alloc(arg8, sizeof(unk_func_88500994)); + ((func88500994)Memmap_GetFragmentVaddr(func_88500994))(arg0->unk_58, 0, 0); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(temp_s0_2, arg0->unk_58); + + for (i = 0; i < 5; i++) { + temp_s1_2 = func_8002D7C0(NULL, 0, D_88224FA4, i + 1); + + temp_s0_3 = mem_pool_alloc(arg8, sizeof(unk_func_8850878C)); + ((func8850878C)Memmap_GetFragmentVaddr(func_8850878C))(temp_s0_3, (0x228 - func_8001F5B0(0, 0, temp_s1_2)) / 2, + 0xE, temp_s1_2, 0x10); + temp_s0_3->unk_30 = D_88217CF0[i][0]; + temp_s0_3->unk_34 = D_88217CF0[i][1]; + temp_s0_3->unk_44 = temp_s0_3->unk_44; + temp_s0_3->unk_44 = 1; + ((func88500A3C)Memmap_GetFragmentVaddr(func_88500A3C))(arg0->unk_58, temp_s0_3); + } + + func_8001F5B0(8, 0, func_8002D7C0(NULL, 0, D_88224FA4, 0x31)); + func_8001F5B0(8, 0, " 00"); + spB4 = func_8001F5B0(4, 0, "00"); + + arg0->unk_38 = mem_pool_alloc(arg8, sizeof(unk_func_88200FA0_030_030)); + ((func885060BC)Memmap_GetFragmentVaddr(func_885060BC))(arg0->unk_38, 0xA, 0x24, func_88203538, 0xE9, 0x17, 0xC, 1, + arg8); + ((func88506384)Memmap_GetFragmentVaddr(func_88506384))(arg0->unk_38, &arg3[0], arg8); + arg0->unk_38->unk_44->unk_00.unk_28 |= 0x100; + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0->unk_2C, arg0->unk_38); + + arg0->unk_3C = mem_pool_alloc(arg8, sizeof(unk_func_88200FA0_030_030)); + ((func885060BC)Memmap_GetFragmentVaddr(func_885060BC))(arg0->unk_3C, 0x135, 0x24, func_88203538, 0xE9, 0x17, 0xC, 1, + arg8); + ((func88506384)Memmap_GetFragmentVaddr(func_88506384))(arg0->unk_3C, &arg3[1], arg8); + arg0->unk_3C->unk_44->unk_00.unk_28 |= 0x100; + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0->unk_2C, arg0->unk_3C); + + arg0->unk_6C = mem_pool_alloc(arg8, sizeof(unk_func_882025E0_1A9780)); + func_882025E0(arg0->unk_6C, arg0->unk_38, arg0->unk_3C, arg0, arg8); + ((func8850BF80)Memmap_GetFragmentVaddr(func_8850BF80))(arg0->unk_64, arg0->unk_6C); + + arg0->unk_70 = mem_pool_alloc(arg8, sizeof(unk_func_8850CD44)); + ((func8850CD44)Memmap_GetFragmentVaddr(func_8850CD44))(arg0->unk_70, 2, arg8); + ((func8850CC74)Memmap_GetFragmentVaddr(func_8850CC74))(arg0->unk_64, arg0->unk_70); + + for (i = 0; i < 2; i++) { + arg0->unk_74[i] = mem_pool_alloc(arg8, sizeof(unk_func_882173EC)); + func_882173EC(arg0->unk_74[i], 0, 0); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0->unk_2C, arg0->unk_74[i]); + + arg0->unk_7C[i] = mem_pool_alloc(arg8, sizeof(unk_func_8820253C)); + func_8820253C(arg0->unk_7C[i], 0xB4 - spB4, 0, 0); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0->unk_74[i], arg0->unk_7C[i]); + + arg0->unk_70->unk_1C[i] = arg0->unk_74[i]; + } + + temp_s0_4 = mem_pool_alloc(arg8, sizeof(unk_func_88503298)); + ((func88503298)Memmap_GetFragmentVaddr(func_88503298))(temp_s0_4, arg0->unk_2C, arg4); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0, temp_s0_4); + + arg0->unk_60 = mem_pool_alloc(arg8, sizeof(unk_func_88509F48)); + ((func88509F48)Memmap_GetFragmentVaddr(func_88509F48))(arg0->unk_60, 0, 0, 0x228, 0x172, arg8, arg6); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0, arg0->unk_60); + + arg0->unk_84 = mem_pool_alloc(arg8, sizeof(unk_func_889000C4)); + ((func889000C4)Memmap_GetFragmentVaddr(func_889000C4))(arg0->unk_84, 0, arg0->unk_2C, 0, arg7, arg8); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0, arg0->unk_84); + + if (sp88) {} + if (sp8C) {} + if (sp90) {} + if (sp94) {} + if (sp98) {} + if (sp9C) {} + if (spA0) {} + if (spA4) {} + if (spA8) {} +} +#else +static Color_RGBA8 D_88217C60 = { 0x6C, 0x6C, 0x7E, 0xFF }; +static Color_RGBA8 D_88217C64 = { 0x50, 0x50, 0x86, 0xFF }; +static Color_RGBA8 D_88217C68 = { 0x79, 0x79, 0xCB, 0xFF }; +static unk_D_88217C6C D_88217C6C[] = { + { + 249, + 36, + 54, + 42, + D_88218FD0, + 48, + D_882181B8, + 0, + }, + { + 249, + 84, + 54, + 42, + D_88219D58, + 48, + D_882181C0, + 1, + }, + { + 249, + 132, + 54, + 42, + D_8821AAE0, + 48, + D_882181C8, + 0, + }, + { + 249, + 180, + 54, + 42, + D_8821B868, + 48, + D_882181D0, + 1, + }, + { + 249, + 228, + 54, + 42, + D_88218248, + 48, + D_882181B0, + 0, + }, +}; +static Color_RGBA8 D_88217CE4 = { 0xFF, 0xFF, 0x00, 0xFF }; +static Color_RGBA8 D_88217CE8 = { 0x2D, 0x1A, 0x41, 0xFF }; +static Color_RGBA8 D_88217CEC = { 0x6F, 0x5F, 0x7F, 0xFF }; +static Color_RGBA8* D_88217CF0[5] = { D_882181F0, D_88218208, D_88218200, D_88218210, D_882181F8 }; #pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1A9780/func_88203ED8.s") +#endif + +s32 func_88204BA8(unk_func_88203ED8* arg0) { + if (arg0->unk_64->unk_1C == 0) { + ((func88500A6C)Memmap_GetFragmentVaddr(func_88500A6C))(arg0->unk_58, arg0->unk_68->unk_24); + } + return 0; +} + +void func_88204BFC(unk_func_88203ED8* arg0, s32 arg1) { + arg0->unk_00.unk_2A = arg1; + arg0->unk_64->unk_14(arg0->unk_64); +} + +s32 func_88204C28(unk_func_88203ED8* arg0, Controller* arg1) { + s32 var_v1; + + if (arg0->unk_2C->unk_30 & 2) { + var_v1 = arg0->unk_64->unk_10(arg0->unk_64, arg1); + } else { + var_v1 = 1; + } + return var_v1; +} + +void func_88204C74(unk_func_88203ED8* arg0) { + func_882158BC(arg0->unk_44[0]); + func_882158BC(arg0->unk_44[1]); + func_882158BC(arg0->unk_44[2]); + func_882158BC(arg0->unk_44[3]); +} + +void func_88204CBC(unk_func_88203ED8* arg0) { + unk_func_88205880_00D0* sp34; + unk_func_88205880_00D0* sp30; + unk_func_88001300_000_010 sp2C; + unk_func_88001300_000_010 sp28; + + func_88202810(arg0->unk_6C, &sp30, &sp34); + func_882028EC(arg0->unk_6C, &sp2C, &sp28); + + func_882025AC(arg0->unk_7C[0], sp30); + func_882175F4(arg0->unk_74[0], sp2C, sp28); + + if (sp34 != NULL) { + func_882025AC(arg0->unk_7C[1], sp34); + func_882175F4(arg0->unk_74[1], sp28, sp2C); + } + + arg0->unk_6C->unk_14(arg0->unk_6C, 0); + + ((func8850CF00)Memmap_GetFragmentVaddr(func_8850CF00))(arg0->unk_70, 0); + + arg0->unk_6C->unk_14(arg0->unk_6C, 1); +} + +void func_88204DC0(unk_func_88203ED8_064* arg0, unk_func_88203ED8* arg1) { + ((func8850BDF0)Memmap_GetFragmentVaddr(func_8850BDF0))(arg0); + + arg0->unk_10 = func_882052F4; + arg0->unk_24 = arg1; +} + +u32 func_88204E0C(unk_func_88205880_00D0* arg0, s32 arg1, s32 arg2, s32 arg3) { + s32 i; + u32 sp90 = 0; + unk_func_80022C28_ret* temp_v0 = func_80022C28(arg1, arg2, arg3, 0); + unk_func_80026268_arg0* var_s1; + unk_func_80026268_arg0 sp34; + + if (temp_v0 == NULL) { + return 0; + } + + var_s1 = arg0->unk_000; + for (i = 0; i < arg0->unk_690; i++, var_s1++) { + bzero(&sp34, 0x54); + func_80022E18(&sp34, 1, temp_v0); + if (bcmp(&sp34, var_s1, sizeof(unk_func_80026268_arg0)) != 0) { + sp90 = 1; + break; + } + } + + func_80022D8C(temp_v0); + return sp90; +} + +s32 func_88204EE8(unk_func_88203ED8* arg0) { + s32 i; + s32 temp_s3 = func_80029080(); + s32 var_s2 = 0; + u32 temp_v0; + unk_func_88205880_00D0** var_s1; + + var_s1 = arg0->unk_38->unk_2C->unk_00; + + for (i = 0; i < 12; i++) { + if ((var_s1[i]->unk_694 != 0x21) || (i != var_s1[i]->unk_698)) { + if ((var_s1[i]->unk_690 != 0) || (func_8002EE1C(0x21, temp_s3, i) != 0)) { + var_s2 |= 2; + var_s1[i]->unk_69C = 1; + } + } else if (var_s1[i]->unk_69C != 0) { + temp_v0 = func_88204E0C(var_s1[i], 0x21, temp_s3, i); + var_s1[i]->unk_69C = temp_v0; + if (temp_v0 != 0) { + var_s2 |= 2; + } + } + } + + var_s1 = arg0->unk_3C->unk_2C->unk_00; + + for (i = 0; i < 12; i++) { + if ((var_s1[i]->unk_694 != 0x11) || (i != var_s1[i]->unk_698)) { + if ((var_s1[i]->unk_690 != 0) || (func_8002EE1C(0x11, 0, i) != 0)) { + var_s2 |= 4; + var_s1[i]->unk_69C = 1; + } + } else if (var_s1[i]->unk_69C != 0) { + temp_v0 = func_88204E0C(var_s1[i], 0x11, 0, i); + var_s1[i]->unk_69C = temp_v0; + if (temp_v0 != 0) { + var_s2 |= 4; + } + } + } + + return var_s2; +} + +void func_8820508C(unk_func_88203ED8* arg0, s32 arg1) { + s32 i; + s32 temp_s3 = func_80029080(); + unk_func_88205880_00D0** var_s1; + + ((func88500A6C)Memmap_GetFragmentVaddr(func_88500A6C))(arg0->unk_84->unk_40, 2); + func_8002EEA8(NULL); + + var_s1 = arg0->unk_38->unk_2C->unk_00; + + for (i = 0; i < 12; i++) { + if (var_s1[i]->unk_69C != 0) { + func_88201294(0x21, temp_s3, i, var_s1[i]); + func_88201210(var_s1[i]); + } + } + + var_s1 = arg0->unk_3C->unk_2C->unk_00; + + for (i = 0; i < 12; i++) { + if (var_s1[i]->unk_69C != 0) { + func_88201294(0x11, 0, i, var_s1[i]); + } + } + + if (arg1 & 4) { + func_800284B4(3); + } + + if (arg1 & 2) { + func_80025540(temp_s3); + ((func88900970)Memmap_GetFragmentVaddr(func_88900970))(arg0->unk_84, temp_s3); + } + + if (arg1 & 4) { + func_80026E4C(3); + func_800284B4(3); + } +} + +s32 func_882051EC(unk_func_88203ED8* arg0, Controller* arg1) { + s32 sp24 = 1; + s32 sp20 = func_88204EE8(arg0); + s32 temp_v0_2; + + if (sp20 != 0) { + arg0->unk_68->unk_14(arg0->unk_68, 0); + ((func889006D4)Memmap_GetFragmentVaddr(func_889006D4))(arg0->unk_84, 0); + temp_v0_2 = ((func88900808)Memmap_GetFragmentVaddr(func_88900808))(arg0->unk_84, arg1, 1); + + if (temp_v0_2 == 0) { + func_8820508C(arg0, sp20); + ((func889007AC)Memmap_GetFragmentVaddr(func_889007AC))(arg0->unk_84); + } else if (temp_v0_2 == 1) { + ((func889007AC)Memmap_GetFragmentVaddr(func_889007AC))(arg0->unk_84); + } else if (temp_v0_2 == 2) { + ((func889007AC)Memmap_GetFragmentVaddr(func_889007AC))(arg0->unk_84); + sp24 = 0; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1A9780/func_88204BA8.s") + arg0->unk_68->unk_14(arg0->unk_68, 1); + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1A9780/func_88204BFC.s") + return sp24; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1A9780/func_88204C28.s") +#ifdef NON_MATCHING +// Did match but now broken due to merging structs on the func_8820213C call +s32 func_882052F4(unk_func_88203ED8_064* arg0, Controller* arg1) { + s32 sp34; + s32 tmp; + s32 i; + unk_func_88203ED8_064* var_a0; + s32 sp24; + s32 sp20; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1A9780/func_88204C74.s") + sp34 = 0; + if (arg0->unk_20 > 0) { + var_a0 = arg0->unk_04; + for (i = 0; i < arg0->unk_1C; i++) { + var_a0 = var_a0->unk_08; + } + sp34 = var_a0->unk_10(var_a0, arg1); + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1A9780/func_88204CBC.s") + if (sp34 & 1) { + return sp34; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1A9780/func_88204DC0.s") + if (sp34 == 0) { + if (arg1->buttonPressed & 0x4000) { + sp34 = 0x80000002; + } else if (arg1->buttonPressed & 0x8000) { + sp34 = 0x80000004; + } else if (arg1->buttonPressed & 0x30) { + sp34 = 0x01000000; + } + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1A9780/func_88204E0C.s") + if (sp34 & 2) { + switch (arg0->unk_1C) { + case 0: + func_80048B90(3); + sp34 = 2; + if (func_882051EC(arg0->unk_24, arg1) == 0) { + sp34 = 3; + } + break; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1A9780/func_88204EE8.s") + case 1: + ((func8850C064)Memmap_GetFragmentVaddr(func_8850C064))(arg0, 0); + sp34 |= 1; + break; + } + } else if (sp34 & 4) { + switch (arg0->unk_1C) { + case 0: + switch (arg0->unk_24->unk_68->unk_24) { + case 0: + func_88202E74(arg0->unk_24->unk_6C, 0); + ((func8850C064)Memmap_GetFragmentVaddr(func_8850C064))(arg0, 1); + sp34 |= 1; + break; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1A9780/func_8820508C.s") + case 1: + func_88202E74(arg0->unk_24->unk_6C, 1); + ((func8850C064)Memmap_GetFragmentVaddr(func_8850C064))(arg0, 1); + sp34 |= 1; + break; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1A9780/func_882051EC.s") + case 2: + func_88202E74(arg0->unk_24->unk_6C, 2); + ((func8850C064)Memmap_GetFragmentVaddr(func_8850C064))(arg0, 1); + sp34 |= 1; + break; + case 3: + func_88202E74(arg0->unk_24->unk_6C, 3); + ((func8850C064)Memmap_GetFragmentVaddr(func_8850C064))(arg0, 1); + sp34 |= 1; + break; + + case 4: + func_80048B90(3); + sp34 = 2; + if (func_882051EC(arg0->unk_24, arg1) == 0) { + sp34 = 3; + } + break; + } + break; + + case 1: + switch (arg0->unk_24->unk_68->unk_24) { + case 0: + case 2: + func_80048B90(0x18); + func_88204CBC(arg0->unk_24); + func_88202F2C(arg0->unk_24->unk_6C); + func_88202E98(arg0->unk_24->unk_6C); + sp34 = 0x80000081; + break; + + case 1: + func_80048B90(0x18); + func_88204CBC(arg0->unk_24); + func_88202EF4(arg0->unk_24->unk_6C); + func_88202E98(arg0->unk_24->unk_6C); + sp34 = 0x80000081; + break; + + case 3: + func_80048B90(2); + tmp = (arg0->unk_24->unk_6C->unk_38 != 0 ? 1 : 2) << 0x10; + func_8820213C(arg0->unk_24->unk_5C, + &((unk_func_882025E0_1A9780*)arg0->unk_24->unk_6C) + ->unk_24[0] + ->unk_2C->unk_00[0] + ->unk_000[arg0->unk_24->unk_6C->unk_24[0]->unk_38], + tmp | arg0->unk_24->unk_6C->unk_24[0]->unk_38); + + arg0->unk_24->unk_6C->unk_24[0]->unk_00.unk_24(arg0->unk_24->unk_6C->unk_24[0], 0x100); + func_88202394(arg0->unk_24->unk_5C, arg1); + + arg0->unk_24->unk_6C->unk_24[0]->unk_00.unk_24(arg0->unk_24->unk_6C->unk_24[0], 1); + func_88202E98(arg0->unk_24->unk_6C); + sp34 = 1; + break; + } + break; + } + } else if (sp34 & 0x01000000) { + sp34 = 1; + sp24 = (arg1->buttonPressed & 0x20) != 0; + sp20 = arg0->unk_24->unk_6C->unk_38; + + switch (arg0->unk_1C) { + case 0: + sp20 = sp24; + break; + + case 1: + sp34 = 1; + if (func_88202ED8(arg0->unk_24->unk_6C) != 0) { + sp20 = sp24; + } + break; + } + + if (sp20 != arg0->unk_24->unk_6C->unk_38) { + func_88202EB8(arg0->unk_24->unk_6C); + if (arg0->unk_1C == 1) { + func_88202CBC(arg0->unk_24->unk_6C); + } + func_88204C74(arg0->unk_24); + func_88217BC0(arg0->unk_24->unk_40); + + ((func8850BFB0)Memmap_GetFragmentVaddr(func_8850BFB0))(arg0); + + sp34 = 0x80000005; + } + } + return sp34; +} +#else #pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1A9780/func_882052F4.s") +#endif + +void func_882057B4(unk_func_88203ED8* arg0, Controller* arg1) { + s32 var_s1 = 0; + s32 temp_v0; + + arg0->unk_00.unk_24(&arg0->unk_00, 1); + + ((func88502C98)Memmap_GetFragmentVaddr(func_88502C98))(arg0->unk_2C); + + while (var_s1 == 0) { + func_8002EEA8(NULL); + + temp_v0 = arg0->unk_00.unk_20(arg0, arg1); + if (!(temp_v0 & 1) && (temp_v0 & 2)) { + var_s1 = 1; + } + + ((func8850BC94)Memmap_GetFragmentVaddr(func_8850BC94))(temp_v0); + } + + arg0->unk_2C->unk_2C = 0xB; +} + +void func_88205880(unk_func_88205880* arg0, s32 arg1, s32 arg2, s32 arg3, MemoryPool* arg4, char** arg5, char** arg6, + char** arg7, char** arg8, char** arg9, char** argA, char** argB, char** argC) { + static Color_RGBA8 D_88217D04 = { 0x1E, 0x50, 0x50, 0xFF }; + static Color_RGBA8 D_88217D08 = { 0x00, 0x0A, 0x0A, 0xFF }; + + unk_func_88001300_000* sp7C; + unk_func_88001300_000* sp78; + unk_func_88001300_000* sp74; + FragmentEntry sp70; + s32 i; + UNUSED s32 pad[2]; + s32 sp60; + unk_func_88500EE4* sp5C; + unk_func_885088F4* sp58; + unk_func_88509A2C* sp54; + unk_func_88509E34* sp50; + + sp60 = func_80029080(); + ((func885007CC)Memmap_GetFragmentVaddr(func_885007CC))(arg0, sizeof(unk_func_88205880)); + arg0->unk_0000.unk_20 = func_88205DD0; + arg0->unk_0000.unk_10.unk_00 = arg1; + arg0->unk_0000.unk_10.unk_02 = arg2; + + if (func_8002513C(sp60) == 0) { + func_80024208(sp60); + } + + func_88201360(arg0->unk_00D0, 0x21, sp60, 0xC); + func_88201360(arg0->unk_5050, 0x11, 0, 0xC); + + for (i = 0; i < 12; i++) { + arg0->unk_9FD0[i] = &arg0->unk_00D0[i]; + } + + for (i = 0; i < 12; i++) { + arg0->unk_A000[i] = &arg0->unk_5050[i]; + } + + func_8002CBB0(&arg0->unk_A030[0], arg0->unk_9FD0, 0xC, 0xC); + func_8002CBB0(&arg0->unk_A030[1], arg0->unk_A000, 0xC, 0xC); + + sp7C = mem_pool_alloc(arg4, sizeof(unk_func_88001300_000)); + ((func885031E8)Memmap_GetFragmentVaddr(func_885031E8))(sp7C, 0, 0, 0x280, 0x1E0); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0, sp7C); + + sp5C = mem_pool_alloc(arg4, sizeof(unk_func_88500EE4)); + ((func88500EE4)Memmap_GetFragmentVaddr(func_88500EE4))(sp5C, 0, 0, 0x280, 0x1E0, D_88223E48, D_88217D04, + D_88217D08); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(sp7C, sp5C); + + sp58 = mem_pool_alloc(arg4, sizeof(unk_func_885088F4)); + ((func885088F4)Memmap_GetFragmentVaddr(func_885088F4))(sp58, 0x41, 0x15C, 0xDC); + sp58->unk_2C = 5; + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(sp7C, sp58); + + sp54 = mem_pool_alloc(arg4, sizeof(unk_func_88509A2C)); + ((func88509A2C)Memmap_GetFragmentVaddr(func_88509A2C))(sp54, 0x38, 0x22, func_80029080(), + func_8002D7C0(NULL, 0, D_88224FA0, 0)); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(sp58, sp54); + + sp50 = mem_pool_alloc(arg4, sizeof(unk_func_88509E34)); + ((func88509E34)Memmap_GetFragmentVaddr(func_88509E34))(sp50, 0, 0, func_8002D7C0(NULL, 0, D_88224FA4, 0)); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(sp58, sp50); + + sp78 = mem_pool_alloc(arg4, sizeof(unk_func_88001300_000)); + ((func885031E8)Memmap_GetFragmentVaddr(func_885031E8))(sp78, 0, 0, 0x280, 0x1E0); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0, sp78); + + sp74 = mem_pool_alloc(arg4, sizeof(unk_func_88001300_000)); + ((func885031E8)Memmap_GetFragmentVaddr(func_885031E8))(sp74, 0, 0, 0x280, 0x1E0); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0, sp74); + + sp70 = FRAGMENT_LOAD(fragment27); + + arg0->unk_0098.unk_04 = arg4; + // clang-format off + arg0->unk_0098.unk_00 = 0x38; arg0->unk_0098.unk_02 = 0x52; + // clang-format on + arg0->unk_0098.unk_14 = sp74; + arg0->unk_0098.unk_18 = NULL; + arg0->unk_0098.unk_1C = arg6; + arg0->unk_0098.unk_20 = arg7; + arg0->unk_0098.unk_24 = arg8; + arg0->unk_0098.unk_28 = arg9; + arg0->unk_0098.unk_2C = argA; + arg0->unk_0098.unk_30 = argB; + arg0->unk_0098.unk_34 = argC; + + sp70(0, &arg0->unk_0098); + + arg0->unk_0094 = mem_pool_alloc(arg4, sizeof(unk_func_88201DA0)); + func_88201DA0(arg0->unk_0094, 0x37, 0x52, sp78, sp70, &arg0->unk_0098, arg4); + + arg0->unk_002C = mem_pool_alloc(arg4, sizeof(unk_func_88203ED8)); + func_88203ED8(arg0->unk_002C, 0x2C, 0x4C, &arg0->unk_A030, sp7C, arg0->unk_0094, arg3, arg5, arg4); + + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(sp78, arg0->unk_002C); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(sp74, arg0->unk_0094); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0, arg0->unk_0098.unk_08); +} + +s32 func_88205DD0(unk_func_88205880* arg0, Controller* arg1) { + return arg0->unk_002C->unk_00.unk_20(arg0->unk_002C, arg1); +} + +void func_88205DF8(unk_func_88205880* arg0) { + s32 sp34 = 0; + + while (sp34 == 0) { + func_800079C4(); + + ((func885008C4)Memmap_GetFragmentVaddr(func_885008C4))(arg0); + ((func88500828)Memmap_GetFragmentVaddr(func_88500828))(arg0, 0, 0); + + func_80007778(); + func_8002EF18(&sp34); + } +} + +void func_88205E94(unk_func_88205880* arg0) { + func_8001F738(gPlayer1Controller); + func_882057B4(arg0->unk_002C, gPlayer1Controller); + + while (arg0->unk_002C->unk_2C->unk_28 & 1) { + func_8002EEA8(NULL); + } + + func_8002EEA8(1); + osStopThread(NULL); +} + +void func_88205F1C(s32 arg0) { + MemoryPool* sp6C; + unk_func_88205880* sp68; + u8* sp64; + func_88002628_sp38* sp60; + char** sp5C; + char** sp58; + char** sp54; + char** sp50; + char** sp4C; + char** sp48; + char** sp44; + char** sp40; + + main_pool_push_state('BXPC'); + + FRAGMENT_LOAD(fragment25); + + func_8001B058(); + sp64 = main_pool_alloc(0x1000, 0); + sp6C = mem_pool_try_init(0x10000, 0); + func_8002D510(); + D_88224FA0 = func_8002D5AC(0x2A); + D_88224FA4 = func_8002D5AC(4); + sp5C = func_8002D5AC(7); + sp58 = func_8002D5AC(6); + sp54 = func_8002D5AC(0x24); + sp50 = func_8002D5AC(0x25); + sp4C = func_8002D5AC(0x26); + sp48 = func_8002D5AC(0x28); + sp44 = func_8002D5AC(0x29); + sp40 = func_8002D5AC(0xB); + + sp68 = mem_pool_alloc(sp6C, sizeof(unk_func_88205880)); + func_88205880(sp68, 0, 0, arg0, sp6C, sp5C, sp58, sp54, sp50, sp4C, sp48, sp44, sp40); + + sp60 = ALIGN16((u32)mem_pool_alloc(sp6C, sizeof(func_88002628_sp38))); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1A9780/func_882057B4.s") + osCreateThread(&sp60->thread, 0x32, func_88205E94, sp68, sp64 + 0x1000, osGetThreadPri(NULL) - 1); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1A9780/func_88205880.s") + func_8002EE78(); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1A9780/func_88205DD0.s") + osStartThread(&sp60->thread); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1A9780/func_88205DF8.s") + func_88205DF8(sp68); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1A9780/func_88205E94.s") + osDestroyThread(&sp60->thread); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1A9780/func_88205F1C.s") + main_pool_pop_state('BXPC'); +} diff --git a/src/fragments/23/fragment23_1AE680.c b/src/fragments/23/fragment23_1AE680.c index a2dc7a53..9736ef25 100644 --- a/src/fragments/23/fragment23_1AE680.c +++ b/src/fragments/23/fragment23_1AE680.c @@ -1,141 +1,2570 @@ -#include "global.h" - +#include "fragment23.h" +#include "src/12D80.h" +#include "src/1AB70.h" +#include "src/1CF30.h" +#include "src/20330.h" +#include "src/26820.h" +#include "src/29BA0.h" +#include "src/2D340.h" +#include "src/2E110.h" +#include "src/3FB0.h" +#include "src/49790.h" +#include "src/hal_libc.h" +#include "src/fragments/25/fragment25.h" +#include "src/memmap.h" +#include "src/memory.h" +#include "src/stage_loader.h" + +typedef void (*ThreadEntries)(unk_func_8820BE14*); + +typedef struct unk_D_88217D10 { + /* 0x00 */ s32 unk_00; + /* 0x04 */ s32 unk_04; + /* 0x08 */ u8 unk_08; + /* 0x09 */ u8 unk_09; + /* 0x0A */ u8 unk_0A; + /* 0x0B */ u8 unk_0B; +} unk_D_88217D10; // size = 0xC + +typedef struct unk_D_88217E40 { + /* 0x00 */ s32 unk_00; + /* 0x04 */ s32 unk_04; + /* 0x08 */ s32 unk_08; + /* 0x0C */ s32 unk_0C; + /* 0x10 */ u8* unk_10; +} unk_D_88217E40; // size = 0x14 + +typedef struct unk_D_88217EA4 { + /* 0x00 */ s16 unk_00; + /* 0x02 */ s16 unk_02; + /* 0x04 */ s16 unk_04; + /* 0x06 */ s16 unk_06; + /* 0x08 */ u8* unk_08; + /* 0x0C */ s16 unk_0C; + /* 0x0E */ s16 unk_0E; + /* 0x10 */ Color_RGBA8* unk_10; + /* 0x14 */ s32 unk_14; + /* 0x18 */ u16 unk_18; +} unk_D_88217EA4; // size = 0x1C + +void func_8820C5BC(unk_func_8820BE14*); +void func_8820C63C(unk_func_8820BE14*); +void func_88207C54(unk_func_8820B12C_02C*); +s32 func_8820ADEC(unk_func_8820BE14_02C*); +void func_88207C34(unk_func_8820B12C_02C*, s32); +void func_88207D0C(unk_func_8820B12C_02C*, s32); +s32 func_88208600(unk_func_8820B12C_02C*, Controller*); +s32 func_8820AF78(unk_func_8820BE14_02C*, Controller*); +void func_8820B0A0(unk_func_8820BE14_02C*, s32); +void func_8820B12C(unk_func_8820B12C*, unk_func_8820BE14_02C*); +s32 func_8820B838(unk_func_8820B12C*, Controller*); +void func_88207A54(unk_func_882079D8* arg0, unk_func_88205880_00D0* arg1); +s32 func_88207A5C(unk_func_882079D8*, s32, s32); +s32 func_88206F44(unk_func_8820BE14_02C_078*, Controller*); +s32 func_88208CE4(unk_func_88208C5C*, s32, s32); +void func_88209A88(unk_func_8820BE14_02C_070* arg0, unk_func_88205880_00D0* arg1); +s32 func_8820938C(unk_func_8820BE14_02C_070*, s32, s32); + +static char** D_88224FB0; +static char** D_88224FB4; +static char** D_88224FB8; +static char** D_88224FBC; + +#ifdef NON_MATCHING +void func_88206110(unk_func_8820BE14_sp* arg0) { + static unk_D_88217D10 D_88217D10[2][9] = { + { + { 1, 0x87, 0x21, 0x2D, 0, 0 }, + { 4, 0x87, 0xA, 0x2D, 0, 0 }, + { 7, 0x87, 0x21, 0x27, 0, 0 }, + { 0x6A, 0x1F40, 0x18, 0x60, 0, 0 }, + { 0x6B, 0x1F40, 4, 0x61, 0, 0 }, + { 0x85, 0x3D09, 0x21, 0x1C, 0, 0 }, + { 0x8A, 0x1F40, 0x37, 0x6E, 0, 0 }, + { 0x8C, 0x1F40, 0xA, 0x6A, 0, 0 }, + { 0x36, 0xD2F, 0xA, 0x85, 0, 0 }, + }, + { + { 1, 0x87, 0x21, 0x2D, 0, 0 }, + { 4, 0x87, 0xA, 0x2D, 0, 0 }, + { 7, 0x87, 0x21, 0x27, 0, 0 }, + { 0x6A, 0x1F40, 0x18, 0x60, 0, 0 }, + { 0x6B, 0x1F40, 4, 0x61, 0, 0 }, + { 0x85, 0x3D09, 0x21, 0x27, 0, 0 }, + { 0x8A, 0x1F40, 0x37, 0x6E, 0, 0 }, + { 0x8C, 0x1F40, 0xA, 0x6A, 0, 0 }, + { 0x36, 0xD2F, 0xA, 0x85, 0, 0 }, + }, + }; + + s32 i; + s32 var_a2; + unk_D_88217D10* var_v0; + unk_D_88217D10* temp_a1; + + bzero(arg0, sizeof(unk_func_8820BE14_sp)); + + arg0->unk_00 = func_8002816C(); + if (func_80024F68(func_80029080()) == 7) { + var_a2 = 1; + } else { + var_a2 = 0; + } + + temp_a1 = D_88217D10[var_a2]; + + for (i = 0, var_v0 = temp_a1; i < 9; i++, var_v0++) { + if (var_v0->unk_00 == arg0->unk_00) { + break; + } + } + + if (i == 9) { + i = 0; + var_v0 = D_88217D10[var_a2]; + } + + arg0->unk_10 = var_v0->unk_04; + arg0->unk_09 = temp_a1[i].unk_08; + arg0->unk_0A = temp_a1[i].unk_09; + arg0->unk_0B = temp_a1[i].unk_0A; + arg0->unk_0C = temp_a1[i].unk_0B; + + arg0->unk_0E = 0x7D0; + arg0->unk_14 = 0; + arg0->unk_16 = 0; + arg0->unk_18 = 0; + arg0->unk_1A = 0; + arg0->unk_1C = 0; + + arg0->unk_1E = guRandom(); + + arg0->unk_06 = D_80070FA0[arg0->unk_00 - 1].unk_06; + arg0->unk_07 = D_80070FA0[arg0->unk_00 - 1].unk_07; + + func_80022734(arg0); + + arg0->unk_04 = arg0->unk_24; + + HAL_Strcpy(arg0->unk_30, func_8002D7C0(NULL, 0, D_88224FB8, arg0->unk_00 - 1)); + HAL_Strcpy(arg0->unk_3B, func_8002D7C0(NULL, 0, D_88224FB4, 0x17)); + + func_800228B0(arg0); + + if (func_8002816C() & 0x100) { + arg0->unk_08 = 0xA8; + } else { + arg0->unk_08 = 0xA7; + } + + arg0->unk_52 = 0; + arg0->unk_53 = 0; + arg0->unk_25 = 0; +} +#else +static unk_D_88217D10 D_88217D10[2][9] = { + { + { 1, 0x87, 0x21, 0x2D, 0, 0 }, + { 4, 0x87, 0xA, 0x2D, 0, 0 }, + { 7, 0x87, 0x21, 0x27, 0, 0 }, + { 0x6A, 0x1F40, 0x18, 0x60, 0, 0 }, + { 0x6B, 0x1F40, 4, 0x61, 0, 0 }, + { 0x85, 0x3D09, 0x21, 0x1C, 0, 0 }, + { 0x8A, 0x1F40, 0x37, 0x6E, 0, 0 }, + { 0x8C, 0x1F40, 0xA, 0x6A, 0, 0 }, + { 0x36, 0xD2F, 0xA, 0x85, 0, 0 }, + }, + { + { 1, 0x87, 0x21, 0x2D, 0, 0 }, + { 4, 0x87, 0xA, 0x2D, 0, 0 }, + { 7, 0x87, 0x21, 0x27, 0, 0 }, + { 0x6A, 0x1F40, 0x18, 0x60, 0, 0 }, + { 0x6B, 0x1F40, 4, 0x61, 0, 0 }, + { 0x85, 0x3D09, 0x21, 0x27, 0, 0 }, + { 0x8A, 0x1F40, 0x37, 0x6E, 0, 0 }, + { 0x8C, 0x1F40, 0xA, 0x6A, 0, 0 }, + { 0x36, 0xD2F, 0xA, 0x85, 0, 0 }, + }, +}; #pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1AE680/func_88206110.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1AE680/func_882062E4.s") - +#endif + +s32 func_882062E4(unk_func_882062E4* arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) { + s32 sp1C = 0; + unk_func_80022C28_ret* sp18; + + sp18 = func_80022C28(arg2, arg3, arg4, 0); + if (sp18 != NULL) { + sp1C = func_80022E18(arg0, arg1, sp18); + func_80022D8C(sp18); + } + return sp1C; +} + +static Color_RGBA8 D_88217DE8 = { 0xF0, 0xF0, 0xF0, 0xFF }; +static Color_RGBA8 D_88217DEC = { 0xF0, 0xF0, 0xF0, 0x4D }; +static Color_RGBA8 D_88217DF0 = { 0xF0, 0xF0, 0x00, 0xFF }; +static Color_RGBA8 D_88217DF4 = { 0x6C, 0x6C, 0x7E, 0xFF }; + +void func_8820634C(); +// const char D_88224E90[] = "%d"; +// const char D_88224E94[] = " 00"; #pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1AE680/func_8820634C.s") +static u8 D_88217DF8[] = { + 0x18, + 0x19, + 0x1A, +}; +static Color_RGBA8 D_88217DFC = { 0xF0, 0xF0, 0xF0, 0xFF }; +static Color_RGBA8 D_88217E00 = { 0xF0, 0xF0, 0xF0, 0x4D }; +static Color_RGBA8 D_88217E04 = { 0xF0, 0xF0, 0x00, 0xFF }; +static Color_RGBA8 D_88217E08 = { 0x6C, 0x6C, 0x7E, 0xFF }; + +void func_8820660C(); #pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1AE680/func_8820660C.s") -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1AE680/func_88206868.s") +s32 func_88206868(unk_func_8820BE14_02C_078_034* arg0, Controller* arg1) { + s32 var_v1; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1AE680/func_882068B4.s") + if (arg0->unk_2C->unk_30 & 2) { + var_v1 = arg0->unk_30->unk_00.unk_20(arg0->unk_30, arg1); + } else { + var_v1 = 1; + } + return var_v1; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1AE680/func_882069C0.s") +s32 func_882068B4(unk_func_88001300_034* arg0, Controller* arg1) { + s32 var_s0; + s32 var_s1 = 0; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1AE680/func_88206A20.s") + arg0->unk_00.unk_24(&arg0->unk_00, 1); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1AE680/func_88206BA0.s") + ((func88502C98)Memmap_GetFragmentVaddr(func_88502C98))(arg0->unk_2C); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1AE680/func_88206C4C.s") + while (var_s1 == 0) { + func_8002EEA8(var_s1); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1AE680/func_88206E50.s") + var_s0 = arg0->unk_00.unk_20(arg0, arg1); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1AE680/func_88206E80.s") + if (!(var_s0 & 1)) { + if (arg1->buttonPressed & 0x4000) { + var_s0 = 0x80000003; + var_s1 = 1; + } else if (arg1->buttonPressed & 0x8000) { + var_s0 = 0x80000005; + var_s1 = 2; + } + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1AE680/func_88206F0C.s") + ((func8850BC94)Memmap_GetFragmentVaddr(func_8850BC94))(var_s0); + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1AE680/func_88206F44.s") + arg0->unk_2C->unk_2C = 0xB; + return var_s1 - 1; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1AE680/func_88207154.s") +s32 func_882069C0(void) { + s32 tmp; + s32 sp18; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1AE680/func_8820723C.s") + sp18 = func_8001F5B0(8, 0, func_8002D7C0(NULL, 0, D_88224FB4, 0x41)); + tmp = func_8001F5B0(8, 0, " 00"); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1AE680/func_88207354.s") + return sp18 + tmp + 0x3D; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1AE680/func_882079D8.s") +void func_88206A20(unk_func_8820BE14_02C_078_034* arg0, s32 arg1, s32 arg2, MemoryPool* arg3) { + s32 sp4C = func_882069C0() + 0x10; + UNUSED s32 pad[2]; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1AE680/func_88207A54.s") + ((func885007CC)Memmap_GetFragmentVaddr(func_885007CC))(&arg0->unk_00, sizeof(unk_func_8820BE14_02C_078_034)); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1AE680/func_88207A5C.s") + arg0->unk_00.unk_20 = func_88206868; + arg0->unk_00.unk_10.unk_00 = arg1; + arg0->unk_00.unk_10.unk_02 = arg2; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1AE680/func_88207A94.s") + arg0->unk_2C = mem_pool_alloc(arg3, sizeof(unk_func_88001300_038)); + ((func88502274)Memmap_GetFragmentVaddr(func_88502274))(arg0->unk_2C, 0, 0, sp4C, 0x120); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1AE680/func_88207BFC.s") + arg0->unk_2C->unk_28 |= 0x200; + arg0->unk_2C->unk_28 |= 0x400; + arg0->unk_2C->unk_28 &= ~1; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1AE680/func_88207C34.s") + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0, arg0->unk_2C); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1AE680/func_88207C54.s") + arg0->unk_30 = mem_pool_alloc(arg3, sizeof(unk_func_88200FA0_030_030)); + ((func885060BC)Memmap_GetFragmentVaddr(func_885060BC))(arg0->unk_30, 0, 0, func_8820634C, sp4C, 0x18, 0xC, 1, arg3); + ((func88506238)Memmap_GetFragmentVaddr(func_88506238))(arg0->unk_30, 0xC, arg3); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0->unk_2C, arg0->unk_30); +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1AE680/func_88207CEC.s") +s32 func_88206BA0(void) { + static u8 D_88217E0C[3] = { 0x18, 0x19, 0x1A }; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1AE680/func_88207D0C.s") + s32 i; + s32 var_v1; + s32 var_s1 = 0; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1AE680/func_88207D18.s") + for (i = 0; i < 3; i++) { + var_v1 = func_8001F5B0(8, 0, func_8002D7C0(NULL, 0, D_88224FB4, D_88217E0C[i])); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1AE680/func_88207D38.s") + if (i == 0) { + var_v1 += 0x3D; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1AE680/func_88207E14.s") + if (var_s1 < var_v1) { + var_s1 = var_v1; + } + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1AE680/func_88207F84.s") + return var_s1; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1AE680/func_88208124.s") +void func_88206C4C(unk_func_8820BE14_02C_078* arg0, s32 arg1, s32 arg2, s32 arg3, unk_func_8820BE14_06C_000* arg4, + s32 arg5, MemoryPool* arg6) { + UNUSED s32 pad; + s32 sp48 = func_88206BA0() + 0x10; + UNUSED s32 pad2; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1AE680/func_88208160.s") + ((func885007CC)Memmap_GetFragmentVaddr(func_885007CC))(&arg0->unk_00, sizeof(unk_func_8820BE14_02C_078)); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1AE680/func_8820817C.s") + arg0->unk_00.unk_20 = func_88206F44; + arg0->unk_00.unk_10.unk_00 = ((arg3 - sp48) / 2) + arg1; + arg0->unk_00.unk_10.unk_02 = arg2; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1AE680/func_8820820C.s") + arg0->unk_4C = arg5; + arg0->unk_2C = mem_pool_alloc(arg6, sizeof(unk_func_88001300_038)); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1AE680/func_88208250.s") + ((func88502274)Memmap_GetFragmentVaddr(func_88502274))(arg0->unk_2C, 0, 0, sp48, 0x54); + arg0->unk_2C->unk_28 |= 0x200; + arg0->unk_2C->unk_28 |= 0x400; + arg0->unk_2C->unk_28 &= ~1; + + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(&arg0->unk_00, arg0->unk_2C); + + func_8002C740(&arg0->unk_38, arg4, 0x10, 3, 3); + + arg0->unk_30 = mem_pool_alloc(arg6, sizeof(unk_func_88200FA0_030_030)); + ((func885060BC)Memmap_GetFragmentVaddr(func_885060BC))(arg0->unk_30, 0, 0, func_8820660C, sp48, 0x1C, 3, 1, arg6); + ((func88506404)Memmap_GetFragmentVaddr(func_88506404))(arg0->unk_30, &arg0->unk_38, arg6); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0->unk_2C, arg0->unk_30); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1AE680/func_882082BC.s") + arg0->unk_34 = mem_pool_alloc(arg6, sizeof(unk_func_8820BE14_02C_078_034)); + func_88206A20(arg0->unk_34, 0x9C, 0x1C, arg6); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1AE680/func_882082FC.s") + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0, arg0->unk_34); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1AE680/func_882083D0.s") + arg0->unk_48 = 0; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1AE680/func_88208508.s") +u32 func_88206E50(unk_func_8820BE14_02C_078* arg0) { + return ((arg0->unk_30->unk_38 == 0) ? 0 : arg0->unk_34->unk_30->unk_38) | (arg0->unk_30->unk_38 << 0x10); +} + +void func_88206E80(unk_func_8820BE14_02C_078* arg0, u32 arg1) { + arg0->unk_50 = arg1 >> 0x10; + arg0->unk_54 = arg1 & 0xFFFF; + + ((func8850628C)Memmap_GetFragmentVaddr(func_8850628C))(arg0->unk_30); + ((func88506BFC)Memmap_GetFragmentVaddr(func_88506BFC))(arg0->unk_30, arg0->unk_50); + + if (arg0->unk_50 == 0) { + arg0->unk_30->unk_34[arg0->unk_30->unk_38] |= 0x100; + } +} + +void func_88206F0C(unk_func_8820BE14_02C_078* arg0, u32 arg1) { + arg0->unk_58 = arg1 >> 0x10; + arg0->unk_5C = arg1 & 0xFFFF; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1AE680/func_88208600.s") + if (arg0->unk_58 == 0) { + arg0->unk_30->unk_34[arg0->unk_58] |= 4; + } +} + +s32 func_88206F44(unk_func_8820BE14_02C_078* arg0, Controller* arg1) { + s32 var_v1; + s32 sp20; + + if (arg0->unk_2C->unk_30 & 2) { + var_v1 = arg0->unk_30->unk_00.unk_20(arg0->unk_30, arg1); + + if (!(var_v1 & 1)) { + if (arg1->buttonPressed & 0x4000) { + var_v1 = 0x80000002; + } else if (arg1->buttonPressed & 0x8000) { + if (arg0->unk_30->unk_38 == 0) { + var_v1 = 0x80000004; + } else { + sp20 = 0; + + ((func885063B8)Memmap_GetFragmentVaddr(func_885063B8))(arg0->unk_34->unk_30, + &arg0->unk_38.unk_00[arg0->unk_30->unk_38]); + + if (arg0->unk_4C != 0) { + arg0->unk_34->unk_00.unk_10.unk_00 = -arg0->unk_34->unk_2C->unk_14; + } else { + arg0->unk_34->unk_00.unk_10.unk_00 = arg0->unk_2C->unk_14; + } + + arg0->unk_34->unk_00.unk_10.unk_02 = 8; + if (arg0->unk_50 == arg0->unk_30->unk_38) { + arg0->unk_34->unk_30->unk_34[arg0->unk_54] |= 0x100; + sp20 = arg0->unk_54; + } + + if (arg0->unk_58 == arg0->unk_30->unk_38) { + arg0->unk_34->unk_30->unk_34[arg0->unk_5C] |= 4; + if ((sp20 == 0) && (arg0->unk_5C == 0)) { + sp20 = 1; + } + } + + ((func88506BFC)Memmap_GetFragmentVaddr(func_88506BFC))(arg0->unk_34->unk_30, sp20); + + func_80048B90(2); + + arg0->unk_00.unk_24(&arg0->unk_00, 0x100); + + if (func_882068B4(arg0->unk_34, arg1) == 1) { + var_v1 = 4; + } else { + var_v1 = 1; + } + arg0->unk_00.unk_24(&arg0->unk_00, 1); + } + } + } + } else { + var_v1 = 1; + } + return var_v1; +} + +s32 func_88207154(unk_func_8820BE14_02C_078* arg0, Controller* arg1) { + s32 var_s0; + s32 var_s1 = 0; + + arg0->unk_00.unk_24(&arg0->unk_00, 1); + + ((func88502C98)Memmap_GetFragmentVaddr(func_88502C98))(arg0->unk_2C); + + while (var_s1 == 0) { + func_8002EEA8(var_s1); + + var_s0 = arg0->unk_00.unk_20(arg0, arg1); + if (!(var_s0 & 1)) { + if (var_s0 & 2) { + var_s0 |= 1; + var_s1 = 1; + } else if (var_s0 & 4) { + var_s0 |= 1; + var_s1 = 2; + } + } + + ((func8850BC94)Memmap_GetFragmentVaddr(func_8850BC94))(var_s0); + } + + arg0->unk_2C->unk_2C = 0xB; + return var_s1 - 1; +} + +void func_8820723C(unk_func_88205880_00D0* arg0, s32 arg1, s32 arg2, s32 arg3) { + static Color_RGBA8 D_88217E10 = { 0xF0, 0xF0, 0xF0, 0xFF }; + static Color_RGBA8 D_88217E14 = { 0x5A, 0x5A, 0xA6, 0xFF }; + + s32 temp_v1; + + func_8001F3F4(); + func_8001F324(D_88217E10.r, D_88217E10.g, D_88217E10.b, D_88217E10.a); + func_8001EBE0(8, 0); + func_8001F1E8(arg1 + 0x14, arg2 + 4, arg0->unk_000[0].unk_30); + func_8001EBE0(4, 0); + + temp_v1 = func_8001F5B0(0, 0, "L100"); + + if ((arg0->unk_000[0].unk_00 <= 0) || (arg0->unk_000[0].unk_00 >= 0x98)) { + func_8001F1E8(((arg1 + arg3) - temp_v1) - 0x14, arg2 + 8, "L?"); + } else { + func_8001F1E8(((arg1 + arg3) - temp_v1) - 0x14, arg2 + 8, "L%d", arg0->unk_000[0].unk_24); + } + func_8001F444(); +} + +static Color_RGBA8 D_88217E18 = { 0x40, 0x40, 0x74, 0xFF }; +static Color_RGBA8 D_88217E1C[] = { + { 0x78, 0x78, 0xF1, 0xFF }, + { 0x5E, 0x5E, 0xBE, 0xFF }, + { 0xFF, 0xCB, 0xDE, 0xFF }, + { 0xFF, 0xBF, 0xD6, 0xFF }, +}; + +void func_88207354(); +#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1AE680/func_88207354.s") -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1AE680/func_88208BFC.s") +void func_882079D8(unk_func_882079D8* arg0, s32 arg1, s32 arg2, s32 arg3, unk_func_88205880_00D0* arg4) { + ((func885007CC)Memmap_GetFragmentVaddr(func_885007CC))(&arg0->unk_00, sizeof(unk_func_882079D8)); + + arg0->unk_00.unk_18 = func_88207A5C; + arg0->unk_00.unk_10.unk_00 = arg1; + arg0->unk_00.unk_10.unk_02 = arg2; + arg0->unk_00.unk_14.unk_00 = arg3; + arg0->unk_00.unk_14.unk_02 = 0; + + func_88207A54(arg0, arg4); +} + +void func_88207A54(unk_func_882079D8* arg0, unk_func_88205880_00D0* arg1) { + arg0->unk_2C = arg1; +} + +s32 func_88207A5C(unk_func_882079D8* arg0, s32 arg1, s32 arg2) { + if (arg0->unk_2C != NULL) { + func_8820723C(arg0->unk_2C, arg1, arg2, arg0->unk_00.unk_14.unk_00); + } +} + +void func_88207A94(unk_func_8820B12C_02C* arg0, unk_func_8820B12C_02C_020* arg1, unk_func_8820B12C_02C_020* arg2, + unk_func_88217740* arg3, unk_func_88509F48* arg4, s32 arg5, MemoryPool* arg6) { + static Color_RGBA8 D_88217E2C = { 0xF0, 0xF0, 0xF0, 0xFF }; + + s32 i; + + ((func88500668)Memmap_GetFragmentVaddr(func_88500668))(arg0, sizeof(unk_func_8820B12C_02C)); + + arg0->unk_14 = func_88207C34; + arg0->unk_10 = func_88208600; + arg0->unk_18 = 0; + arg0->unk_1C = 0; + arg0->unk_20[0] = arg1; + arg0->unk_20[1] = arg2; + arg0->unk_34 = 1; + arg0->unk_38 = arg3; + arg0->unk_3C = arg4; + arg0->unk_74 = arg5; + + func_88207D0C(arg0, 0); + + for (i = 0; i < 6; i++) { + arg0->unk_5C[i] = mem_pool_alloc(arg6, sizeof(unk_func_8850878C)); + + ((func8850878C)Memmap_GetFragmentVaddr(func_8850878C))(arg0->unk_5C[i], 0, 0, + func_8002D7C0(NULL, 0, D_88224FB4, i + 0xB), 0x10); + + arg0->unk_5C[i]->unk_30 = D_88217E2C; + arg0->unk_5C[i]->unk_44 = arg0->unk_5C[i]->unk_44; + } +} + +void func_88207BFC(unk_func_8820B12C_02C* arg0, s32 arg1) { + arg0->unk_48->unk_18 = arg1; + arg0->unk_44(2, arg0->unk_48); +} + +void func_88207C34(unk_func_8820B12C_02C* arg0, s32 arg1) { + arg0->unk_18 = arg1; + func_88207C54(arg0); +} + +void func_88207C54(unk_func_8820B12C_02C* arg0) { + s32 temp_s3; + s32 temp_s4; + s32 temp_v0; + s32 i; + s32 var_v0; + unk_func_8820B12C_02C* var_s1; + unk_func_8820B12C_02C_020* temp_a0; + + temp_v0 = arg0->unk_18; + temp_s3 = temp_v0 & 0xFF; + temp_s4 = temp_v0 & 0xFF00; + + for (i = 0; i < 2; i++) { + var_v0 = 0; + if (i == arg0->unk_1C) { + var_v0 = 1; + } + arg0->unk_20[i]->unk_00.unk_00.unk_24(&arg0->unk_20[i]->unk_00, (var_v0 & temp_s3) | temp_s4); + } +} + +void func_88207CEC(unk_func_8820B12C_02C* arg0, s32 arg1) { + arg0->unk_1C = arg1; + func_88207C54(arg0); +} + +void func_88207D0C(unk_func_8820B12C_02C* arg0, s32 arg1) { + arg0->unk_28 = arg1; + arg0->unk_2C = 0; +} + +void func_88207D18(unk_func_8820B12C_02C* arg0) { + unk_func_8820B12C_02C_020* temp_t6 = arg0->unk_20[0]; + + arg0->unk_20[0] = arg0->unk_20[1]; + arg0->unk_20[1] = temp_t6; + arg0->unk_34 = !arg0->unk_34; +} + +void func_88207D38(unk_func_8820B12C_02C* arg0, unk_func_88205880_00D0** arg1, unk_func_88205880_00D0** arg2) { + switch (arg0->unk_28) { + case 0: + case 3: + *arg1 = arg0->unk_20[0]->unk_00.unk_2C->unk_00[arg0->unk_20[0]->unk_00.unk_38]; + *arg2 = NULL; + break; + + case 1: + *arg1 = arg0->unk_20[0]->unk_00.unk_2C->unk_00[arg0->unk_30]; + *arg2 = arg0->unk_20[0]->unk_00.unk_2C->unk_00[arg0->unk_20[0]->unk_00.unk_38]; + break; + + case 2: + *arg1 = arg0->unk_20[0]->unk_00.unk_2C->unk_00[arg0->unk_20[0]->unk_00.unk_38]; + *arg2 = arg0->unk_20[1]->unk_00.unk_2C->unk_00[arg0->unk_20[1]->unk_00.unk_38]; + break; + } +} + +void func_88207E14(unk_func_8820B12C_02C* arg0, unk_func_88001300_000_010* arg1, unk_func_88001300_000_010* arg2) { + s16 var_v1; + + switch (arg0->unk_28) { + case 0: + arg1->unk_00 = arg0->unk_20[0]->unk_00.unk_00.unk_10.unk_00; + arg1->unk_02 = + arg0->unk_20[0]->unk_00.unk_00.unk_10.unk_02 + (arg0->unk_20[0]->unk_5C - arg0->unk_20[0]->unk_58); + + arg2->unk_00 = arg0->unk_20[1]->unk_00.unk_00.unk_10.unk_00; + arg2->unk_02 = + arg0->unk_20[1]->unk_00.unk_00.unk_10.unk_02 + (arg0->unk_20[1]->unk_5C - arg0->unk_20[1]->unk_58); + break; + + case 1: + var_v1 = (arg0->unk_20[0]->unk_00.unk_3E * arg0->unk_30) - arg0->unk_20[0]->unk_58; + if (var_v1 < -arg0->unk_20[0]->unk_00.unk_3E) { + var_v1 = -arg0->unk_20[0]->unk_00.unk_3E; + } else if (arg0->unk_20[0]->unk_00.unk_00.unk_14.unk_02 < var_v1) { + var_v1 = arg0->unk_20[0]->unk_00.unk_00.unk_14.unk_02; + } + + arg1->unk_00 = arg0->unk_20[0]->unk_00.unk_00.unk_10.unk_00; + arg1->unk_02 = arg0->unk_20[0]->unk_00.unk_00.unk_10.unk_02 + var_v1; + + arg2->unk_00 = arg0->unk_20[0]->unk_00.unk_00.unk_10.unk_00; + arg2->unk_02 = + arg0->unk_20[0]->unk_00.unk_00.unk_10.unk_02 + (arg0->unk_20[0]->unk_5C - arg0->unk_20[0]->unk_58); + break; + + case 2: + arg1->unk_00 = arg0->unk_20[0]->unk_00.unk_00.unk_10.unk_00; + arg1->unk_02 = + arg0->unk_20[0]->unk_00.unk_00.unk_10.unk_02 + (arg0->unk_20[0]->unk_5C - arg0->unk_20[0]->unk_58); + + arg2->unk_00 = arg0->unk_20[1]->unk_00.unk_00.unk_10.unk_00; + arg2->unk_02 = + arg0->unk_20[1]->unk_00.unk_00.unk_10.unk_02 + (arg0->unk_20[1]->unk_5C - arg0->unk_20[1]->unk_58); + break; + } +} + +void func_88207F84(unk_func_8820B12C_02C* arg0, s32 arg1) { + switch (arg1) { + case 0: + ((func8850628C)Memmap_GetFragmentVaddr(func_8850628C))(arg0->unk_20[0]); + func_88215974(&arg0->unk_20[0]->unk_00, 1); + func_88215974(&arg0->unk_20[1]->unk_00, 1); + func_88207CEC(arg0, 0); + func_88217BB8(arg0->unk_38); + break; + + case 1: + arg0->unk_20[0]->unk_00.unk_34[arg0->unk_20[0]->unk_00.unk_38] |= 2; + func_88216F18(arg0->unk_20[1], 0); + func_88215974(&arg0->unk_20[1]->unk_00, 0); + func_88207CEC(arg0, 1); + func_88217BAC(arg0->unk_38); + break; + + case 2: + arg0->unk_20[arg0->unk_1C]->unk_00.unk_34[arg0->unk_20[arg0->unk_1C]->unk_00.unk_38] |= 2; + func_88215974(&arg0->unk_20[arg0->unk_1C]->unk_00, 0); + arg0->unk_30 = arg0->unk_20[arg0->unk_1C]->unk_00.unk_38; + func_88217BAC(arg0->unk_38); + break; + + case 3: + arg0->unk_20[0]->unk_00.unk_34[arg0->unk_20[0]->unk_00.unk_38] |= 2; + func_88215974(&arg0->unk_20[1]->unk_00, 0); + func_88207CEC(arg0, 1); + func_88217BAC(arg0->unk_38); + break; + } + + arg0->unk_2C = arg1; +} + +void func_88208124(unk_func_8820B12C_02C* arg0) { + func_88207F84(arg0, 0); + ((func8850628C)Memmap_GetFragmentVaddr(func_8850628C))(&arg0->unk_20[1]->unk_00); +} + +s32 func_88208160(unk_func_8820B12C_02C* arg0) { + s32 var_v1 = 0; + + if (arg0->unk_2C == 0) { + var_v1 = 1; + } + return var_v1; +} + +void func_8820817C(unk_func_8820B12C_02C_020* arg0, unk_func_8820B12C_02C_020* arg1) { + unk_func_88205880_00D0* ptr2 = arg0->unk_00.unk_2C->unk_00[arg0->unk_00.unk_38]; + + ((func88507CC4)Memmap_GetFragmentVaddr(func_88507CC4))(arg1, ptr2); + ((func88507CEC)Memmap_GetFragmentVaddr(func_88507CEC))(arg0); + + *arg1->unk_88 = 1; + *arg0->unk_88 = *arg1->unk_88; +} + +void func_8820820C(unk_func_8820B12C_02C_020* arg0, s32 arg1, s32 arg2) { + unk_func_88205880_00D0* temp_v0 = arg0->unk_00.unk_2C->unk_00[arg1]; + + arg0->unk_00.unk_2C->unk_00[arg1] = arg0->unk_00.unk_2C->unk_00[arg2]; + arg0->unk_00.unk_2C->unk_00[arg2] = temp_v0; + + *arg0->unk_88 = 1; +} + +void func_88208250(unk_func_8820B12C_02C_020* arg0, unk_func_8820B12C_02C_020* arg1) { + unk_func_88205880_00D0* temp_v0 = arg1->unk_00.unk_2C->unk_00[arg1->unk_00.unk_38]; + unk_func_88205880_00D0** temp_v1; + + arg1->unk_00.unk_2C->unk_00[arg1->unk_00.unk_38] = arg0->unk_00.unk_2C->unk_00[arg0->unk_00.unk_38]; + arg0->unk_00.unk_2C->unk_00[arg0->unk_00.unk_38] = temp_v0; + + *arg1->unk_88 = 1; + *arg0->unk_88 = *arg1->unk_88; +} + +void func_882082BC(unk_func_8820B12C_02C_020* arg0) { + ((func88507CEC)Memmap_GetFragmentVaddr(func_88507CEC))(arg0); + *arg0->unk_88 = 1; +} + +void func_882082FC(unk_func_8820B12C_02C* arg0, Controller* arg1) { + unk_func_88205880_00D0* sp34; + unk_func_88205880_00D0* sp30; + unk_func_88001300_000_010 sp2C; + unk_func_88001300_000_010 sp28; + + func_88207D38(arg0, &sp30, &sp34); + func_88207A54(arg0->unk_54[0], sp30); + func_88207E14(arg0, &sp2C, &sp28); + func_882175F4(arg0->unk_4C[0], sp2C, sp28); + + arg0->unk_14(arg0, 0); + + ((func8850CF00)Memmap_GetFragmentVaddr(func_8850CF00))(arg0->unk_40, arg1); + + arg0->unk_14(arg0, 1); + + func_8820817C(arg0->unk_20[0], arg0->unk_20[1]); + func_88208124(arg0); +} + +void func_882083D0(unk_func_8820B12C_02C* arg0, Controller* arg1, s32 arg2) { + unk_func_88205880_00D0* sp34; + unk_func_88205880_00D0* sp30; + unk_func_88001300_000_010 sp2C; + unk_func_88001300_000_010 sp28; + + func_88207D38(arg0, &sp30, &sp34); + func_88207A54(arg0->unk_54[0], sp30); + func_88207A54(arg0->unk_54[1], sp34); + func_88207E14(arg0, &sp2C, &sp28); + func_882175F4(arg0->unk_4C[0], sp2C, sp28); + func_882175F4(arg0->unk_4C[1], sp28, sp2C); + + arg0->unk_14(arg0, 0); + + ((func8850CF00)Memmap_GetFragmentVaddr(func_8850CF00))(arg0->unk_40, arg1); + + arg0->unk_14(arg0, 1); + + if (arg2 != 0) { + func_8820820C(arg0->unk_20[0], arg0->unk_30, arg0->unk_20[0]->unk_00.unk_38); + } else { + func_88208250(arg0->unk_20[0], arg0->unk_20[1]); + } + + func_88208124(arg0); +} + +void func_88208508(unk_func_8820B12C_02C* arg0) { + unk_func_88205880_00D0* sp2C; + unk_func_88205880_00D0* sp28; + s32 sp24; + + func_88207D38(arg0, &sp28, &sp2C); + + arg0->unk_48->unk_0C = sp28; + arg0->unk_48->unk_10 = arg0->unk_20[0]->unk_8C >> 0x10; + + arg0->unk_44(1, arg0->unk_48); + + func_80048B90(2); + + arg0->unk_20[0]->unk_00.unk_00.unk_24(&arg0->unk_20[0]->unk_00.unk_00, 0x100); + + sp24 = arg0->unk_44(4, arg0->unk_48); + + arg0->unk_20[0]->unk_00.unk_00.unk_24(&arg0->unk_20[0]->unk_00.unk_00, 1); + + if (arg0->unk_48->unk_18 != 0) { + if (sp24 == 0) { + func_882082BC(arg0->unk_20[0]); + } + } else if (sp24 == 1) { + *arg0->unk_20[0]->unk_88 = 1; + } + + func_88208124(arg0); +} + +s32 func_88208600(unk_func_8820B12C_02C* arg0, Controller* arg1) { + s32 var_v1; + s32 var_v0; + func8850A10C temp_v1; + + var_v1 = arg0->unk_20[arg0->unk_1C]->unk_00.unk_00.unk_20(arg0->unk_20[arg0->unk_1C], arg1); + + if (var_v1 & 1) { + return var_v1; + } + + if (var_v1 == 0) { + if (arg1->buttonPressed & 0x4000) { + var_v1 = 0x80000002; + } else if (arg1->buttonPressed & 0x8000) { + var_v1 = 0x80000004; + } + } + + switch (arg0->unk_2C) { + case 0: + switch (arg0->unk_28) { + case 0: + if (!(var_v1 & 2) && (var_v1 & 4)) { + if (arg0->unk_20[0]->unk_00.unk_2C->unk_08 == 0) { + func_80048B90(8); + ((func8850A10C)Memmap_GetFragmentVaddr(func_8850A10C))(arg0->unk_3C, arg0->unk_5C[0], 0, 0); + ((func8850A3CC)Memmap_GetFragmentVaddr(func_8850A3CC))(arg0->unk_3C, arg1); + var_v1 = 1; + } else if (arg0->unk_20[1]->unk_00.unk_2C->unk_08 >= arg0->unk_20[1]->unk_00.unk_2C->unk_04) { + func_80048B90(8); + ((func8850A10C)Memmap_GetFragmentVaddr(func_8850A10C))(arg0->unk_3C, arg0->unk_5C[5], 0, 0); + ((func8850A3CC)Memmap_GetFragmentVaddr(func_8850A3CC))(arg0->unk_3C, arg1); + var_v1 = 1; + } else { + func_88207F84(arg0, 1); + var_v1 |= 1; + } + } + break; + + case 1: + if (!(var_v1 & 2) && (var_v1 & 4)) { + if (arg0->unk_20[0]->unk_00.unk_2C->unk_08 == 0) { + func_80048B90(8); + ((func8850A10C)Memmap_GetFragmentVaddr(func_8850A10C))(arg0->unk_3C, arg0->unk_5C[1], 0, 0); + ((func8850A3CC)Memmap_GetFragmentVaddr(func_8850A3CC))(arg0->unk_3C, arg1); + var_v1 = 1; + } else { + func_88207F84(arg0, 2); + var_v1 |= 1; + } + } + break; + + case 2: + if (!(var_v1 & 2) && (var_v1 & 4)) { + if ((arg0->unk_20[0]->unk_00.unk_2C->unk_08 == 0) || + (arg0->unk_20[1]->unk_00.unk_2C->unk_08 == 0)) { + func_80048B90(8); + ((func8850A10C)Memmap_GetFragmentVaddr(func_8850A10C))(arg0->unk_3C, arg0->unk_5C[2], 0, 0); + ((func8850A3CC)Memmap_GetFragmentVaddr(func_8850A3CC))(arg0->unk_3C, arg1); + var_v1 = 1; + } else { + func_88207F84(arg0, 3); + var_v1 |= 1; + } + } + break; + + case 3: + if (!(var_v1 & 2) && (var_v1 & 4)) { + if (arg0->unk_20[0]->unk_00.unk_2C->unk_08 == 0) { + func_80048B90(8); + temp_v1 = ((func8850A10C)Memmap_GetFragmentVaddr(func_8850A10C)); + if (arg0->unk_48->unk_18 != 0) { + var_v0 = 4; + } else { + var_v0 = 3; + } + temp_v1(arg0->unk_3C, arg0->unk_5C[var_v0], 0, 0); + ((func8850A3CC)Memmap_GetFragmentVaddr(func_8850A3CC))(arg0->unk_3C, arg1); + var_v1 = 1; + } else { + func_88208508(arg0); + var_v1 = 5; + } + } + break; + } + break; + + case 1: + if (var_v1 & 2) { + func_88207F84(arg0, 0); + func_88216F18(arg0->unk_20[1], 1); + var_v1 |= 1; + } else if (var_v1 & 4) { + func_80048B90(0x18); + arg0->unk_20[0]->unk_00.unk_34[arg0->unk_20[0]->unk_00.unk_38] |= 0x100; + func_882082FC(arg0, arg1); + func_88216F18(arg0->unk_20[1], 2); + if (arg0->unk_74 != 0) { + var_v1 = 0x02000000; + } else { + var_v1 = 0x80000081; + } + } + break; + + case 2: + if (var_v1 & 2) { + func_88207F84(arg0, 0); + var_v1 |= 1; + } else if (var_v1 & 4) { + if (arg0->unk_30 == arg0->unk_20[arg0->unk_1C]->unk_00.unk_38) { + var_v1 = 0x80000101; + } else { + func_80048B90(0x18); + arg0->unk_20[arg0->unk_1C]->unk_00.unk_34[arg0->unk_20[arg0->unk_1C]->unk_00.unk_38] |= 2; + arg0->unk_20[arg0->unk_1C]->unk_00.unk_34[arg0->unk_30] |= 0x100; + arg0->unk_20[arg0->unk_1C]->unk_00.unk_34[arg0->unk_20[arg0->unk_1C]->unk_00.unk_38] |= 0x100; + func_882083D0(arg0, arg1, 1); + var_v1 = 0x80000081; + } + } + break; + + case 3: + if (var_v1 & 2) { + func_88207F84(arg0, 0); + var_v1 |= 1; + } else if (var_v1 & 4) { + func_80048B90(0x18); + arg0->unk_20[1]->unk_00.unk_34[arg0->unk_20[1]->unk_00.unk_38] |= 2; + arg0->unk_20[0]->unk_00.unk_34[arg0->unk_20[0]->unk_00.unk_38] |= 0x100; + arg0->unk_20[1]->unk_00.unk_34[arg0->unk_20[1]->unk_00.unk_38] |= 0x100; + func_882083D0(arg0, arg1, 0); + var_v1 = 0x80000081; + } + break; + } + + return var_v1; +} + +unk_func_88205880_00D0* func_88208BFC(unk_func_8820B12C_02C* arg0) { + s32 temp_v1; + unk_func_88205880_A030* temp_a1; + + if (arg0->unk_2C == 1) { + return NULL; + } + + temp_v1 = arg0->unk_20[arg0->unk_1C]->unk_00.unk_38; + temp_a1 = arg0->unk_20[arg0->unk_1C]->unk_00.unk_2C; + + if (temp_v1 >= temp_a1->unk_08) { + return NULL; + } + + return temp_a1->unk_00[temp_v1]; +} + +void func_88208C5C(unk_func_88208C5C* arg0, unk_func_8850143C* arg1) { + ((func885007CC)Memmap_GetFragmentVaddr(func_885007CC))(arg0, sizeof(unk_func_88208C5C)); + + arg0->unk_00.unk_18 = func_88208CE4; + arg0->unk_00.unk_14.unk_00 = arg1->unk_00.unk_14.unk_00; + arg0->unk_00.unk_14.unk_02 = arg1->unk_00.unk_14.unk_02; + arg0->unk_2C = arg1; + arg0->unk_30 = func_8002EC08(func_80024F68(func_80029080())); + arg0->unk_34 = -1; + arg0->unk_38 = -1; +} + +s32 func_88208CE4(unk_func_88208C5C* arg0, s32 arg1, s32 arg2) { + static u8 D_88217E30[] = { + 0x27, + 0x42, + 0x43, + 0x40, + }; + static Color_RGBA8 D_88217E34 = { 0xF0, 0xF0, 0xF0, 0xFF }; + static Color_RGBA8 D_88217E38 = { 0xF0, 0xF0, 0xF0, 0xFF }; + + char* spBC = func_8002D7C0(NULL, 0, D_88224FB4, D_88217E30[arg0->unk_34]); + s8 sp9C[0x20]; + s32 temp_v0; + s32 var_s0; + + if (arg0->unk_38 == -1) { + return 1; + } + + if ((arg0->unk_34 == 1) || (arg0->unk_34 == 2)) { + sprintf(sp9C, "%s %d", spBC, arg0->unk_38 + 1); + spBC = sp9C; + } + + temp_v0 = func_8001F5B0(8, 0, spBC); + + gDPPipeSync(gDisplayListHead++); + + gDPSetCycleType(gDisplayListHead++, G_CYC_COPY); + gDPSetRenderMode(gDisplayListHead++, G_RM_NOOP, G_RM_NOOP2); + gDPSetAlphaCompare(gDisplayListHead++, G_AC_THRESHOLD); + gDPSetTexturePersp(gDisplayListHead++, G_TP_NONE); + + if ((arg0->unk_34 == 0) || (arg0->unk_34 == 1)) { + var_s0 = (((arg0->unk_00.unk_14.unk_00 - temp_v0) - 0x20) / 2) + arg1 + 0x20; + + gDPLoadTextureBlock(gDisplayListHead++, D_88223470[arg0->unk_30], G_IM_FMT_RGBA, G_IM_SIZ_16b, 24, 26, 0, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, + G_TX_NOLOD); + gSPTextureRectangle(gDisplayListHead++, (var_s0 - 0x20) << 2, (arg2 + 2) << 2, (var_s0 - 9) << 2, + (arg2 + 0x1B) << 2, G_TX_RENDERTILE, 0, 0, 0x1000, 0x0400); + } else { + var_s0 = (((arg0->unk_00.unk_14.unk_00 - temp_v0) - 0x30) / 2) + arg1 + 0x30; + + gDPLoadTextureBlock(gDisplayListHead++, D_88223488, G_IM_FMT_RGBA, G_IM_SIZ_16b, 48, 26, 0, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, + G_TX_NOLOD); + gSPTextureRectangle(gDisplayListHead++, (var_s0 - 0x30) << 2, (arg2 + 2) << 2, (var_s0 - 9) << 2, + (arg2 + 0x1B) << 2, G_TX_RENDERTILE, 0, 0, 0x1000, 0x0400); + } + + gDPPipeSync(gDisplayListHead++); + + gDPSetAlphaCompare(gDisplayListHead++, G_AC_NONE); + + func_8001F3F4(); + func_8001F324(D_88217E34.r, D_88217E34.g, D_88217E34.b, D_88217E34.a); + func_8001EBE0(8, 0); + func_8001F1E8(var_s0, arg2 + 5, spBC); + func_8001F444(); + + return 0; +} + +u32 func_882091E4(unk_func_88208C5C* arg0) { + return (arg0->unk_34 << 0x10) | arg0->unk_38; +} + +void func_882091F8(unk_func_88208C5C* arg0, u32 arg1) { + arg0->unk_34 = arg1 >> 0x10; + arg0->unk_38 = arg1 & 0xFFFF; +} + +void func_8820920C(unk_func_8820BE14_02C_070* arg0, s32 arg1, s32 arg2) { + ((func885007CC)Memmap_GetFragmentVaddr(func_885007CC))(arg0, sizeof(unk_func_8820BE14_02C_070)); + + arg0->unk_0000.unk_18 = func_8820938C; + arg0->unk_0000.unk_10.unk_00 = arg1; + arg0->unk_0000.unk_10.unk_02 = arg2; + + func_88209A88(arg0, NULL); + + arg0->unk_0030 = 0; +} + +void func_8820927C(s32 arg0, s32 arg1, ret_func_8002ED08* arg2, s32 arg3) { + Color_RGBA8 sp24; + char* sp20; + + func_8001EBE0(8, 0); + if (arg2 == NULL) { + sp24 = ((func884000C4)Memmap_GetFragmentVaddr(func_884000C4))(0)->unk_04; + sp20 = "???????"; + } else { + sp24 = ((func884000C4)Memmap_GetFragmentVaddr(func_884000C4))(arg2->unk_00[1])->unk_04; + sp20 = func_8002D7C0(NULL, 0, D_88224FBC, arg2->unk_00[0] - 1); + } + + func_8001F324(sp24.r, sp24.g, sp24.b, sp24.a); + + if (arg3 != 0) { + arg0 = (arg0 - func_8001F5B0(0, 0, sp20)) + 0x8C; + } + + func_8001F1E8(arg0, arg1, sp20); +} + +s32 func_8820938C(unk_func_8820BE14_02C_070* arg0, s32 arg1, s32 arg2) { + static Color_RGBA8 D_88217E3C = { 0xF0, 0xF0, 0xF0, 0xFF }; + static unk_D_88217E40 D_88217E40[] = { + { + 0x000000DB, + 0x00000004, + 0x00000001, + 0x00000167, + 0x040037A8, + }, + { + 0x00000193, + 0x0000001C, + 0x00000000, + 0x0000017F, + 0x04003AD0, + }, + { + 0x0000017B, + 0x00000034, + 0x00000000, + 0x00000167, + 0x04003DF8, + }, + { 0x000000C3, 0x0000001C, 0x00000001, 0x0000014F, 0x04004120 }, + }; + + s32 i; + s32 spB0; + unk_func_88205880_00D0* ptr = arg0->unk_002C; + + if (ptr == NULL) { + return 0; + } + + spB0 = func_8002ECDC(ptr); + + i = (u32)arg0->unk_0039[arg0->unk_0030] & ~7; + + gDPPipeSync(gDisplayListHead++); + + gDPSetCycleType(gDisplayListHead++, G_CYC_COPY); + gDPSetRenderMode(gDisplayListHead++, G_RM_NOOP, G_RM_NOOP2); + gDPSetAlphaCompare(gDisplayListHead++, G_AC_THRESHOLD); + gDPSetTexturePersp(gDisplayListHead++, G_TP_NONE); + + gDPLoadTextureBlock(gDisplayListHead++, i, G_IM_FMT_RGBA, G_IM_SIZ_16b, 40, 40, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); + gSPTextureRectangle(gDisplayListHead++, (arg1 + 0x84) << 2, (arg2 + 0xA) << 2, (arg1 + 0xAB) << 2, + (arg2 + 0x31) << 2, G_TX_RENDERTILE, 0, 0, 0x1000, 0x0400); + + for (i = 0; i < 4; i++) { + gDPLoadTextureBlock(gDisplayListHead++, D_88217E40[i].unk_10, G_IM_FMT_RGBA, G_IM_SIZ_16b, 20, 20, 0, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, + G_TX_NOLOD); + gSPTextureRectangle(gDisplayListHead++, (arg1 + D_88217E40[i].unk_0C) << 2, (arg2 + D_88217E40[i].unk_04) << 2, + ((arg1 + D_88217E40[i].unk_0C) + 0x13) << 2, (arg2 + D_88217E40[i].unk_04 + 0x13) << 2, + G_TX_RENDERTILE, 0, 0, 0x1000, 0x0400); + } + + gDPPipeSync(gDisplayListHead++); + + gDPSetAlphaCompare(gDisplayListHead++, G_AC_NONE); + + func_8001F3F4(); + + if ((arg0->unk_002C->unk_000[0].unk_00 <= 0) || (arg0->unk_002C->unk_000[0].unk_00 >= 0x98)) { + func_8001F324(D_88217E3C.r, D_88217E3C.g, D_88217E3C.b, D_88217E3C.a); + func_8001EBE0(8, 0); + func_8001F1E8(arg1 + 8, arg2 + 8, "?????"); + } else { + func_8001F324(D_88217E3C.r, D_88217E3C.g, D_88217E3C.b, D_88217E3C.a); + func_8001EBE0(8, 0); + + func_8001F1E8(arg1 + 8, arg2 + 0x24, func_8002D7C0(NULL, 0, D_88224FB4, 0x12)); + func_8001F324(0xFF, 0xC8, 0xC8, 0xFF); + func_8001EBE0(4, 0); + + func_8001F1E8(arg1 + 6, arg2 + 0x56, func_8002D7C0(NULL, 0, D_88224FB4, 0x13)); + func_8001F1E8(arg1 + 0x91, arg2 + 0x56, func_8002D7C0(NULL, 0, D_88224FB4, 0x14)); + func_8001F1E8(arg1 + 0x11C, arg2 + 0x56, func_8002D7C0(NULL, 0, D_88224FB4, 0x15)); + func_8001F1E8(arg1 + 0x1A7, arg2 + 0x56, func_8002D7C0(NULL, 0, D_88224FB4, 0x16)); + + func_8001F324(D_88217E3C.r, D_88217E3C.g, D_88217E3C.b, D_88217E3C.a); + func_8001EBE0(8, 0); + func_8001F1E8(arg1 + 8, arg2 + 8, func_8002D7C0(NULL, 0, D_88224FB8, arg0->unk_002C->unk_000[0].unk_00 - 1)); + + func_8001F1E8(arg1 + 0x44, arg2 + 0x24, "%3d", arg0->unk_002C->unk_000[0].unk_26); + func_8001F1E8(arg1 + 0x46, arg2 + 0x54, "%3d", arg0->unk_002C->unk_000[0].unk_28); + func_8001F1E8(arg1 + 0xD1, arg2 + 0x54, "%3d", arg0->unk_002C->unk_000[0].unk_2A); + func_8001F1E8(arg1 + 0x15C, arg2 + 0x54, "%3d", arg0->unk_002C->unk_000[0].unk_2C); + func_8001F1E8(arg1 + 0x1E7, arg2 + 0x54, "%3d", arg0->unk_002C->unk_000[0].unk_2E); + } + + for (i = 0; i < spB0; i++) { + func_8820927C(D_88217E40[i].unk_00 + arg1, D_88217E40[i].unk_04 + arg2, + func_8002ED08(arg0->unk_002C->unk_000[0].unk_09[i]), D_88217E40[i].unk_08); + } + + func_8001F444(); + + return 0; +} + +void func_88209A88(unk_func_8820BE14_02C_070* arg0, unk_func_88205880_00D0* arg1) { + arg0->unk_002C = arg1; + if (arg1 != NULL) { + arg0->unk_0030 = (arg0->unk_0030 + 1) & 1; + func_8001B0DC((u32)arg0->unk_0039[arg0->unk_0030] & ~7, 0, arg0->unk_002C); + } +} + +s32 func_88209AF0(unk_func_8820BE14_06C* arg0) { + s32 i; + s32 j; + unk_func_8820BE14_06C_000* ptr; + + for (i = 0; i < 3; i++) { + ptr = arg0[i].unk_00; + for (j = 0; j < arg0[i].unk_08; j++) { + if (ptr[j].unk_04.unk_08 < ptr[j].unk_04.unk_04) { + return (i << 0x10) | j; + } + } + } + return 0; +} + +#ifdef NON_MATCHING +void func_88209B54(unk_func_8820BE14_02C* arg0, s32 arg1, s32 arg2, unk_func_8820BE14_06C_000* arg3, + unk_func_8820BE14_06C_000* arg4, unk_func_88001300_000* arg5, FragmentEntry arg6, + unk_func_8820BE14_030* arg7, unk_func_88509F48* arg8, char** arg9, MemoryPool* argA) { + static Color_RGBA8 D_88217E90 = { 0x6C, 0x6C, 0x7E, 0xFF }; + static Color_RGBA8 D_88217E94 = { 0x50, 0x50, 0x86, 0xFF }; + static Color_RGBA8 D_88217E98 = { 0x79, 0x79, 0xCB, 0xFF }; + static Color_RGBA8 D_88217E9C = { 0x40, 0x40, 0x6C, 0xFF }; + static Color_RGBA8 D_88217EA0 = { 0x6A, 0x6A, 0xB2, 0xFF }; + static unk_D_88217EA4 D_88217EA4[] = { + { + 219, + 40, + 54, + 42, + D_8821E100, + 0x30, + 0x0000, + D_882181E8, + 1, + 1, + }, + { + 279, + 40, + 54, + 42, + D_8821E100, + 0x30, + 0x0000, + D_882181E8, + 0, + 3, + }, + { + 219, + 88, + 54, + 42, + D_88218FD0, + 0x30, + 0x0000, + D_882181B8, + 0, + 3, + }, + { + 279, + 88, + 54, + 42, + D_8821B868, + 0x30, + 0x0000, + D_882181D0, + 1, + 1, + }, + { + 219, + 136, + 54, + 42, + D_8821AAE0, + 0x30, + 0x0000, + D_882181C8, + 0, + 1, + }, + { + 279, + 136, + 54, + 42, + D_88219D58, + 0x30, + 0x0000, + D_882181C0, + 1, + 1, + }, + { + 219, + 184, + 54, + 42, + D_88218248, + 0x30, + 0x0000, + D_882181B0, + 0, + 3, + }, + { + 279, + 184, + 54, + 42, + D_8821D378, + 0x30, + 0x0000, + D_882181E0, + 1, + 1, + }, + }; + static Color_RGBA8 D_88217F84 = { 0xFF, 0xFF, 0x00, 0xFF }; + static Color_RGBA8 D_88217F88 = { 0x2D, 0x1A, 0x41, 0xFF }; + static Color_RGBA8 D_88217F8C = { 0x6F, 0x5F, 0x7F, 0xFF }; + static Color_RGBA8* D_88217F90[] = { + D_88218228, D_88218228, D_882181F0, D_88218210, D_88218200, D_88218208, D_882181F8, D_88218220, + }; + static Color_RGBA8* D_88217FB0[] = { D_882181F8, D_882181F8 }; + static Color_RGBA8 D_88217FB8 = { 0xF0, 0xF0, 0xF0, 0xFF }; + + s32 i; + s32 j; + unk_func_885012A4* sp108; + unk_func_885012A4* sp104; + unk_func_885012A4* sp100; + unk_func_885012A4* spFC; + unk_func_885012A4* spF8; + unk_func_88001300_000* spF4; + unk_func_88001300_000* spF0; + unk_func_8850143C* spEC; + unk_func_8850143C* spE8; + u32 spE4; + unk_func_8850878C* spB4[8]; + char* spA0; + s32 sp9C; + unk_func_88507D4C* sp98; + unk_func_88507D4C* sp94; + unk_func_88507D4C* sp8C; + unk_func_88507D4C* sp88; + u32 sp50; + s32 temp_s0_5; + char* temp_s1_2; + char* temp_v0_10; + unk_func_8820BE14_06C* temp_v0_17; + unk_func_882149A0* temp_v0_7; + unk_func_88217740* temp_v0_5; + unk_func_88217740* temp_v0_6; + unk_func_88001300_02C* temp_s0; + unk_func_88001300_03C_01C* temp_s0_2; + unk_func_8850143C* temp_s0_3; + unk_func_8850878C* temp_s0_4; + unk_func_88503298* temp_s0_6; + char* temp_s0_7; + unk_func_882170A8* temp_v0_14; + unk_func_882170A8* temp_v0_16; + + arg0->unk_8C = arg4; + arg0->unk_80 = arg8; + + ((func885007CC)Memmap_GetFragmentVaddr(func_885007CC))(arg0, sizeof(unk_func_8820BE14_02C)); + + arg0->unk_00.unk_1C = func_8820ADEC; + arg0->unk_00.unk_20 = func_8820AF78; + arg0->unk_00.unk_24 = func_8820B0A0; + arg0->unk_00.unk_10.unk_02 = arg2; + arg0->unk_00.unk_10.unk_00 = arg1; + + arg0->unk_74 = mem_pool_alloc(argA, sizeof(unk_func_8820B12C)); + func_8820B12C(arg0->unk_74, arg0); + + arg0->unk_2C = mem_pool_alloc(argA, sizeof(unk_func_88001300_038)); + ((func88502274)Memmap_GetFragmentVaddr(func_88502274))(arg0->unk_2C, 0, 0, 0x228, 0x160); + arg0->unk_2C->unk_28 |= 0x400; + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0, arg0->unk_2C); + + temp_s0 = mem_pool_alloc(argA, sizeof(unk_func_88001300_02C)); + ((func88503118)Memmap_GetFragmentVaddr(func_88503118))(temp_s0, 0, 0, 0x228, 0x160); + temp_s0->unk_2C = 0; + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0->unk_2C, temp_s0); + + spF8 = mem_pool_alloc(argA, sizeof(unk_func_885012A4)); + ((func885012A4)Memmap_GetFragmentVaddr(func_885012A4))(spF8, 0, 0, 0x228, 8, D_88217E90); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0->unk_2C, spF8); + + spFC = mem_pool_alloc(argA, sizeof(unk_func_885012A4)); + ((func885012A4)Memmap_GetFragmentVaddr(func_885012A4))(spFC, 0, 0xEE, 0x228, 6, D_88217E90); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0->unk_2C, spFC); + + sp100 = mem_pool_alloc(argA, sizeof(unk_func_885012A4)); + ((func885012A4)Memmap_GetFragmentVaddr(func_885012A4))(sp100, 0, 8, 8, 0xE6, D_88217E90); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0->unk_2C, sp100); + + sp104 = mem_pool_alloc(argA, sizeof(unk_func_885012A4)); + ((func885012A4)Memmap_GetFragmentVaddr(func_885012A4))(sp104, 0x220, 8, 8, 0xE6, D_88217E90); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0->unk_2C, sp104); + + sp108 = mem_pool_alloc(argA, sizeof(unk_func_885012A4)); + ((func885012A4)Memmap_GetFragmentVaddr(func_885012A4))(sp108, 0xD4, 8, 0x80, 0xE6, D_88217E90); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0->unk_2C, sp108); + + spF0 = mem_pool_alloc(argA, sizeof(unk_func_88001300_000)); + ((func8850AB48)Memmap_GetFragmentVaddr(func_8850AB48))(spF0, 8, 8, 0xCC, 0xE6); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0->unk_2C, spF0); + + spF4 = mem_pool_alloc(argA, sizeof(unk_func_88001300_000)); + ((func8850AB48)Memmap_GetFragmentVaddr(func_8850AB48))(spF4, 0x154, 8, 0xCC, 0xE6); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0->unk_2C, spF4); + + spE8 = mem_pool_alloc(argA, sizeof(unk_func_8850143C)); + ((func8850143C)Memmap_GetFragmentVaddr(func_8850143C))(spE8, 8, 8, 0xCC, 0x1E, D_88217E94, D_88217E98); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0->unk_2C, spE8); + + spEC = mem_pool_alloc(argA, sizeof(unk_func_8850143C)); + ((func8850143C)Memmap_GetFragmentVaddr(func_8850143C))(spEC, 0x154, 8, 0xCC, 0x1E, D_88217E94, D_88217E98); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0->unk_2C, spEC); + + arg0->unk_30[0] = mem_pool_alloc(argA, sizeof(unk_func_88208C5C)); + func_88208C5C(arg0->unk_30[0], spE8); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(spE8, arg0->unk_30[0]); + + arg0->unk_30[1] = mem_pool_alloc(argA, sizeof(unk_func_88208C5C)); + func_88208C5C(arg0->unk_30[1], spEC); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(spEC, arg0->unk_30[1]); + + arg0->unk_40 = mem_pool_alloc(argA, sizeof(unk_func_88217740)); + func_88217740(arg0->unk_40, 0xF4, 0xA); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0->unk_2C, arg0->unk_40); + + if (arg3 != NULL) { + arg0->unk_40->unk_00.unk_28 &= ~1; + } + + sp50 = 1 << ((arg3 != NULL) ? 1 : 0); + + for (j = 0; j < 8; j++) { + unk_D_88217EA4* ptr = &D_88217EA4[j]; + if (!(ptr->unk_18 & sp50)) { + continue; + } + + arg0->unk_44[j] = mem_pool_alloc(argA, sizeof(unk_func_882149A0)); + func_882149A0(arg0->unk_44[j], ptr->unk_00, ptr->unk_02, ptr->unk_04, ptr->unk_06, ptr->unk_08, ptr->unk_0C, + ptr->unk_10[0], ptr->unk_10[1], D_88217E90); + + if (ptr->unk_14 != 0) { + func_882158BC(arg0->unk_44[j]); + } + + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0->unk_2C, arg0->unk_44[i]); + } + + arg0->unk_74->unk_28 = mem_pool_alloc(argA, sizeof(unk_func_88001300_03C)); + ((func8850C284)Memmap_GetFragmentVaddr(func_8850C284))(arg0->unk_74->unk_28, 4, 2, argA); + ((func8850BF80)Memmap_GetFragmentVaddr(func_8850BF80))(arg0->unk_74, arg0->unk_74->unk_28); + + for (j = 0; j < 8; j++) { + if (D_88217EA4[j].unk_18 & sp50) { + arg0->unk_74->unk_28->unk_18[(j / 2) * arg0->unk_74->unk_28->unk_2C + (j % 2)] = arg0->unk_44[j]; + } + } + + ((func8850CB48)Memmap_GetFragmentVaddr(func_8850CB48))(arg0->unk_74->unk_28, 2); + + temp_s0_2 = mem_pool_alloc(argA, sizeof(unk_func_88001300_03C_01C)); + ((func88503340)Memmap_GetFragmentVaddr(func_88503340))(temp_s0_2, 0, 0, 0x10, 0x10, D_88217F84); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0->unk_2C, temp_s0_2); + arg0->unk_74->unk_28->unk_1C = temp_s0_2; + + temp_s0_3 = mem_pool_alloc(argA, sizeof(unk_func_8850143C)); + ((func8850143C)Memmap_GetFragmentVaddr(func_8850143C))(temp_s0_3, 0, 0xF4, 0x228, 0x6C, D_88217F88, D_88217F8C); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0->unk_2C, temp_s0_3); + + arg0->unk_64 = mem_pool_alloc(argA, sizeof(unk_func_88500994)); + ((func88500994)Memmap_GetFragmentVaddr(func_88500994))(arg0->unk_64, 0, 0); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(temp_s0_3, arg0->unk_64); + + arg0->unk_68 = mem_pool_alloc(argA, sizeof(unk_func_88500994)); + ((func88500994)Memmap_GetFragmentVaddr(func_88500994))(arg0->unk_68, 0, 0); + ((func88500A3C)Memmap_GetFragmentVaddr(func_88500A3C))(arg0->unk_64, arg0->unk_68); + + for (j = 0; j < 8; j++) { + temp_s1_2 = func_8002D7C0(NULL, 0, D_88224FB4, j + 1); + spB4[j] = mem_pool_alloc(argA, sizeof(unk_func_8850878C)); + ((func8850878C)Memmap_GetFragmentVaddr(func_8850878C))(spB4[j], (0x228 - func_8001F5B0(0x10, 0, temp_s1_2)) / 2, + 0x2A, temp_s1_2, 0x10); + spB4[j]->unk_30 = D_88217F90[j][0]; + spB4[j]->unk_44 = spB4[j]->unk_44; + spB4[j]->unk_34 = D_88217F90[j][1]; + spB4[j]->unk_44 = 1; + ((func88500A3C)Memmap_GetFragmentVaddr(func_88500A3C))(arg0->unk_68, spB4[j]); + } + + if (arg3 != NULL) { + temp_v0_10 = func_8002D7C0(NULL, 0, D_88224FB4, 9); + spB4[2]->unk_00.unk_10.unk_00 = (0x228 - func_8001F5B0(0x10, 0, temp_v0_10)) / 2; + spB4[2]->unk_00.unk_10.unk_02 = 0x2A; + spB4[2]->unk_40 = temp_v0_10; + } + + arg0->unk_6C = mem_pool_alloc(argA, sizeof(unk_func_88500994)); + ((func88500994)Memmap_GetFragmentVaddr(func_88500994))(arg0->unk_6C, 0, 0); + ((func88500A3C)Memmap_GetFragmentVaddr(func_88500A3C))(arg0->unk_64, arg0->unk_6C); + + for (j = 0; j < 2; j++) { + temp_s0_4 = mem_pool_alloc(argA, sizeof(unk_func_8850878C)); + spA0 = func_8002D7C0(NULL, 0, D_88224FB4, 0xA); + + if (j == 0) { + sp9C = 0x210 - func_8001F5B0(0x10, 0, spA0); + } else { + sp9C = 0x18; + } + + ((func8850878C)Memmap_GetFragmentVaddr(func_8850878C))(temp_s0_4, sp9C, 0x1A, spA0, 0x10); + + temp_s0_4->unk_30 = D_88217FB0[j][0]; + temp_s0_4->unk_44 = temp_s0_4->unk_44; + temp_s0_4->unk_34 = D_88217FB0[j][1]; + temp_s0_4->unk_44 = 1; + temp_s0_4->unk_3C = 0x20; + + ((func88500A3C)Memmap_GetFragmentVaddr(func_88500A3C))(arg0->unk_6C, temp_s0_4); + } + + arg0->unk_70 = mem_pool_alloc(argA, sizeof(unk_func_8820BE14_02C_070)); + func_8820920C(arg0->unk_70, 0, 0); + ((func88500A3C)Memmap_GetFragmentVaddr(func_88500A3C))(arg0->unk_64, arg0->unk_70); + + arg0->unk_38[0] = mem_pool_alloc(argA, sizeof(unk_func_8820B12C_02C_020)); + func_882158CC(arg0->unk_38[0], 8, 0x36, 6, func_88207354, 0xCC, 0x1C, argA); + ((func88506238)Memmap_GetFragmentVaddr(func_88506238))(arg0->unk_38[0], 0x14, argA); + + sp94 = mem_pool_alloc(argA, sizeof(unk_func_88507D4C)); + ((func88507D4C)Memmap_GetFragmentVaddr(func_88507D4C))(sp94, 8, 0x26, 0xCC, 0, arg0->unk_38[0]); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0->unk_2C, sp94); + + sp98 = mem_pool_alloc(argA, sizeof(unk_func_88507D4C)); + ((func88507D4C)Memmap_GetFragmentVaddr(func_88507D4C))(sp98, 8, arg0->unk_38[0]->unk_00.unk_00.unk_14.unk_02 + 0x36, + 0xCC, 1, arg0->unk_38); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0->unk_2C, sp98); + func_882159AC(arg0->unk_38[0], sp98); + + temp_v0_14 = mem_pool_alloc(argA, sizeof(unk_func_882170A8)); + func_882170A8(temp_v0_14, 0x98, 2, arg0->unk_38, 2); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(sp98, temp_v0_14); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0->unk_2C, arg0->unk_38[0]); + + arg0->unk_38[1] = mem_pool_alloc(argA, sizeof(unk_func_8820B12C_02C_020)); + func_882158CC(arg0->unk_38[1], 0x154, 0x36, 6, func_88207354, 0xCC, 0x1C, argA); + ((func88506238)Memmap_GetFragmentVaddr(func_88506238))(arg0->unk_38[1], 0x14, argA); + + sp88 = mem_pool_alloc(argA, sizeof(unk_func_88507D4C)); + ((func88507D4C)Memmap_GetFragmentVaddr(func_88507D4C))(sp88, 0x154, 0x26, 0xCC, 0, arg0->unk_38[1]); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0->unk_2C, sp88); + + sp8C = mem_pool_alloc(argA, sizeof(unk_func_88507D4C)); + ((func88507D4C)Memmap_GetFragmentVaddr(func_88507D4C))( + sp8C, 0x154, arg0->unk_38[1]->unk_00.unk_00.unk_14.unk_02 + 0x36, 0xCC, 1, arg0->unk_38[1]); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0->unk_2C, sp8C); + func_882159AC(arg0->unk_38[1], sp8C); + + temp_v0_16 = mem_pool_alloc(argA, sizeof(unk_func_882170A8)); + func_882170A8(temp_v0_16, 0x98, 2, arg0->unk_38[1], 2); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(sp8C, temp_v0_16); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0->unk_2C, arg0->unk_38[1]); + + if (arg3 != NULL) { + temp_s0_5 = func_88209AF0(arg0->unk_8C); + func_882091F8(arg0->unk_30[0], 0x30000); + func_882091F8(arg0->unk_30[1], temp_s0_5); + func_88217018(arg0->unk_38[0], arg3, 0x30000); + func_88217018(arg0->unk_38[1], + (arg0->unk_8C[temp_s0_5 >> 0x10].unk_0C * (temp_s0_5 & 0xFFFF)) + + arg0->unk_8C[temp_s0_5 >> 0x10].unk_00, + temp_s0_5); + } else { + func_882091F8(arg0->unk_30[0], 0); + func_882091F8(arg0->unk_30[1], 0x10000); + func_88217018(arg0->unk_38[0], arg0->unk_8C[0].unk_00, 0); + func_88217018(arg0->unk_38[1], arg0->unk_8C[1].unk_00, 0x10000); + } + + arg0->unk_74->unk_2C = mem_pool_alloc(argA, sizeof(unk_func_8820B12C_02C)); + func_88207A94(arg0->unk_74->unk_2C, arg0->unk_38, arg0->unk_38[1], arg0->unk_40, arg0->unk_80, arg3 != NULL, argA); + ((func8850BF80)Memmap_GetFragmentVaddr(func_8850BF80))(arg0->unk_74, arg0->unk_74->unk_2C); + + arg0->unk_74->unk_2C->unk_40 = mem_pool_alloc(argA, sizeof(unk_func_8850CD44)); + ((func8850CD44)Memmap_GetFragmentVaddr(func_8850CD44))(arg0->unk_74->unk_2C->unk_40, 2, argA); + + for (j = 0; j < 2; j++) { + arg0->unk_74->unk_2C->unk_4C[j] = mem_pool_alloc(argA, sizeof(unk_func_882173EC)); + func_882173EC(arg0->unk_74->unk_2C->unk_4C[j], 0, 0); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0->unk_2C, arg0->unk_74->unk_2C->unk_4C[j]); + + arg0->unk_74->unk_2C->unk_54[j] = mem_pool_alloc(argA, sizeof(unk_func_882079D8)); + func_882079D8(arg0->unk_74->unk_2C->unk_54[j], 0, 0, 0xCC, NULL); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0->unk_74->unk_2C->unk_4C[j], + arg0->unk_74->unk_2C->unk_54[j]); + + arg0->unk_74->unk_2C->unk_40->unk_1C[j] = arg0->unk_74->unk_2C->unk_4C[j]; + } + + arg0->unk_74->unk_2C->unk_44 = arg6; + arg0->unk_74->unk_2C->unk_48 = arg7; + + arg0->unk_78[0] = mem_pool_alloc(argA, sizeof(unk_func_8820BE14_02C_078)); + func_88206C4C(arg0->unk_78[0], 8, 0x2A, 0xCC, arg0->unk_8C, 0, argA); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0->unk_2C, arg0->unk_78[0]); + + arg0->unk_78[1] = mem_pool_alloc(argA, sizeof(unk_func_8820BE14_02C_078)); + func_88206C4C(arg0->unk_78[1], 0x154, 0x2A, 0xCC, arg0->unk_8C, 1, argA); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0->unk_2C, arg0->unk_78[1]); + + temp_s0_6 = mem_pool_alloc(argA, sizeof(unk_func_88503298)); + ((func88503298)Memmap_GetFragmentVaddr(func_88503298))(temp_s0_6, arg0->unk_2C, arg5); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0, temp_s0_6); + + arg0->unk_84 = mem_pool_alloc(argA, sizeof(unk_func_889000C4)); + ((func889000C4)Memmap_GetFragmentVaddr(func_889000C4))(arg0->unk_84, arg3 != NULL, arg0->unk_2C, 0, arg9, argA); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0, arg0->unk_84); + + temp_s0_7 = mem_pool_alloc(argA, sizeof(char) * 0x80); + + arg0->unk_88 = mem_pool_alloc(argA, sizeof(unk_func_8850878C)); + ((func8850878C)Memmap_GetFragmentVaddr(func_8850878C))(arg0->unk_88, 0, 0, temp_s0_7, 0x10); + arg0->unk_88->unk_30 = D_88217FB8; + arg0->unk_88->unk_44 = arg0->unk_88->unk_44; +} +#else +static Color_RGBA8 D_88217E90 = { 0x6C, 0x6C, 0x7E, 0xFF }; +static Color_RGBA8 D_88217E94 = { 0x50, 0x50, 0x86, 0xFF }; +static Color_RGBA8 D_88217E98 = { 0x79, 0x79, 0xCB, 0xFF }; +static Color_RGBA8 D_88217E9C = { 0x40, 0x40, 0x6C, 0xFF }; +static Color_RGBA8 D_88217EA0 = { 0x6A, 0x6A, 0xB2, 0xFF }; +static unk_D_88217EA4 D_88217EA4[] = { + { + 219, + 40, + 54, + 42, + D_8821E100, + 0x30, + 0x0000, + D_882181E8, + 1, + 1, + }, + { + 279, + 40, + 54, + 42, + D_8821E100, + 0x30, + 0x0000, + D_882181E8, + 0, + 3, + }, + { + 219, + 88, + 54, + 42, + D_88218FD0, + 0x30, + 0x0000, + D_882181B8, + 0, + 3, + }, + { + 279, + 88, + 54, + 42, + D_8821B868, + 0x30, + 0x0000, + D_882181D0, + 1, + 1, + }, + { + 219, + 136, + 54, + 42, + D_8821AAE0, + 0x30, + 0x0000, + D_882181C8, + 0, + 1, + }, + { + 279, + 136, + 54, + 42, + D_88219D58, + 0x30, + 0x0000, + D_882181C0, + 1, + 1, + }, + { + 219, + 184, + 54, + 42, + D_88218248, + 0x30, + 0x0000, + D_882181B0, + 0, + 3, + }, + { + 279, + 184, + 54, + 42, + D_8821D378, + 0x30, + 0x0000, + D_882181E0, + 1, + 1, + }, +}; +static Color_RGBA8 D_88217F84 = { 0xFF, 0xFF, 0x00, 0xFF }; +static Color_RGBA8 D_88217F88 = { 0x2D, 0x1A, 0x41, 0xFF }; +static Color_RGBA8 D_88217F8C = { 0x6F, 0x5F, 0x7F, 0xFF }; +static Color_RGBA8* D_88217F90[] = { + D_88218228, D_88218228, D_882181F0, D_88218210, D_88218200, D_88218208, D_882181F8, D_88218220, +}; +static Color_RGBA8* D_88217FB0[] = { D_882181F8, D_882181F8 }; +static Color_RGBA8 D_88217FB8 = { 0xF0, 0xF0, 0xF0, 0xFF }; +#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1AE680/func_88209B54.s") +#endif + +s32 func_8820ADEC(unk_func_8820BE14_02C* arg0) { + switch (arg0->unk_74->unk_00.unk_1C) { + case 0: + if ((arg0->unk_74->unk_28->unk_20 == 0x100) && (arg0->unk_74->unk_28->unk_24 < 2)) { + ((func88500A6C)Memmap_GetFragmentVaddr(func_88500A6C))(arg0->unk_64, 1); + ((func88500A6C)Memmap_GetFragmentVaddr(func_88500A6C))(arg0->unk_6C, + (arg0->unk_74->unk_28->unk_24 == 0) ? 0 : 1); + } else { + ((func88500A6C)Memmap_GetFragmentVaddr(func_88500A6C))(arg0->unk_64, 0); + ((func88500A6C)Memmap_GetFragmentVaddr(func_88500A6C))(arg0->unk_68, arg0->unk_74->unk_28->unk_24); + } + break; + + case 1: + if (func_882091E4(arg0->unk_30[0]) == 0x30000) { + ((func88500A6C)Memmap_GetFragmentVaddr(func_88500A6C))(arg0->unk_64, 0); + ((func88500A6C)Memmap_GetFragmentVaddr(func_88500A6C))(arg0->unk_68, arg0->unk_74->unk_28->unk_24); + } else { + func_88209A88(arg0->unk_70, func_88208BFC(arg0->unk_74->unk_2C)); + ((func88500A6C)Memmap_GetFragmentVaddr(func_88500A6C))(arg0->unk_64, 2); + } + break; + } + + return 0; +} + +s32 func_8820AF78(unk_func_8820BE14_02C* arg0, Controller* arg1) { + s32 var_v1; + + if (arg0->unk_2C->unk_30 & 2) { + var_v1 = arg0->unk_74->unk_00.unk_10(&arg0->unk_74->unk_00, arg1); + } else { + var_v1 = 1; + } + return var_v1; +} + +s32 func_8820AFC4(unk_func_8820BE14_02C* arg0, Controller* arg1) { + s32 temp_v0; + s32 var_s2 = 0; + + arg0->unk_00.unk_24(&arg0->unk_00, 1); + + ((func88502C98)Memmap_GetFragmentVaddr(func_88502C98))(arg0->unk_2C); + + while (var_s2 == 0) { + func_8002EEA8(0); + + temp_v0 = arg0->unk_00.unk_20(arg0, gPlayer1Controller); + + if (!(temp_v0 & 1) && (temp_v0 & 2)) { + var_s2 = 1; + } + + ((func8850BC94)Memmap_GetFragmentVaddr(func_8850BC94))(temp_v0); + } + + arg0->unk_2C->unk_2C = 0xB; + return var_s2; +} + +void func_8820B0A0(unk_func_8820BE14_02C* arg0, s32 arg1) { + arg0->unk_00.unk_2A = arg1; + ((func8850BF60)Memmap_GetFragmentVaddr(func_8850BF60))(arg0->unk_74, arg1); +} + +void func_8820B0E0(unk_func_8820B12C_02C* arg0) { + func_882158BC(arg0->unk_4C[0]); + func_882158BC(arg0->unk_54[0]); + func_882158BC(arg0->unk_54[1]); + func_882158BC(arg0->unk_4C[1]); + func_882158BC(arg0->unk_5C[1]); +} + +void func_8820B12C(unk_func_8820B12C* arg0, unk_func_8820BE14_02C* arg1) { + ((func8850BDF0)Memmap_GetFragmentVaddr(func_8850BDF0))(&arg0->unk_00); + + arg0->unk_00.unk_10 = func_8820B838; + arg0->unk_00.unk_24 = arg1; +} + +s32 func_8820B178(unk_func_8820BE14_06C_000* arg0, s32 arg1, s32 arg2, s32 arg3) { + s32 i; + s32 sp90; + unk_func_80022C28_ret* temp_v0; + unk_func_88205880_00D0** var_s1; + unk_func_80026268_arg0 sp34; + + sp90 = 0; + if (arg0->unk_00 == 0) { + return 0; + } + + temp_v0 = func_80022C28(arg1, arg2, arg3, 0); + if (temp_v0 == NULL) { + return 0; + } + + arg0->unk_00 = 0; + + if (func_8002EE1C(arg1, arg2, arg3) != arg0->unk_04.unk_08) { + arg0->unk_00 = 1; + sp90 = 1; + } else { + var_s1 = arg0->unk_04.unk_00; + + for (i = 0; i < arg0->unk_04.unk_08; i++, var_s1++) { + bzero(&sp34, sizeof(unk_func_80026268_arg0)); + func_80022E18(&sp34, 1, temp_v0); + if (bcmp(&sp34, *var_s1, sizeof(unk_func_80026268_arg0)) != 0) { + arg0->unk_00 = 1; + sp90 = 1; + break; + } + } + } + + func_80022D8C(temp_v0); + + return sp90; +} + +s32 func_8820B2A4(unk_func_8820BE14_02C* arg0) { + s32 i; + s32 temp_s2; + s32 var_s4; + unk_func_8820BE14_06C_000* var_s1; + + temp_s2 = func_80029080(); + var_s4 = 0; + + var_s1 = arg0->unk_8C[0].unk_00; + for (i = 0; i < 1; i++) { + if (func_8820B178(&var_s1[i], 0x20, temp_s2, i) != 0) { + var_s4 |= 1; + break; + } + } + + var_s1 = arg0->unk_8C[1].unk_00; + for (i = 0; i < 12; i++) { + if (func_8820B178(&var_s1[i], 0x21, temp_s2, i) != 0) { + var_s4 |= 2; + break; + } + } + + var_s1 = arg0->unk_8C[2].unk_00; + for (i = 0; i < 12; i++) { + if (func_8820B178(&var_s1[i], 0x11, temp_s2, i) != 0) { + var_s4 |= 4; + break; + } + } + + return var_s4; +} + +s32 func_8820B3AC(unk_func_8820BE14_02C* arg0) { + return arg0->unk_8C->unk_00->unk_04.unk_08 == 0; +} + +void func_8820B3C0(s32 arg0, s32 arg1, s32 arg2, unk_func_88200FA0_030_038* arg3) { + s32 i; + unk_func_88205880_00D0** sp28; + unk_func_80022C28_ret* temp_s3; + + sp28 = arg3->unk_00; + temp_s3 = func_80022C28(arg0, arg1, arg2, 1); + + for (i = 0; i < arg3->unk_08; i++) { + func_80022F24(sp28[i], 1, temp_s3); + } + + if ((arg0 == 0x10) || (arg0 == 0x11) || (arg0 == 0x12)) { + func_80022D24(temp_s3); + } else { + func_80022D8C(temp_s3); + } +} + +void func_8820B480(unk_func_88200FA0_030_038* arg0, s32 arg1) { + s32 i; + unk_func_88205880_00D0** tmp = arg0->unk_00; + + for (i = 0; i < arg0->unk_08; i++) { + if ((tmp[i]->unk_000[0].unk_00 > 0) && (tmp[i]->unk_000[0].unk_00 < 0x98)) { + func_800256F4(arg1, tmp[i]->unk_000[0].unk_00, 3); + } + } +} + +void func_8820B504(unk_func_8820BE14_02C* arg0, s32 arg1) { + s32 i; + s32 temp_s5; + unk_func_8820BE14_06C_000* temp_s4; + + temp_s5 = func_80029080(); + ((func88500A6C)Memmap_GetFragmentVaddr(func_88500A6C))(arg0->unk_84->unk_40, 2); + func_8002EEA8(NULL); + + temp_s4 = arg0->unk_8C[0].unk_00; + for (i = 0; i < 1; i++) { + if (temp_s4[i].unk_00 != 0) { + func_8820B3C0(0x20, temp_s5, i, &temp_s4[i].unk_04); + func_8820B480(&temp_s4[i].unk_04, temp_s5); + } + } + + temp_s4 = arg0->unk_8C[1].unk_00; + for (i = 0; i < 12; i++) { + if (temp_s4[i].unk_00 != 0) { + func_8820B3C0(0x21, temp_s5, i, &temp_s4[i].unk_04); + func_8820B480(&temp_s4[i].unk_04, temp_s5); + } + } + + temp_s4 = arg0->unk_8C[2].unk_00; + for (i = 0; i < 12; i++) { + if (temp_s4[i].unk_00 != 0) { + func_8820B3C0(0x11, temp_s5, i, &temp_s4[i].unk_04); + } + } + + if (func_882091E4(arg0->unk_30[0]) == 0x30000) { + func_8002817C(0, 0); + func_80026E4C(2); + func_800284B4(2); + } + + if (arg1 & 4) { + func_800284B4(3); + } + + if (arg1 & 3) { + func_80025540(temp_s5); + ((func88900970)Memmap_GetFragmentVaddr(func_88900970))(arg0->unk_84, temp_s5); + } + + if (arg1 & 4) { + func_80026E4C(3); + func_800284B4(3); + } +} + +s32 func_8820B714(unk_func_8820BE14_02C* arg0, Controller* arg1) { + s32 sp34; + s32 sp30; + UNUSED s32 pad[2]; + func889006D4 sp24; + s32 temp_v0_2; + + sp34 = 1; + sp30 = func_8820B2A4(arg0); + + if (sp30 != 0) { + arg0->unk_74->unk_28->unk_14(arg0->unk_74->unk_28, 0); + + sp24 = ((func889006D4)Memmap_GetFragmentVaddr(func_889006D4)); + + sp24(arg0->unk_84, func_8820B3AC(arg0)); + + temp_v0_2 = ((func88900808)Memmap_GetFragmentVaddr(func_88900808))(arg0->unk_84, arg1, 1); + if (temp_v0_2 == 0) { + func_8820B504(arg0, sp30); + ((func889007AC)Memmap_GetFragmentVaddr(func_889007AC))(arg0->unk_84); + } else if (temp_v0_2 == 1) { + ((func889007AC)Memmap_GetFragmentVaddr(func_889007AC))(arg0->unk_84); + } else if (temp_v0_2 == 2) { + ((func889007AC)Memmap_GetFragmentVaddr(func_889007AC))(arg0->unk_84); + sp34 = 0; + } + + arg0->unk_74->unk_28->unk_14(arg0->unk_74->unk_28, 1); + } + return sp34; +} + +s32 func_8820B838(unk_func_8820B12C* arg0, Controller* arg1) { + static u8 D_88217FBC[] = { 0x18, 0x19, 0x1A }; + + s32 i; + s32 var_s1; + s32 temp_v0_8; + unk_func_8820B12C_000* var_a0; + s32 sp64; + u32 sp60; + s32 sp5C; + s32 sp58; + s32 sp54; + s32 sp50; + char sp30[0x20]; + + var_s1 = 0; + if (arg0->unk_00.unk_20 > 0) { + var_a0 = arg0->unk_00.unk_04; + for (i = 0; i < arg0->unk_00.unk_1C; i++) { + var_a0 = var_a0->unk_08; + } + var_s1 = var_a0->unk_10(var_a0, arg1); + } + + if (var_s1 & 1) { + return var_s1; + } + + if (var_s1 == 0) { + if (arg1->buttonPressed & 0x4000) { + var_s1 = 0x80000002; + } else if (arg1->buttonPressed & 0x8000) { + var_s1 = 0x80000004; + } else if (arg1->buttonPressed & 0x30) { + var_s1 = 0x01000000; + } + } + + if (var_s1 & 2) { + switch (arg0->unk_00.unk_1C) { + case 0: + func_80048B90(3); + var_s1 = 2; + if (func_8820B714(arg0->unk_00.unk_24, arg1) == 0) { + var_s1 = 3; + } + break; + + case 1: + ((func8850C064)Memmap_GetFragmentVaddr(func_8850C064))(arg0, 0); + var_s1 |= 1; + break; + } + } else if (var_s1 & 4) { + switch (arg0->unk_00.unk_1C) { + case 1: + break; + + case 0: + switch (arg0->unk_28->unk_24) { + case 0: + case 1: + if (arg0->unk_28->unk_24 == 0) { + sp64 = 0; + } else { + sp64 = 1; + } + func_80048B90(2); + func_88206E80(arg0->unk_00.unk_24->unk_78[sp64], + func_882091E4(arg0->unk_00.unk_24->unk_30[sp64])); + func_88206F0C(arg0->unk_00.unk_24->unk_78[sp64], + func_882091E4(arg0->unk_00.unk_24->unk_30[1 - sp64])); + + arg0->unk_28->unk_14(arg0->unk_28, 0x100); + + if (func_88207154(arg0->unk_00.unk_24->unk_78[sp64], arg1) == 1) { + sp60 = func_88206E50(arg0->unk_00.unk_24->unk_78[sp64]); + func_882091F8(arg0->unk_00.unk_24->unk_30[sp64], sp60); + func_88217018(arg0->unk_00.unk_24->unk_38[sp64], + (u8*)arg0->unk_00.unk_24->unk_8C[sp60 >> 0x10].unk_00 + + (arg0->unk_00.unk_24->unk_8C[sp60 >> 0x10].unk_0C * (sp60 & 0xFFFF)), + sp60); + } + arg0->unk_28->unk_14(arg0->unk_28, 1); + var_s1 = 1; + break; + + case 2: + func_88207D0C(arg0->unk_2C, 0); + ((func8850C064)Memmap_GetFragmentVaddr(func_8850C064))(arg0, 1); + var_s1 |= 1; + break; + + case 5: + func_88207D0C(arg0->unk_2C, 1); + ((func8850C064)Memmap_GetFragmentVaddr(func_8850C064))(arg0, 1); + var_s1 |= 1; + break; + + case 4: + func_88207D0C(arg0->unk_2C, 2); + ((func8850C064)Memmap_GetFragmentVaddr(func_8850C064))(arg0, 1); + var_s1 |= 1; + break; + + case 6: + func_80048B90(3); + var_s1 = 2; + if (func_8820B714(arg0->unk_00.unk_24, arg1) == 0) { + var_s1 = 3; + } + break; + + case 3: + func_88207D0C(arg0->unk_2C, 3); + func_88207BFC(arg0->unk_2C, 0); + ((func8850C064)Memmap_GetFragmentVaddr(func_8850C064))(arg0, 1); + var_s1 |= 1; + break; + case 7: + func_88207D0C(arg0->unk_2C, 3); + func_88207BFC(arg0->unk_2C, 1); + ((func8850C064)Memmap_GetFragmentVaddr(func_8850C064))(arg0, 1); + var_s1 |= 1; + break; + } + break; + } + } else if ((arg0->unk_00.unk_24->unk_40->unk_00.unk_28 & 1) && (var_s1 & 0x01000000)) { + var_s1 = 1; + sp5C = (arg1->buttonPressed & 0x20) != 0; + sp58 = arg0->unk_2C->unk_34; + switch (arg0->unk_00.unk_1C) { + case 0: + sp58 = sp5C; + break; + + case 1: + if (func_88208160(arg0->unk_2C) != 0) { + sp58 = sp5C; + } + break; + } + + if (sp58 != arg0->unk_2C->unk_34) { + func_88207D18(arg0->unk_2C); + func_8820B0E0(arg0->unk_00.unk_24); + func_88217BC0(arg0->unk_00.unk_24->unk_40); + ((func8850BFB0)Memmap_GetFragmentVaddr(func_8850BFB0))(arg0); + var_s1 = 0x80000005; + } + } else if (var_s1 & 0x02000000) { + ((func8850C064)Memmap_GetFragmentVaddr(func_8850C064))(arg0, 0); + + temp_v0_8 = func_882091E4(arg0->unk_00.unk_24->unk_30[1]); + sp50 = temp_v0_8 & 0xFFFF; + sp54 = temp_v0_8 >> 0x10; + + HAL_Strcpy(sp30, func_8002D7C0(NULL, 0, D_88224FB4, D_88217FBC[sp54])); + + if ((sp54 == 1) || (sp54 == 2)) { + sprintf(&sp30[strlen(sp30)], " %d", sp50 + 1); + } + + func_8002D5D4(0x25, &sp30); + func_8002D7C0(arg0->unk_00.unk_24->unk_88->unk_40, 0x80, D_88224FB4, 0x11); + + ((func8850A10C)Memmap_GetFragmentVaddr(func_8850A10C))(arg0->unk_00.unk_24->unk_80, arg0->unk_00.unk_24->unk_88, + 2, 0); + ((func8850A3EC)Memmap_GetFragmentVaddr(func_8850A3EC))(arg0->unk_00.unk_24->unk_80, arg1); + + func_80048B90(0x29); + + var_s1 |= 2; + if (func_8820B714(arg0->unk_00.unk_24, arg1) == 0) { + var_s1 |= 1; + } + } + + return var_s1; +} + +#ifdef NON_MATCHING +void func_8820BE14(unk_func_8820BE14* arg0, s32 arg1, s32 arg2, s32 arg3, MemoryPool* arg4, s32 arg5, char** arg6, + char** arg7, char** arg8, char** arg9, char** argA, char** argB) { + static Color_RGBA8 D_88217FC0 = { 0x1E, 0x50, 0x50, 0xFF }; + static Color_RGBA8 D_88217FC4 = { 0x00, 0x0A, 0x0A, 0xFF }; + + s32 i; + s32 j; + unk_func_88001300_000* spC4; + s32 spB4; + unk_func_8820BE14_06C_000* spA0; + unk_func_8820BE14_06C* sp5C; + void (*sp58)(unk_func_88001300_000*, s32, s32, s32, s32); + s32 temp_s0_2; + s32 temp_v0_2; + s32 temp_v0_3; + s32 temp_v0_4; + s32 var_s2; + s32 var_s2_2; + s32 var_s2_3; + s32 var_s3; + s32 var_s3_2; + s32 var_s3_3; + s32 var_v0; + s32 var_v0_2; + s32 var_v0_3; + u32 temp_s0_3; + u32 temp_s3; + unk_func_88001300_02C* temp_v0_8; + unk_func_88200FA0_030_038* var_s0; + unk_func_88200FA0_030_038* var_s0_2; + unk_func_88200FA0_030_038* var_s0_3; + unk_func_8820BE14_06C* temp_a0; + FragmentEntry temp_v0_7; + unk_func_88500EE4* temp_s0; + unk_func_88001300_000* temp_s0_4; + unk_func_88509A2C* temp_s1; + unk_func_88509E34* temp_s1_2; + unk_func_885088F4* temp_s2; + void* temp_v0; + unk_func_8820BE14_sp* temp_v0_5; + void* temp_v0_6; + unk_func_882062E4* var_s1; + void* var_s2_4; + void* var_s2_5; + void* var_s2_6; + unk_func_8820BE14_06C_000* var_s4; + unk_func_8820BE14_06C_000* var_s4_2; + void* var_s4_3; + void** temp_t0; + void** temp_t2; + void** temp_t4; + unk_func_8820BE14_06C_000* ptr; + unk_func_88200FA0_030_038* ptr2; + s32 count; + unk_func_882062E4* new_var; + + spA0 = NULL; + + ((func885007CC)Memmap_GetFragmentVaddr(func_885007CC))(arg0, 0x9C); + + arg0->unk_00.unk_10.unk_00 = arg1; + arg0->unk_00.unk_10.unk_02 = arg2; + + spB4 = func_80029080(); + + var_s1 = mem_pool_alloc(arg4, sizeof(unk_func_882062E4) * (6 + (12 * 20) * 2)); + bzero(var_s1, sizeof(unk_func_882062E4) * (6 + (12 * 20) * 2)); + + func_8002C758(&arg0->unk_6C, 0x10, 1, arg4); + func_8002C758(&arg0->unk_7C, 0x10, 12, arg4); + func_8002C758(&arg0->unk_8C, 0x10, 12, arg4); + + arg0->unk_6C.unk_08 = 1; + ptr = arg0->unk_6C.unk_00; + for (i = 0; i < 1; i++) { + func_8002CBC0(&ptr[i].unk_04, 6, arg4); + } + + arg0->unk_7C.unk_08 = 12; + ptr = arg0->unk_7C.unk_00; + for (i = 0; i < 12; i++) { + func_8002CBC0(&ptr[i].unk_04, 20, arg4); + } + + arg0->unk_8C.unk_08 = 12; + ptr = arg0->unk_8C.unk_00; + for (i = 0; i < 12; i++) { + func_8002CBC0(&ptr[i].unk_04, 20, arg4); + } + + if (func_8002513C(spB4) == 0) { + func_80024208(spB4); + } + + var_s4_2 = var_s4 = arg0->unk_6C.unk_00; + for (i = 0; i < 1; i++, var_s4_2++, var_s4++) { + count = func_882062E4(var_s1, 6, 0x20, spB4, i); + var_s4_2->unk_04.unk_08 = count; + + ptr2 = &var_s4_2->unk_04; + for (j = 0; j < count; j++) { + ptr2->unk_00[j] = var_s1++; + } + + var_s4->unk_00 = 0; + } + + var_s4_2 = var_s4 = arg0->unk_7C.unk_00; + for (i = 0; i < 12; i++, var_s4_2++, var_s4++) { + count = func_882062E4(var_s1, 20, 0x21, spB4, i); + var_s4_2->unk_04.unk_08 = count; + + ptr2 = &var_s4_2->unk_04; + for (j = 0; j < count; j++) { + ptr2->unk_00[j] = var_s1++; + } + + var_s4->unk_00 = 0; + } + + var_s4_2 = var_s4 = arg0->unk_8C.unk_00; + for (i = 0; i < 12; i++, var_s4_2++, var_s4++) { + count = func_882062E4(var_s1, 20, 0x11, 0, i); + var_s4_2->unk_04.unk_08 = count; + + ptr2 = &var_s4_2->unk_04; + for (j = 0; j < count; j++) { + ptr2->unk_00[j] = var_s1++; + } + + var_s4->unk_00 = 0; + } + + if (arg3 == 1) { + temp_v0_5 = mem_pool_alloc(arg4, sizeof(unk_func_8820BE14_sp)); + func_88206110(temp_v0_5); + + spA0 = mem_pool_alloc(arg4, sizeof(unk_func_8820BE14_06C_000)); + func_8002CBC0(&spA0->unk_04, 1, arg4); + + spA0->unk_04.unk_08 = 1; + *spA0->unk_04.unk_00 = temp_v0_5; + spA0->unk_00 = 0; + } + + spC4 = mem_pool_alloc(arg4, sizeof(unk_func_88001300_000)); + ((func885031E8)Memmap_GetFragmentVaddr(func_885031E8))(spC4, 0, 0, 0x280, 0x1E0); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0, spC4); + + temp_s0 = mem_pool_alloc(arg4, sizeof(unk_func_88500EE4)); + ((func88500EE4)Memmap_GetFragmentVaddr(func_88500EE4))(temp_s0, 0, 0, 0x280, 0x1E0, D_88223E48, D_88217FC0, + D_88217FC4); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(spC4, temp_s0); + + temp_s2 = mem_pool_alloc(arg4, sizeof(unk_func_885088F4)); + ((func885088F4)Memmap_GetFragmentVaddr(func_885088F4))(temp_s2, 0x41, 0x15C, 0xDC); + temp_s2->unk_2C = 5; + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(spC4, temp_s2); + + temp_s1 = mem_pool_alloc(arg4, sizeof(unk_func_88509A2C)); + ((func88509A2C)Memmap_GetFragmentVaddr(func_88509A2C))(temp_s1, 0x38, 0x22, func_80029080(), + func_8002D7C0(NULL, 0, D_88224FB0, 0)); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(temp_s2, temp_s1); + + temp_s1_2 = mem_pool_alloc(arg4, sizeof(unk_func_88509E34)); + ((func88509E34)Memmap_GetFragmentVaddr(func_88509E34))(temp_s1_2, 0, 0, func_8002D7C0(NULL, 0, D_88224FB4, 0)); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(temp_s2, temp_s1_2); + + temp_s0_4 = mem_pool_alloc(arg4, sizeof(unk_func_88001300_000)); + ((func885031E8)Memmap_GetFragmentVaddr(func_885031E8))(temp_s0_4, 0, 0, 0x280, 0x1E0); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0, temp_s0_4); + + temp_v0_7 = FRAGMENT_LOAD(fragment27); + + arg0->unk_30.unk_04 = arg4; + arg0->unk_30.unk_00 = 0x38; + arg0->unk_30.unk_02 = 0x52; + arg0->unk_30.unk_14 = temp_s0_4; + arg0->unk_30.unk_18 = 0; + + arg0->unk_4C = arg7; + arg0->unk_50 = D_88224FB8; + arg0->unk_54 = D_88224FBC; + arg0->unk_58 = arg8; + arg0->unk_5C = arg9; + arg0->unk_60 = argA; + arg0->unk_64 = argB; + + temp_v0_7(0, &arg0->unk_30); + + arg0->unk_68 = mem_pool_alloc(arg4, sizeof(unk_func_88509F48)); + ((func88509F48)Memmap_GetFragmentVaddr(func_88509F48))(arg0->unk_68, 0x2C, 0x4C, 0x228, 0x160, arg4, arg5); + + arg0->unk_2C = mem_pool_alloc(arg4, sizeof(unk_func_8820BE14_02C)); + func_88209B54(arg0->unk_2C, 0x2C, 0x4C, spA0, &arg0->unk_6C, spC4, temp_v0_7, &arg0->unk_30, arg0->unk_68, arg6, + arg4); + + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(temp_s0_4, arg0->unk_2C); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(&arg0->unk_00, arg0->unk_30.unk_08); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(temp_s0_4, arg0->unk_68); +} +#else +static Color_RGBA8 D_88217FC0 = { 0x1E, 0x50, 0x50, 0xFF }; +static Color_RGBA8 D_88217FC4 = { 0x00, 0x0A, 0x0A, 0xFF }; +#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1AE680/func_8820BE14.s") +#endif -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1AE680/func_88208C5C.s") +void func_8820C510(unk_func_8820BE14* arg0) { + volatile s32 sp34 = 0; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1AE680/func_88208CE4.s") + while (sp34 == 0) { + func_80015348(); + func_800079C4(); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1AE680/func_882091E4.s") + ((func885008C4)Memmap_GetFragmentVaddr(func_885008C4))(&arg0->unk_00); + ((func88500828)Memmap_GetFragmentVaddr(func_88500828))(&arg0->unk_00, 0, 0); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1AE680/func_882091F8.s") + func_80007778(); + func_8002EF18(&sp34); + } +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1AE680/func_8820920C.s") +void func_8820C5BC(unk_func_8820BE14* arg0) { + s32 sp24 = func_8820AFC4(arg0->unk_2C, gPlayer1Controller); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1AE680/func_8820927C.s") + while (arg0->unk_2C->unk_2C->unk_28 & 1) { + func_8002EEA8(0); + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1AE680/func_8820938C.s") + func_8002EEA8(sp24); + osStopThread(NULL); +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1AE680/func_88209A88.s") +void func_8820C63C(unk_func_8820BE14* arg0) { + s32 sp24; + s32 var_s0; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1AE680/func_88209AF0.s") + func_80006C6C(8); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1AE680/func_88209B54.s") + var_s0 = 8; + while (var_s0-- > 0) { + func_8002EEA8(NULL); + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1AE680/func_8820ADEC.s") + sp24 = func_8820AFC4(arg0->unk_2C, gPlayer1Controller); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1AE680/func_8820AF78.s") + while (arg0->unk_2C->unk_2C->unk_28 & 1) { + func_8002EEA8(NULL); + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1AE680/func_8820AFC4.s") + func_80006CB4(8); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1AE680/func_8820B0A0.s") + var_s0 = 10; + while (var_s0-- > 0) { + func_8002EEA8(NULL); + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1AE680/func_8820B0E0.s") + func_8002EEA8(sp24); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1AE680/func_8820B12C.s") + osStopThread(NULL); +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1AE680/func_8820B178.s") +void func_8820C700(s32 arg0, s32 arg1) { + static ThreadEntries D_88217FC8[] = { func_8820C5BC, func_8820C63C }; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1AE680/func_8820B2A4.s") + MemoryPool* sp5C; + void* sp58; + u8* sp54; + func_88002628_sp38* sp50; + char** sp4C; + char** sp48; + char** sp44; + char** sp40; + char** sp3C; + char** sp38; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1AE680/func_8820B3AC.s") + main_pool_push_state('OTPC'); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1AE680/func_8820B3C0.s") + FRAGMENT_LOAD(fragment25); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1AE680/func_8820B480.s") + func_8001B058(); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1AE680/func_8820B504.s") + sp54 = main_pool_alloc(0x10000, 0); + sp5C = mem_pool_try_init(0x18000, 0); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1AE680/func_8820B714.s") + if (arg1 == 1) { + func_80028AFC(2); + } + func_8002D510(); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1AE680/func_8820B838.s") + D_88224FB0 = func_8002D5AC(0x2A); + D_88224FB4 = func_8002D5AC(2); + D_88224FB8 = func_8002D5AC(0x24); + D_88224FBC = func_8002D5AC(0x25); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1AE680/func_8820BE14.s") + sp4C = func_8002D5AC(7); + sp48 = func_8002D5AC(6); + sp44 = func_8002D5AC(0x26); + sp40 = func_8002D5AC(0x28); + sp3C = func_8002D5AC(0x29); + sp38 = func_8002D5AC(0xB); + + sp58 = mem_pool_alloc(sp5C, sizeof(unk_func_8820BE14)); + func_8820BE14(sp58, 0, 0, arg1, sp5C, arg0, sp4C, sp48, sp44, sp40, sp3C, sp38); + + sp50 = ALIGN16((u32)mem_pool_alloc(sp5C, sizeof(func_88002628_sp38))); + + osCreateThread(&sp50->thread, 0x32, D_88217FC8[arg1], sp58, sp54 + 0x10000, osGetThreadPri(NULL) - 1); + + func_8002EE78(); + func_8001F738(gPlayer1Controller); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1AE680/func_8820C510.s") + osStartThread(&sp50->thread); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1AE680/func_8820C5BC.s") + func_8820C510(sp58); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1AE680/func_8820C63C.s") + osDestroyThread(&sp50->thread); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1AE680/func_8820C700.s") + main_pool_pop_state('OTPC'); +} diff --git a/src/fragments/23/fragment23_1B4EA0.c b/src/fragments/23/fragment23_1B4EA0.c index ecf64870..fce511d0 100644 --- a/src/fragments/23/fragment23_1B4EA0.c +++ b/src/fragments/23/fragment23_1B4EA0.c @@ -1,200 +1,3054 @@ -#include "global.h" +#include "fragment23.h" +#include "src/1CF30.h" +#include "src/20330.h" +#include "src/22630.h" +#include "src/26820.h" +#include "src/29BA0.h" +#include "src/2D340.h" +#include "src/2E110.h" +#include "src/2E460.h" +#include "src/49790.h" +#include "src/hal_libc.h" +#include "src/memmap.h" +#include "src/memory.h" +#include "src/stage_loader.h" + +typedef struct unk_D_88218060 { + /* 0x00 */ s32 unk_00; + /* 0x04 */ Color_RGBA8* unk_04; +} unk_D_88218060; // size = 0x8 + +typedef struct unk_D_88218070 { + /* 0x00 */ s16 unk_00; + /* 0x02 */ s16 unk_02; + /* 0x04 */ s16 unk_04; + /* 0x06 */ s16 unk_06; + /* 0x08 */ u8* unk_08; + /* 0x0C */ s16 unk_0C; + /* 0x10 */ Color_RGBA8* unk_10; +} unk_D_88218070; // size = 0x14 + +static char** D_88224FC0; +static char** D_88224FC4; +static char** D_88224FC8; +static char** D_88224FCC; + +void func_8820C930(s32 arg0, s32 arg1, s32 arg2, unk_func_8820BE14_06C* arg3) { + unk_func_80022C28_ret* sp1C = func_80022C28(arg0, arg1, arg2, 0); + + arg3->unk_08 = func_80022E18(arg3->unk_00, arg3->unk_04, sp1C); + func_80022D8C(sp1C); +} + +void func_8820C97C(s32 arg0, s32 arg1, s32 arg2, unk_func_8820BE14_06C* arg3, s32 arg4, char* arg5, s32 arg6) { + unk_func_80022C28_ret* sp2C; + + if (arg6 != -1) { + if (1) {} + sp2C = func_80022CC0(arg0, arg1, arg2, arg4, arg5, arg6); + } else { + sp2C = func_80022C28(arg0, arg1, arg2, 1); + } + + func_80022F24(arg3->unk_00, arg3->unk_08, sp2C); + + if ((arg0 == 0x10) || (arg0 == 0x11) || (arg0 == 0x12)) { + func_80022D24(sp2C); + } else { + func_80022D8C(sp2C); + } +} + +void func_8820CA2C(unk_func_8821421C_07C* arg0) { + s32 i; + + for (i = 0; i < 4; i++) { + arg0[i].unk_00 = func_80027164(0x12, i); + if (arg0[i].unk_00 != 0) { + arg0[i].unk_04 = func_80027184(0x12, i) & 0xFFFF; + func_800272BC(0x12, i, arg0[i].unk_08); + } + } +} + +s32 func_8820CAB4(unk_func_8821421C_07C* arg0, s32 arg1, char* arg2) { + s32 i; + + for (i = 0; i < 4; i++) { + if ((arg0[i].unk_00 != 0) && (arg1 == arg0[i].unk_04) && (HAL_Strcmp(arg0[i].unk_08, arg2) == 0)) { + return i; + } + } + + for (i = 0; i < 4; i++) { + if (arg0[i].unk_00 == 0) { + return i; + } + } + + return -1; +} + +void func_8820CBA0(unk_func_8821421C_02C_030* arg0, unk_func_8850143C* arg1, spE8_func_882121E0* arg2) { + ((func885007CC)Memmap_GetFragmentVaddr(func_885007CC))(arg0, sizeof(unk_func_8821421C_02C_030)); + + arg0->unk_00.unk_18 = func_8820CC30; + arg0->unk_00.unk_14.unk_00 = arg1->unk_00.unk_14.unk_00; + arg0->unk_00.unk_14.unk_02 = arg1->unk_00.unk_14.unk_02; + arg0->unk_2C = arg1; + arg0->unk_30 = func_8002EC08(func_80024F68(func_80029080())); + arg0->unk_34 = -1; + arg0->unk_38 = arg2; +} + +s32 func_8820CC30(unk_func_8821421C_02C_030* arg0, s32 arg1, s32 arg2) { + static Color_RGBA8 D_88217FD0 = { 0xF0, 0xF0, 0xF0, 0xFF }; + static Color_RGBA8 D_88217FD4 = { 0x7F, 0x7F, 0x7F, 0xFF }; + + s32 temp_v0; + s32 var_s0; + + if (arg0->unk_34 == -1) { + return 1; + } + + temp_v0 = func_8001F5B0(8, 0, arg0->unk_38->unk_00[arg0->unk_34], arg0->unk_34); + + gDPPipeSync(gDisplayListHead++); + + gDPSetCycleType(gDisplayListHead++, G_CYC_COPY); + gDPSetRenderMode(gDisplayListHead++, G_RM_NOOP, G_RM_NOOP2); + gDPSetAlphaCompare(gDisplayListHead++, G_AC_THRESHOLD); + gDPSetTexturePersp(gDisplayListHead++, G_TP_NONE); + + if ((arg0->unk_34 == 0) || (arg0->unk_34 == 1)) { + var_s0 = (((arg0->unk_00.unk_14.unk_00 - temp_v0) - 0x20) / 2) + arg1 + 0x20; + + gDPLoadTextureBlock(gDisplayListHead++, D_88223470[arg0->unk_30], G_IM_FMT_RGBA, G_IM_SIZ_16b, 24, 26, 0, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, + G_TX_NOLOD); + gSPTextureRectangle(gDisplayListHead++, (var_s0 - 0x20) << 2, (arg2 + 2) << 2, (var_s0 - 9) << 2, + (arg2 + 0x1B) << 2, G_TX_RENDERTILE, 0, 0, 0x1000, 0x0400); + } else { + var_s0 = (((arg0->unk_00.unk_14.unk_00 - temp_v0) - 0x30) / 2) + arg1 + 0x30; + + gDPLoadTextureBlock(gDisplayListHead++, D_88223488, G_IM_FMT_RGBA, G_IM_SIZ_16b, 48, 26, 0, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, + G_TX_NOLOD); + gSPTextureRectangle(gDisplayListHead++, (var_s0 - 0x30) << 2, (arg2 + 2) << 2, (var_s0 - 9) << 2, + (arg2 + 0x1B) << 2, G_TX_RENDERTILE, 0, 0, 0x1000, 0x0400); + } + + gDPPipeSync(gDisplayListHead++); + + gDPSetAlphaCompare(gDisplayListHead++, G_AC_NONE); + + func_8001F3F4(); + func_8001F324(D_88217FD0.r, D_88217FD0.g, D_88217FD0.b, D_88217FD0.a); + func_8001EBE0(8, 0); + func_8001F1E8(var_s0, arg2 + 5, arg0->unk_38->unk_00[arg0->unk_34]); + func_8001F444(); + + return 0; +} + +s32 func_8820D0E4(unk_func_8821421C_02C_030* arg0) { + return arg0->unk_34; +} + +void func_8820D0EC(unk_func_8821421C_02C_030* arg0, s32 arg1) { + arg0->unk_34 = arg1; +} + +void func_8820D0F4(unk_func_8821421C_034* arg0, s32 arg1, s32 arg2, MemoryPool* arg3) { + static Color_RGBA8 D_88217FD8 = { 0x64, 0x96, 0xB4, 0xFF }; + static Color_RGBA8 D_88217FDC = { 0x3C, 0x64, 0x78, 0xFF }; + static Color_RGBA8 D_88217FE0 = { 0x99, 0x99, 0x89, 0xFF }; + static Color_RGBA8 D_88217FE4 = { 0xFF, 0xFF, 0x00, 0xFF }; + + UNUSED s32 pad[2]; + unk_func_88001300_03C* ptr; + unk_func_8850B254* sp60; + unk_func_885012A4* sp5C; + unk_func_88001300_000* sp58; + unk_func_88001300_000* sp54; + unk_func_8850878C* sp50; + unk_func_8850878C* sp4C; + unk_func_88001300_03C_01C* sp48; + + ((func885007CC)Memmap_GetFragmentVaddr(func_885007CC))(arg0, sizeof(unk_func_8821421C_034)); + + arg0->unk_00.unk_20 = func_8820D564; + arg0->unk_00.unk_24 = func_8820D5E8; + arg0->unk_00.unk_10.unk_00 = arg1; + arg0->unk_00.unk_10.unk_02 = arg2; + + arg0->unk_2C = mem_pool_alloc(arg3, sizeof(unk_func_88001300_038)); + ((func88502274)Memmap_GetFragmentVaddr(func_88502274))(arg0->unk_2C, 0, 0, 0x100, 0x3C); + + arg0->unk_2C->unk_28 |= 0x200; + arg0->unk_2C->unk_28 |= 0x400; + arg0->unk_2C->unk_28 &= ~1; + + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0, arg0->unk_2C); + + sp60 = mem_pool_alloc(arg3, sizeof(unk_func_8850B254)); + ((func8850B254)Memmap_GetFragmentVaddr(func_8850B254))(sp60, 0, 0, 0x100, 0x14, D_88217FD8, D_88217FDC); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0->unk_2C, sp60); + + arg0->unk_34 = mem_pool_alloc(arg3, sizeof(unk_func_8850878C)); + ((func8850878C)Memmap_GetFragmentVaddr(func_8850878C))(arg0->unk_34, 8, 0, "Do?", 8); + arg0->unk_34->unk_3C = 0x18; + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0->unk_2C, arg0->unk_34); + + sp5C = mem_pool_alloc(arg3, sizeof(unk_func_885012A4)); + ((func885012A4)Memmap_GetFragmentVaddr(func_885012A4))(sp5C, 0, 0x18, 0x100, 0x24, D_88217FE0); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0->unk_2C, sp5C); + + arg0->unk_30 = mem_pool_alloc(arg3, sizeof(unk_func_88001300_03C)); + ((func8850C284)Memmap_GetFragmentVaddr(func_8850C284))(arg0->unk_30, 1, 2, arg3); + + sp54 = mem_pool_alloc(arg3, sizeof(unk_func_88001300_000)); + ((func8850A40C)Memmap_GetFragmentVaddr(func_8850A40C))(sp54, 0x28, 6, 0x48, 0x18); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(sp5C, sp54); + ptr = arg0->unk_30; + ptr->unk_18[0] = sp54; + + sp50 = mem_pool_alloc(arg3, sizeof(unk_func_8850878C)); + ((func8850878C)Memmap_GetFragmentVaddr(func_8850878C))(sp50, 0xA, 2, func_8002D7C0(NULL, 0, D_88224FC4, 0x17), 8); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(sp54, sp50); + + sp58 = mem_pool_alloc(arg3, sizeof(unk_func_88001300_000)); + ((func8850A40C)Memmap_GetFragmentVaddr(func_8850A40C))(sp58, 0x90, 6, 0x48, 0x18); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(sp5C, sp58); + ptr = arg0->unk_30; + ptr->unk_18[1] = sp58; + + sp4C = mem_pool_alloc(arg3, sizeof(unk_func_8850878C)); + ((func8850878C)Memmap_GetFragmentVaddr(func_8850878C))(sp4C, 6, 2, func_8002D7C0(NULL, 0, D_88224FC4, 0x18), 8); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(sp58, sp4C); + ((func8850CAB4)Memmap_GetFragmentVaddr(func_8850CAB4))(arg0->unk_30); + + sp48 = mem_pool_alloc(arg3, sizeof(unk_func_88001300_03C_01C)); + ((func88503340)Memmap_GetFragmentVaddr(func_88503340))(sp48, 0, 0, 0x10, 0x10, D_88217FE4); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(sp5C, sp48); + arg0->unk_30->unk_1C = sp48; +} + +s32 func_8820D564(unk_func_8821421C_034* arg0, Controller* arg1) { + s32 var_v1; + + if (arg0->unk_2C->unk_30 & 2) { + var_v1 = arg0->unk_30->unk_10(arg0->unk_30, arg1); + if (var_v1 == 0) { + if (arg1->buttonPressed & 0x4000) { + var_v1 = 0x80000002; + } else if (arg1->buttonPressed & 0x8000) { + var_v1 = 0x80000004; + } + } + } else { + var_v1 = 1; + } + return var_v1; +} + +void func_8820D5E8(unk_func_8821421C_034* arg0, s32 arg1) { + arg0->unk_00.unk_2A = arg1; + arg0->unk_30->unk_14(arg0->unk_30, arg1); +} + +void func_8820D614(unk_func_8821421C_034* arg0, char* arg1) { + arg0->unk_34->unk_40 = arg1; +} + +s32 func_8820D620(unk_func_8821421C_034* arg0, Controller* arg1) { + s32 var_s0; + s32 var_s1 = 0; + + arg0->unk_30->unk_14(arg0->unk_30, 1); + + ((func88502C98)Memmap_GetFragmentVaddr(func_88502C98))(arg0->unk_2C); + + while (var_s1 == 0) { + func_8002EEA8(var_s1); + + var_s0 = func_8820D564(arg0, arg1); + + if (!(var_s0 & 1)) { + if (var_s0 & 2) { + var_s1 = 1; + } else if (var_s0 & 4) { + switch (arg0->unk_30->unk_24) { + case 0: + var_s1 = 2; + func_80048B90(0x1F); + var_s0 = 1; + break; + + case 1: + var_s0 = (var_s0 & ~4) | 2; + var_s1 = 1; + break; + } + } + } + + ((func8850BC94)Memmap_GetFragmentVaddr(func_8850BC94))(var_s0); + } + + arg0->unk_2C->unk_2C = 0xB; + return var_s1 - 1; +} + +s32 func_8820D754(spE8_func_882121E0* arg0, s32 arg1) { + s32 temp_v0; + s32 var_s1 = 0; + s32 i; + + for (i = 0; i < arg1; i++) { + temp_v0 = func_8001F5B0(8, 0, arg0->unk_00[i]); + if (var_s1 < temp_v0) { + var_s1 = temp_v0; + } + } + + return var_s1; +} + +void func_8820D7C8(s32 arg0, s32 arg1, s8* arg2, s32 arg3, s32 arg4, unk_func_88200FA0_030_030* arg5) { + static Color_RGBA8 D_88217FE8[] = { + { 0xF0, 0xF0, 0xF0, 0xFF }, { 0xF0, 0xF0, 0xF0, 0x4D }, { 0xF0, 0xF0, 0x00, 0xFF }, + { 0xCB, 0xFF, 0xD6, 0xFF }, { 0xB2, 0xFF, 0xC3, 0xFF }, + }; + static Color_RGBA8 D_88217FFC = { 0x6C, 0x6C, 0x7E, 0xFF }; + + Color_RGBA8 sp3C; + s32 temp_t2; + + gDPPipeSync(gDisplayListHead++); + + gDPSetCycleType(gDisplayListHead++, G_CYC_FILL); + gDPSetRenderMode(gDisplayListHead++, G_RM_NOOP, G_RM_NOOP2); + + temp_t2 = ((D_88217FFC.r << 8) & 0xF800) | ((D_88217FFC.g * 8) & 0x7C0) | ((D_88217FFC.b >> 2) & 0x3E) | 1; + + gDPPipeSync(gDisplayListHead++); + + gDPSetFillColor(gDisplayListHead++, (temp_t2 << 0x10) | temp_t2); + gDPFillRectangle(gDisplayListHead++, arg0, arg1, (arg5->unk_3C + arg0) - 1, (arg1 + arg5->unk_3E) - 1); + + func_8001F3F4(); + + if (arg4 & 0x100) { + sp3C = D_88217FE8[2]; + } else if (arg4 & 4) { + sp3C = D_88217FE8[1]; + } else { + sp3C = D_88217FE8[0]; + } + + func_8001F324(sp3C.r, sp3C.g, sp3C.b, sp3C.a); + func_8001EBE0(8, 0); + func_8001F1E8(arg0 + 8, arg1 + 4, arg2); + func_8001F444(); +} + +void func_8820D9B8(unk_func_8821421C_02C_070* arg0, s32 arg1, s32 arg2, s32 arg3, spE8_func_882121E0* arg4, s32 arg5, + s32 arg6, MemoryPool* arg7) { + s32 sp4C = func_8820D754(arg4, arg5) + 0x10; + UNUSED s32 pad; + + ((func885007CC)Memmap_GetFragmentVaddr(func_885007CC))(arg0, sizeof(unk_func_8821421C_02C_070)); + + arg0->unk_00.unk_20 = func_8820DB98; + arg0->unk_00.unk_24 = func_8820DBE4; + arg0->unk_00.unk_10.unk_00 = ((arg3 - sp4C) / 2) + arg1; + arg0->unk_00.unk_10.unk_02 = arg2; + arg0->unk_40 = arg6; + + func_8002CBB0(&arg0->unk_34, arg4, arg5, arg5); + + arg0->unk_2C = mem_pool_alloc(arg7, sizeof(unk_func_88001300_038)); + ((func88502274)Memmap_GetFragmentVaddr(func_88502274))(arg0->unk_2C, 0, 0, sp4C, arg5 * 0x1C); + + arg0->unk_2C->unk_28 |= 0x200; + arg0->unk_2C->unk_28 |= 0x400; + arg0->unk_2C->unk_28 &= ~1; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1B4EA0/func_8820C930.s") + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0, arg0->unk_2C); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1B4EA0/func_8820C97C.s") + arg0->unk_30 = mem_pool_alloc(arg7, sizeof(unk_func_88200FA0_030_030)); + ((func885060BC)Memmap_GetFragmentVaddr(func_885060BC))(arg0->unk_30, 0, 0, func_8820D7C8, sp4C, 0x1C, arg5, 1, + arg7); + ((func88506384)Memmap_GetFragmentVaddr(func_88506384))(arg0->unk_30, &arg0->unk_34, arg7); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0->unk_2C, arg0->unk_30); +} + +s32 func_8820DB98(unk_func_8821421C_02C_070* arg0, Controller* arg1) { + s32 var_v1; + + if (arg0->unk_2C->unk_30 & 2) { + var_v1 = arg0->unk_30->unk_00.unk_20(arg0->unk_30, arg1); + } else { + var_v1 = 1; + } + return var_v1; +} + +void func_8820DBE4(unk_func_8821421C_02C_070* arg0, s32 arg1) { + unk_func_88200FA0_030_030* temp_a0; + + arg0->unk_00.unk_2A = arg1; + arg0->unk_30->unk_00.unk_24(&arg0->unk_30->unk_00, arg1); +} + +s32 func_8820DC10(unk_func_8821421C_02C_070* arg0) { + return arg0->unk_30->unk_38; +} + +void func_8820DC1C(unk_func_8821421C_02C_070* arg0, s32 arg1) { + arg0->unk_44 = arg1; + + ((func8850628C)Memmap_GetFragmentVaddr(func_8850628C))(arg0->unk_30); + ((func88506BFC)Memmap_GetFragmentVaddr(func_88506BFC))(arg0->unk_30, arg0->unk_44); + + arg0->unk_30->unk_34[arg0->unk_30->unk_38] |= 0x100; +} + +void func_8820DC90(unk_func_8821421C_02C_070* arg0) { + ((func88502C98)Memmap_GetFragmentVaddr(func_88502C98))(arg0->unk_2C); +} + +void func_8820DCC4(unk_func_8821421C_02C_070* arg0) { + arg0->unk_2C->unk_2C = 0xB; +} + +s32 func_8820DCD4(unk_func_8821421C_02C_070* arg0, Controller* arg1) { + s32 var_s0; + s32 var_s1 = 0; + + arg0->unk_00.unk_24(&arg0->unk_00, 1); + + while (var_s1 == 0) { + func_8002EEA8(NULL); + + var_s0 = arg0->unk_00.unk_20(arg0, arg1); + + if (!(var_s0 & 1)) { + if (arg1->buttonPressed & 0x4000) { + var_s0 = 0x80000003; + var_s1 = 1; + } else if (arg1->buttonPressed & 0x8000) { + var_s0 = 0x80000005; + var_s1 = 2; + } + } + + ((func8850BC94)Memmap_GetFragmentVaddr(func_8850BC94))(var_s0); + } + + return var_s1 - 1; +} + +void func_8820DDC0(unk_func_8821421C_02C_070* arg0, s32 arg1) { + arg0->unk_48 = arg1; + arg0->unk_30->unk_34[arg1] |= 4; +} + +s32 func_8820DDE4(u8* arg0, s32 arg1, s32 arg2, s32 arg3) { + static Color_RGBA8 D_88218000 = { 0xF0, 0xF0, 0xF0, 0xFF }; + static Color_RGBA8 D_88218004[] = { + { 0xFF, 0xCB, 0xDE, 0xFF }, + { 0xFF, 0xBF, 0xD6, 0xFF }, + { 0x5A, 0x5A, 0xA6, 0xFF }, + }; + + Color_RGBA8 sp34; + s8 sp2C[8]; + UNUSED s32 pad; + s8* sp24; + + func_8001F3F4(); + func_8001EBE0(8, 0); + + if (func_8002F1C0(arg0[0]) != 0) { + sp34 = D_88218004[0]; + } else { + sp34 = D_88218000; + } + + func_8001F324(sp34.r, sp34.g, sp34.b, sp34.a); + func_8001F1E8(arg1 + 0x19, arg2 + 4, func_8002D7C0(NULL, 0, D_88224FC8, arg0[0] - 1)); + + if (func_8002F264(arg0[0]) == 0) { + sp24 = func_8002D7C0(NULL, 0, D_88224FC4, 0x19); + sprintf(sp2C, "%s00", sp24); + func_8001EBE0(4, 0); + func_8001F1E8(((arg1 + arg3) - func_8001F5B0(0, 0, &sp2C)) - 0x19, arg2 + 8, "%s%02d", sp24, arg0[1]); + } + func_8001F444(); +} + +void func_8820DF38(s32 arg0, s32 arg1, u8* arg2, s32 arg3, s32 arg4, unk_func_8820BE14_02C_038* arg5) { + static Color_RGBA8 D_88218010[] = { 0x40, 0x40, 0x74, 0xFF }; + static Color_RGBA8 D_88218014[] = { + { 0x78, 0x78, 0xF1, 0xFF }, + { 0x5E, 0x5E, 0xBE, 0xFF }, + }; + + Color_RGBA8 spD4; + + if (arg2 != NULL) { + s32 temp_t1; + s32 temp_t0; + s32 temp_t4; + s32 temp_a3; + + if (arg4 & 2) { + spD4 = func_8002D444(D_88218010[0], 1.4f); + } else { + spD4 = D_88218010[0]; + } + + gDPPipeSync(gDisplayListHead++); + + gDPSetCycleType(gDisplayListHead++, G_CYC_FILL); + gDPSetRenderMode(gDisplayListHead++, G_RM_NOOP, G_RM_NOOP2); + + temp_t1 = ((spD4.r << 8) & 0xF800) | ((spD4.g << 3) & 0x7C0) | ((spD4.b >> 2) & 0x3E) | 1; + + gDPPipeSync(gDisplayListHead++); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1B4EA0/func_8820CA2C.s") + gDPSetFillColor(gDisplayListHead++, temp_t1 | (temp_t1 << 0x10)); + gDPFillRectangle(gDisplayListHead++, arg0, arg1 + 1, arg0 + 0xEB, arg1 + 0x1A); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1B4EA0/func_8820CAB4.s") + temp_a3 = + ((D_88218014[1].r << 8) & 0xF800) | ((D_88218014[1].g << 3) & 0x7C0) | ((D_88218014[1].b >> 2) & 0x3E) | 1; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1B4EA0/func_8820CBA0.s") + gDPPipeSync(gDisplayListHead++); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1B4EA0/func_8820CC30.s") + gDPSetFillColor(gDisplayListHead++, temp_a3 | (temp_a3 << 0x10)); + gDPFillRectangle(gDisplayListHead++, arg0, arg1, arg0 + 0xEB, arg1); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1B4EA0/func_8820D0E4.s") + temp_t4 = + ((D_88218014[1].r << 8) & 0xF800) | ((D_88218014[1].g << 3) & 0x7C0) | ((D_88218014[1].b >> 2) & 0x3E) | 1; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1B4EA0/func_8820D0EC.s") + gDPPipeSync(gDisplayListHead++); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1B4EA0/func_8820D0F4.s") + gDPSetFillColor(gDisplayListHead++, temp_t4 | (temp_t4 << 0x10)); + gDPFillRectangle(gDisplayListHead++, arg0, arg1 + 0x1B, arg0 + 0xEB, arg1 + 0x1B); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1B4EA0/func_8820D564.s") + if (!(arg4 & 0x100)) { + func_8820DDE4(arg2, arg0, arg1, arg5->unk_00.unk_3C); + } + } else { + s32 temp_t1; + s32 temp_t0; + s32 temp_t4; + s32 temp_a3; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1B4EA0/func_8820D5E8.s") + if (arg4 & 1) { + spD4 = D_88218010[0]; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1B4EA0/func_8820D614.s") + gDPPipeSync(gDisplayListHead++); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1B4EA0/func_8820D620.s") + gDPSetCycleType(gDisplayListHead++, G_CYC_FILL); + gDPSetRenderMode(gDisplayListHead++, G_RM_NOOP, G_RM_NOOP2); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1B4EA0/func_8820D754.s") + temp_t1 = ((spD4.r << 8) & 0xF800) | ((spD4.g << 3) & 0x7C0) | ((spD4.b >> 2) & 0x3E) | 1; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1B4EA0/func_8820D7C8.s") + gDPPipeSync(gDisplayListHead++); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1B4EA0/func_8820D9B8.s") + gDPSetFillColor(gDisplayListHead++, temp_t1 | (temp_t1 << 0x10)); + gDPFillRectangle(gDisplayListHead++, arg0, arg1 + 1, arg0 + 0xEB, arg1 + 0x1A); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1B4EA0/func_8820DB98.s") + temp_a3 = ((D_88218014[1].r << 8) & 0xF800) | ((D_88218014[1].g << 3) & 0x7C0) | + ((D_88218014[1].b >> 2) & 0x3E) | 1; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1B4EA0/func_8820DBE4.s") + gDPPipeSync(gDisplayListHead++); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1B4EA0/func_8820DC10.s") + gDPSetFillColor(gDisplayListHead++, temp_a3 | (temp_a3 << 0x10)); + gDPFillRectangle(gDisplayListHead++, arg0, arg1, arg0 + 0xEB, arg1); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1B4EA0/func_8820DC1C.s") + temp_t4 = ((D_88218014[1].r << 8) & 0xF800) | ((D_88218014[1].g << 3) & 0x7C0) | + ((D_88218014[1].b >> 2) & 0x3E) | 1; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1B4EA0/func_8820DC90.s") + gDPPipeSync(gDisplayListHead++); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1B4EA0/func_8820DCC4.s") + gDPSetFillColor(gDisplayListHead++, temp_t4 | (temp_t4 << 0x10)); + gDPFillRectangle(gDisplayListHead++, arg0, arg1 + 0x1B, arg0 + 0xEB, arg1 + 0x1B); + } else { + spD4 = func_8002D444(D_88218010[0], 0.8f); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1B4EA0/func_8820DCD4.s") + gDPPipeSync(gDisplayListHead++); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1B4EA0/func_8820DDC0.s") + gDPSetCycleType(gDisplayListHead++, G_CYC_FILL); + gDPSetRenderMode(gDisplayListHead++, G_RM_NOOP, G_RM_NOOP2); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1B4EA0/func_8820DDE4.s") + temp_t0 = ((spD4.r << 8) & 0xF800) | ((spD4.g << 3) & 0x7C0) | ((spD4.b >> 2) & 0x3E) | 1; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1B4EA0/func_8820DF38.s") + gDPPipeSync(gDisplayListHead++); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1B4EA0/func_8820E5BC.s") + gDPSetFillColor(gDisplayListHead++, temp_t0 | (temp_t0 << 0x10)); + gDPFillRectangle(gDisplayListHead++, arg0, arg1, arg0 + 0xEB, arg1 + 0x1B); + } + } +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1B4EA0/func_8820E638.s") +void func_8820E5BC(unk_func_8821421C_02C_06C_02C_060* arg0, s32 arg1, s32 arg2, s32 arg3) { + ((func885007CC)Memmap_GetFragmentVaddr(func_885007CC))(arg0, sizeof(unk_func_8821421C_02C_06C_02C_060)); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1B4EA0/func_8820E654.s") + arg0->unk_00.unk_18 = func_8820E654; + arg0->unk_00.unk_10.unk_00 = arg1; + arg0->unk_00.unk_10.unk_02 = arg2; + arg0->unk_00.unk_14.unk_00 = arg3; + arg0->unk_00.unk_14.unk_02 = 0; + arg0->unk_2C.unk_00.unk_00 = 1; + arg0->unk_2C.unk_00.unk_01 = 1; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1B4EA0/func_8820E680.s") +void func_8820E638(unk_func_8821421C_02C_06C_02C_060* arg0, unk_func_8821421C_02C_06C_02C_060_02C_000 arg1) { + arg0->unk_2C.unk_00 = arg1; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1B4EA0/func_8820E6A0.s") +s32 func_8820E654(unk_func_8821421C_02C_06C_02C_060* arg0, s32 arg1, s32 arg2) { + return func_8820DDE4(&arg0->unk_2C, arg1, arg2, arg0->unk_00.unk_14.unk_00); +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1B4EA0/func_8820E7B0.s") +void func_8820E680(unk_func_8820E99C_030* arg0, s32 arg1) { + arg0->unk_30.unk_0C = 2; + arg0->unk_30.unk_00 = 1; + arg0->unk_30.unk_04 = 1; + arg0->unk_30.unk_08 = arg1; + arg0->unk_30.unk_10 = 0; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1B4EA0/func_8820E818.s") +void func_8820E6A0(unk_func_8820E99C_030* arg0, s32 arg1, s32 arg2, MemoryPool* arg3) { + s32 sp2C; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1B4EA0/func_8820E850.s") + ((func885007CC)Memmap_GetFragmentVaddr(func_885007CC))(arg0, sizeof(unk_func_8820E99C_030)); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1B4EA0/func_8820E90C.s") + arg0->unk_00.unk_1C = func_8820E818; + arg0->unk_00.unk_18 = func_8820E850; + arg0->unk_00.unk_20 = func_8820E90C; + arg0->unk_00.unk_24 = func_8820E7B0; + arg0->unk_00.unk_10.unk_00 = arg1; + arg0->unk_00.unk_10.unk_02 = arg2; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1B4EA0/func_8820E978.s") + func_8820E680(arg0, 0); + sp2C = func_8001F5B0(8, 0, "0"); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1B4EA0/func_8820E99C.s") + arg0->unk_44 = mem_pool_alloc(arg3, sizeof(unk_func_8820E99C_030_044)); + ((func88504F98)Memmap_GetFragmentVaddr(func_88504F98))(arg0->unk_44, -1, 0, sp2C + 2, 0x14); + arg0->unk_44->unk_00.unk_28 &= ~1; + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0, arg0->unk_44); +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1B4EA0/func_8820EBF0.s") +void func_8820E7B0(unk_func_8820E99C_030* arg0, s32 arg1) { + arg0->unk_00.unk_2A = arg1; + arg0->unk_44->unk_00.unk_24(&arg0->unk_44->unk_00, arg1); + arg0->unk_44->unk_00.unk_28 &= ~1; + if (arg1 & 0x101) { + arg0->unk_44->unk_00.unk_28 |= 1; + } +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1B4EA0/func_8820EC1C.s") +s32 func_8820E818(unk_func_8820E99C_030* arg0) { + s32 tmp = ((arg0->unk_30.unk_0C - arg0->unk_30.unk_10) - 1) * arg0->unk_44->unk_00.unk_14.unk_00; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1B4EA0/func_8820EC68.s") + arg0->unk_44->unk_00.unk_10.unk_00 = tmp; + arg0->unk_44->unk_00.unk_10.unk_02 = arg0->unk_44->unk_00.unk_10.unk_02; + return 0; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1B4EA0/func_8820EC9C.s") +s32 func_8820E850(unk_func_8820E99C_030* arg0, s32 arg1, s32 arg2) { + static Color_RGBA8 D_8821801C = { 0xF0, 0xF0, 0xF0, 0xFF }; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1B4EA0/func_8820ECAC.s") + func_8001F3F4(); + func_8001EBE0(8, 0); + func_8001F324(D_8821801C.r, D_8821801C.g, D_8821801C.b, D_8821801C.a); + func_8001F2E4(arg1, arg2, (arg0->unk_30.unk_00 / 10) + 0x30); + func_8001F2E4(arg0->unk_44->unk_00.unk_14.unk_00 + arg1, arg2, (arg0->unk_30.unk_00 % 10) + 0x30); + func_8001F444(); + return 0; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1B4EA0/func_8820ED14.s") +s32 func_8820E90C(unk_func_8820E99C_030* arg0, Controller* arg1) { + s32 sp1C = 0; + + if (func_8002E0F4(&arg0->unk_30) == 0) { + if (arg1->buttonPressed & 0x4000) { + sp1C = 0x80000002; + } else if (arg1->buttonPressed & 0x8000) { + sp1C = 0x80000004; + } + } else { + sp1C = 8; + } + return sp1C; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1B4EA0/func_8820EFD0.s") +void func_8820E978(unk_func_8820E99C* arg0, s32 arg1, s32 arg2) { + arg0->unk_34 = arg2; + func_8820E680(arg0->unk_30, arg1); +} + +void func_8820E99C(unk_func_8820E99C* arg0, s32 arg1, s32 arg2, MemoryPool* arg3) { + static Color_RGBA8 D_88218020 = { 0x6C, 0x6C, 0x7E, 0xFF }; + + char* sp44; + s32 sp40; + UNUSED s32 pad; + unk_func_885012A4* sp38; + unk_func_8850878C* sp34; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1B4EA0/func_8820EFD8.s") + sp44 = func_8002D7C0(NULL, 0, D_88224FC4, 0x19); + sp40 = func_8001F5B0(8, 0, sp44) + 0xC + (func_8001F5B0(8, 0, "0") * 2); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1B4EA0/func_8820F3B8.s") + ((func885007CC)Memmap_GetFragmentVaddr(func_885007CC))(arg0, sizeof(unk_func_8820E99C)); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1B4EA0/func_8820FFF8.s") + arg0->unk_00.unk_20 = func_8820EC1C; + arg0->unk_00.unk_24 = func_8820EBF0; + arg0->unk_00.unk_10.unk_00 = arg1; + arg0->unk_00.unk_10.unk_02 = arg2; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1B4EA0/func_8821004C.s") + arg0->unk_2C = mem_pool_alloc(arg3, sizeof(unk_func_88001300_038)); + ((func88502274)Memmap_GetFragmentVaddr(func_88502274))(arg0->unk_2C, 0, 0, sp40, 0x28); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1B4EA0/func_88210168.s") + arg0->unk_2C->unk_28 |= 0x200; + arg0->unk_2C->unk_28 |= 0x400; + arg0->unk_2C->unk_28 &= ~1; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1B4EA0/func_882101B4.s") + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0, arg0->unk_2C); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1B4EA0/func_882101E0.s") + sp38 = mem_pool_alloc(arg3, sizeof(unk_func_885012A4)); + ((func885012A4)Memmap_GetFragmentVaddr(func_885012A4))(sp38, 0, 0, sp40, 0x28, D_88218020); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0->unk_2C, sp38); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1B4EA0/func_88210234.s") + sp34 = mem_pool_alloc(arg3, sizeof(unk_func_8850878C)); + ((func8850878C)Memmap_GetFragmentVaddr(func_8850878C))(sp34, 4, 0xA, sp44, 8); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(sp38, sp34); + + arg0->unk_30 = mem_pool_alloc(arg3, sizeof(unk_func_8820E99C_030)); + func_8820E6A0(arg0->unk_30, func_8001F5B0(8, 0, sp44) + 6, 0xA, arg3); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(sp38, arg0->unk_30); + func_8820E978(arg0, 0, 0); +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1B4EA0/func_88210334.s") +void func_8820EBF0(unk_func_8820E99C* arg0, s32 arg1) { + arg0->unk_00.unk_2A = arg1; + arg0->unk_30->unk_00.unk_24(&arg0->unk_30->unk_00, arg1); +} + +s32 func_8820EC1C(unk_func_8820E99C* arg0, Controller* arg1) { + s32 var_v1; + + if (arg0->unk_2C->unk_30 & 2) { + var_v1 = arg0->unk_30->unk_00.unk_20(arg0->unk_30, arg1); + } else { + var_v1 = 1; + } + return var_v1; +} +void func_8820EC68(unk_func_8820E99C* arg0) { + ((func88502C98)Memmap_GetFragmentVaddr(func_88502C98))(arg0->unk_2C); +} + +void func_8820EC9C(unk_func_8820E99C* arg0) { + arg0->unk_2C->unk_2C = 0xB; +} + +void func_8820ECAC(unk_func_8821421C_038_02C* arg0, unk_func_8850143C* arg1) { + ((func885007CC)Memmap_GetFragmentVaddr(func_885007CC))(arg0, sizeof(unk_func_8821421C_038_02C)); + + arg0->unk_00.unk_18 = func_8820ED14; + arg0->unk_00.unk_14.unk_00 = arg1->unk_00.unk_14.unk_00; + arg0->unk_00.unk_14.unk_02 = arg1->unk_00.unk_14.unk_02; + arg0->unk_30 = 0; + arg0->unk_2C = arg1; +} + +s32 func_8820ED14(unk_func_8821421C_038_02C* arg0, s32 arg1, s32 arg2) { + static Color_RGBA8 D_88218024 = { 0xF0, 0xF0, 0xF0, 0xFF }; + + if (arg0->unk_30 == 0) { + return 1; + } + + gDPPipeSync(gDisplayListHead++); + + gDPSetCycleType(gDisplayListHead++, G_CYC_COPY); + gDPSetRenderMode(gDisplayListHead++, G_RM_NOOP, G_RM_NOOP2); + gDPSetAlphaCompare(gDisplayListHead++, G_AC_THRESHOLD); + gDPSetTexturePersp(gDisplayListHead++, G_TP_NONE); + + gDPLoadTextureBlock(gDisplayListHead++, D_88223488, G_IM_FMT_RGBA, G_IM_SIZ_16b, 48, 26, 0, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, + G_TX_NOLOD); + gSPTextureRectangle(gDisplayListHead++, (arg1 + 5) << 2, (arg2 + 2) << 2, (arg1 + 0x2C) << 2, (arg2 + 0x1B) << 2, + G_TX_RENDERTILE, 0, 0, 0x1000, 0x0400); + + gDPPipeSync(gDisplayListHead++); + + gDPSetAlphaCompare(gDisplayListHead++, G_AC_NONE); + + func_8001F3F4(); + func_8001F324(D_88218024.r, D_88218024.g, D_88218024.b, D_88218024.a); + func_8001EBE0(8, 0); + func_8001F1E8(arg1 + 0x35, arg2 + 4, &arg0->unk_30->unk_08); + func_8001F444(); + + return 0; +} + +void func_8820EFD0(unk_func_8821421C_038_02C* arg0, unk_func_8821421C_038_050* arg1) { + arg0->unk_30 = arg1; +} + +void func_8820EFD8(s32 arg0, s32 arg1, unk_func_8820EFD8* arg2, s32 arg3, s32 arg4, unk_func_8821421C_038_034* arg5) { + static Color_RGBA8 D_88218028 = { 0xF0, 0xF0, 0xF0, 0xFF }; + static Color_RGBA8 D_8821802C = { 0x6C, 0x6C, 0x7E, 0xFF }; + static Color_RGBA8 D_88218030 = { 0xAE, 0xAE, 0xCB, 0xFF }; + static Color_RGBA8 D_88218034[] = { + { + 0x0, + 0x0, + 0x0, + 0x40, + }, + { + 0x0, + 0x0, + 0x0, + 0x28, + }, + { + 0x0, + 0x0, + 0x0, + 0x3C, + }, + { + 0x88, + 0x22, + 0xC, + 0xD0, + }, + }; + + Color_RGBA8 sp6C; + UNUSED s32 pad; + char* sp64; + UNUSED s32 pad2; + s32 temp_a3; + s32 temp_t4; + + if (arg4 & 2) { + sp6C = func_8002D444(D_8821802C, 1.4f); + } else { + sp6C = D_8821802C; + } + + gDPPipeSync(gDisplayListHead++); + + gDPSetCycleType(gDisplayListHead++, G_CYC_FILL); + gDPSetRenderMode(gDisplayListHead++, G_RM_NOOP, G_RM_NOOP2); + + temp_a3 = ((sp6C.r << 8) & 0xF800) | ((sp6C.g * 8) & 0x7C0) | ((sp6C.b >> 2) & 0x3E) | 1; + + gDPPipeSync(gDisplayListHead++); + + gDPSetFillColor(gDisplayListHead++, (temp_a3 << 0x10) | temp_a3); + gDPFillRectangle(gDisplayListHead++, arg0, arg1 + 1, (arg5->unk_00.unk_3C + arg0) - 1, + (arg1 + arg5->unk_00.unk_3E) - 2); + + temp_t4 = ((D_88218030.r << 8) & 0xF800) | ((D_88218030.g * 8) & 0x7C0) | ((D_88218030.b >> 2) & 0x3E) | 1; + + gDPPipeSync(gDisplayListHead++); + + gDPSetFillColor(gDisplayListHead++, (temp_t4 << 0x10) | temp_t4); + gDPFillRectangle(gDisplayListHead++, arg0, arg1, (arg5->unk_00.unk_3C + arg0) - 1, arg1); + + temp_t4 = ((D_88218030.r << 8) & 0xF800) | ((D_88218030.g * 8) & 0x7C0) | ((D_88218030.b >> 2) & 0x3E) | 1; + + gDPPipeSync(gDisplayListHead++); + + gDPSetFillColor(gDisplayListHead++, (temp_t4 << 0x10) | temp_t4); + gDPFillRectangle(gDisplayListHead++, arg0, (arg1 + arg5->unk_00.unk_3E) - 1, (arg5->unk_00.unk_3C + arg0) - 1, + (arg1 + arg5->unk_00.unk_3E) - 1); + + func_8001F3F4(); + func_8001F324(D_88218028.r, D_88218028.g, D_88218028.b, D_88218028.a); + func_8001EBE0(0x10, 0); + + sp64 = func_8002D7C0(NULL, 0, D_88224FC4, 0x14); + func_8001F1E8(arg0 + 8, arg1 + 6, sp64); + func_8001F1E8(func_8001F5B0(0, 0, sp64) + arg0 + 8, arg1 + 6, "%s", &arg2->unk_08); + func_8001EBE0(8, 0); + + sp64 = func_8002D7C0(NULL, 0, D_88224FC4, 0x15); + func_8001F1E8(arg0 + 0xD, arg1 + 0x24, sp64); + func_8001F1E8(func_8001F5B0(0, 0, sp64) + arg0 + 0xD, arg1 + 0x24, "%05d", arg2->unk_04); + func_8001F444(); +} + +void func_8820F3B8(unk_func_8821421C_038* arg0, s32 arg1, s32 arg2, unk_func_88001300_000* arg3, + unk_func_8821421C_034* arg4, MemoryPool* arg5) { + static Color_RGBA8 D_88218044 = { 0x6C, 0x6C, 0x7E, 0xFF }; + static Color_RGBA8 D_88218048 = { 0x50, 0x50, 0x86, 0xFF }; + static Color_RGBA8 D_8821804C = { 0x79, 0x79, 0xCB, 0xFF }; + static Color_RGBA8 D_88218050 = { 0x40, 0x40, 0x6C, 0xFF }; + static Color_RGBA8 D_88218054 = { 0x6A, 0x6A, 0xB2, 0xFF }; + static Color_RGBA8 D_88218058 = { 0x2D, 0x1A, 0x41, 0xFF }; + static Color_RGBA8 D_8821805C = { 0x6F, 0x5F, 0x7F, 0xFF }; + static unk_D_88218060 D_88218060[] = { + { 17, D_88218210 }, + { 18, D_88218218 }, + }; + static unk_D_88218070 D_88218070[] = { + { + 249, + 110, + 54, + 42, + D_8821B868, + 48, + D_882181D0, + }, + { + 249, + 168, + 54, + 42, + D_8821C5F0, + 48, + D_882181D8, + }, + }; + static Color_RGBA8 D_88218098 = { 0xFF, 0xFF, 0x00, 0xFF }; + + unk_func_8850BD40* temp_s0_7; + unk_func_88503298* temp_s0_8; + unk_func_8850878C* temp_s0_3; + unk_func_8850878C* temp_s0_4; + unk_func_885012A4* spB4; + unk_func_885012A4* spB0; + unk_func_885012A4* spAC; + unk_func_885012A4* spA8; + unk_func_885012A4* spA4; + unk_func_885012A4* spA0; + unk_func_885012A4* sp9C; + unk_func_88001300_000* sp98; + unk_func_88001300_000* sp94; + unk_func_8850BD40* temp_s0_5; + unk_func_88001300_03C_01C* temp_s0_6; + unk_func_88001300_038* temp_v0_2; + unk_func_88001300_038* temp_v0_3; + unk_func_88001300_038* temp_v0_4; + char* sp7C; + unk_func_8820BE14_02C_038* temp_v0_8; + s32 i; + unk_func_882149A0* temp_v0_6; + unk_func_882170A8* temp_v0_9; + unk_func_88507D4C* sp68; + unk_func_88507D4C* sp64; + unk_func_8850143C* temp_s0; + unk_func_8850143C* temp_s0_2; + s32 j; + + ((func885007CC)Memmap_GetFragmentVaddr(func_885007CC))(arg0, 0x78); + + arg0->unk_00.unk_1C = func_8821004C; + arg0->unk_00.unk_20 = func_88210168; + arg0->unk_00.unk_24 = func_882101B4; + // clang-format off + arg0->unk_00.unk_10.unk_00 = arg1;arg0->unk_00.unk_10.unk_02 = arg2; + // clang-format on + arg0->unk_60 = 0; + + func_8002C758(&arg0->unk_64, 2, 0x64, arg5); + arg0->unk_48 = arg4; + + arg0->unk_4C = mem_pool_alloc(arg5, sizeof(unk_func_8821421C_038_04C)); + func_88210334(arg0->unk_4C, arg0); + + arg0->unk_44 = mem_pool_alloc(arg5, sizeof(unk_func_88001300_038)); + ((func88502274)Memmap_GetFragmentVaddr(func_88502274))(arg0->unk_44, 0, 0, 0x228, 0x162); + + arg0->unk_44->unk_28 |= 0x200; + arg0->unk_44->unk_28 |= 0x400; + arg0->unk_44->unk_28 &= ~1; + + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0, arg0->unk_44); + + sp9C = mem_pool_alloc(arg5, sizeof(unk_func_885012A4)); + ((func885012A4)Memmap_GetFragmentVaddr(func_885012A4))(sp9C, 0, 0, 0x228, 6, D_88218044); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0->unk_44, sp9C); + + spA0 = mem_pool_alloc(arg5, sizeof(unk_func_885012A4)); + ((func885012A4)Memmap_GetFragmentVaddr(func_885012A4))(spA0, 0, 0x124, 0x228, 6, D_88218044); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0->unk_44, spA0); + + spA4 = mem_pool_alloc(arg5, sizeof(unk_func_885012A4)); + ((func885012A4)Memmap_GetFragmentVaddr(func_885012A4))(spA4, 0, 6, 6, 0x11E, D_88218044); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0->unk_44, spA4); + + spA8 = mem_pool_alloc(arg5, sizeof(unk_func_885012A4)); + ((func885012A4)Memmap_GetFragmentVaddr(func_885012A4))(spA8, 0x222, 6, 6, 0x11E, D_88218044); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0->unk_44, spA8); + + spAC = mem_pool_alloc(arg5, sizeof(unk_func_885012A4)); + ((func885012A4)Memmap_GetFragmentVaddr(func_885012A4))(spAC, 0xF2, 6, 0x44, 0x11E, D_88218044); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0->unk_44, spAC); + + spB0 = mem_pool_alloc(arg5, sizeof(unk_func_885012A4)); + ((func885012A4)Memmap_GetFragmentVaddr(func_885012A4))(spB0, 6, 6, 0xEC, 0x13, D_88218044); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0->unk_44, spB0); + + spB4 = mem_pool_alloc(arg5, sizeof(unk_func_885012A4)); + ((func885012A4)Memmap_GetFragmentVaddr(func_885012A4))(spB4, 6, 0x111, 0xEC, 0x13, D_88218044); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0->unk_44, spB4); + + sp94 = mem_pool_alloc(arg5, sizeof(unk_func_88001300_000)); + ((func8850AB48)Memmap_GetFragmentVaddr(func_8850AB48))(sp94, 4, 0x17, 0xF0, 0xFC); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0->unk_44, sp94); + + sp98 = mem_pool_alloc(arg5, sizeof(unk_func_88001300_000)); + ((func8850AB48)Memmap_GetFragmentVaddr(func_8850AB48))(sp98, 0x134, 4, 0xF0, 0x122); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0->unk_44, sp98); + + temp_s0 = mem_pool_alloc(arg5, sizeof(unk_func_8850143C)); + ((func8850143C)Memmap_GetFragmentVaddr(func_8850143C))(temp_s0, 0x136, 6, 0xEC, 0x1E, D_88218048, D_8821804C); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0->unk_44, temp_s0); + + arg0->unk_2C = mem_pool_alloc(arg5, sizeof(unk_func_8821421C_038_02C)); + func_8820ECAC(arg0->unk_2C, temp_s0); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(temp_s0, arg0->unk_2C); + + temp_s0_2 = mem_pool_alloc(arg5, sizeof(unk_func_8850143C)); + ((func8850143C)Memmap_GetFragmentVaddr(func_8850143C))(temp_s0_2, 0, 0x12A, 0x228, 0x38, D_88218058, D_8821805C); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0->unk_44, temp_s0_2); + + arg0->unk_38 = mem_pool_alloc(arg5, sizeof(unk_func_88500994)); + ((func88500994)Memmap_GetFragmentVaddr(func_88500994))(arg0->unk_38, 0, 0); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(temp_s0_2, arg0->unk_38); + + temp_s0_3 = mem_pool_alloc(arg5, sizeof(unk_func_8850878C)); + ((func8850878C)Memmap_GetFragmentVaddr(func_8850878C))(temp_s0_3, 0x60, 4, func_8002D7C0(NULL, 0, D_88224FC4, 0x13), + 8); + temp_s0_3->unk_3C = 0x1C; + ((func88500A3C)Memmap_GetFragmentVaddr(func_88500A3C))(arg0->unk_38, temp_s0_3); + + arg0->unk_3C = mem_pool_alloc(arg5, sizeof(unk_func_88500994)); + ((func88500994)Memmap_GetFragmentVaddr(func_88500994))(arg0->unk_3C, 0, 0); + ((func88500A3C)Memmap_GetFragmentVaddr(func_88500A3C))(arg0->unk_38, arg0->unk_3C); + + if (sp94) {} + if (sp98) {} + if (sp9C) {} + if (spA0) {} + if (spA4) {} + if (spA8) {} + if (spAC) {} + if (spB0) {} + if (spB4) {} + + for (j = 0; j < 2; j++) { + temp_s0_4 = mem_pool_alloc(arg5, sizeof(unk_func_8850878C)); + sp7C = func_8002D7C0(NULL, 0, D_88224FC4, D_88218060[j].unk_00); + + ((func8850878C)Memmap_GetFragmentVaddr(func_8850878C))(temp_s0_4, (0x228 - func_8001F5B0(0x10, 0, sp7C)) / 2, + 0x10, sp7C, 0x10); + + temp_s0_4->unk_30 = D_88218060[j].unk_04[0]; + temp_s0_4->unk_44 = temp_s0_4->unk_44; + temp_s0_4->unk_34 = D_88218060[j].unk_04[1]; + temp_s0_4->unk_44 = 1; + + ((func88500A3C)Memmap_GetFragmentVaddr(func_88500A3C))(arg0->unk_3C, temp_s0_4); + } + + arg0->unk_40 = mem_pool_alloc(arg5, sizeof(unk_func_8850878C)); + ((func8850878C)Memmap_GetFragmentVaddr(func_8850878C))(arg0->unk_40, 0x60, 4, "ERROR", 8); + arg0->unk_40->unk_3C = 0x1C; + ((func88500A3C)Memmap_GetFragmentVaddr(func_88500A3C))(arg0->unk_38, arg0->unk_40); + + arg0->unk_34 = mem_pool_alloc(arg5, sizeof(unk_func_8821421C_038_034)); + ((func88506DCC)Memmap_GetFragmentVaddr(func_88506DCC))(arg0->unk_34, 6, 0x19, func_8820EFD8, 0xEC, 0x3E, 4, arg5); + ((func88506238)Memmap_GetFragmentVaddr(func_88506238))(arg0->unk_34, 4, arg5); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0->unk_44, arg0->unk_34); + + temp_s0_5 = mem_pool_alloc(arg5, sizeof(unk_func_8850BD40)); + ((func8850BD40)Memmap_GetFragmentVaddr(func_8850BD40))(temp_s0_5, arg0->unk_34); + ((func8850BF80)Memmap_GetFragmentVaddr(func_8850BF80))(arg0->unk_4C, temp_s0_5); + + arg0->unk_4C->unk_28 = mem_pool_alloc(arg5, sizeof(unk_func_88001300_03C)); + ((func8850C284)Memmap_GetFragmentVaddr(func_8850C284))(arg0->unk_4C->unk_28, 3, 1, arg5); + ((func8850BF80)Memmap_GetFragmentVaddr(func_8850BF80))(arg0->unk_4C, arg0->unk_4C->unk_28); + + for (i = 0; i < 2; i++) { + temp_v0_6 = mem_pool_alloc(arg5, sizeof(unk_func_882149A0)); + func_882149A0(temp_v0_6, D_88218070[i].unk_00, D_88218070[i].unk_02, D_88218070[i].unk_04, D_88218070[i].unk_06, + D_88218070[i].unk_08, D_88218070[i].unk_0C, D_88218070[i].unk_10[0], D_88218070[i].unk_10[1], + D_88218044); + + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0->unk_44, temp_v0_6); + + arg0->unk_4C->unk_28->unk_18[i * arg0->unk_4C->unk_28->unk_2C] = &temp_v0_6->unk_00; + } + + ((func8850CAB4)Memmap_GetFragmentVaddr(func_8850CAB4))(arg0->unk_4C->unk_28); + + temp_s0_6 = mem_pool_alloc(arg5, sizeof(unk_func_88001300_03C_01C)); + ((func88503340)Memmap_GetFragmentVaddr(func_88503340))(temp_s0_6, 0, 0, 0x10, 0x10, D_88218098); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0->unk_44, temp_s0_6); + arg0->unk_4C->unk_28->unk_1C = temp_s0_6; + + arg0->unk_30 = mem_pool_alloc(arg5, sizeof(unk_func_8820BE14_02C_038)); + func_882158CC(arg0->unk_30, 0x136, 0x34, 8, func_8820DF38, 0xEC, 0x1C, arg5); + ((func88506238)Memmap_GetFragmentVaddr(func_88506238))(arg0->unk_30, 0x64, arg5); + + sp64 = mem_pool_alloc(arg5, sizeof(unk_func_88507D4C)); + ((func88507D4C)Memmap_GetFragmentVaddr(func_88507D4C))(sp64, 0x136, 0x24, 0xEC, 0, arg0->unk_30); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0->unk_44, sp64); + + sp68 = mem_pool_alloc(arg5, sizeof(unk_func_88507D4C)); + ((func88507D4C)Memmap_GetFragmentVaddr(func_88507D4C))( + sp68, 0x136, arg0->unk_30->unk_00.unk_00.unk_14.unk_02 + 0x34, 0xEC, 1, arg0->unk_30); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0->unk_44, sp68); + func_882159AC(arg0->unk_30, sp68); + + temp_v0_9 = mem_pool_alloc(arg5, sizeof(unk_func_882170A8)); + func_882170A8(temp_v0_9, 0xA8, 2, arg0->unk_30, 3); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(sp68, temp_v0_9); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0->unk_44, arg0->unk_30); + + temp_s0_7 = mem_pool_alloc(arg5, sizeof(unk_func_8850BD40)); + ((func8850BD40)Memmap_GetFragmentVaddr(func_8850BD40))(temp_s0_7, arg0->unk_30); + ((func8850BF80)Memmap_GetFragmentVaddr(func_8850BF80))(arg0->unk_4C, temp_s0_7); + + temp_s0_8 = mem_pool_alloc(arg5, sizeof(unk_func_88503298)); + ((func88503298)Memmap_GetFragmentVaddr(func_88503298))(temp_s0_8, arg0->unk_44, arg3); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0, temp_s0_8); + + // Fake, forcing sp64/sp68 onto the stack + if (0) { + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0->unk_44, &sp64); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0->unk_44, &sp68); + } +} + +void func_8820FFF8(unk_func_8821421C_038* arg0, unk_func_8821421C_07C* arg1) { + func_8002C740(&arg0->unk_50, arg1, 0x14, 4, 4); + + ((func88506F50)Memmap_GetFragmentVaddr(func_88506F50))(arg0->unk_34, &arg0->unk_50); +} + +s32 func_8821004C(unk_func_8821421C_038* arg0) { + UNUSED s32 pad; + u8* temp_t0; + char* sp2C; + + switch (arg0->unk_4C->unk_00.unk_1C) { + case 0: + ((func88500A6C)Memmap_GetFragmentVaddr(func_88500A6C))(arg0->unk_38, 0); + break; + + case 1: + ((func88500A6C)Memmap_GetFragmentVaddr(func_88500A6C))(arg0->unk_38, 1); + ((func88500A6C)Memmap_GetFragmentVaddr(func_88500A6C))(arg0->unk_3C, arg0->unk_4C->unk_28->unk_24); + break; + + case 2: + sp2C = NULL; + ((func88500A6C)Memmap_GetFragmentVaddr(func_88500A6C))(arg0->unk_38, 2); + temp_t0 = &((u8*)arg0->unk_30->unk_00.unk_2C + ->unk_00)[arg0->unk_30->unk_00.unk_2C->unk_0C * arg0->unk_30->unk_00.unk_38]; + if (temp_t0 != NULL) { + sp2C = func_8002D7C0(NULL, 0, D_88224FCC, temp_t0[0] - 1); + } + arg0->unk_40->unk_40 = sp2C; + break; + } + return 0; +} + +s32 func_88210168(unk_func_8821421C_038* arg0, Controller* arg1) { + s32 var_v1; + + if (arg0->unk_44->unk_30 & 2) { + var_v1 = arg0->unk_4C->unk_00.unk_10(&arg0->unk_4C->unk_00, arg1); + } else { + var_v1 = 1; + } + return var_v1; +} + +void func_882101B4(unk_func_8821421C_038* arg0, s32 arg1) { + arg0->unk_00.unk_2A = arg1; + arg0->unk_4C->unk_00.unk_14(&arg0->unk_4C->unk_00, arg1); +} + +void func_882101E0(unk_func_8821421C_038* arg0, s32 arg1) { + func_8820C930(0x12, 0, arg1, &arg0->unk_64); + func_88217060(arg0->unk_30, &arg0->unk_60, arg1 | 0x20000); +} + +s32 func_88210234(unk_func_8821421C_038* arg0, Controller* arg1) { + s32 temp_v0; + s32 var_v0; + unk_func_8821421C_038_04C* temp_a0; + s32 var_s0 = 0; + + arg0->unk_4C->unk_00.unk_14(arg0->unk_4C, 1); + + ((func88502C98)Memmap_GetFragmentVaddr(func_88502C98))(arg0->unk_44); + + while (var_s0 == 0) { + func_8002EEA8(var_s0); + temp_v0 = func_88210168(arg0, arg1); + + if (!(temp_v0 & 1)) { + if (temp_v0 & 2) { + var_s0 = 1; + } else if (temp_v0 & 4) { + if (arg0->unk_48->unk_30->unk_24 == 0) { + var_v0 = 1; + } else { + var_v0 = 0; + } + var_s0 = var_v0 + 1; + } + } + ((func8850BC94)Memmap_GetFragmentVaddr(func_8850BC94))(temp_v0); + } + + arg0->unk_44->unk_2C = 0xB; + return var_s0 - 1; +} + +void func_88210334(unk_func_8821421C_038_04C* arg0, unk_func_8821421C_038* arg1) { + ((func8850BDF0)Memmap_GetFragmentVaddr(func_8850BDF0))(arg0); + + arg0->unk_00.unk_10 = func_88210380; + arg0->unk_00.unk_24 = arg1; +} + +#ifdef NON_MATCHING +s32 func_88210380(unk_func_8821421C_038_04C* arg0, Controller* arg1) { + s32 var_v1; + s32 i; + unk_func_88203ED8_064* var_a0; + + var_v1 = 0; + if (arg0->unk_00.unk_20 > 0) { + var_a0 = arg0->unk_00.unk_04; + for (i = 0; i < arg0->unk_00.unk_1C; i++) { + var_a0 = var_a0->unk_08; + } + var_v1 = var_a0->unk_10(var_a0, arg1); + } + + if (var_v1 & 1) { + return var_v1; + } + + if (var_v1 == 0) { + if (arg1->buttonPressed & 0x4000) { + var_v1 = 0x80000002; + } else if (arg1->buttonPressed & 0x8000) { + var_v1 = 0x80000004; + } + } + + if (var_v1 & 2) { + switch (arg0->unk_00.unk_1C) { + case 1: + ((func8850C064)Memmap_GetFragmentVaddr(func_8850C064))(arg0, 0); + var_v1 |= 1; + break; + + case 2: + ((func8850C064)Memmap_GetFragmentVaddr(func_8850C064))(arg0, 1); + var_v1 |= 1; + break; + } + } else if (var_v1 & 4) { + switch (arg0->unk_00.unk_1C) { + case 0: + func_8820EFD0(arg0->unk_00.unk_24->unk_2C, + &arg0->unk_00.unk_24->unk_50[arg0->unk_00.unk_24->unk_34->unk_00.unk_38]); + func_882101E0(arg0->unk_00.unk_24, arg0->unk_00.unk_24->unk_34->unk_00.unk_38); + + ((func8850CB48)Memmap_GetFragmentVaddr(func_8850CB48))(arg0->unk_28, 0); + ((func8850C064)Memmap_GetFragmentVaddr(func_8850C064))(arg0, 1); + + var_v1 |= 1; + break; + + case 1: + switch (arg0->unk_28->unk_24) { + case 0: + ((func8850C064)Memmap_GetFragmentVaddr(func_8850C064))(arg0, 2); + var_v1 |= 1; + break; + + case 1: + func_8820D614(arg0->unk_00.unk_24->unk_48, func_8002D7C0(NULL, 0, D_88224FC4, 0x16)); + ((func8850CB48)Memmap_GetFragmentVaddr(func_8850CB48))(arg0->unk_00.unk_24->unk_48->unk_30, 1); + func_80048B90(2); + + arg0->unk_28->unk_14(arg0->unk_28, 0x100); + + if (func_8820D620(arg0->unk_00.unk_24->unk_48, arg1) == 1) { + var_v1 = 4; + } else { + var_v1 = 1; + } + + arg0->unk_28->unk_14(arg0->unk_28, 1); + break; + } + break; + + case 2: + var_v1 = 1; + break; + } + } + + return var_v1; +} +#else #pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1B4EA0/func_88210380.s") +#endif + +void func_8821064C(unk_func_8821421C_02C_06C_02C* arg0, unk_func_8820BE14_02C_038* arg1, + unk_func_8820BE14_02C_038* arg2, unk_func_8820E99C* arg3, unk_func_88217740* arg4, + unk_func_88509F48* arg5, MemoryPool* arg6) { + static u16 D_8821809C[] = { 8, 9, 0xA, 0xB, 0xC }; + static Color_RGBA8 D_882180A8 = { 0xF0, 0xF0, 0xF0, 0xFF }; + + s32 i; + + ((func88500668)Memmap_GetFragmentVaddr(func_88500668))(arg0, sizeof(unk_func_8821421C_02C_06C_02C)); + + arg0->unk_10 = func_882118CC; + arg0->unk_14 = func_882107D0; + arg0->unk_18 = 0; + arg0->unk_1C = 0; + arg0->unk_20[0] = arg1; + arg0->unk_20[1] = arg2; + arg0->unk_28 = arg3; + arg0->unk_2C[0] = arg1; + arg0->unk_2C[1] = arg2; + arg0->unk_34 = arg3; + arg0->unk_44 = 1; + arg0->unk_48 = arg4; + arg0->unk_4C = arg5; + + func_88210D2C(arg0, 0); + + for (i = 0; i < 5; i++) { + arg0->unk_78[i].unk_00 = mem_pool_alloc(arg6, sizeof(unk_func_8850878C)); + ((func8850878C)Memmap_GetFragmentVaddr(func_8850878C))(arg0->unk_78[i].unk_00, 0, 0, + func_8002D7C0(NULL, 0, D_88224FC4, D_8821809C[i]), 0x10); + + arg0->unk_78[i].unk_00->unk_30 = D_882180A8; + arg0->unk_78[i].unk_00->unk_44 = arg0->unk_78[i].unk_00->unk_44; + arg0->unk_78[i].unk_08 = 0; + arg0->unk_78[i].unk_04 = 0; + } +} + +void func_882107D0(unk_func_8821421C_02C_06C_02C* arg0, s32 arg1) { + arg0->unk_18 = arg1; + func_882107F0(arg0); +} + +void func_882107F0(unk_func_8821421C_02C_06C_02C* arg0) { + s32 i; + s32 temp_s3 = arg0->unk_18 & 0xFF; + s32 temp_s4 = arg0->unk_18 & 0xFF00; + s32 var_v0; + + for (i = 0; i < 3; i++) { + var_v0 = 0; + if (i == arg0->unk_1C) { + var_v0 = 1; + } + arg0->unk_20[i]->unk_00.unk_00.unk_24(&arg0->unk_20[i]->unk_00.unk_00, (var_v0 & temp_s3) | temp_s4); + } +} + +void func_88210888(unk_func_8821421C_02C_06C_02C* arg0, s32 arg1) { + arg0->unk_1C = arg1; + func_882107F0(arg0); +} + +void func_882108A8(unk_func_8821421C_02C_06C_02C* arg0) { + unk_func_8820BE14_02C_038* temp_t6; + unk_func_8820BE14_02C_038* temp_t7; + + temp_t6 = arg0->unk_20[0]; + arg0->unk_20[0] = arg0->unk_20[1]; + arg0->unk_20[1] = temp_t6; + + temp_t7 = arg0->unk_2C[0]; + arg0->unk_2C[0] = arg0->unk_2C[1]; + arg0->unk_2C[1] = temp_t7; + + arg0->unk_44 = !arg0->unk_44; +} + +void func_882108D8(unk_func_8821421C_02C_06C_02C* arg0, unk_func_8821421C_02C_06C_02C_060_02C_000** arg1, + unk_func_8821421C_02C_06C_02C_060_02C_000** arg2) { + switch (arg0->unk_38) { + case 0: + *arg1 = + &((u8*)arg0->unk_2C[0] + ->unk_00.unk_2C->unk_00)[arg0->unk_2C[0]->unk_00.unk_2C->unk_0C * arg0->unk_2C[0]->unk_00.unk_38]; + *arg2 = NULL; + break; + + case 1: + *arg1 = + &((u8*)arg0->unk_2C[0]->unk_00.unk_2C->unk_00)[arg0->unk_2C[0]->unk_00.unk_2C->unk_0C * arg0->unk_40]; + *arg2 = + &((u8*)arg0->unk_2C[0] + ->unk_00.unk_2C->unk_00)[arg0->unk_2C[0]->unk_00.unk_2C->unk_0C * arg0->unk_2C[0]->unk_00.unk_38]; + break; + + case 2: + *arg1 = + &((u8*)arg0->unk_2C[0] + ->unk_00.unk_2C->unk_00)[arg0->unk_2C[0]->unk_00.unk_2C->unk_0C * arg0->unk_2C[0]->unk_00.unk_38]; + *arg2 = + &((u8*)arg0->unk_2C[1] + ->unk_00.unk_2C->unk_00)[arg0->unk_2C[1]->unk_00.unk_2C->unk_0C * arg0->unk_2C[1]->unk_00.unk_38]; + break; + } +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1B4EA0/func_8821064C.s") +void func_882109C8(unk_func_8821421C_02C_06C_02C* arg0, unk_func_88001300_000_010* arg1, + unk_func_88001300_000_010* arg2) { + s16 var_v1; + + switch (arg0->unk_38) { + case 0: + arg1->unk_00 = arg0->unk_2C[0]->unk_00.unk_00.unk_10.unk_00; + arg1->unk_02 = + arg0->unk_2C[0]->unk_00.unk_00.unk_10.unk_02 + (arg0->unk_2C[0]->unk_5C - arg0->unk_2C[0]->unk_58); + + arg2->unk_00 = arg0->unk_2C[1]->unk_00.unk_00.unk_10.unk_00; + arg2->unk_02 = + arg0->unk_2C[1]->unk_00.unk_00.unk_10.unk_02 + (arg0->unk_2C[1]->unk_5C - arg0->unk_2C[1]->unk_58); + break; + + case 1: + var_v1 = (arg0->unk_2C[0]->unk_00.unk_3E * arg0->unk_40) - arg0->unk_2C[0]->unk_58; + if (var_v1 < -arg0->unk_2C[0]->unk_00.unk_3E) { + var_v1 = -arg0->unk_2C[0]->unk_00.unk_3E; + } else if (arg0->unk_2C[0]->unk_00.unk_00.unk_14.unk_02 < var_v1) { + var_v1 = arg0->unk_2C[0]->unk_00.unk_00.unk_14.unk_02; + } + + arg1->unk_00 = arg0->unk_2C[0]->unk_00.unk_00.unk_10.unk_00; + arg1->unk_02 = arg0->unk_2C[0]->unk_00.unk_00.unk_10.unk_02 + var_v1; + + arg2->unk_00 = arg0->unk_2C[0]->unk_00.unk_00.unk_10.unk_00; + arg2->unk_02 = + arg0->unk_2C[0]->unk_00.unk_00.unk_10.unk_02 + (arg0->unk_2C[0]->unk_5C - arg0->unk_2C[0]->unk_58); + break; + + case 2: + arg1->unk_00 = arg0->unk_2C[0]->unk_00.unk_00.unk_10.unk_00; + arg1->unk_02 = + arg0->unk_2C[0]->unk_00.unk_00.unk_10.unk_02 + (arg0->unk_2C[0]->unk_5C - arg0->unk_2C[0]->unk_58); + + arg2->unk_00 = arg0->unk_2C[1]->unk_00.unk_00.unk_10.unk_00; + arg2->unk_02 = + arg0->unk_2C[1]->unk_00.unk_00.unk_10.unk_02 + (arg0->unk_2C[1]->unk_5C - arg0->unk_2C[1]->unk_58); + break; + } +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1B4EA0/func_882107D0.s") +void func_88210B38(unk_func_8821421C_02C_06C_02C* arg0, s32 arg1) { + s32 temp_v1_2; + s32 var_v1; + unk_func_8820BE14_06C* temp_v1 = arg0->unk_2C[0]->unk_00.unk_2C; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1B4EA0/func_882107F0.s") + func_8820E978(arg0->unk_34, ((u8*)temp_v1->unk_00 + (arg0->unk_2C[0]->unk_00.unk_38 * temp_v1->unk_0C))[1], arg1); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1B4EA0/func_88210888.s") + var_v1 = arg0->unk_2C[0]->unk_5C - arg0->unk_2C[0]->unk_58; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1B4EA0/func_882108A8.s") + if (((!(&arg0->unk_2C[0]->unk_00.unk_00)) && (!(&arg0->unk_2C[0]->unk_00.unk_00))) && + (!(&arg0->unk_2C[0]->unk_00.unk_00))) {} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1B4EA0/func_882108D8.s") + if (var_v1 == 0xC4) { + var_v1 -= arg0->unk_34->unk_2C->unk_16; + var_v1 -= 4; + } else { + var_v1 += 0x20; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1B4EA0/func_882109C8.s") + arg0->unk_34->unk_00.unk_10.unk_00 = + 0xD3 + (arg0->unk_2C[0]->unk_00.unk_00.unk_10.unk_00 - arg0->unk_34->unk_2C->unk_14); + arg0->unk_34->unk_00.unk_10.unk_02 = arg0->unk_2C[0]->unk_00.unk_00.unk_10.unk_02 + var_v1 & 0xFFFF; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1B4EA0/func_88210B38.s") + func_8820EC68(arg0->unk_34); +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1B4EA0/func_88210BFC.s") +void func_88210BFC(unk_func_8821421C_02C_06C_02C* arg0, s32 arg1) { + switch (arg1) { + case 0: + ((func8850628C)Memmap_GetFragmentVaddr(func_8850628C))(arg0->unk_2C[0]); + + func_88215974(&arg0->unk_2C[0]->unk_00, 1); + func_88215974(&arg0->unk_2C[1]->unk_00, 1); + func_88210888(arg0, 0); + func_88217BB8(arg0->unk_48); + break; + + case 4: + func_88210888(arg0, 2); + func_88217BAC(arg0->unk_48); + break; + + case 1: + func_88216F18(arg0->unk_2C[1], 0); + func_88215974(&arg0->unk_2C[1]->unk_00, 0); + func_88210888(arg0, 1); + func_88217BAC(arg0->unk_48); + break; + + case 2: + func_88215974(&arg0->unk_2C[0]->unk_00, 0); + func_88210888(arg0, 0); + func_88217BAC(arg0->unk_48); + break; + + case 3: + func_88215974(&arg0->unk_2C[1]->unk_00, 0); + func_88210888(arg0, 1); + func_88217BAC(arg0->unk_48); + break; + } + arg0->unk_3C = arg1; +} + +void func_88210D2C(unk_func_8821421C_02C_06C_02C* arg0, s32 arg1) { + arg0->unk_38 = arg1; + func_88210BFC(arg0, 0); +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1B4EA0/func_88210D2C.s") +void func_88210D50(unk_func_8821421C_02C_06C_02C* arg0) { + func_88210BFC(arg0, 0); + ((func8850628C)Memmap_GetFragmentVaddr(func_8850628C))(arg0->unk_2C[1]); +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1B4EA0/func_88210D50.s") +s32 func_88210D8C(unk_func_8821421C_02C_06C_02C* arg0) { + s32 var_v1 = 0; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1B4EA0/func_88210D8C.s") + if (arg0->unk_3C == 0) { + var_v1 = 1; + } + return var_v1; +} void func_88210DA8(void) { } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1B4EA0/func_88210DB0.s") +s32 func_88210DB0(s32 arg0, unk_func_8820BE14_06C* arg1) { + s32 i; + s32 var_v1 = 0; + u8* var_v0 = arg1->unk_00; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1B4EA0/func_88210DF4.s") + for (i = 0; i < arg1->unk_08; i++, var_v0 += 2) { + if (arg0 == var_v0[0]) { + var_v1 = (var_v1 - var_v0[1]) + 0x63; + } + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1B4EA0/func_88210E70.s") + return var_v1; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1B4EA0/func_88210E98.s") +s32 func_88210DF4(s32 arg0, unk_func_8820BE14_06C* arg1) { + s32 var_v1; + + if (func_8002F264(arg0) != 0) { + if (arg1->unk_08 < arg1->unk_04) { + var_v1 = 1; + } else { + var_v1 = 0; + } + } else if (arg1->unk_08 < arg1->unk_04) { + var_v1 = 0x63; + } else { + var_v1 = func_88210DB0(arg0, arg1); + } + return var_v1; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1B4EA0/func_88210F00.s") +void func_88210E70(unk_func_8820BE14_02C_038* arg0, u8* arg1) { + func_8002C88C(arg0->unk_00.unk_2C, arg1, arg0->unk_00.unk_38); +} +void func_88210E98(unk_func_8820BE14_02C_038* arg0, s32 arg1) { + s32 sp1C = arg0->unk_00.unk_38; + + func_8002C990(arg0->unk_00.unk_2C, arg1); + + if (arg1 < sp1C) { + sp1C--; + } + + ((func88507AE4)Memmap_GetFragmentVaddr(func_88507AE4))(arg0, sp1C); +} + +void func_88210F00(unk_func_8820BE14_02C_038* arg0) { + s32 sp1C; + s32 temp_a1; + s32 var_a1; + + sp1C = arg0->unk_00.unk_38; + func_8002C990(arg0->unk_00.unk_2C, sp1C); + if ((sp1C > 0) && (sp1C >= arg0->unk_00.unk_2C->unk_08)) { + sp1C -= 1; + } + ((func88507AE4)Memmap_GetFragmentVaddr(func_88507AE4))(arg0, sp1C); +} + +#ifdef NON_MATCHING +void func_88210F74(unk_func_8820BE14_02C_038* arg0, s32 arg1, s32 arg2) { + UNUSED s32 pad; + s32 i; + s32 var_s3; + s32 var_v0; + unk_func_8821421C_02C_06C_02C_060_02C_000 sp44; + unk_func_8820BE14_06C* temp_s4; + u8* var_s2; + + temp_s4 = arg0->unk_00.unk_2C; + var_s3 = arg0->unk_00.unk_38; + var_s2 = temp_s4->unk_00; + i = 0; + + while (i < temp_s4->unk_08) { + if (arg1 == var_s2[0]) { + arg2 += var_s2[1]; + func_8002C990(temp_s4, i); + if (i < var_s3) { + var_s3--; + } + } else { + i++; + var_s2 += 2; + } + } + + sp44.unk_00 = arg1; + + while (arg2 > 0) { + if (arg2 < 0x63) { + var_v0 = arg2; + } else { + var_v0 = 0x63; + } + arg2 -= var_v0; + sp44.unk_01 = var_v0; + func_8002C88C(temp_s4, &sp44, var_s3++); + } + + ((func88507AE4)Memmap_GetFragmentVaddr(func_88507AE4))(arg0, var_s3 - 1); +} +#else #pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1B4EA0/func_88210F74.s") +#endif -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1B4EA0/func_88211088.s") +void func_88211088(unk_func_8820BE14_02C_038* arg0, s32 arg1) { + u8* temp_v1 = &((u8*)arg0->unk_00.unk_2C->unk_00)[arg0->unk_00.unk_2C->unk_0C * arg0->unk_00.unk_38]; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1B4EA0/func_882110E0.s") + if (arg1 >= temp_v1[1]) { + func_88210F00(arg0); + return; + } + temp_v1[1] -= arg1; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1B4EA0/func_882111C0.s") +void func_882110E0(unk_func_8820BE14_02C_038* arg0, unk_func_8820BE14_02C_038* arg1, unk_func_8820E99C* arg2) { + u8* sp24 = &((u8*)arg0->unk_00.unk_2C->unk_00)[arg0->unk_00.unk_2C->unk_0C * arg0->unk_00.unk_38]; + if (func_8002F264(sp24[0]) != 0) { + func_88210E70(arg1, &((u8*)arg0->unk_00.unk_2C->unk_00)[arg0->unk_00.unk_2C->unk_0C * arg0->unk_00.unk_38]); + func_88210F00(arg0); + } else { + func_88210F74(arg1, sp24[0], arg2->unk_30->unk_30.unk_00); + func_88211088(arg0, arg2->unk_30->unk_30.unk_00); + } + + *arg1->unk_88 = 1; + *arg0->unk_88 = *arg1->unk_88; +} + +s32 func_882111C0(unk_func_8821421C_02C_06C_02C_060_02C_000* arg0, unk_func_8821421C_02C_06C_02C_060_02C_000* arg1) { + s32 temp_v1 = arg0->unk_01 + arg1->unk_01; + s32 var_a2; + + if (temp_v1 >= 0x64) { + var_a2 = temp_v1 - 0x63; + } else { + var_a2 = 0; + } + + arg0->unk_01 = temp_v1 - var_a2; + arg1->unk_01 = var_a2; + return var_a2; +} + +#ifdef NON_MATCHING +void func_882111F8(unk_func_8820BE14_02C_038* arg0, s32 arg1, s32 arg2) { + unk_func_8821421C_02C_06C_02C_060_02C_000* ptr = arg0->unk_00.unk_2C->unk_00; + unk_func_8821421C_02C_06C_02C_060_02C_000 sp30; + unk_func_8821421C_02C_06C_02C_060_02C_000 sp2C; + s32 var_v1; + unk_func_8821421C_02C_06C_02C_060_02C_000* sp20; + unk_func_8821421C_02C_06C_02C_060_02C_000* sp1C; + + sp20 = ptr; + sp1C = ptr; + + sp20 += arg1; + sp1C += arg2; + + sp30 = *sp20; + sp2C = *sp1C; + + if ((func_8002F264(sp30.unk_00) == 0) && (sp30.unk_00 == sp2C.unk_00)) { + var_v1 = func_882111C0(&sp30, &sp2C); + } else { + var_v1 = 1; + } + + *sp20 = sp2C; + *sp1C = sp30; + + if (var_v1 == 0) { + func_88210E98(arg0, arg1); + } + + *arg0->unk_88 = 1; +} +#else +void func_882111F8(unk_func_8820BE14_02C_038* arg0, s32 arg1, s32 arg2); #pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1B4EA0/func_882111F8.s") +#endif + +void func_882112E4(unk_func_8820BE14_02C_038* arg0, unk_func_8820BE14_02C_038* arg1) { + unk_func_8821421C_02C_06C_02C_060_02C_000* temp_v0 = arg0->unk_00.unk_2C->unk_00; + unk_func_8821421C_02C_06C_02C_060_02C_000* temp_v1 = arg1->unk_00.unk_2C->unk_00; + unk_func_8821421C_02C_06C_02C_060_02C_000 sp4; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1B4EA0/func_882112E4.s") + sp4 = temp_v1[arg1->unk_00.unk_38]; + temp_v1[arg1->unk_00.unk_38] = temp_v0[arg0->unk_00.unk_38]; + temp_v0[arg0->unk_00.unk_38] = sp4; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1B4EA0/func_88211380.s") + *arg1->unk_88 = 1; + *arg0->unk_88 = *arg1->unk_88; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1B4EA0/func_88211508.s") +void func_88211380(unk_func_8821421C_02C_06C_02C* arg0, Controller* arg1) { + unk_func_8821421C_02C_06C_02C_060_02C_000* sp3C; + unk_func_8821421C_02C_06C_02C_060_02C_000* sp38; + unk_func_8821421C_02C_06C_02C_060_02C sp34; + unk_func_88001300_000_010 sp30; + unk_func_88001300_000_010 sp2C; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1B4EA0/func_88211794.s") + func_882108D8(arg0, &sp38, &sp3C); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1B4EA0/func_882118CC.s") + sp34.unk_00 = *sp38; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1B4EA0/func_88212150.s") + if (func_8002F264(sp38->unk_00) == 0) { + sp34.unk_00.unk_01 = arg0->unk_34->unk_30->unk_30.unk_00; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1B4EA0/func_882121E0.s") + func_8820E638(arg0->unk_60[0], sp34.unk_00); + func_882109C8(arg0, &sp30, &sp2C); + func_882175F4(arg0->unk_58[0], sp30, sp2C); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1B4EA0/func_8821347C.s") + if (sp38->unk_01 != sp34.unk_00.unk_01) { + sp34.unk_02.unk_00 = sp34.unk_00.unk_00; + sp34.unk_02.unk_01 = sp38->unk_01 - sp34.unk_00.unk_01; + func_8820E638(arg0->unk_70[0], sp34.unk_02); + func_88217718(arg0->unk_68[0], sp30); + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1B4EA0/func_882135D4.s") + arg0->unk_14(arg0, 0); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1B4EA0/func_88213618.s") + ((func8850CF00)Memmap_GetFragmentVaddr(func_8850CF00))(arg0->unk_50, arg1); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1B4EA0/func_882136F8.s") + arg0->unk_14(arg0, 1); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1B4EA0/func_88213738.s") + func_882110E0(arg0->unk_2C[0], arg0->unk_2C[1], arg0->unk_34); + func_88210D50(arg0); +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1B4EA0/func_88213774.s") +void func_88211508(unk_func_8821421C_02C_06C_02C* arg0, Controller* arg1) { + unk_func_8821421C_02C_06C_02C_060_02C_000* sp34; + unk_func_8821421C_02C_06C_02C_060_02C_000* sp30; + unk_func_8821421C_02C_06C_02C_060_02C sp2C; + unk_func_88001300_000_010 sp28; + unk_func_88001300_000_010 sp24; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1B4EA0/func_882137B4.s") + func_882108D8(arg0, &sp30, &sp34); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1B4EA0/func_882138D4.s") + sp2C.unk_00 = *sp30; + sp2C.unk_02 = *sp34; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1B4EA0/func_882139C0.s") + func_882109C8(arg0, &sp28, &sp24); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1B4EA0/func_88213B90.s") + if ((func_8002F264(sp2C.unk_00.unk_00) == 0) && (sp2C.unk_02.unk_00 == sp2C.unk_00.unk_00)) { + if (func_882111C0(&sp2C.unk_00, &sp2C.unk_02) > 0) { + func_8820E638(arg0->unk_70[1], sp2C.unk_02); + func_88217718(arg0->unk_68[1], sp28); + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1B4EA0/func_88213CA0.s") + sp2C.unk_00 = *sp30; + sp2C.unk_00.unk_01 -= sp2C.unk_02.unk_01; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1B4EA0/func_8821421C.s") + func_8820E638(arg0->unk_60[0], sp2C.unk_00); + func_8820E638(arg0->unk_70[0], *sp34); + func_882175F4(arg0->unk_58[0], sp28, sp24); + func_88217718(arg0->unk_68[0], sp24); + } else { + func_8820E638(arg0->unk_60[0], sp2C.unk_00); + func_8820E638(arg0->unk_60[1], sp2C.unk_02); + func_882175F4(arg0->unk_58[0], sp28, sp24); + func_882175F4(arg0->unk_58[1], sp24, sp28); + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1B4EA0/func_88214720.s") + arg0->unk_14(arg0, 0); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1B4EA0/func_882147BC.s") + ((func8850CF00)Memmap_GetFragmentVaddr(func_8850CF00))(arg0->unk_50, arg1); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1B4EA0/func_8821483C.s") + arg0->unk_14(arg0, 1); + + func_882111F8(arg0->unk_2C[0], arg0->unk_40, arg0->unk_2C[0]->unk_00.unk_38); + func_88210D50(arg0); +} + +void func_88211794(unk_func_8821421C_02C_06C_02C* arg0, Controller* arg1) { + unk_func_8821421C_02C_06C_02C_060_02C_000* sp34; + unk_func_8821421C_02C_06C_02C_060_02C_000* sp30; + unk_func_88001300_000_010 sp2C; + unk_func_88001300_000_010 sp28; + + func_882108D8(arg0, &sp30, &sp34); + + func_8820E638(arg0->unk_60[0], *sp30); + func_8820E638(arg0->unk_60[1], *sp34); + + func_882109C8(arg0, &sp2C, &sp28); + func_882175F4(arg0->unk_58[0], sp2C, sp28); + func_882175F4(arg0->unk_58[1], sp28, sp2C); + + arg0->unk_14(arg0, 0); + + ((func8850CF00)Memmap_GetFragmentVaddr(func_8850CF00))(arg0->unk_50, arg1); + + arg0->unk_14(arg0, 1); + + func_882112E4(arg0->unk_2C[0], arg0->unk_2C[1]); + func_88210D50(arg0); +} + +s32 func_882118CC(unk_func_8821421C_02C_06C_02C* arg0, Controller* arg1) { + s32 sp2C; + s32 sp28; + u8* new_var; + u8* sp24; + u8* new_var2; + + sp2C = arg0->unk_20[arg0->unk_1C]->unk_00.unk_00.unk_20(arg0->unk_20[arg0->unk_1C], arg1); + if (sp2C & 1) { + return sp2C; + } + + if (sp2C == 0) { + if (arg1->buttonPressed & 0x4000) { + sp2C = 0x80000002; + } else if (arg1->buttonPressed & 0x8000) { + sp2C = 0x80000004; + } + } + + switch (arg0->unk_3C) { + case 0: + switch (arg0->unk_38) { + case 0: + if (!(sp2C & 2) && (sp2C & 4)) { + new_var = + &((u8*)arg0->unk_2C[0]->unk_00.unk_2C->unk_00)[arg0->unk_2C[0]->unk_00.unk_2C->unk_0C * + arg0->unk_2C[0]->unk_00.unk_38]; + sp24 = new_var; + + if (arg0->unk_2C[0]->unk_00.unk_2C->unk_08 == 0) { + func_80048B90(8); + ((func8850A10C)Memmap_GetFragmentVaddr(func_8850A10C))( + arg0->unk_4C, arg0->unk_78[0].unk_00, arg0->unk_78[0].unk_04, arg0->unk_78[0].unk_08); + ((func8850A3CC)Memmap_GetFragmentVaddr(func_8850A3CC))(arg0->unk_4C, arg1); + sp2C = 1; + } else if ((func_8002F1C0(sp24[0]) != 0) && ((arg0->unk_2C[1]->unk_8C >> 0x10) == 2)) { + func_80048B90(8); + ((func8850A10C)Memmap_GetFragmentVaddr(func_8850A10C))( + arg0->unk_4C, arg0->unk_78[4].unk_00, arg0->unk_78[4].unk_04, arg0->unk_78[4].unk_08); + ((func8850A3CC)Memmap_GetFragmentVaddr(func_8850A3CC))(arg0->unk_4C, arg1); + sp2C = 1; + } else { + sp28 = func_88210DF4(sp24[0], arg0->unk_2C[1]->unk_00.unk_2C); + if (sp28 == 0) { + func_80048B90(8); + ((func8850A10C)Memmap_GetFragmentVaddr(func_8850A10C))( + arg0->unk_4C, arg0->unk_78[3].unk_00, arg0->unk_78[3].unk_04, + arg0->unk_78[3].unk_08); + ((func8850A3CC)Memmap_GetFragmentVaddr(func_8850A3CC))(arg0->unk_4C, arg1); + sp2C = 1; + } else { + arg0->unk_2C[0]->unk_00.unk_34[arg0->unk_2C[0]->unk_00.unk_38] |= 2; + if (func_8002F264(sp24[0]) == 0) { + func_88210B38(arg0, sp28); + func_88210BFC(arg0, 4); + sp2C |= 1; + } else { + func_88210BFC(arg0, 1); + sp2C |= 1; + } + } + } + } + break; + + case 1: + if (!(sp2C & 2) && (sp2C & 4)) { + if (arg0->unk_2C[0]->unk_00.unk_2C->unk_08 == 0) { + func_80048B90(8); + ((func8850A10C)Memmap_GetFragmentVaddr(func_8850A10C))( + arg0->unk_4C, arg0->unk_78[1].unk_00, arg0->unk_78[1].unk_04, arg0->unk_78[1].unk_08); + ((func8850A3CC)Memmap_GetFragmentVaddr(func_8850A3CC))(arg0->unk_4C, arg1); + sp2C = 1; + } else { + arg0->unk_2C[0]->unk_00.unk_34[arg0->unk_2C[0]->unk_00.unk_38] |= 2; + arg0->unk_40 = arg0->unk_2C[0]->unk_00.unk_38; + func_88210BFC(arg0, 2); + sp2C |= 1; + } + } + break; + + case 2: + if (!(sp2C & 2) && (sp2C & 4)) { + sp24 = &((u8*)arg0->unk_2C[0]->unk_00.unk_2C->unk_00)[arg0->unk_2C[0]->unk_00.unk_2C->unk_0C * + arg0->unk_2C[0]->unk_00.unk_38]; + if ((arg0->unk_2C[0]->unk_00.unk_2C->unk_08 == 0) || + (arg0->unk_2C[1]->unk_00.unk_2C->unk_08 == 0)) { + func_80048B90(8); + ((func8850A10C)Memmap_GetFragmentVaddr(func_8850A10C))( + arg0->unk_4C, arg0->unk_78[2].unk_00, arg0->unk_78[2].unk_04, arg0->unk_78[2].unk_08); + ((func8850A3CC)Memmap_GetFragmentVaddr(func_8850A3CC))(arg0->unk_4C, arg1); + sp2C = 1; + } else if ((func_8002F1C0(sp24[0]) != 0) && ((arg0->unk_2C[1]->unk_8C >> 0x10) == 2)) { + func_80048B90(8); + ((func8850A10C)Memmap_GetFragmentVaddr(func_8850A10C))( + arg0->unk_4C, arg0->unk_78[4].unk_00, arg0->unk_78[4].unk_04, arg0->unk_78[4].unk_08); + ((func8850A3CC)Memmap_GetFragmentVaddr(func_8850A3CC))(arg0->unk_4C, arg1); + sp2C = 1; + } else { + arg0->unk_2C[0]->unk_00.unk_34[arg0->unk_2C[0]->unk_00.unk_38] |= 2; + func_88210BFC(arg0, 3); + sp2C |= 1; + } + } + break; + } + break; + + case 4: + if (sp2C & 2) { + func_8820EC9C(arg0->unk_34); + func_88210BFC(arg0, 0); + sp2C |= 1; + } else if (sp2C & 4) { + if (arg0->unk_34->unk_34 < arg0->unk_34->unk_30->unk_30.unk_00) { + func_80048B90(8); + ((func8850A10C)Memmap_GetFragmentVaddr(func_8850A10C))( + arg0->unk_4C, arg0->unk_78[3].unk_00, arg0->unk_78[3].unk_04, arg0->unk_78[3].unk_08); + ((func8850A3CC)Memmap_GetFragmentVaddr(func_8850A3CC))(arg0->unk_4C, arg1); + arg0->unk_34->unk_30->unk_30.unk_00 = arg0->unk_34->unk_34; + sp2C = 1; + } else { + func_88210BFC(arg0, 1); + sp2C |= 1; + } + } + break; + + case 1: + if (sp2C & 2) { + if (arg0->unk_34->unk_2C->unk_28 & 1) { + func_88210BFC(arg0, 4); + } else { + func_88210BFC(arg0, 0); + } + func_88216F18(arg0->unk_2C[1], 1); + sp2C |= 1; + } else if (sp2C & 4) { + func_80048B90(0x18); + arg0->unk_2C[0]->unk_00.unk_34[arg0->unk_2C[0]->unk_00.unk_38] |= 0x100; + if (arg0->unk_34->unk_2C->unk_28 & 1) { + func_8820EC9C(arg0->unk_34); + } + func_88211380(arg0, arg1); + func_88216F18(arg0->unk_2C[1], 2); + sp2C = 0x80000081; + } + break; + + case 2: + if (sp2C & 2) { + func_88210BFC(arg0, 0); + sp2C |= 1; + } else if (sp2C & 4) { + if (arg0->unk_40 == arg0->unk_2C[arg0->unk_1C]->unk_00.unk_38) { + sp2C = 0x80000101; + } else { + func_80048B90(0x18); + + arg0->unk_2C[0]->unk_00.unk_34[arg0->unk_2C[0]->unk_00.unk_38] |= 2; + arg0->unk_2C[0]->unk_00.unk_34[arg0->unk_40] |= 0x100; + arg0->unk_2C[0]->unk_00.unk_34[arg0->unk_2C[0]->unk_00.unk_38] |= 0x100; + + func_88211508(arg0, arg1); + sp2C = 0x80000081; + } + } + break; + + case 3: + if (sp2C & 2) { + func_88210BFC(arg0, 0); + sp2C |= 1; + } else if (sp2C & 4) { + new_var2 = &((u8*)arg0->unk_2C[1]->unk_00.unk_2C->unk_00)[arg0->unk_2C[1]->unk_00.unk_2C->unk_0C * + arg0->unk_2C[1]->unk_00.unk_38]; + if ((func_8002F1C0(new_var2[0]) != 0) && ((arg0->unk_2C[0]->unk_8C >> 0x10) == 2)) { + func_80048B90(8); + ((func8850A10C)Memmap_GetFragmentVaddr(func_8850A10C))( + arg0->unk_4C, arg0->unk_78[4].unk_00, arg0->unk_78[4].unk_04, arg0->unk_78[4].unk_08); + ((func8850A3CC)Memmap_GetFragmentVaddr(func_8850A3CC))(arg0->unk_4C, arg1); + sp2C = 1; + } else { + func_80048B90(0x18); + + arg0->unk_2C[1]->unk_00.unk_34[arg0->unk_2C[1]->unk_00.unk_38] |= 2; + arg0->unk_2C[0]->unk_00.unk_34[arg0->unk_2C[0]->unk_00.unk_38] |= 0x100; + arg0->unk_2C[1]->unk_00.unk_34[arg0->unk_2C[1]->unk_00.unk_38] |= 0x100; + + func_88211794(arg0, arg1); + sp2C = 0x80000081; + } + } + break; + } + return sp2C; +} + +u8* func_88212150(unk_func_8821421C_02C_06C_02C* arg0) { + unk_func_8820BE14_06C* temp_a1; + s32 sp0; + s32 temp_v1; + + switch (arg0->unk_3C) { + case 0: + case 2: + case 4: + sp0 = 0; + break; + + case 1: + return NULL; + + case 3: + sp0 = 1; + break; + } + + temp_v1 = arg0->unk_2C[sp0]->unk_00.unk_38; + temp_a1 = arg0->unk_2C[sp0]->unk_00.unk_2C; + if (temp_v1 >= temp_a1->unk_08) { + return NULL; + } + return &((u8*)temp_a1->unk_00)[temp_a1->unk_0C * temp_v1]; +} + +void func_882121E0(unk_func_8821421C_02C* arg0, s32 arg1, s32 arg2, unk_func_8821421C_03C* arg3, s32* arg4, + unk_func_8821421C_07C* arg5, unk_func_88001300_000* arg6, unk_func_8821421C_038* arg7, + unk_func_8821421C_034* arg8, unk_func_88509F48* arg9, s8** argA, MemoryPool* argB) { + static Color_RGBA8 D_882180AC = { 0x6C, 0x6C, 0x7E, 0xFF }; + static Color_RGBA8 D_882180B0 = { 0x50, 0x50, 0x86, 0xFF }; + static Color_RGBA8 D_882180B4 = { 0x79, 0x79, 0xCB, 0xFF }; + static Color_RGBA8 D_882180B8 = { 0x40, 0x40, 0x6C, 0xFF }; + static Color_RGBA8 D_882180BC = { 0x6A, 0x6A, 0xB2, 0xFF }; + static Color_RGBA8 D_882180C0 = { 0x2D, 0x1A, 0x41, 0xFF }; + static Color_RGBA8 D_882180C4 = { 0x6F, 0x5F, 0x7F, 0xFF }; + static unk_D_88218060 D_882180C8[] = { + { + 0x00000001, + D_88218228, + }, + { + 0x00000002, + D_88218228, + }, + { + 0x00000003, + D_882181F0, + }, + { + 0x00000004, + D_88218208, + }, + { + 0x00000005, + D_88218200, + }, + { + 0x00000006, + D_882181F8, + }, + }; + static unk_D_88218060 D_882180F8[] = { + { + 0x00000007, + D_882181F8, + }, + { + 0x00000007, + D_882181F8, + }, + }; + static unk_D_88217C6C D_88218108[] = { + { + 249, + 28, + 54, + 42, + D_8821E100, + 48, + D_882181E8, + 1, + }, + { + 249, + 73, + 54, + 42, + D_8821E100, + 48, + D_882181E8, + 0, + }, + { + 249, + 118, + 54, + 42, + D_88218FD0, + 48, + D_882181B8, + 0, + }, + { + 249, + 163, + 54, + 42, + D_88219D58, + 48, + D_882181C0, + 1, + }, + { + 249, + 208, + 54, + 42, + D_8821AAE0, + 48, + D_882181C8, + 0, + }, + { + 249, + 253, + 54, + 42, + D_88218248, + 48, + D_882181B0, + 0, + }, + }; + static Color_RGBA8 D_88218198 = { 0xFF, 0xFF, 0x00, 0xFF }; + static u16 D_8821819C[] = { 0xD }; + static Color_RGBA8 D_882181A0 = { 0xF0, 0xF0, 0xF0, 0xFF }; + + UNUSED s32 pad[6]; + s32 i; + spE8_func_882121E0* spE8; + char spDC[11]; + unk_func_885012A4* spD8; + unk_func_885012A4* spD4; + unk_func_885012A4* spD0; + unk_func_885012A4* spCC; + unk_func_885012A4* spC8; + unk_func_88001300_000* spC4; + unk_func_88001300_000* spC0; + unk_func_8850143C* spBC; + unk_func_8850143C* spB8; + unk_func_882170A8* temp_v0_11; + unk_func_882170A8* temp_v0_9; + unk_func_8850143C* temp_s0_2; + char* spA8; + unk_func_8850878C* temp_s0_3; + unk_func_8850878C* temp_s0_4; + char* sp9C; + unk_func_88001300_03C_01C* temp_s0_5; + unk_func_88503298* temp_s0_6; + unk_func_88507D4C* sp90; + unk_func_88507D4C* sp8C; + unk_func_8820E99C* temp_v0_12; + unk_func_88507D4C* sp84; + unk_func_88507D4C* sp80; + s32 j; + s32 x; + s32 temp_s0; + char* temp_s1; + char* sp6C; + + temp_s0 = func_80029080(); + + spE8 = mem_pool_alloc(argB, sizeof(spE8_func_882121E0)); + temp_s1 = mem_pool_alloc(argB, sizeof(char) * 40); + + func_8002D5D4(0x15, func_800251B0(temp_s0, spDC)); + + spE8->unk_00[1] = func_8002D7C0(temp_s1, sizeof(char) * 40, D_88224FC4, 0xF); + spE8->unk_00[0] = func_8002D7C0(NULL, 0, D_88224FC4, 0xE); + spE8->unk_00[2] = func_8002D7C0(NULL, 0, D_88224FC4, 0x10); + + ((func885007CC)Memmap_GetFragmentVaddr(func_885007CC))(arg0, 0xA4); + + arg0->unk_00.unk_1C = func_8821347C; + arg0->unk_00.unk_20 = func_882135D4; + arg0->unk_00.unk_24 = func_882136F8; + arg0->unk_00.unk_10.unk_00 = arg1; + arg0->unk_00.unk_10.unk_02 = arg2; + arg0->unk_78 = arg3; + arg0->unk_7C = arg4; + arg0->unk_90 = arg5; + arg0->unk_84 = arg7; + arg0->unk_88 = arg8; + arg0->unk_8C = arg9; + arg0->unk_80 = 0; + + arg0->unk_6C = mem_pool_alloc(argB, sizeof(unk_func_8821421C_02C_06C)); + func_88213774(arg0->unk_6C, arg0); + + arg0->unk_2C = mem_pool_alloc(argB, sizeof(unk_func_88001300_038)); + ((func88502274)Memmap_GetFragmentVaddr(func_88502274))(arg0->unk_2C, 0, 0, 0x228, 0x162); + arg0->unk_2C->unk_28 |= 0x400; + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0, arg0->unk_2C); + + spC8 = mem_pool_alloc(argB, sizeof(unk_func_885012A4)); + ((func885012A4)Memmap_GetFragmentVaddr(func_885012A4))(spC8, 0, 0, 0x228, 6, D_882180AC); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0->unk_2C, spC8); + + spCC = mem_pool_alloc(argB, sizeof(unk_func_885012A4)); + ((func885012A4)Memmap_GetFragmentVaddr(func_885012A4))(spCC, 0, 0x124, 0x228, 6, D_882180AC); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0->unk_2C, spCC); + + spD0 = mem_pool_alloc(argB, sizeof(unk_func_885012A4)); + ((func885012A4)Memmap_GetFragmentVaddr(func_885012A4))(spD0, 0, 6, 6, 0x11E, D_882180AC); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0->unk_2C, spD0); + + spD4 = mem_pool_alloc(argB, sizeof(unk_func_885012A4)); + ((func885012A4)Memmap_GetFragmentVaddr(func_885012A4))(spD4, 0x222, 6, 6, 0x11E, D_882180AC); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0->unk_2C, spD4); + + spD8 = mem_pool_alloc(argB, sizeof(unk_func_885012A4)); + ((func885012A4)Memmap_GetFragmentVaddr(func_885012A4))(spD8, 0xF2, 6, 0x44, 0x11E, D_882180AC); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0->unk_2C, spD8); + + spC0 = mem_pool_alloc(argB, sizeof(unk_func_88001300_000)); + ((func8850AB48)Memmap_GetFragmentVaddr(func_8850AB48))(spC0, 4, 4, 0xF0, 0x122); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0->unk_2C, spC0); + + spC4 = mem_pool_alloc(argB, sizeof(unk_func_88001300_000)); + ((func8850AB48)Memmap_GetFragmentVaddr(func_8850AB48))(spC4, 0x134, 4, 0xF0, 0x122); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0->unk_2C, spC4); + + spB8 = mem_pool_alloc(argB, sizeof(unk_func_8850143C)); + ((func8850143C)Memmap_GetFragmentVaddr(func_8850143C))(spB8, 6, 6, 0xEC, 0x1E, D_882180B0, D_882180B4); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0->unk_2C, spB8); + + spBC = mem_pool_alloc(argB, sizeof(unk_func_8850143C)); + ((func8850143C)Memmap_GetFragmentVaddr(func_8850143C))(spBC, 0x136, 6, 0xEC, 0x1E, D_882180B0, D_882180B4); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0->unk_2C, spBC); + + arg0->unk_30[0] = mem_pool_alloc(argB, sizeof(unk_func_8821421C_02C_030)); + func_8820CBA0(arg0->unk_30[0], spB8, spE8); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(spB8, arg0->unk_30[0]); + func_8820D0EC(arg0->unk_30[0], 0); + + arg0->unk_30[1] = mem_pool_alloc(argB, sizeof(unk_func_8821421C_02C_030)); + func_8820CBA0(arg0->unk_30[1], spBC, spE8); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(spBC, arg0->unk_30[1]); + func_8820D0EC(arg0->unk_30[1], 1); + + temp_s0_2 = mem_pool_alloc(argB, sizeof(unk_func_8850143C)); + ((func8850143C)Memmap_GetFragmentVaddr(func_8850143C))(temp_s0_2, 0, 0x12A, 0x228, 0x38, D_882180C0, D_882180C4); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0->unk_2C, temp_s0_2); + + arg0->unk_5C = mem_pool_alloc(argB, sizeof(unk_func_88500994)); + ((func88500994)Memmap_GetFragmentVaddr(func_88500994))(arg0->unk_5C, 0, 0); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(temp_s0_2, arg0->unk_5C); + + arg0->unk_60 = mem_pool_alloc(argB, sizeof(unk_func_88500994)); + ((func88500994)Memmap_GetFragmentVaddr(func_88500994))(arg0->unk_60, 0, 0); + ((func88500A3C)Memmap_GetFragmentVaddr(func_88500A3C))(arg0->unk_5C, arg0->unk_60); + + for (i = 0; i < 6; i++) { + temp_s0_3 = mem_pool_alloc(argB, sizeof(unk_func_8850878C)); + spA8 = func_8002D7C0(NULL, 0, D_88224FC4, D_882180C8[i].unk_00); + ((func8850878C)Memmap_GetFragmentVaddr(func_8850878C))(temp_s0_3, (0x228 - func_8001F5B0(0x10, 0, spA8)) / 2, + 0x10, spA8, 0x10); + + temp_s0_3->unk_30 = D_882180C8[i].unk_04[0]; + temp_s0_3->unk_44 = temp_s0_3->unk_44; + temp_s0_3->unk_34 = D_882180C8[i].unk_04[1]; + temp_s0_3->unk_44 = 1; + + ((func88500A3C)Memmap_GetFragmentVaddr(func_88500A3C))(arg0->unk_60, temp_s0_3); + } + + arg0->unk_64 = mem_pool_alloc(argB, sizeof(unk_func_88500994)); + ((func88500994)Memmap_GetFragmentVaddr(func_88500994))(arg0->unk_64, 0, 0); + ((func88500A3C)Memmap_GetFragmentVaddr(func_88500A3C))(arg0->unk_5C, arg0->unk_64); + + for (j = 0; j < 2; j++) { + temp_s0_4 = mem_pool_alloc(argB, sizeof(unk_func_8850878C)); + sp9C = func_8002D7C0(NULL, 0, D_88224FC4, D_882180F8[j].unk_00); + ((func8850878C)Memmap_GetFragmentVaddr(func_8850878C))(temp_s0_4, (0x228 - func_8001F5B0(0x10, 0, sp9C)) / 2, + 0x10, sp9C, 0x10); + + temp_s0_4->unk_30 = D_882180F8[j].unk_04[0]; + temp_s0_4->unk_44 = temp_s0_4->unk_44; + temp_s0_4->unk_34 = D_882180F8[j].unk_04[1]; + temp_s0_4->unk_44 = 1; + + ((func88500A3C)Memmap_GetFragmentVaddr(func_88500A3C))(arg0->unk_64, temp_s0_4); + } + + arg0->unk_68 = mem_pool_alloc(argB, sizeof(unk_func_8850878C)); + ((func8850878C)Memmap_GetFragmentVaddr(func_8850878C))(arg0->unk_68, 0x60, 4, "ERROR", 8); + arg0->unk_68->unk_3C = 0x1C; + ((func88500A3C)Memmap_GetFragmentVaddr(func_88500A3C))(arg0->unk_5C, arg0->unk_68); + + arg0->unk_40 = mem_pool_alloc(argB, sizeof(unk_func_88217740)); + func_88217740(arg0->unk_40, 0xF4, 5); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0->unk_2C, arg0->unk_40); + + arg0->unk_6C->unk_28 = mem_pool_alloc(argB, sizeof(unk_func_88001300_03C)); + ((func8850C284)Memmap_GetFragmentVaddr(func_8850C284))(arg0->unk_6C->unk_28, 6, 1, argB); + ((func8850BF80)Memmap_GetFragmentVaddr(func_8850BF80))(arg0->unk_6C, arg0->unk_6C->unk_28); + + for (x = 0; x < 6; x++) { + arg0->unk_44[x] = mem_pool_alloc(argB, sizeof(unk_func_882149A0)); + + func_882149A0(arg0->unk_44[x], D_88218108[x].unk_00, D_88218108[x].unk_02, D_88218108[x].unk_04, + D_88218108[x].unk_06, D_88218108[x].unk_08, D_88218108[x].unk_0C, D_88218108[x].unk_10[0], + D_88218108[x].unk_10[1], D_882180AC); + + if (D_88218108[x].unk_14 != 0) { + func_882158BC(arg0->unk_44[x]); + } + + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0->unk_2C, arg0->unk_44[x]); + + arg0->unk_6C->unk_28->unk_18[x * arg0->unk_6C->unk_28->unk_2C] = arg0->unk_44[x]; + } + + ((func8850CB48)Memmap_GetFragmentVaddr(func_8850CB48))(arg0->unk_6C->unk_28, 2); + + temp_s0_5 = mem_pool_alloc(argB, sizeof(unk_func_88001300_03C_01C)); + ((func88503340)Memmap_GetFragmentVaddr(func_88503340))(temp_s0_5, 0, 0, 0x10, 0x10, D_88218198); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0->unk_2C, temp_s0_5); + arg0->unk_6C->unk_28->unk_1C = temp_s0_5; + + arg0->unk_38[0] = mem_pool_alloc(argB, sizeof(unk_func_8820BE14_02C_038)); + func_882158CC(arg0->unk_38[0], 6, 0x34, 8, func_8820DF38, 0xEC, 0x1C, argB); + ((func88506238)Memmap_GetFragmentVaddr(func_88506238))(arg0->unk_38[0], 0x64, argB); + func_88217060(arg0->unk_38[0], &arg0->unk_78[0], 0); + + sp8C = mem_pool_alloc(argB, sizeof(unk_func_88507D4C)); + ((func88507D4C)Memmap_GetFragmentVaddr(func_88507D4C))(sp8C, 6, 0x24, 0xEC, 0, arg0->unk_38[0]); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0->unk_2C, sp8C); + + sp90 = mem_pool_alloc(argB, sizeof(unk_func_88507D4C)); + ((func88507D4C)Memmap_GetFragmentVaddr(func_88507D4C))(sp90, 6, arg0->unk_38[0]->unk_00.unk_00.unk_14.unk_02 + 0x34, + 0xEC, 1, arg0->unk_38[0]); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0->unk_2C, sp90); + func_882159AC(arg0->unk_38[0], sp90); + + temp_v0_9 = mem_pool_alloc(argB, sizeof(unk_func_882170A8)); + func_882170A8(temp_v0_9, 0xA8, 2, arg0->unk_38[0], 3); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(sp90, temp_v0_9); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0->unk_2C, arg0->unk_38[0]); + + arg0->unk_38[1] = mem_pool_alloc(argB, sizeof(unk_func_8820BE14_02C_038)); + func_882158CC(arg0->unk_38[1], 0x136, 0x34, 8, func_8820DF38, 0xEC, 0x1C, argB); + ((func88506238)Memmap_GetFragmentVaddr(func_88506238))(arg0->unk_38[1], 0x64, argB); + func_88217060(arg0->unk_38[1], &arg0->unk_78[1], 0x10000); + + sp80 = mem_pool_alloc(argB, sizeof(unk_func_88507D4C)); + ((func88507D4C)Memmap_GetFragmentVaddr(func_88507D4C))(sp80, 0x136, 0x24, 0xEC, 0, arg0->unk_38[1]); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0->unk_2C, sp80); + + sp84 = mem_pool_alloc(argB, sizeof(unk_func_88507D4C)); + ((func88507D4C)Memmap_GetFragmentVaddr(func_88507D4C))( + sp84, 0x136, arg0->unk_38[1]->unk_00.unk_00.unk_14.unk_02 + 0x34, 0xEC, 1, arg0->unk_38[1]); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0->unk_2C, sp84); + func_882159AC(arg0->unk_38[1], sp84); + + temp_v0_11 = mem_pool_alloc(argB, sizeof(unk_func_882170A8)); + func_882170A8(temp_v0_11, 0xA8, 2, arg0->unk_38[1], 3); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(sp84, temp_v0_11); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0->unk_2C, arg0->unk_38[1]); + + temp_v0_12 = mem_pool_alloc(argB, sizeof(unk_func_8820E99C)); + func_8820E99C(temp_v0_12, 0, 0, argB); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0->unk_2C, temp_v0_12); + + arg0->unk_6C->unk_2C = mem_pool_alloc(argB, sizeof(unk_func_8821421C_02C_06C_02C)); + func_8821064C(arg0->unk_6C->unk_2C, arg0->unk_38[0], arg0->unk_38[1], temp_v0_12, arg0->unk_40, arg0->unk_8C, argB); + ((func8850BF80)Memmap_GetFragmentVaddr(func_8850BF80))(arg0->unk_6C, arg0->unk_6C->unk_2C); + + arg0->unk_6C->unk_2C->unk_50 = mem_pool_alloc(argB, sizeof(unk_func_8850CD44)); + ((func8850CD44)Memmap_GetFragmentVaddr(func_8850CD44))(arg0->unk_6C->unk_2C->unk_50, 4, argB); + + for (j = 0; j < 2; j++) { + arg0->unk_6C->unk_2C->unk_58[j] = mem_pool_alloc(argB, sizeof(unk_func_882173EC)); + func_882173EC(arg0->unk_6C->unk_2C->unk_58[j], 0, 0); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0->unk_2C, arg0->unk_6C->unk_2C->unk_58[j]); + + arg0->unk_6C->unk_2C->unk_60[j] = mem_pool_alloc(argB, sizeof(unk_func_8821421C_02C_06C_02C_060)); + func_8820E5BC(arg0->unk_6C->unk_2C->unk_60[j], 0, 0, 0xEC); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0->unk_6C->unk_2C->unk_58[j], + arg0->unk_6C->unk_2C->unk_60[j]); + arg0->unk_6C->unk_2C->unk_50->unk_1C[j] = arg0->unk_6C->unk_2C->unk_58[j]; + + arg0->unk_6C->unk_2C->unk_68[j] = mem_pool_alloc(argB, sizeof(unk_func_8821421C_02C_06C_02C_068)); + func_88217650(arg0->unk_6C->unk_2C->unk_68[j], 0, 0); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0->unk_2C, arg0->unk_6C->unk_2C->unk_68[j]); + + arg0->unk_6C->unk_2C->unk_70[j] = mem_pool_alloc(argB, sizeof(unk_func_8821421C_02C_06C_02C_060)); + func_8820E5BC(arg0->unk_6C->unk_2C->unk_70[j], 0, 0, 0xEC); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0->unk_6C->unk_2C->unk_68[j], + arg0->unk_6C->unk_2C->unk_70[j]); + + arg0->unk_6C->unk_2C->unk_50->unk_1C[j + 2] = arg0->unk_6C->unk_2C->unk_68[j]; + } + + arg0->unk_70[0] = mem_pool_alloc(argB, sizeof(unk_func_8821421C_02C_070)); + func_8820D9B8(arg0->unk_70[0], 6, 0x28, 0xEC, spE8, 3, 0, argB); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0->unk_2C, arg0->unk_70[0]); + + arg0->unk_70[1] = mem_pool_alloc(argB, sizeof(unk_func_8821421C_02C_070)); + func_8820D9B8(arg0->unk_70[1], 0x136, 0x28, 0xEC, spE8, 3, 1, argB); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0->unk_2C, arg0->unk_70[1]); + + temp_s0_6 = mem_pool_alloc(argB, sizeof(unk_func_88503298)); + ((func88503298)Memmap_GetFragmentVaddr(func_88503298))(temp_s0_6, arg0->unk_2C, arg6); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0, temp_s0_6); + + for (i = 0; i < 1; i++) { + sp6C = func_8002D7C0(NULL, 0, D_88224FC4, D_8821819C[i]); + + arg0->unk_94[i].unk_00 = mem_pool_alloc(argB, sizeof(unk_func_8850878C)); + ((func8850878C)Memmap_GetFragmentVaddr(func_8850878C))(arg0->unk_94[i].unk_00, 0, 0, sp6C, 0x10); + + arg0->unk_94[i].unk_00->unk_30 = D_882181A0; + arg0->unk_94[i].unk_00->unk_44 = arg0->unk_94[i].unk_00->unk_44; + arg0->unk_94[i].unk_08 = 0; + arg0->unk_94[i].unk_04 = 0; + } + + arg0->unk_A0 = mem_pool_alloc(argB, sizeof(unk_func_889000C4)); + ((func889000C4)Memmap_GetFragmentVaddr(func_889000C4))(arg0->unk_A0, 0, arg0->unk_2C, 0, argA, argB); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0, arg0->unk_A0); + + if (sp80) {} + if (sp84) {} + if (sp8C) {} + if (sp90) {} + if (spB8) {} + if (spBC) {} + if (spC8) {} + if (spCC) {} + if (spD0) {} + if (spD4) {} + if (spD8) {} + if (spC0) {} + if (spC4) {} +} + +s32 func_8821347C(unk_func_8821421C_02C* arg0) { + func88500A6C temp_v1_2; + u8* temp_v0_2; + char* sp2C; + s32 var_a1 = arg0->unk_6C->unk_00.unk_1C; + + switch (var_a1) { + case 0: + if ((arg0->unk_6C->unk_28->unk_20 == 0x100) && (arg0->unk_6C->unk_28->unk_24 < 2)) { + ((func88500A6C)Memmap_GetFragmentVaddr(func_88500A6C))(arg0->unk_5C, 1); + temp_v1_2 = (func88500A6C)Memmap_GetFragmentVaddr(func_88500A6C); + if (arg0->unk_6C->unk_28->unk_24 == 0) { + var_a1 = 0; + } else { + var_a1 = 1; + } + temp_v1_2(arg0->unk_64, var_a1); + } else { + ((func88500A6C)Memmap_GetFragmentVaddr(func_88500A6C))(arg0->unk_5C, 0); + ((func88500A6C)Memmap_GetFragmentVaddr(func_88500A6C))(arg0->unk_60, arg0->unk_6C->unk_28->unk_24); + } + break; + + case 1: + sp2C = NULL; + ((func88500A6C)Memmap_GetFragmentVaddr(func_88500A6C))(arg0->unk_5C, 2); + temp_v0_2 = func_88212150(arg0->unk_6C->unk_2C); + if (temp_v0_2 != NULL) { + sp2C = func_8002D7C0(NULL, 0, D_88224FCC, temp_v0_2[0] - 1); + } + arg0->unk_68->unk_40 = sp2C; + break; + } + return 0; +} + +s32 func_882135D4(unk_func_8821421C_02C* arg0, Controller* arg1) { + s32 var_v1; + + if (arg0->unk_2C->unk_30 & 2) { + var_v1 = func_88213CA0(arg0->unk_6C, arg1); + } else { + var_v1 = 1; + } + return var_v1; +} + +s32 func_88213618(unk_func_8821421C_02C* arg0, Controller* arg1) { + s32 temp_v0; + s32 var_s4 = 0; + + arg0->unk_00.unk_24(&arg0->unk_00, 1); + + ((func88502C98)Memmap_GetFragmentVaddr(func_88502C98))(arg0->unk_2C); + + while (var_s4 == 0) { + func_8002EEA8(NULL); + + temp_v0 = arg0->unk_00.unk_20(arg0, gPlayer1Controller); + + if (!(temp_v0 & 1) && (temp_v0 & 2)) { + var_s4 = 1; + break; + } + + ((func8850BC94)Memmap_GetFragmentVaddr(func_8850BC94))(temp_v0); + } + + arg0->unk_2C->unk_2C = 0xB; + return var_s4; +} + +void func_882136F8(unk_func_8821421C_02C* arg0, s32 arg1) { + arg0->unk_00.unk_2A = arg1; + ((func8850BF60)Memmap_GetFragmentVaddr(func_8850BF60))(arg0->unk_6C, arg1); +} + +void func_88213738(unk_func_8821421C_02C* arg0) { + func_882158BC(arg0->unk_44[2]); + func_882158BC(arg0->unk_44[4]); + func_882158BC(arg0->unk_44[3]); +} + +void func_88213774(unk_func_8821421C_02C_06C* arg0, unk_func_8821421C_02C* arg1) { + ((func8850BDF0)Memmap_GetFragmentVaddr(func_8850BDF0))(arg0); + arg0->unk_00.unk_24 = arg1; +} + +s32 func_882137B4(unk_func_8821421C_03C* arg0, s32 arg1, s32 arg2, s32 arg3) { + s32 i; + s32 sp40; + unk_func_80022C28_ret* temp_v0; + unk_func_8821421C_02C_06C_02C_060_02C_000* var_s0; + unk_func_8821421C_02C_06C_02C_060_02C_000 sp34; + + sp40 = 0; + if (arg0->unk_00 == 0) { + return 0; + } + + temp_v0 = func_80022C28(arg1, arg2, arg3, 0); + if (temp_v0 == NULL) { + return 0; + } + + arg0->unk_00 = 0; + if (func_8002EE1C(arg1, arg2, arg3) != arg0->unk_04.unk_08) { + arg0->unk_00 = 1; + sp40 = 1; + } else { + var_s0 = arg0->unk_04.unk_00; + for (i = 0; i < arg0->unk_04.unk_08; i++, var_s0++) { + func_80022E18(&sp34, 1, temp_v0); + if (bcmp(&sp34, var_s0, sizeof(unk_func_8821421C_02C_06C_02C_060_02C_000)) != 0) { + arg0->unk_00 = 1; + sp40 = 1; + break; + } + } + } + + func_80022D8C(temp_v0); + return sp40; +} + +s32 func_882138D4(unk_func_8821421C_02C* arg0) { + s32 sp24; + s32 sp20; + s32 temp_a3; + s32 temp_v0; + s32 var_v1; + s32 var_v1_2; + unk_func_8821421C_03C* temp_v0_2; + + sp24 = func_80029080(); + sp20 = 0; + + if (func_882137B4(&arg0->unk_78[0], 0x23, sp24, 0) != 0) { + sp20 = 1; + } + + if (func_882137B4(&arg0->unk_78[1], 0x22, sp24, 0) != 0) { + sp20 |= 2; + } + + if (arg0->unk_78[2].unk_00 != 0) { + if (arg0->unk_90[arg0->unk_7C->unk_00].unk_00 != 0) { + if (func_882137B4(&arg0->unk_78[2], 0x12, 0, arg0->unk_7C->unk_00) != 0) { + sp20 |= 4; + } + } else if (arg0->unk_78[2].unk_04.unk_08 > 0) { + sp20 |= 4; + } else { + arg0->unk_78[2].unk_00 = 0; + } + } + return sp20; +} + +void func_882139C0(unk_func_8821421C_02C* arg0, s32 arg1) { + s32 sp4C = func_80029080(); + char sp40[11]; + + ((func88500A6C)Memmap_GetFragmentVaddr(func_88500A6C))(arg0->unk_A0->unk_40, 2); + func_8002EEA8(NULL); + + if (arg0->unk_78[0].unk_00 != 0) { + func_8820C97C(0x23, sp4C, 0, &arg0->unk_78[0].unk_04, 0, NULL, -1); + } + + if (arg0->unk_78[1].unk_00 != 0) { + func_8820C97C(0x22, sp4C, 0, &arg0->unk_78[1].unk_04, 0, NULL, -1); + } + + if (arg0->unk_78[2].unk_00 != 0) { + if (arg0->unk_90[arg0->unk_7C->unk_00].unk_00 != 0) { + if (arg0->unk_78[2].unk_04.unk_08 == 0) { + func_8002707C(0x12, arg0->unk_7C->unk_00); + } else { + func_8820C97C(0x12, 0, arg0->unk_7C->unk_00, &arg0->unk_78[2].unk_04, 0, NULL, -1); + } + } else { + func_8820C97C(0x12, 0, arg0->unk_7C->unk_00, &arg0->unk_78[2].unk_04, 0, func_800251B0(sp4C, sp40), + func_80025084(sp4C)); + } + } + + if (arg1 & 4) { + func_800284B4(3); + } + + if (arg1 & 3) { + ((func88900970)Memmap_GetFragmentVaddr(func_88900970))(arg0->unk_A0, sp4C); + } + + if (arg1 & 4) { + func_80026E4C(3); + func_800284B4(3); + } +} + +s32 func_88213B90(unk_func_8821421C_02C* arg0, Controller* arg1) { + s32 sp24 = 1; + s32 sp20 = func_882138D4(arg0); + s32 temp_v0_2; + + if (sp20 != 0) { + arg0->unk_6C->unk_28->unk_14(arg0->unk_6C->unk_28, 0); + + ((func889006D4)Memmap_GetFragmentVaddr(func_889006D4))(arg0->unk_A0, 0); + temp_v0_2 = ((func88900808)Memmap_GetFragmentVaddr(func_88900808))(arg0->unk_A0, arg1, 1); + + if (temp_v0_2 == 0) { + func_882139C0(arg0, sp20); + ((func889007AC)Memmap_GetFragmentVaddr(func_889007AC))(arg0->unk_A0); + } else if (temp_v0_2 == 1) { + ((func889007AC)Memmap_GetFragmentVaddr(func_889007AC))(arg0->unk_A0); + } else if (temp_v0_2 == 2) { + ((func889007AC)Memmap_GetFragmentVaddr(func_889007AC))(arg0->unk_A0); + sp24 = 0; + } + + arg0->unk_6C->unk_28->unk_14(arg0->unk_6C->unk_28, 1); + } + return sp24; +} + +s32 func_88213CA0(unk_func_8821421C_02C_06C* arg0, Controller* arg1) { + s32 i; + s32 var_a1; + s32 var_s0; + unk_func_88203ED8_064* var_a0; + s32 sp4C; + s32 sp48; + s32 sp44; + s32 sp40; + + var_s0 = 0; + if (arg0->unk_00.unk_20 > 0) { + var_a0 = arg0->unk_00.unk_04; + for (i = 0; i < arg0->unk_00.unk_1C; i++) { + var_a0 = var_a0->unk_08; + } + var_s0 = var_a0->unk_10(var_a0, arg1); + } + + if (var_s0 & 1) { + return var_s0; + } + + if (var_s0 == 0) { + if (arg1->buttonPressed & 0x4000) { + var_s0 = 0x80000002; + } else if (arg1->buttonPressed & 0x8000) { + var_s0 = 0x80000004; + } else if (arg1->buttonPressed & 0x30) { + var_s0 = 0x01000000; + } + } + + if (var_s0 & 2) { + switch (arg0->unk_00.unk_1C) { + case 0: + func_80048B90(3); + var_s0 = 2; + if (func_88213B90(arg0->unk_00.unk_24, arg1) == 0) { + var_s0 = 3; + } + break; + + case 1: + ((func8850C064)Memmap_GetFragmentVaddr(func_8850C064))(arg0, 0); + var_s0 |= 1; + break; + } + } else if (var_s0 & 4) { + if (arg0->unk_00.unk_1C == 0) { + switch (arg0->unk_28->unk_24) { + case 0: + case 1: + if (arg0->unk_28->unk_24 == 0) { + sp4C = 0; + } else { + sp4C = 1; + } + func_80048B90(2); + + arg0->unk_28->unk_14(arg0->unk_28, 0x100); + + func_8820DC1C(arg0->unk_00.unk_24->unk_70[sp4C], func_8820D0E4(arg0->unk_00.unk_24->unk_30[sp4C])); + func_8820DDC0(arg0->unk_00.unk_24->unk_70[sp4C], + func_8820D0E4(arg0->unk_00.unk_24->unk_30[1 - sp4C])); + func_8820DC90(arg0->unk_00.unk_24->unk_70[sp4C]); + + while (func_8820DCD4(arg0->unk_00.unk_24->unk_70[sp4C], arg1) == 1) { + sp48 = func_8820DC10(arg0->unk_00.unk_24->unk_70[sp4C]); + if ((sp48 == 2) && (arg0->unk_00.unk_24->unk_7C->unk_00 == -1)) { + arg0->unk_00.unk_24->unk_70[sp4C]->unk_00.unk_24(&arg0->unk_00.unk_24->unk_70[sp4C]->unk_00, + 0x100); + + ((func8850A10C)Memmap_GetFragmentVaddr(func_8850A10C))( + arg0->unk_00.unk_24->unk_8C, arg0->unk_00.unk_24->unk_94[0].unk_00, + arg0->unk_00.unk_24->unk_94[0].unk_04, arg0->unk_00.unk_24->unk_94[0].unk_08); + ((func8850A3CC)Memmap_GetFragmentVaddr(func_8850A3CC))(arg0->unk_00.unk_24->unk_8C, arg1); + + if (func_88210234(arg0->unk_00.unk_24->unk_84, arg1) == 1) { + func_8820D0EC(arg0->unk_00.unk_24->unk_30[sp4C], 2); + + arg0->unk_00.unk_24->unk_7C->unk_00 = + arg0->unk_00.unk_24->unk_84->unk_34->unk_00.unk_38; + arg0->unk_00.unk_24->unk_90[arg0->unk_00.unk_24->unk_7C->unk_00].unk_00 = 0; + + func_88217060(arg0->unk_00.unk_24->unk_38[sp4C], &arg0->unk_00.unk_24->unk_78[2], + arg0->unk_00.unk_24->unk_7C->unk_00 | 0x20000); + } else { + arg0->unk_00.unk_24->unk_70[sp4C]->unk_00.unk_24( + &arg0->unk_00.unk_24->unk_70[sp4C]->unk_00, 1); + continue; + } + break; + } else { + func_8820D0EC(arg0->unk_00.unk_24->unk_30[sp4C], sp48); + func_88217060(arg0->unk_00.unk_24->unk_38[sp4C], &arg0->unk_00.unk_24->unk_78[sp48].unk_00, + sp48 << 0x10); + break; + } + } + + func_8820DCC4(arg0->unk_00.unk_24->unk_70[sp4C]); + arg0->unk_28->unk_14(arg0->unk_28, 1); + var_s0 = 1; + break; + + case 2: + func_88210D2C(arg0->unk_2C, 0); + ((func8850C064)Memmap_GetFragmentVaddr(func_8850C064))(arg0, 1); + var_s0 |= 1; + break; + + case 3: + func_88210D2C(arg0->unk_2C, 1); + ((func8850C064)Memmap_GetFragmentVaddr(func_8850C064))(arg0, 1); + var_s0 |= 1; + break; + + case 4: + func_88210D2C(arg0->unk_2C, 2); + ((func8850C064)Memmap_GetFragmentVaddr(func_8850C064))(arg0, 1); + var_s0 |= 1; + break; + + case 5: + func_80048B90(3); + var_s0 = 2; + if (func_88213B90(arg0->unk_00.unk_24, arg1) == 0) { + var_s0 = 3; + } + break; + } + } + } else if (var_s0 & 0x01000000) { + var_s0 = 1; + sp40 = arg0->unk_2C->unk_44; + sp44 = (arg1->buttonPressed & 0x20) != 0; + + switch (arg0->unk_00.unk_1C) { + case 0: + sp40 = sp44; + break; + + case 1: + if (func_88210D8C(arg0->unk_2C) != 0) { + sp40 = sp44; + } + break; + } + + if (sp40 != arg0->unk_2C->unk_44) { + func_882108A8(arg0->unk_2C); + func_88213738(arg0->unk_00.unk_24); + func_88217BC0(&arg0->unk_00.unk_24->unk_40->unk_00); + ((func8850BFB0)Memmap_GetFragmentVaddr(func_8850BFB0))(arg0); + var_s0 = 0x80000005; + } + } + + return var_s0; +} + +void func_8821421C(unk_func_8821421C* arg0, s32 arg1, s32 arg2, MemoryPool* arg3, s32 arg4, char** arg5) { + static Color_RGBA8 D_882181A4 = { 0x1E, 0x50, 0x50, 0xFF }; + static Color_RGBA8 D_882181A8 = { 0x00, 0x0A, 0x0A, 0xFF }; + + unk_func_88001300_000* sp8C; + unk_func_88001300_000* sp88; + s32 sp84; + char sp78[11]; + UNUSED s32 pad[2]; + s32 i; + unk_func_88500EE4* sp68; + unk_func_885088F4* sp64; + unk_func_88509A2C* sp60; + unk_func_88509E34* sp5C; + + sp84 = func_80029080(); + ((func885007CC)Memmap_GetFragmentVaddr(func_885007CC))(arg0, sizeof(unk_func_8821421C)); + arg0->unk_00.unk_10.unk_00 = arg1; + arg0->unk_00.unk_10.unk_02 = arg2; + + for (i = 0; i < 3; i++) { + arg0->unk_3C[i].unk_00 = 0; + } + + func_8002C758(&arg0->unk_3C[0].unk_04, 2, 0x14, arg3); + func_8002C758(&arg0->unk_3C[1].unk_04, 2, 0x32, arg3); + func_8002C758(&arg0->unk_3C[2].unk_04, 2, 0x64, arg3); + + func_8820C930(0x23, sp84, 0, &arg0->unk_3C[0].unk_04); + func_8820C930(0x22, sp84, 0, &arg0->unk_3C[1].unk_04); + + func_8820CA2C(arg0->unk_7C); + + arg0->unk_78 = func_8820CAB4(arg0->unk_7C, func_80025084(sp84), func_800251B0(sp84, sp78)); + if ((arg0->unk_78 != -1) && (arg0->unk_7C[arg0->unk_78].unk_00 != 0)) { + func_8820C930(0x12, 0, arg0->unk_78, &arg0->unk_3C[2].unk_04); + } + + sp8C = mem_pool_alloc(arg3, sizeof(unk_func_88001300_000)); + ((func885031E8)Memmap_GetFragmentVaddr(func_885031E8))(sp8C, 0, 0, 0x280, 0x1E0); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0, sp8C); + + sp68 = mem_pool_alloc(arg3, sizeof(unk_func_88500EE4)); + ((func88500EE4)Memmap_GetFragmentVaddr(func_88500EE4))(sp68, 0, 0, 0x280, 0x1E0, D_88223E48, D_882181A4, + D_882181A8); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(sp8C, sp68); + + sp64 = mem_pool_alloc(arg3, sizeof(unk_func_885088F4)); + ((func885088F4)Memmap_GetFragmentVaddr(func_885088F4))(sp64, 0x41, 0x15C, 0xDC); + sp64->unk_2C = 5; + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(sp8C, sp64); + + sp60 = mem_pool_alloc(arg3, sizeof(unk_func_88509A2C)); + ((func88509A2C)Memmap_GetFragmentVaddr(func_88509A2C))(sp60, 0x38, 0x22, func_80029080(), + func_8002D7C0(NULL, 0, D_88224FC0, 0)); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(sp64, sp60); + + sp5C = mem_pool_alloc(arg3, sizeof(unk_func_88509E34)); + ((func88509E34)Memmap_GetFragmentVaddr(func_88509E34))(sp5C, 0, 0, func_8002D7C0(NULL, 0, D_88224FC4, 0)); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(sp64, sp5C); + + arg0->unk_34 = mem_pool_alloc(arg3, sizeof(unk_func_8821421C_034)); + func_8820D0F4(arg0->unk_34, 0xBA, 0xAE, arg3); + + sp88 = mem_pool_alloc(arg3, sizeof(unk_func_88001300_000)); + ((func885031E8)Memmap_GetFragmentVaddr(func_885031E8))(sp88, 0, 0, 0x280, 0x1E0); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0, sp88); + + arg0->unk_38 = mem_pool_alloc(arg3, sizeof(unk_func_8821421C_038)); + func_8820F3B8(arg0->unk_38, 0x2C, 0x4B, sp88, arg0->unk_34, arg3); + func_8820FFF8(arg0->unk_38, &arg0->unk_7C); + + arg0->unk_30 = mem_pool_alloc(arg3, sizeof(unk_func_88509F48)); + ((func88509F48)Memmap_GetFragmentVaddr(func_88509F48))(arg0->unk_30, 0x2C, 0x4B, 0x228, 0x162, arg3, arg4); + + arg0->unk_2C = mem_pool_alloc(arg3, sizeof(unk_func_8821421C_02C)); + func_882121E0(arg0->unk_2C, 0x2C, 0x4B, arg0->unk_3C, &arg0->unk_78, arg0->unk_7C, sp8C, arg0->unk_38, arg0->unk_34, + arg0->unk_30, arg5, arg3); + + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(sp88, arg0->unk_2C); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0, arg0->unk_38); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0, arg0->unk_34); + ((func8850068C)Memmap_GetFragmentVaddr(func_8850068C))(arg0, arg0->unk_30); +} + +void func_88214720(unk_func_8821421C* arg0) { + s32 sp34 = 0; + + while (sp34 == 0) { + func_800079C4(); + + ((func885008C4)Memmap_GetFragmentVaddr(func_885008C4))(arg0); + ((func88500828)Memmap_GetFragmentVaddr(func_88500828))(arg0, 0, 0); + + func_80007778(); + func_8002EF18(&sp34); + } +} + +void func_882147BC(unk_func_8821421C* arg0) { + s32 sp24 = func_88213618(arg0->unk_2C, gPlayer1Controller); + + while (arg0->unk_2C->unk_2C->unk_28 & 1) { + func_8002EEA8(0); + } + + func_8002EEA8(sp24); + + osStopThread(NULL); +} + +void func_8821483C(s32 arg0) { + MemoryPool* sp34; + void* sp30; + u8* sp2C; + func_88002628_sp38* sp28; + char** sp24; + + main_pool_push_state('OTPC'); + + sp2C = main_pool_alloc(0x10000, 0); + sp34 = mem_pool_try_init(0x10000, 0); + + func_8002D510(); + + D_88224FC0 = func_8002D5AC(0x2A); + D_88224FC4 = func_8002D5AC(3); + D_88224FC8 = func_8002D5AC(0x27); + D_88224FCC = func_8002D5AC(0xC); + sp24 = func_8002D5AC(7); + + sp30 = mem_pool_alloc(sp34, sizeof(unk_func_8821421C)); + func_8821421C(sp30, 0, 0, sp34, arg0, sp24); + + sp28 = ALIGN16((u32)mem_pool_alloc(sp34, sizeof(func_88002628_sp38))); + + osCreateThread(&sp28->thread, 0x32, func_882147BC, sp30, sp2C + 0x10000, osGetThreadPri(NULL) - 1); + + func_8002EE78(); + func_8001F738(gPlayer1Controller); + + osStartThread(&sp28->thread); + + func_88214720(sp30); + + osDestroyThread(&sp28->thread); + + main_pool_pop_state('OTPC'); +} diff --git a/src/fragments/23/fragment23_1BCF10.c b/src/fragments/23/fragment23_1BCF10.c index 21fa278d..50ff5ae5 100644 --- a/src/fragments/23/fragment23_1BCF10.c +++ b/src/fragments/23/fragment23_1BCF10.c @@ -1,57 +1,833 @@ -#include "global.h" +#include "fragment23.h" +#include "src/2D340.h" +#include "src/memmap.h" -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1BCF10/func_882149A0.s") +typedef struct unk_func_8820BE14_02C_038_02C_02C { + /* 0x00 */ char unk00[0x8]; + /* 0x08 */ s32 unk_08; +} unk_func_8820BE14_02C_038_02C_02C; // size >= 0xC -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1BCF10/func_88214A58.s") +typedef struct unk_func_8820BE14_02C_038_02C { + /* 0x00 */ unk_func_88001300_000 unk_00; + /* 0x00 */ unk_func_8820BE14_02C_038_02C_02C* unk_2C; + /* 0x00 */ char unk30[0xE]; + /* 0x00 */ s16 unk_3E; + /* 0x00 */ char unk40[0xA]; + /* 0x00 */ s16 unk_4A; + /* 0x00 */ char unk4C[0x14]; + /* 0x00 */ s32 unk_58; +} unk_func_8820BE14_02C_038_02C; // size >= 0x58 -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1BCF10/func_882158BC.s") +void func_882149A0(unk_func_882149A0* arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4, s32 arg5, s32 arg6, + Color_RGBA8 arg7, Color_RGBA8 arg8, Color_RGBA8 arg9) { + ((func885007CC)Memmap_GetFragmentVaddr(func_885007CC))(arg0, sizeof(unk_func_882149A0)); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1BCF10/func_882158CC.s") + arg0->unk_00.unk_18 = func_88214A58; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1BCF10/func_88215974.s") + arg0->unk_00.unk_10.unk_00 = arg1; + arg0->unk_00.unk_10.unk_02 = arg2; + arg0->unk_00.unk_14.unk_00 = arg3; + arg0->unk_00.unk_14.unk_02 = arg4; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1BCF10/func_882159AC.s") + arg0->unk_2C = arg5; + arg0->unk_30 = arg6; + arg0->unk_32 = arg7; + arg0->unk_36 = arg8; + arg0->unk_3A = arg9; + arg0->unk_40 = 0; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1BCF10/func_882159BC.s") +s32 func_88214A58(unk_func_882149A0* arg0, s32 arg1, s32 arg2) { + Color_RGBA8 sp16C; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1BCF10/func_88215D18.s") + gDPPipeSync(gDisplayListHead++); + gDPSetCycleType(gDisplayListHead++, G_CYC_1CYCLE); + gDPSetRenderMode(gDisplayListHead++, G_RM_XLU_SURF, G_RM_XLU_SURF2); + gDPSetTexturePersp(gDisplayListHead++, G_TP_NONE); + gDPSetTextureFilter(gDisplayListHead++, G_TF_POINT); + gDPSetCombineMode(gDisplayListHead++, G_CC_DECALRGBA, G_CC_DECALRGBA); + + gDPLoadTextureBlock(gDisplayListHead++, D_4001638, G_IM_FMT_IA, G_IM_SIZ_8b, 8, 8, 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); + gSPTextureRectangle(gDisplayListHead++, arg1 << 2, arg2 << 2, ((arg0->unk_00.unk_14.unk_00 + arg1) - 8) << 2, + (arg2 + 8) << 2, G_TX_RENDERTILE, 0, 0, 0x0400, 0x0400); + + gDPLoadTextureBlock(gDisplayListHead++, D_4001710, G_IM_FMT_IA, G_IM_SIZ_8b, 8, 8, 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); + gSPTextureRectangle(gDisplayListHead++, ((arg0->unk_00.unk_14.unk_00 + arg1) - 8) << 2, arg2 << 2, + (arg0->unk_00.unk_14.unk_00 + arg1) << 2, ((arg2 + arg0->unk_00.unk_14.unk_02) - 8) << 2, + G_TX_RENDERTILE, 0, 0, 0x0400, 0x0400); + + gDPLoadTextureBlock(gDisplayListHead++, D_40016C8, G_IM_FMT_IA, G_IM_SIZ_8b, 8, 8, 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); + gSPTextureRectangle(gDisplayListHead++, (arg1 + 8) << 2, ((arg2 + arg0->unk_00.unk_14.unk_02) - 8) << 2, + (arg0->unk_00.unk_14.unk_00 + arg1) << 2, (arg2 + arg0->unk_00.unk_14.unk_02) << 2, + G_TX_RENDERTILE, (arg0->unk_00.unk_14.unk_00 * -0x20) + 0x200, 0, 0x0400, 0x0400); + + gDPLoadTextureBlock(gDisplayListHead++, D_4001680, G_IM_FMT_IA, G_IM_SIZ_8b, 8, 8, 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); + gSPTextureRectangle(gDisplayListHead++, arg1 << 2, (arg2 + 8) << 2, (arg1 + 8) << 2, + (arg2 + arg0->unk_00.unk_14.unk_02) << 2, G_TX_RENDERTILE, 0, + (arg0->unk_00.unk_14.unk_02 * -0x20) + 0x200, 0x0400, 0x0400); + + if (arg0->unk_00.unk_2A & 0x100) { + s32 temp_a0; + + gDPPipeSync(gDisplayListHead++); + + gDPSetCycleType(gDisplayListHead++, G_CYC_FILL); + gDPSetRenderMode(gDisplayListHead++, G_RM_NOOP, G_RM_NOOP2); + + // clang-format off + temp_a0 = RGBA5551(func_8002D444(arg0->unk_3A, 1.4f).r, func_8002D444(arg0->unk_3A, 1.4f).g, func_8002D444(arg0->unk_3A, 1.4f).b, 1); gDPPipeSync(gDisplayListHead++); + // clang-format on + + gDPSetFillColor(gDisplayListHead++, (temp_a0 << 0x10) | temp_a0); + gDPFillRectangle(gDisplayListHead++, arg1 + 1, arg2 + 1, (arg1 + (u32)arg0->unk_00.unk_14.unk_00) - 2, + (arg2 + arg0->unk_00.unk_14.unk_02) - 2); + } + + sp16C = (arg0->unk_00.unk_2A & 0x101) ? arg0->unk_32 : arg0->unk_36; + + gDPPipeSync(gDisplayListHead++); + + gDPSetCycleType(gDisplayListHead++, G_CYC_1CYCLE); + gDPSetRenderMode(gDisplayListHead++, G_RM_XLU_SURF, G_RM_XLU_SURF2); + gDPSetTexturePersp(gDisplayListHead++, G_TP_NONE); + gDPSetTextureFilter(gDisplayListHead++, G_TF_POINT); + gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIDECALA_PRIM, G_CC_MODULATEIDECALA_PRIM); + + gDPSetPrimColor(gDisplayListHead++, 0, 0, sp16C.r, sp16C.g, sp16C.b, sp16C.a); + + if (arg0->unk_40 != 0) { + gDPLoadTextureBlock(gDisplayListHead++, arg0->unk_2C, G_IM_FMT_IA, G_IM_SIZ_16b, arg0->unk_30, + arg0->unk_00.unk_14.unk_02 - 6, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); + + gSPTextureRectangle(gDisplayListHead++, (arg1 + 3) << 2, (arg2 + 3) << 2, + ((arg1 + (u32)arg0->unk_00.unk_14.unk_00) - 3) << 2, + ((arg2 + arg0->unk_00.unk_14.unk_02) - 3) << 2, G_TX_RENDERTILE, + (arg0->unk_00.unk_14.unk_00 - 7) << 5, 0, 0xFC00, 0x0400); + } else { + gDPLoadTextureBlock(gDisplayListHead++, arg0->unk_2C, G_IM_FMT_IA, G_IM_SIZ_16b, arg0->unk_30, + arg0->unk_00.unk_14.unk_02 - 6, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); + + gSPTextureRectangle(gDisplayListHead++, (arg1 + 3) << 2, (arg2 + 3) << 2, + ((arg1 + (u32)arg0->unk_00.unk_14.unk_00) - 3) << 2, + ((arg2 + arg0->unk_00.unk_14.unk_02) - 3) << 2, G_TX_RENDERTILE, 0, 0, 0x0400, 0x0400); + } + return 0; +} + +void func_882158BC(unk_func_882149A0* arg0) { + arg0->unk_40 = !arg0->unk_40; +} + +void func_882158CC(unk_func_8820BE14_02C_038* arg0, s32 arg1, s32 arg2, s32 arg3, void (*arg4)(), s32 arg5, s32 arg6, + MemoryPool* arg7) { + ((func88506DCC)Memmap_GetFragmentVaddr(func_88506DCC))(arg0, arg1, arg2, arg4, arg5, arg6, arg3, arg7); + + arg0->unk_70 = 0; + arg0->unk_74 = arg0->unk_00.unk_00.unk_1C; + arg0->unk_78 = arg0->unk_00.unk_00.unk_18; + arg0->unk_7C = arg0->unk_00.unk_00.unk_20; + + func_88215974(&arg0->unk_00, 1); + + arg0->unk_00.unk_44->unk_00.unk_28 |= 0x100; +} + +void func_88215974(unk_func_88200FA0_030_030* arg0, s32 arg1) { + s32 var_v0; + + if (arg1 != 0) { + var_v0 = 0; + } else { + var_v0 = 1; + } + arg0->unk_44->unk_2C = D_88218230[var_v0]; +} + +void func_882159AC(unk_func_8820BE14_02C_038* arg0, unk_func_88507D4C* arg1) { + arg0->unk_84 = arg1; + arg0->unk_80 = arg1->unk_00.unk_18; +} + +s32 func_882159BC(unk_func_8820BE14_02C_038* arg0) { + s32 sp24; + s32 var_a2; + s32 sp1C; + s32 var_a3; + s32 var_v1; + + if (arg0->unk_56 & 0x800) { + if (!(arg0->unk_54 & 0x800)) { + sp24 = arg0->unk_00.unk_38 * arg0->unk_00.unk_3E; + if ((arg0->unk_5C - sp24) < arg0->unk_64) { + var_a2 = (arg0->unk_5C - sp24); + } else { + var_a2 = arg0->unk_64; + } + arg0->unk_5C = arg0->unk_5C - var_a2; + + ((func88506FC0)Memmap_GetFragmentVaddr(func_88506FC0))(arg0); + + if (sp24 == arg0->unk_5C) { + arg0->unk_56 &= ~0x800; + } + } + } else if (arg0->unk_56 & 0x400) { + if (!(arg0->unk_54 & 0x400)) { + sp1C = ((arg0->unk_00.unk_38 + 1) * arg0->unk_00.unk_3E) - 1; + if ((sp1C - arg0->unk_5C) < arg0->unk_64) { + var_a2 = (sp1C - arg0->unk_5C); + } else { + var_a2 = arg0->unk_64; + } + arg0->unk_5C = arg0->unk_5C + var_a2; + + ((func88506FE0)Memmap_GetFragmentVaddr(func_88506FE0))(arg0); + + if (sp1C == arg0->unk_5C) { + arg0->unk_56 &= ~0x400; + arg0->unk_5C = (arg0->unk_5C - arg0->unk_00.unk_3E) + 1; + } + } + } else if (arg0->unk_56 & 0x200) { + if (!(arg0->unk_54 & 0x200)) { + if ((arg0->unk_5C - arg0->unk_60) < arg0->unk_68) { + var_v1 = (arg0->unk_5C - arg0->unk_60); + } else { + var_v1 = arg0->unk_68; + } + arg0->unk_5C -= var_v1; + + if (arg0->unk_58 < var_v1) { + var_a2 = arg0->unk_58; + } else { + var_a2 = var_v1; + } + arg0->unk_58 -= var_a2; + + arg0->unk_00.unk_38 = arg0->unk_5C / arg0->unk_00.unk_3E; + if (arg0->unk_60 == arg0->unk_5C) { + arg0->unk_56 &= ~0x200; + } + } + } else if ((arg0->unk_56 & 0x100) && !(arg0->unk_54 & 0x100)) { + s32 tmp1 = arg0->unk_00.unk_3E * (arg0->unk_00.unk_2C->unk_08 + 1); + s32 tmp2 = arg0->unk_00.unk_3E * arg0->unk_00.unk_4A; + + if ((arg0->unk_60 - arg0->unk_5C) < arg0->unk_68) { + var_a3 = (arg0->unk_60 - arg0->unk_5C); + } else { + var_a3 = arg0->unk_68; + } + arg0->unk_5C += var_a3; + + var_v1 = (tmp1 - arg0->unk_58) - tmp2; + + if (var_v1 <= 0) { + var_v1 = 0; + } + + if (var_v1 < var_a3) { + var_a2 = var_v1; + } else { + var_a2 = var_a3; + } + + arg0->unk_58 += var_a2; + arg0->unk_00.unk_38 = arg0->unk_5C / arg0->unk_00.unk_3E; + if (arg0->unk_60 == arg0->unk_5C) { + arg0->unk_56 &= ~0x100; + } + } + + arg0->unk_54 = 0; + + var_v1 = arg0->unk_5C - arg0->unk_58; + if (arg0->unk_56 & 0x400) { + var_v1 = (var_v1 - arg0->unk_00.unk_3E) + 1; + } + + arg0->unk_00.unk_44->unk_00.unk_10.unk_00 = arg0->unk_00.unk_50; + arg0->unk_00.unk_44->unk_00.unk_10.unk_02 = arg0->unk_00.unk_52 + var_v1; + return 0; +} + +s32 func_88215D18(unk_func_8820BE14_02C_038* arg0, s32 arg1, s32 arg2, s32 arg3) { + s32 i; + s32 temp_lo; + s32 temp_s5; + s32 var_s2; + s32 var_s4; + s32 var_s6; + s32 var_v0; + s32 var_v1_2; + u16 var_v1; + unk_func_88205880_00D0** var_s3; + unk_func_88205880_00D0* var_a2; + + temp_lo = arg0->unk_00.unk_3E * arg0->unk_00.unk_4A; + var_s3 = NULL; + var_s6 = 0; + var_s4 = 0; + + if (arg0->unk_00.unk_2C != NULL) { + var_s3 = arg0->unk_00.unk_2C->unk_00; + if (arg0->unk_00.unk_30 != 0) { + var_s6 = arg0->unk_00.unk_2C->unk_0C; + } + var_s4 = arg0->unk_00.unk_2C->unk_08 + 1; + } + + gDPPipeSync(gDisplayListHead++); + + gDPSetScissorFrac(gDisplayListHead++, G_SC_NON_INTERLACE, arg1 * 4.0f, arg2 * 4.0f, + (arg0->unk_00.unk_3C + arg1) * 4.0f, (arg2 + temp_lo) * 4.0f); + + var_s2 = arg2 - (arg0->unk_58 % arg0->unk_00.unk_3E); + i = arg0->unk_58 / arg0->unk_00.unk_3E; + temp_s5 = (((arg0->unk_58 + temp_lo) - 1) / arg0->unk_00.unk_3E) + 1; + + for (; i < temp_s5; i++) { + var_a2 = NULL; + var_v1 = 0; + + if ((i < var_s4) && (i != arg0->unk_00.unk_38)) { + if (i < arg0->unk_00.unk_38) { + var_v1_2 = 0; + } else { + var_v1_2 = -1; + } + + var_v0 = var_v1_2 + i; + if (arg0->unk_00.unk_30 != 0) { + var_a2 = (u8*)var_s3 + var_s6 * var_v0; + } else { + var_a2 = var_s3[var_v0]; + } + + var_v1 = arg0->unk_00.unk_34[var_v0]; + } else if (i == arg0->unk_00.unk_38) { + var_v1 = 1; + } + + arg0->unk_00.unk_40(arg1, var_s2, var_a2, i, var_v1, arg0); + + var_s2 += arg0->unk_00.unk_3E; + } + + gDPPipeSync(gDisplayListHead++); + gDPSetScissor(gDisplayListHead++, G_SC_NON_INTERLACE, 0, 0, 640, 480); + + return 0; +} + +#ifdef NON_MATCHING +void func_88216000(unk_func_8820BE14_02C_038* arg0, s32 arg1, s32 arg2) { + s32 sp12C; + Gfx* sp104; + Gfx* sp100; + s32 spC; + s32 temp_s0; + s32 temp_t3; + s32 temp_t4; + s32 temp_t4_2; + s32 var_t5; + unk_func_8820BE14_06C* temp_v0; + unk_func_8820BE14_06C* temp_v0_2; + void* temp_v1_42; + unk_func_8820BE14_02C_038_02C* ptr = arg0->unk_00.unk_2C; + + sp12C = ptr->unk_3E * ptr->unk_4A; + + temp_s0 = ((arg0->unk_00.unk_00.unk_14.unk_00 / 2) + arg1) - 9; + + gDPPipeSync(gDisplayListHead++); + + gDPSetCycleType(gDisplayListHead++, G_CYC_1CYCLE); + gDPSetRenderMode(gDisplayListHead++, G_RM_OPA_SURF, G_RM_OPA_SURF2); + gDPSetTexturePersp(gDisplayListHead++, G_TP_NONE); + gDPSetTextureFilter(gDisplayListHead++, G_TF_POINT); + gDPSetCombineMode(gDisplayListHead++, G_CC_DECALRGBA, G_CC_DECALRGBA); + + gDPLoadTextureBlock(gDisplayListHead++, D_40022E0, G_IM_FMT_I, G_IM_SIZ_8b, 8, 16, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); + + gSPTextureRectangle(gDisplayListHead++, arg1 << 2, arg2 << 2, (arg0->unk_00.unk_00.unk_14.unk_00 + arg1) << 2, + (arg2 + 0x10) << 2, G_TX_RENDERTILE, 0, 0, 0x0400, 0x0400); + + gDPPipeSync(gDisplayListHead++); + + gDPSetCycleType(gDisplayListHead++, G_CYC_COPY); + gDPSetRenderMode(gDisplayListHead++, G_RM_NOOP, G_RM_NOOP2); + gDPSetAlphaCompare(gDisplayListHead++, G_AC_THRESHOLD); + gDPSetTexturePersp(gDisplayListHead++, G_TP_NONE); + + spC = (arg2 * 4) & 0xFFF; + if (arg0->unk_00.unk_30 == 0) { + gDPLoadTextureBlock(gDisplayListHead++, (ptr->unk_58 > 0) ? D_4002368 : D_4002D88, G_IM_FMT_RGBA, G_IM_SIZ_16b, + 20, 16, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, + G_TX_NOLOD, G_TX_NOLOD); + gSPTextureRectangle(gDisplayListHead++, temp_s0 << 2, arg2 << 2, (temp_s0 + 0x11) << 2, (arg2 + 0xF) << 2, + G_TX_RENDERTILE, 0, 0, 0x1000, 0x0400); + + gDPLoadTextureBlock(gDisplayListHead++, (ptr->unk_58 > 0) ? D_4002878 : D_4003298, G_IM_FMT_RGBA, G_IM_SIZ_16b, + 20, 16, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, + G_TX_NOLOD, G_TX_NOLOD); + gSPTextureRectangle(gDisplayListHead++, (temp_s0 - 0x1C) << 2, arg2 << 2, (temp_s0 - 9) << 2, (arg2 + 0xF) << 2, + G_TX_RENDERTILE, 0, 0, 0x1000, 0x0400); + } else { + var_t5 = 0; + if ((ptr->unk_2C != NULL) && ((ptr->unk_58 + sp12C) < (ptr->unk_3E * (ptr->unk_2C->unk_08 + 1)))) { + var_t5 = 1; + } + + gDPLoadTextureBlock(gDisplayListHead++, var_t5 != 0 ? D_40025F0 : D_4003010, G_IM_FMT_RGBA, G_IM_SIZ_16b, 20, + 16, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, + G_TX_NOLOD, G_TX_NOLOD); + gSPTextureRectangle(gDisplayListHead++, temp_s0 << 2, arg2 << 2, (temp_s0 + 0x11) << 2, (arg2 + 0xF) << 2, + G_TX_RENDERTILE, 0, 0, 0x1000, 0x0400); + + gDPLoadTextureBlock(gDisplayListHead++, var_t5 != 0 ? D_4002B00 : D_4003520, G_IM_FMT_RGBA, G_IM_SIZ_16b, 20, + 16, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, + G_TX_NOLOD, G_TX_NOLOD); + gSPTextureRectangle(gDisplayListHead++, (temp_s0 + 0x1A) << 2, arg2 << 2, (temp_s0 + 0x2D) << 2, + (arg2 + 0xF) << 2, G_TX_RENDERTILE, 0, 0, 0x1000, 0x0400); + } + + gDPPipeSync(gDisplayListHead++); + + gDPSetAlphaCompare(gDisplayListHead++, G_AC_NONE); +} +#else #pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1BCF10/func_88216000.s") +#endif +#ifdef NON_MATCHING +s32 func_882169D4(unk_func_8820BE14_02C_038* arg0, Controller* arg1) { + s32 sp24 = arg0->unk_00.unk_38; + s32 temp_t3 = arg0->unk_60; + s32 var_t2 = 0; + s32 sp18 = 0; + + if ((arg0->unk_00.unk_2C == NULL) || (arg0->unk_00.unk_2C->unk_08 == 0)) { + return 0; + } + + // clang-format off + if (arg1->buttonPressed & 0x800) { + arg0->unk_6C = 8; arg0->unk_54 = 0x800; + } else if (arg1->buttonPressed & 0x400) { + arg0->unk_6C = 8; arg0->unk_54 = 0x400; + } else if (arg1->buttonPressed & 0x200) { + arg0->unk_6C = 8; arg0->unk_54 = 0x200; + } else if (arg1->buttonPressed & 0x100) { + arg0->unk_6C = 8; arg0->unk_54 = 0x100; + } else if (arg0->unk_6C > 0) { + arg0->unk_6C--; + } else { + arg0->unk_54 = arg1->buttonDown; + } + // clang-format on + + if ((arg0->unk_54 & 0x800) && ((arg0->unk_56 & ~0x800) == 0)) { + s32 var_a1; + + if ((arg0->unk_56 == 0) && (arg0->unk_5C == 0)) { + sp18 = 1; + } + + arg0->unk_56 |= 0x800; + + if (arg0->unk_5C < arg0->unk_64) { + var_a1 = arg0->unk_5C; + } else { + var_a1 = arg0->unk_64; + } + + arg0->unk_5C = arg0->unk_5C - var_a1; + ((func88506FC0)Memmap_GetFragmentVaddr(func_88506FC0))(arg0); + var_t2 = 0; + arg0->unk_00.unk_38 = arg0->unk_5C / arg0->unk_00.unk_3E; + if (sp24 != arg0->unk_00.unk_38) { + var_t2 = 0x80000000; + } + } else if ((arg0->unk_54 & 0x400) && ((arg0->unk_56 & ~0x400) == 0)) { + s32 var_a1; + s32 temp_lo_2 = arg0->unk_00.unk_3E * (arg0->unk_00.unk_2C->unk_08 + 1); + s32 temp_lo_6; + + if (arg0->unk_56 == 0) { + arg0->unk_5C = (arg0->unk_5C + arg0->unk_00.unk_3E) - 1; + if (temp_lo_2 == (arg0->unk_5C + 1)) { + sp18 = 1; + } + } + + arg0->unk_56 |= 0x400; + + temp_lo_6 = (temp_lo_2 - arg0->unk_5C) - 1; + if (temp_lo_6 < arg0->unk_64) { + var_a1 = temp_lo_6; + } else { + var_a1 = arg0->unk_64; + } + arg0->unk_5C += var_a1; + + ((func88506FE0)Memmap_GetFragmentVaddr(func_88506FE0))(arg0); + + var_t2 = 0; + arg0->unk_00.unk_38 = arg0->unk_5C / arg0->unk_00.unk_3E; + if (sp24 != arg0->unk_00.unk_38) { + var_t2 = 0x80000000; + } + } else if ((arg0->unk_54 & 0x200) && ((arg0->unk_56 & ~0x200) == 0)) { + s32 var_a1; + s32 temp_a3 = arg0->unk_00.unk_3E * arg0->unk_00.unk_4A; + + if (arg0->unk_56 == 0) { + arg0->unk_60 = arg0->unk_5C; + if (arg0->unk_60 > 0) { + var_t2 = 0x80000000; + } + } + + arg0->unk_56 |= 0x200; + + if (arg0->unk_5C < arg0->unk_68) { + var_a1 = arg0->unk_5C; + } else { + var_a1 = arg0->unk_68; + } + + arg0->unk_5C -= var_a1; + + if (arg0->unk_5C < arg0->unk_60) { + if (temp_a3 < arg0->unk_60) { + var_a1 = temp_a3; + } else { + var_a1 = arg0->unk_60; + } + arg0->unk_60 -= var_a1; + } + + arg0->unk_00.unk_38 = arg0->unk_5C / arg0->unk_00.unk_3E; + + if (arg0->unk_58 < arg0->unk_68) { + var_a1 = arg0->unk_58; + } else { + var_a1 = arg0->unk_68; + } + + arg0->unk_58 -= var_a1; + + if (temp_t3 != arg0->unk_60) { + var_t2 |= 0x80000000; + } + } else if (arg0->unk_54 & 0x100) { + if (!(arg0->unk_56 & ~0x100)) { + s32 var_a1; + s32 temp_lo_2 = arg0->unk_00.unk_3E * (arg0->unk_00.unk_2C->unk_08 + 1); + s32 temp_lo_6 = arg0->unk_00.unk_3E * arg0->unk_00.unk_4A; + s32 temp_a3 = (temp_lo_2 - arg0->unk_5C) - arg0->unk_00.unk_3E; + + if (arg0->unk_56 == 0) { + arg0->unk_60 = arg0->unk_5C; + if (temp_a3 > 0) { + var_t2 = 0x80000000; + } + } + + arg0->unk_56 |= 0x100; + + if (temp_a3 < arg0->unk_68) { + var_a1 = temp_a3; + } else { + var_a1 = arg0->unk_68; + } + + arg0->unk_5C += var_a1; + + if (arg0->unk_60 < arg0->unk_5C) { + temp_a3 = (temp_lo_2 - arg0->unk_60) - arg0->unk_00.unk_3E; + if (temp_lo_6 < temp_a3) { + var_a1 = temp_lo_6; + } else { + var_a1 = temp_a3; + } + arg0->unk_60 += var_a1; + } + + arg0->unk_00.unk_38 = arg0->unk_5C / arg0->unk_00.unk_3E; + + temp_a3 = (temp_lo_2 - arg0->unk_58) - temp_lo_6; + if (temp_a3 <= 0) { + temp_a3 = 0; + } + + if (temp_a3 < arg0->unk_68) { + var_a1 = temp_a3; + } else { + var_a1 = arg0->unk_68; + } + + arg0->unk_58 += var_a1; + + if (temp_t3 != arg0->unk_60) { + var_t2 |= 0x80000000; + } + } + } + + if (arg0->unk_56 == 0) { + var_t2 = 0; + } else { + var_t2 |= 8; + if (sp18 == 0) { + var_t2 |= 1; + } + } + return var_t2; +} +#else #pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1BCF10/func_882169D4.s") +#endif -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1BCF10/func_88216F18.s") +void func_88216F18(unk_func_8820BE14_02C_038* arg0, s32 arg1) { + if (arg1 == 0) { + arg0->unk_70 = 1; + arg0->unk_00.unk_00.unk_1C = func_882159BC; + arg0->unk_00.unk_00.unk_18 = func_88215D18; + arg0->unk_00.unk_00.unk_20 = func_882169D4; + arg0->unk_84->unk_00.unk_18 = func_88216000; + if (arg0->unk_00.unk_2C->unk_08 > 0) { + ((func88507AE4)Memmap_GetFragmentVaddr(func_88507AE4))(arg0, arg0->unk_00.unk_38 + 1); + } + } else { + arg0->unk_70 = 0; + arg0->unk_00.unk_00.unk_1C = arg0->unk_74; + arg0->unk_00.unk_00.unk_18 = arg0->unk_78; + arg0->unk_00.unk_00.unk_20 = arg0->unk_7C; + arg0->unk_84->unk_00.unk_18 = arg0->unk_80; + if ((arg1 == 1) && (arg0->unk_00.unk_38 > 0) && (arg0->unk_00.unk_2C->unk_08 > 0)) { + ((func88507B80)Memmap_GetFragmentVaddr(func_88507B80))(arg0, arg0->unk_00.unk_38 - 1); + } + } +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1BCF10/func_88217018.s") +void func_88217018(unk_func_8820BE14_02C_038* arg0, unk_func_8820BE14_06C_000* arg1, u32 arg2) { + arg0->unk_88 = &arg1->unk_00; + arg0->unk_8C = arg2; + ((func88506EE4)Memmap_GetFragmentVaddr(func_88506EE4))(arg0, &arg1->unk_04); +} #pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1BCF10/func_88217060.s") -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1BCF10/func_882170A8.s") +void func_882170A8(unk_func_882170A8* arg0, s32 arg1, s32 arg2, unk_func_8820BE14_02C_038* arg3, s32 arg4) { + ((func885007CC)Memmap_GetFragmentVaddr(func_885007CC))(arg0, sizeof(unk_func_882170A8)); + + arg0->unk_00.unk_18 = func_8821738C; + arg0->unk_00.unk_10.unk_00 = arg1; + arg0->unk_00.unk_10.unk_02 = arg2; + arg0->unk_2C = arg3; + arg0->unk_30 = arg4; +} + +void func_8821711C(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) { + func_8002E8E4(arg0, arg1, arg2, arg4); + func_8002E8E4(((arg4 * 9) + arg0) + 9, arg1, arg3, arg4); + + gDPPipeSync(gDisplayListHead++); + + gDPSetCycleType(gDisplayListHead++, G_CYC_1CYCLE); + gDPSetRenderMode(gDisplayListHead++, G_RM_XLU_SURF, G_RM_XLU_SURF2); + gDPSetTexturePersp(gDisplayListHead++, G_TP_NONE); + gDPSetTextureFilter(gDisplayListHead++, G_TF_POINT); + gDPSetCombineMode(gDisplayListHead++, G_CC_DECALRGBA, G_CC_DECALRGBA); + + gDPLoadTextureBlock(gDisplayListHead++, D_4006A60, G_IM_FMT_IA, G_IM_SIZ_8b, 8, 10, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); + gSPTextureRectangle(gDisplayListHead++, ((arg4 * 9) + arg0) << 2, (arg1 + 2) << 2, (((arg4 * 9) + arg0) + 8) << 2, + (arg1 + 0xC) << 2, G_TX_RENDERTILE, 0, 0, 0x0400, 0x0400); +} + +s32 func_8821738C(unk_func_882170A8* arg0, s32 arg1, s32 arg2) { + unk_func_8820BE14_06C* temp_v0 = arg0->unk_2C->unk_00.unk_2C; + + if (temp_v0 == NULL) { + return 0; + } + + func_8821711C(arg1, arg2, temp_v0->unk_08, temp_v0->unk_04, arg0->unk_30); + return 0; +} + +void func_882173EC(unk_func_882173EC* arg0, s32 arg1, s32 arg2) { + ((func885007CC)Memmap_GetFragmentVaddr(func_885007CC))(arg0, sizeof(unk_func_882173EC)); + + arg0->unk_00.unk_1C = func_88217460; + arg0->unk_30.unk_00 = arg1; + arg0->unk_30.unk_02 = arg2; + arg0->unk_2C = 0x10; + arg0->unk_00.unk_28 &= ~1; +} + +typedef struct unk_func_88217460 { + /* 0x00 */ f32 unk_00; + /* 0x04 */ f32 unk_04; +} unk_func_88217460; // size >= 0x8 + +s32 func_88217460(unk_func_882173EC* arg0) { + f32 temp_fa1; + f32 temp_ft4; + f32 tmp = 15.0f; + f32 sp38; + f32 sp34; + f32 sp30; + f32 sp28[2]; + f32 sp24; + f32 sp1C; + + sp1C = (tmp * 2.0f) / 7.5f; + sp38 = -sp1C / 7.5f; + + if (arg0->unk_2C >= 0x10) { + arg0->unk_00.unk_28 &= ~1; + return 0; + } + + if (arg0->unk_2C >= 0xF) { + arg0->unk_00.unk_28 &= ~0x100; + } + + sp30 = arg0->unk_34.unk_00 - arg0->unk_30.unk_00; + sp34 = arg0->unk_34.unk_02 - arg0->unk_30.unk_02; + + sp28[0] = sp34; + sp28[1] = -sp30; + + func_8002D3F0(sp28); + + sp24 = (arg0->unk_2C * sp38) + sp1C; + + temp_fa1 = (sp1C + sp24) * arg0->unk_2C * 0.5f; + + sp28[0] *= temp_fa1; + sp28[1] *= temp_fa1; + + temp_ft4 = arg0->unk_2C / tmp; + + sp30 *= temp_ft4; + sp34 *= temp_ft4; + + sp30 += sp28[0]; + sp34 += sp28[1]; + + arg0->unk_00.unk_10.unk_00 = arg0->unk_30.unk_00 + (s16)sp30; + arg0->unk_00.unk_10.unk_02 = arg0->unk_30.unk_02 + (s16)sp34; + + arg0->unk_2C++; + return 0; +} + +void func_882175F4(unk_func_882173EC* arg0, unk_func_88001300_000_010 arg1, unk_func_88001300_000_010 arg2) { + unk_func_88001300_000_010 tmp = arg1; + + arg0->unk_30 = tmp; + arg0->unk_00.unk_10 = (0, tmp); + arg0->unk_34 = arg2; + arg0->unk_2C = 0; + arg0->unk_00.unk_28 |= 0x101; +} + +void func_88217650(unk_func_8821421C_02C_06C_02C_068* arg0, s32 arg1, s32 arg2) { + ((func885007CC)Memmap_GetFragmentVaddr(func_885007CC))(arg0, sizeof(unk_func_8821421C_02C_06C_02C_068)); + + arg0->unk_00.unk_1C = func_882176C4; + arg0->unk_00.unk_10.unk_00 = arg1; + arg0->unk_00.unk_10.unk_02 = arg2; + arg0->unk_2C = 0x10; + arg0->unk_00.unk_28 &= ~1; +} + +s32 func_882176C4(unk_func_8821421C_02C_06C_02C_068* arg0) { + if (arg0->unk_2C >= 0x10) { + arg0->unk_00.unk_28 &= ~1; + return 0; + } + + if (arg0->unk_2C >= 0xF) { + arg0->unk_00.unk_28 &= ~0x100; + } + + arg0->unk_2C++; + return 0; +} + +void func_88217718(unk_func_8821421C_02C_06C_02C_068* arg0, unk_func_88001300_000_010 arg1) { + arg0->unk_00.unk_10 = arg1; + arg0->unk_00.unk_28 |= 0x101; + arg0->unk_2C = 0; +} + +void func_88217740(unk_func_88217740* arg0, s32 arg1, s32 arg2) { + ((func885007CC)Memmap_GetFragmentVaddr(func_885007CC))(arg0, sizeof(unk_func_88217740)); + + arg0->unk_00.unk_18 = func_882177A8; + arg0->unk_00.unk_10.unk_00 = arg1; + arg0->unk_00.unk_10.unk_02 = arg2; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1BCF10/func_8821711C.s") + func_88217BA0(arg0, 1); +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1BCF10/func_8821738C.s") +s32 func_882177A8(unk_func_88217740* arg0, s32 arg1, s32 arg2) { + Color_RGBA8 sp6C; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1BCF10/func_882173EC.s") + gDPPipeSync(gDisplayListHead++); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1BCF10/func_88217460.s") + gDPSetCycleType(gDisplayListHead++, G_CYC_1CYCLE); + gDPSetRenderMode(gDisplayListHead++, G_RM_XLU_SURF, G_RM_XLU_SURF2); + gDPSetTexturePersp(gDisplayListHead++, G_TP_NONE); + gDPSetTextureFilter(gDisplayListHead++, G_TF_POINT); + gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIDECALA_PRIM, G_CC_MODULATEIDECALA_PRIM); + gDPLoadTextureBlock(gDisplayListHead++, D_8821EE88, G_IM_FMT_IA, G_IM_SIZ_16b, 64, 32, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1BCF10/func_882175F4.s") + sp6C = D_88218238[(arg0->unk_2C != 0) ? 0 : 1]; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1BCF10/func_88217650.s") + gDPSetPrimColor(gDisplayListHead++, 0, 0, sp6C.r, sp6C.g, sp6C.b, sp6C.a); + gSPTextureRectangle(gDisplayListHead++, arg1 << 2, arg2 << 2, (arg1 + 0x20) << 2, (arg2 + 0x14) << 2, + G_TX_RENDERTILE, 0, 0, 0x0400, 0x0400); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1BCF10/func_882176C4.s") + sp6C = D_88218238[(arg0->unk_2C == 0) ? 0 : 1]; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1BCF10/func_88217718.s") + gDPPipeSync(gDisplayListHead++); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1BCF10/func_88217740.s") + gDPSetPrimColor(gDisplayListHead++, 0, 0, sp6C.r, sp6C.g, sp6C.b, sp6C.a); + gSPTextureRectangle(gDisplayListHead++, (arg1 + 0x20) << 2, arg2 << 2, (arg1 + 0x40) << 2, (arg2 + 0x14) << 2, + G_TX_RENDERTILE, 0x0400, 0, 0x0400, 0x0400); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1BCF10/func_882177A8.s") + return 0; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1BCF10/func_88217BA0.s") +void func_88217BA0(unk_func_88217740* arg0, s32 arg1) { + arg0->unk_30 = 0; + arg0->unk_2C = arg1; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1BCF10/func_88217BAC.s") +void func_88217BAC(unk_func_88217740* arg0) { + arg0->unk_30 = 1; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1BCF10/func_88217BB8.s") +void func_88217BB8(unk_func_88217740* arg0) { + arg0->unk_30 = 0; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/23/fragment23_1BCF10/func_88217BC0.s") +void func_88217BC0(unk_func_88217740* arg0) { + func_88217BA0(arg0, arg0->unk_2C == 0); +} diff --git a/src/fragments/23/fragment23_882181B0.c b/src/fragments/23/fragment23_882181B0.c new file mode 100644 index 00000000..742e9134 --- /dev/null +++ b/src/fragments/23/fragment23_882181B0.c @@ -0,0 +1,1606 @@ +#include "fragment23.h" + +Color_RGBA8 D_882181B0[2] = { + { 0xFF, 0xFF, 0xFF, 0xFF }, + { 0xB3, 0xB3, 0xB3, 0xFF }, +}; +Color_RGBA8 D_882181B8[2] = { + { 0x73, 0xEF, 0xFF, 0xFF }, + { 0x23, 0x9D, 0xB3, 0xFF }, +}; +Color_RGBA8 D_882181C0[2] = { + { 0x96, 0xFF, 0x73, 0xFF }, + { 0x47, 0xB3, 0x23, 0xFF }, +}; +Color_RGBA8 D_882181C8[2] = { + { 0xFF, 0xED, 0x73, 0xFF }, + { 0xB3, 0xA0, 0x23, 0xFF }, +}; +Color_RGBA8 D_882181D0[2] = { + { 0xFF, 0x73, 0x73, 0xFF }, + { 0x83, 0x3B, 0x3B, 0xFF }, +}; +Color_RGBA8 D_882181D8[2] = { + { 0xFF, 0xAE, 0x73, 0xFF }, + { 0xB3, 0x60, 0x23, 0xFF }, +}; +Color_RGBA8 D_882181E0[2] = { + { 0xFF, 0x73, 0xFF, 0xFF }, + { 0xB3, 0x23, 0xB3, 0xFF }, +}; +Color_RGBA8 D_882181E8[2] = { + { 0x96, 0x96, 0xE6, 0xFF }, + { 0x64, 0x64, 0xC8, 0xFF }, +}; + +Color_RGBA8 D_882181F0[2] = { + { 0x71, 0xE9, 0xF9, 0xFF }, + { 0x3C, 0x7B, 0x84, 0xFF }, +}; +Color_RGBA8 D_882181F8[2] = { + { 0xFF, 0xFF, 0xFF, 0xFF }, + { 0x84, 0x84, 0x84, 0xFF }, +}; +Color_RGBA8 D_88218200[2] = { + { 0xFF, 0xED, 0x73, 0xFF }, + { 0x84, 0x7B, 0x3C, 0xFF }, +}; +Color_RGBA8 D_88218208[2] = { + { 0x93, 0xFA, 0x71, 0xFF }, + { 0x51, 0x89, 0x3E, 0xFF }, +}; +Color_RGBA8 D_88218210[2] = { + { 0xFF, 0x73, 0x73, 0xFF }, + { 0x83, 0x3B, 0x3B, 0xFF }, +}; +Color_RGBA8 D_88218218[2] = { + { 0xF9, 0xAB, 0x71, 0xFF }, + { 0xFF, 0xFF, 0xFF, 0xFF }, +}; +Color_RGBA8 D_88218220[2] = { + { 0xFE, 0x73, 0xFE, 0xFF }, + { 0x97, 0x44, 0x97, 0xFF }, +}; +Color_RGBA8 D_88218228[2] = { + { 0x96, 0x96, 0xE6, 0xFF }, + { 0x64, 0x64, 0xC8, 0xFF }, +}; +Color_RGBA8 D_88218230[2] = { + { 0xFF, 0xFF, 0x00, 0xFF }, + { 0x40, 0xFF, 0x40, 0xFF }, +}; +Color_RGBA8 D_88218238[2] = { + { 0xFF, 0xFF, 0xFF, 0xFF }, + { 0x64, 0x64, 0x64, 0xFF }, +}; +static Gfx D_88218240[] = { + gsSPEndDisplayList(), +}; + +u32 D_88218248[] = { + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000016, + 0x00A900E0, 0x00DF00B7, 0x00230000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x003500D8, 0x05FF6FFF, 0x77FF0AFF, 0x00E90042, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000061, 0x00F30EFF, 0xA4FFFFFF, 0xFFFFB5FF, 0x12FF00F5, 0x006A0000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000005, 0x008400FE, 0x24FFC4FF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xCEFF2AFF, 0x00FD0087, 0x00070000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x001500B4, 0x00FF4AFF, 0xE3FFFBFF, 0xFBFFFBFF, 0xFBFFFBFF, 0xFAFFE3FF, + 0x4FFF00FF, 0x00B60015, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000026, + 0x00CC00FF, 0x62FFF0FF, 0xF6FFF7FF, 0xF7FFF7FF, 0xF7FFF7FF, 0xF7FFF7FF, 0xEFFF68FF, 0x00FF00D2, 0x002E0000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x005000E9, 0x09FF8EFF, 0xF3FFF3FF, 0xF3FFF3FF, + 0xF3FFF3FF, 0xF3FFF2FF, 0xF2FFF3FF, 0xF2FFF2FF, 0x8CFF0AFF, 0x00EA0052, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000085, 0x00FF1BFF, 0xB5FFEEFF, 0xEEFFEEFF, 0xEFFFEEFF, 0xEEFFEFFF, 0xEEFFEFFF, 0xEFFFEFFF, + 0xEEFFEFFF, 0xEEFFB3FF, 0x17FF00FF, 0x007E0000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000015, 0x00A100FF, 0x38FFC5FF, + 0xEBFFEBFF, 0xEBFFEBFF, 0xEAFFEBFF, 0xEAFFEAFF, 0xEBFFEBFF, 0xEBFFEAFF, 0xEAFFEBFF, 0xEAFFEAFF, 0xC4FF2FFF, + 0x00FF008F, 0x00050000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x002D00D1, 0x00FF5DFF, 0xDBFFE6FF, 0xE7FFE7FF, 0xE6FFE7FF, 0xE7FFE6FF, + 0xE7FFE6FF, 0xE7FFE7FF, 0xE6FFE6FF, 0xE6FFE6FF, 0xE7FFE6FF, 0xE6FFD8FF, 0x51FF00FF, 0x00BE001B, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000004D, + 0x00F004FF, 0x7AFFE3FF, 0xE3FFE2FF, 0xE2FFE3FF, 0xE2FFE2FF, 0xE2FFE2FF, 0xE2FFE3FF, 0xE2FFE2FF, 0xE2FFE2FF, + 0xE2FFE3FF, 0xE2FFE3FF, 0xE3FFE3FF, 0xE0FF67FF, 0x00FF00D2, 0x00330000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0x007900F8, 0x17FF9EFF, 0xDEFFDEFF, 0xDFFFDEFF, + 0xDEFFDEFF, 0xDEFFDEFF, 0xDFFFDEFF, 0xDEFFDEFF, 0xDEFFDEFF, 0xDFFFDFFF, 0xDEFFDEFF, 0xDFFFDEFF, 0xDEFFDEFF, + 0xDEFFDEFF, 0x87FF0CFF, 0x00EC0052, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x000D00A9, 0x00FF2FFF, 0xBDFFDAFF, 0xDAFFDBFF, 0xDAFFDAFF, 0xDAFFDAFF, 0xDAFFDBFF, 0xDAFFDAFF, + 0xDAFFDAFF, 0xDAFFDAFF, 0xDBFFDAFF, 0xDAFFDAFF, 0xDAFFDAFF, 0xDAFFDAFF, 0xDAFFDAFF, 0xDBFFA5FF, 0x1AFF00FF, + 0x007C0000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000026, 0x00C300FF, 0x4DFFC8FF, + 0xD6FFD6FF, 0xD6FFD6FF, 0xD6FFD6FF, 0xD6FFD6FF, 0xD6FFD6FF, 0xD6FFD6FF, 0xD6FFD7FF, 0xD6FFD6FF, 0xD6FFD6FF, + 0xD6FFD6FF, 0xD6FFD6FF, 0xD6FFD6FF, 0xD6FFD6FF, 0xD6FFD6FF, 0xB5FF2CFF, 0x00FF009A, 0x000C0000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x002700E0, 0x0AFF77FF, 0xD1FFD1FF, 0xD2FFD2FF, 0xD2FFD2FF, 0xD2FFD2FF, + 0xD2FFD2FF, 0xD2FFD2FF, 0xD2FFD2FF, 0xD2FFD2FF, 0xD2FFD2FF, 0xD2FFD2FF, 0xD2FFD2FF, 0xD2FFD2FF, 0xD1FFD2FF, + 0xD2FFD2FF, 0xD2FFD2FF, 0xD2FFC8FF, 0x51FF00FF, 0x00C80011, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x004800FF, 0x52FFCEFF, 0xC8FFC5FF, 0xC4FFC4FF, 0xC5FFC5FF, 0xC4FFC5FF, 0xC4FFC5FF, 0xC5FFC5FF, 0xC5FFC5FF, + 0xC5FFC5FF, 0xC5FFC5FF, 0xC4FFC5FF, 0xC5FFC4FF, 0xC5FFC5FF, 0xC4FFC5FF, 0xC4FFC4FF, 0xC5FFC4FF, 0xC5FFCCFF, + 0xC3FF29FF, 0x00F60026, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x002700E0, 0x0AFF18FF, 0x17FF17FF, + 0x17FF17FF, 0x17FF17FF, 0x17FF17FF, 0x17FF17FF, 0x17FF17FF, 0x17FF17FF, 0x17FF17FF, 0x17FF17FF, 0x17FF17FF, + 0x17FF17FF, 0x17FF17FF, 0x17FF17FF, 0x17FF17FF, 0x17FF17FF, 0x17FF17FF, 0x16FF04FF, 0x00C20010, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000023, 0x005C005A, 0x005A005A, 0x005A0059, 0x005C0064, 0x00640064, + 0x00640064, 0x00640064, 0x00640064, 0x00640064, 0x00640064, 0x00640064, 0x00640064, 0x00640064, 0x00640064, + 0x0063005A, 0x005A005A, 0x005A005A, 0x005B0056, 0x00100000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00150027, 0x00250025, 0x00250025, 0x00250025, 0x00250025, + 0x00250025, 0x00250025, 0x00250025, 0x00250025, 0x00250025, 0x00250025, 0x0026000D, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x009801FF, 0x16FB1AFB, 0x19FB19FB, 0x19FB19FB, 0x19FB19FB, 0x19FB19FB, 0x19FB19FB, 0x19FB19FB, + 0x19FB19FB, 0x19FB19FB, 0x1BFB10FC, 0x00FF0061, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x009C07FF, 0x98FFB8FF, + 0xB2FFB2FF, 0xB2FFB3FF, 0xB2FFB3FF, 0xB2FFB3FF, 0xB2FFB2FF, 0xB2FFB3FF, 0xB2FFB2FF, 0xB3FFB2FF, 0xB9FF73FF, + 0x00FF0063, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x009C06FF, 0x9BFFB5FF, 0xB6FFB5FF, 0xB5FFB6FF, 0xB5FFB5FF, + 0xB5FFB5FF, 0xB6FFB6FF, 0xB6FFB5FF, 0xB5FFB5FF, 0xB5FFB5FF, 0xB5FF74FF, 0x00FF0063, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x009C06FF, 0x97FFB1FF, 0xB1FFB2FF, 0xB1FFB1FF, 0xB1FFB1FF, 0xB1FFB1FF, 0xB1FFB1FF, 0xB1FFB1FF, + 0xB1FFB1FF, 0xB2FFB1FF, 0xB1FF72FF, 0x00FF0063, 0x00000002, 0x00020002, 0x00020002, 0x00020002, 0x00020002, + 0x00020002, 0x00020002, 0x00020001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x009C06FF, 0x94FFADFF, + 0xADFFADFF, 0xADFFADFF, 0xADFFADFF, 0xADFFADFF, 0xADFFADFF, 0xADFFADFF, 0xADFFADFF, 0xADFFADFF, 0xADFF6FFF, + 0x00FF005A, 0x002F00C6, 0x00C400C3, 0x00C300C3, 0x00C300C3, 0x00C300C3, 0x00C300C3, 0x00C300C0, 0x00CC0077, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x009C06FF, 0x90FFA9FF, 0xA9FFA9FF, 0xA9FFA9FF, 0xA9FFA9FF, + 0xA9FFA9FF, 0xA9FFA8FF, 0xA9FFA9FF, 0xA8FFA9FF, 0xA9FFA9FF, 0xA9FF6DFF, 0x00FF0055, 0x005500FF, 0x30FF56FF, + 0x52FF55FF, 0x40FF00FF, 0x16FF53FF, 0x50FF09FF, 0x13FF52FF, 0x0FFF00AC, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x009C06FF, 0x8DFFA4FF, 0xA5FFA5FF, 0xA4FFA5FF, 0xA5FFA5FF, 0xA4FFA5FF, 0xA4FFA5FF, 0xA5FFA5FF, + 0xA5FFA5FF, 0xA5FFA4FF, 0xA5FF6AFF, 0x00FF0055, 0x005500FF, 0x60FFA5FF, 0xA5FFA5FF, 0x81FF00FF, 0x2CFFA5FF, + 0xA0FF11FF, 0x24FF9FFF, 0x1EFF00AC, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x009C06FF, 0x89FFA0FF, + 0xA1FFA1FF, 0xA1FFA1FF, 0xA1FFA1FF, 0xA1FFA0FF, 0xA1FFA1FF, 0xA1FFA1FF, 0xA0FFA1FF, 0xA1FFA0FF, 0xA1FF68FF, + 0x00FF0055, 0x005500FF, 0x5DFFA1FF, 0xA0FFA1FF, 0x7CFF00FF, 0x2BFFA1FF, 0x9DFF10FF, 0x23FF9BFF, 0x1DFF00AC, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x009C06FF, 0x86FF9CFF, 0x9DFF9DFF, 0x9CFF9DFF, 0x9DFF9CFF, + 0x9DFF9DFF, 0x9DFF9DFF, 0x9CFF9DFF, 0x9CFF9DFF, 0x9DFF9DFF, 0x9DFF65FF, 0x00FF0055, 0x005500FF, 0x5BFF9DFF, + 0x9DFF9CFF, 0x79FF00FF, 0x2AFF9CFF, 0x98FF10FF, 0x22FF96FF, 0x1CFF00AC, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x009900FF, 0x70FF98FF, 0x98FF99FF, 0x99FF98FF, 0x98FF99FF, 0x98FF99FF, 0x98FF98FF, 0x99FF99FF, + 0x98FF99FF, 0x98FF99FF, 0x99FF62FF, 0x00FF0055, 0x005500FF, 0x58FF98FF, 0x99FF99FF, 0x76FF00FF, 0x29FF98FF, + 0x94FF10FF, 0x21FF92FF, 0x1CFF00AC, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x006700FF, 0x40FF95FF, + 0x94FF94FF, 0x94FF94FF, 0x95FF94FF, 0x95FF95FF, 0x95FF94FF, 0x95FF95FF, 0x95FF94FF, 0x95FF94FF, 0x95FF5FFF, + 0x00FF0055, 0x005500FF, 0x56FF94FF, 0x94FF94FF, 0x73FF00FF, 0x28FF94FF, 0x91FF0FFF, 0x20FF8EFF, 0x1BFF00AC, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x002400F0, 0x06FF6FFF, 0x91FF90FF, 0x90FF91FF, 0x90FF90FF, + 0x90FF91FF, 0x91FF90FF, 0x91FF90FF, 0x90FF91FF, 0x90FF90FF, 0x90FF5DFF, 0x00FF0055, 0x005500FF, 0x54FF91FF, + 0x90FF90FF, 0x70FF00FF, 0x26FF90FF, 0x8CFF0FFF, 0x1FFF8AFF, 0x1AFF00AC, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000072, 0x00FF1BFF, 0x7EFF8DFF, 0x8CFF8CFF, 0x8CFF8DFF, 0x8DFF8DFF, 0x8CFF8DFF, 0x8DFF8DFF, + 0x8DFF8CFF, 0x8DFF8CFF, 0x8CFF5AFF, 0x00FF0055, 0x005500FF, 0x51FF8CFF, 0x8DFF8CFF, 0x6CFF00FF, 0x25FF8CFF, + 0x89FF0EFF, 0x1EFF87FF, 0x19FF00AC, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x008100FF, + 0x16FF67FF, 0x88FF88FF, 0x88FF88FF, 0x88FF88FF, 0x88FF88FF, 0x88FF88FF, 0x88FF89FF, 0x88FF88FF, 0x88FF57FF, + 0x00FF0055, 0x005500FF, 0x4FFF88FF, 0x88FF89FF, 0x69FF00FF, 0x24FF88FF, 0x84FF0EFF, 0x1DFF83FF, 0x19FF00AC, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000006E, 0x00F903FF, 0x31FF68FF, 0x82FF84FF, + 0x84FF84FF, 0x84FF84FF, 0x84FF85FF, 0x85FF84FF, 0x84FF84FF, 0x84FF57FF, 0x00FF0055, 0x005500FF, 0x4DFF84FF, + 0x84FF84FF, 0x68FF00FF, 0x24FF84FF, 0x80FF0EFF, 0x1CFF80FF, 0x18FF00AC, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x002800A1, 0x00F002FF, 0x17FF33FF, 0x43FF4AFF, 0x49FF49FF, 0x49FF49FF, + 0x49FF49FF, 0x49FF49FF, 0x4DFF2FFF, 0x00FF0055, 0x005500FF, 0x2AFF4EFF, 0x49FF4CFF, 0x39FF00FF, 0x14FF4BFF, + 0x47FF08FF, 0x10FF46FF, 0x0DFF00AC, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x0019006B, 0x00A500B9, 0x00B700B7, 0x00B700B7, 0x00B700B7, 0x00B700B7, 0x00B700B7, 0x00B700B8, + 0x00BA0032, 0x003200BA, 0x00B800B7, 0x00B700B7, 0x00B700B7, 0x00B700B7, 0x00B700B7, 0x00B700B7, 0x00C00072, +}; +static Gfx D_88218FC8[] = { + gsSPEndDisplayList(), +}; +u32 D_88218FD0[] = { + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000013, 0x00A600C7, 0x00AC0074, + 0x00310002, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000045, 0x20FF7CFF, 0x63FF3CFF, 0x10F900C2, 0x006D0017, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000026, 0x0CF28CFF, 0xADFFB1FF, 0xA2FF70FF, 0x31FF01E2, 0x0080001C, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x006019FF, 0x99FFB1FF, + 0xB4FFB7FF, 0xBAFF8BFF, 0x3BFF00E3, 0x006D0007, 0x00000000, 0x00000000, 0x00040002, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000082, 0x27FFA2FF, 0xB4FFB7FF, 0xBAFFBEFF, 0xC1FF8BFF, + 0x29FF00C4, 0x00390000, 0x00000020, 0x01C901C1, 0x008A003A, 0x00010000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x009530FF, 0xAEFFB7FF, 0xBBFFBEFF, 0xC1FFC4FF, 0xBEFF69FF, 0x09F30071, 0x00000011, + 0x03E756FF, 0x68FF18FB, 0x00BC0050, 0x00010000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000300A8, + 0x44FFB7FF, 0xBBFFBDFF, 0xC1FFC5FF, 0xC7FFCBFF, 0x9EFF26FF, 0x00A5000B, 0x004822FD, 0xCEFFD3FF, 0x82FF21FF, + 0x00B8003F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000000E, 0x00CA60FF, 0xBAFFBEFF, 0xC2FFC4FF, + 0xC7FFCBFF, 0xCEFFBDFF, 0x3FFF00BB, 0x00090079, 0x3AFFE3FF, 0xE8FFD9FF, 0x71FF0EF9, 0x0089000F, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x002702E6, 0x7EFFBEFF, 0xC1FFC4FF, 0xC7FFCBFF, 0xCEFFD1FF, 0xD0FF56FF, + 0x00BF000F, 0x00A661FF, 0xE8FFECFF, 0xEEFFC5FF, 0x47FF00CF, 0x00430000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x0000004A, 0x11F9A2FF, 0xC1FFC4FF, 0xC7FFCBFF, 0xCEFFD1FF, 0xD5FFD8FF, 0x5DFF00BA, 0x001E00CF, 0x8AFFECFF, + 0xEFFFF2FF, 0xF4FF8EFF, 0x15F9007A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x008035FF, 0xBFFFC4FF, + 0xC7FFCBFF, 0xCEFFD2FF, 0xD5FFD8FF, 0xD9FF57FF, 0x00A20034, 0x0DEDC0FF, 0xEFFFF2FF, 0xF5FFF8FF, 0xCFFF35FF, + 0x00A4000E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000800CA, 0x77FFC5FF, 0xC8FFCAFF, 0xCFFFD1FF, 0xD5FFD7FF, + 0xDBFFD8FF, 0x3AFF0073, 0x006337FF, 0xE8FFF2FF, 0xF5FFF8FF, 0xFCFFECFF, 0x56FF00BB, 0x00150000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0x0008000D, 0x000F000F, 0x000F000D, 0x00080001, 0x00000000, + 0x00000000, 0x00000042, 0x14FCB2FF, 0xC7FFCBFF, 0xCEFFD1FF, 0xD5FFD8FF, 0xDBFFDEFF, 0xC4FF13F9, 0x004000B3, + 0x89FFF2FF, 0xF6FFF8FF, 0xFBFFFFFF, 0xFCFF6AFF, 0x00C00012, 0x00000000, 0x00000000, 0x00000008, 0x00410078, + 0x00A200C1, 0x02D606E6, 0x08F009F0, 0x09EF06E6, 0x03D500C0, 0x00A10077, 0x003E0007, 0x00000000, 0x00B267FF, + 0xC8FFCBFF, 0xCEFFD1FF, 0xD5FFD8FF, 0xDBFFDFFF, 0xE2FF85FF, 0x00BA003D, 0x16F8DDFF, 0xF5FFF9FF, 0xFBFFFFFF, + 0xFFFFFFFF, 0x67FF00B6, 0x00070000, 0x00000001, 0x006100CF, 0x0FFE2EFF, 0x4AFF62FF, 0x74FF83FF, 0x8FFF94FF, + 0x93FF8EFF, 0x83FF73FF, 0x5AFF3AFF, 0x12FD00CD, 0x005D0000, 0x004120FE, 0xC3FFCBFF, 0xCEFFD1FF, 0xD4FFD8FF, + 0xDBFFDFFF, 0xE1FFDFFF, 0x28FF0041, 0x00AB8AFF, 0xF5FFF8FF, 0xFCFFFFFF, 0xFFFFFFFF, 0xF8FF41FF, 0x007F0000, + 0x0005009C, 0x15FF50FF, 0x7DFF8AFF, 0x8DFF90FF, 0x94FF97FF, 0x9AFF9EFF, 0xA0FFA4FF, 0xA7FFABFF, 0xAEFFB1FF, + 0xA5FF6EFF, 0x1CFF0091, 0x000201CF, 0x9AFFCAFF, 0xCEFFD1FF, 0xD4FFD8FF, 0xDBFFDEFF, 0xE2FFE4FF, 0x7CFF008A, + 0x005442FF, 0xF4FFF9FF, 0xFBFFFFFF, 0xFFFFFFFF, 0xFFFFDAFF, 0x11F5002A, 0x007820FF, 0x75FF83FF, 0x86FF8AFF, + 0x8DFF90FF, 0x93FF97FF, 0x9AFF9DFF, 0xA1FFA4FF, 0xA8FFAAFF, 0xAEFFB0FF, 0xB4FFB7FF, 0xA8FF2AFF, 0x00610086, + 0x70FFCBFF, 0xCEFFD2FF, 0xD4FFD8FF, 0xDCFFDFFF, 0xE2FFE5FF, 0xB8FF04C2, 0x001A12EA, 0xE4FFF9FF, 0xFBFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0x75FF008E, 0x02C562FF, 0x80FF83FF, 0x87FF89FF, 0x8DFF90FF, 0x93FF97FF, 0x9AFF9DFF, + 0xA0FFA4FF, 0xA7FFAAFF, 0xADFFB1FF, 0xB4FFB7FF, 0xBBFF8AFF, 0x01AA0066, 0x5DFFCBFF, 0xCEFFD2FF, 0xD5FFD8FF, + 0xDBFFDEFF, 0xE2FFE5FF, 0xD2FF0BD6, 0x000B06C5, 0xCDFFF8FF, 0xFCFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xC8FF04C4, + 0x02C765FF, 0x80FF83FF, 0x86FF89FF, 0x8DFF90FF, 0x93FF97FF, 0x9AFF9DFF, 0xA0FFA4FF, 0xA7FFAAFF, 0xADFFB0FF, + 0xB4FFB8FF, 0xBAFF8EFF, 0x02AC0065, 0x5BFFCBFF, 0xCFFFD1FF, 0xD5FFD8FF, 0xDBFFDEFF, 0xE2FFE5FF, 0xD4FF0CD7, + 0x000B06C2, 0xCDFFF9FF, 0xFCFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xCDFF04C7, 0x008528FF, 0x7BFF83FF, 0x87FF8AFF, + 0x8DFF90FF, 0x94FF97FF, 0x9AFF9EFF, 0xA0FFA4FF, 0xA7FFAAFF, 0xADFFB1FF, 0xB4FFB7FF, 0xB1FF35FF, 0x006D0082, + 0x6DFFCBFF, 0xCEFFD2FF, 0xD4FFD8FF, 0xDBFFDFFF, 0xE2FFE5FF, 0xBCFF05C5, 0x00170FE6, 0xE2FFF9FF, 0xFCFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0x80FF0097, 0x000B00AF, 0x1EFF5CFF, 0x83FF8AFF, 0x8DFF91FF, 0x94FF97FF, 0x9AFF9EFF, + 0xA0FFA4FF, 0xA7FFABFF, 0xADFFB1FF, 0xAEFF7EFF, 0x29FF00A4, 0x000500C7, 0x94FFCBFF, 0xCEFFD1FF, 0xD4FFD8FF, + 0xDBFFDEFF, 0xE2FFE5FF, 0x83FF0091, 0x004C3DFF, 0xF3FFF8FF, 0xFCFFFFFF, 0xFFFFFFFF, 0xFFFFE4FF, 0x19FA0034, + 0x00000008, 0x007800E2, 0x18FF3AFF, 0x57FF70FF, 0x83FF8FFF, 0x94FF97FF, 0x9BFF9BFF, 0x93FF84FF, 0x6BFF4AFF, + 0x1EFF00E0, 0x00740003, 0x00361AFC, 0xBEFFCBFF, 0xCEFFD2FF, 0xD5FFD8FF, 0xDBFFDEFF, 0xE2FFE2FF, 0x30FF0048, + 0x00A181FF, 0xF5FFF8FF, 0xFCFFFFFF, 0xFFFFFFFF, 0xFEFF51FF, 0x008F0000, 0x00000000, 0x00000015, 0x0058008F, + 0x00B802D8, 0x07EC0DF3, 0x15F617F6, 0x15F60EF3, 0x07EB02D7, 0x00B7008D, 0x00540013, 0x00000000, 0x00A75FFF, + 0xC7FFCBFF, 0xCFFFD1FF, 0xD5FFD8FF, 0xDBFFDFFF, 0xE1FF92FF, 0x00C60037, 0x11F4D6FF, 0xF5FFF9FF, 0xFCFFFFFF, + 0xFFFFFFFF, 0x7AFF00C6, 0x000E0000, 0x00000000, 0x00000000, 0x00000000, 0x00000008, 0x0010001D, 0x00260026, + 0x0025001C, 0x000F0008, 0x00000000, 0x00000000, 0x00000037, 0x0EF9ADFF, 0xC7FFCAFF, 0xCEFFD2FF, 0xD5FFD8FF, + 0xDCFFDEFF, 0xCDFF1BFE, 0x004800A6, 0x7CFFF2FF, 0xF5FFF8FF, 0xFCFFFFFF, 0xFFFF7EFF, 0x00D0001D, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x000300BE, 0x6BFFC5FF, 0xC7FFCBFF, 0xCEFFD2FF, 0xD5FFD8FF, 0xDBFFDEFF, 0x49FF0085, 0x00562CFF, + 0xE3FFF2FF, 0xF5FFF8FF, 0xFBFFF6FF, 0x6AFF00CC, 0x00200000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00702AFF, 0xBDFFC4FF, + 0xC7FFCBFF, 0xCEFFD1FF, 0xD5FFD8FF, 0xDBFF68FF, 0x00B4002D, 0x06E4B4FF, 0xEFFFF2FF, 0xF5FFF8FF, 0xDDFF46FF, + 0x00B80018, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x0000003A, 0x0AF39AFF, 0xC1FFC4FF, 0xC7FFCBFF, 0xCEFFD1FF, 0xD5FFD8FF, + 0x6EFF00CB, 0x002000C0, 0x7BFFECFF, 0xEEFFF2FF, 0xF5FFA3FF, 0x22FF008F, 0x00070000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x001B00DC, 0x72FFBEFF, 0xC1FFC4FF, 0xC7FFCBFF, 0xCEFFD1FF, 0xD5FF67FF, 0x00CF0017, 0x009452FF, 0xE6FFECFF, + 0xEFFFD5FF, 0x5CFF00DF, 0x00580000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000007, 0x00BB53FF, 0xBAFFBEFF, 0xC1FFC4FF, + 0xC7FFCBFF, 0xCEFFC8FF, 0x51FF00CD, 0x00140064, 0x2DFFDAFF, 0xE8FFE4FF, 0x87FF1BFF, 0x00A0001C, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000097, 0x37FFB4FF, 0xBBFFBDFF, 0xC2FFC5FF, 0xC8FFCAFF, 0xADFF34FF, 0x00B80016, + 0x003718F8, 0xC5FFDFFF, 0x97FF32FF, 0x00CC0053, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x008225FF, + 0xA8FFB7FF, 0xBBFFBEFF, 0xC2FFC4FF, 0xC5FF7BFF, 0x13FD0087, 0x0007000A, 0x03DA5BFF, 0x7CFF27FF, 0x00D00066, + 0x000A0000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000006F, 0x1DFF9BFF, 0xB5FFB8FF, 0xBAFFBEFF, 0xC1FF9BFF, + 0x38FF00D5, 0x004C0000, 0x00000021, 0x01DE06D8, 0x00A00050, 0x000A0000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x004F11FB, 0x91FFB1FF, 0xB4FFB7FF, 0xBBFF9AFF, 0x4AFF07F0, 0x00840012, 0x00000000, 0x00000000, + 0x000A0008, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000020, 0x08EA81FF, 0xAEFFB1FF, + 0xACFF80FF, 0x40FF07EF, 0x0097002C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000046, 0x22FF8BFF, 0x73FF4BFF, 0x1CFF00D7, 0x00830027, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000019, 0x02B803D6, 0x00BE008A, 0x0047000B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, +}; + +static Gfx D_88219D50[] = { + gsSPEndDisplayList(), +}; +u32 D_88219D58[] = { + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00030042, 0x00670042, 0x00030000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000052, 0x00C100FE, 0x15FF00FE, 0x00C10052, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000002F, 0x00B200FF, 0x49FFB4FF, + 0xEEFFB4FF, 0x49FF00FF, 0x00B2002F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000004, 0x007400F0, 0x2CFFABFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFABFF, 0x2CFF00F1, + 0x007E0004, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x002800B6, + 0x04FF73FF, 0xEEFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xEEFF74FF, 0x07FF00B6, 0x00280000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000054, 0x00E528FF, 0xB9FFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xBFFF29FF, 0x00E50054, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000003, 0x008100FD, 0x58FFE7FF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFE7FF, 0x58FF00FD, 0x00810003, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x001100A9, 0x06FF8AFF, 0xFFFFFFFF, + 0xFEFFFEFF, 0xFEFFFEFF, 0xFEFFFEFF, 0xFEFFFEFF, 0xFEFFFEFF, 0xFEFFFEFF, 0xFEFFFFFF, 0xFFFF8AFF, 0x06FF00A9, + 0x00110000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x0000001F, 0x00C417FF, 0xB1FFFFFF, 0xFDFFFBFF, 0xFBFFFBFF, 0xFBFFFCFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFCFF, 0xFBFFFBFF, 0xFBFFFBFF, 0xFDFFFFFF, 0xB1FF17FF, 0x00C4001F, 0x00000000, 0x00000000, + 0x00000010, 0x005D001B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x002600D1, + 0x27FFCBFF, 0xFFFFF8FF, 0xF7FFF9FF, 0xFCFFFFFF, 0xFFFFFEFF, 0xEBFFC9FF, 0xBAFFC9FF, 0xEBFFFEFF, 0xFFFFFFFF, + 0xFCFFF9FF, 0xF7FFF8FF, 0xFFFFCCFF, 0x27FF00D1, 0x00260000, 0x00000000, 0x00000050, 0x00FF00DB, 0x00400000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000001C, 0x00D42DFF, 0xD6FFFFFF, 0xFAFFFFFF, 0xFFFFF4FF, + 0xE1FFBAFF, 0x8FFF57FF, 0x14FF00FF, 0x07FF00FF, 0x14FF57FF, 0x8FFFBAFF, 0xDFFFF4FF, 0xFFFFFFFF, 0xFAFFFFFF, + 0xD6FF2DFF, 0x00D4001C, 0x00000000, 0x00000063, 0x13FF38FF, 0x00F00046, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x001100C7, 0x39FFE4FF, 0xFCFFE7FF, 0xCCFFA0FF, 0x71FF40FF, 0x13FF02F4, 0x00FB00FF, 0x3CFF9DFF, + 0xBEFF9AFF, 0x37FF00FF, 0x00FA02F4, 0x12FF40FF, 0x71FFA0FF, 0xCCFFE7FF, 0xFCFFE4FF, 0x39FF00C7, 0x00110000, + 0x00000053, 0x14FFDAFF, 0x5EFF00F3, 0x00490000, 0x00000000, 0x00000000, 0x00000000, 0x008602FF, 0x55FF71FF, + 0x47FF22FF, 0x08FF00F3, 0x00CC009A, 0x0064005F, 0x00F16FFF, 0xF0FFF8FF, 0xF2FFF9FF, 0xEDFF67FF, 0x00EC0056, + 0x0063009A, 0x00CC00F3, 0x08FF22FF, 0x47FF71FF, 0x55FF02FF, 0x00860000, 0x0000003A, 0x04FCC6FF, 0xF4FF4FFF, + 0x00EB0032, 0x00000000, 0x00000000, 0x00000000, 0x006200BE, 0x00C300B3, 0x00980075, 0x004C001F, 0x00050000, + 0x000000A6, 0x3EFFEBFF, 0xEBFFE6FF, 0xE6FFE6FF, 0xECFFE7FF, 0x36FF009B, 0x00000000, 0x0005001F, 0x004C0075, + 0x009800B3, 0x00C300BE, 0x00620000, 0x0000001A, 0x00F39EFF, 0xF8FFDFFF, 0x34FF00D4, 0x00140000, 0x00000000, + 0x00000000, 0x00000001, 0x00020000, 0x00000000, 0x00000000, 0x00000000, 0x002301F6, 0xA2FFEEFF, 0xE1FFE1FF, + 0xE1FFE1FF, 0xE1FFEFFF, 0x99FF00F3, 0x001B0000, 0x00000000, 0x00000000, 0x00000000, 0x00020001, 0x00000000, + 0x00000007, 0x00DC7DFF, 0xEFFFEBFF, 0xC2FF14FF, 0x00A00000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x005119FF, 0xD3FFE1FF, 0xDDFFDDFF, 0xDDFFDDFF, 0xDDFFE2FF, 0xCDFF11FF, + 0x00560000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00B862FF, 0xEAFFDEFF, + 0xEBFF8BFF, 0x02FF0048, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00543AFF, 0xDBFFDCFF, 0xDAFFDAFF, 0xDAFFDAFF, 0xDAFFDCFF, 0xD8FF2FFF, 0x00650000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00A758FF, 0xE3FFDBFF, 0xDDFFDAFF, 0x21FF0099, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00543BFF, 0xDBFFDCFF, 0xD9FFD9FF, + 0xD9FFD9FF, 0xD9FFDCFF, 0xD8FF30FF, 0x00650000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00B15DFF, 0xE5FFDAFF, 0xE5FFA6FF, 0x09FF0063, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00511AFF, 0xD4FFE0FF, 0xDDFFDDFF, 0xDDFFDDFF, 0xDDFFE1FF, 0xCEFF13FF, + 0x00570000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000006, 0x00D375FF, 0xEBFFE4FF, + 0xD0FF25FF, 0x00BE0006, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x002301F6, 0xA3FFEDFF, 0xE1FFE1FF, 0xE1FFE1FF, 0xE1FFEEFF, 0x9AFF00F3, 0x001E0000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000015, 0x00F195FF, 0xF0FFE7FF, 0x4FFF00EA, 0x00280000, 0x00000000, + 0x00000000, 0x00430090, 0x00960086, 0x006B0047, 0x001F0007, 0x00000000, 0x000000B2, 0x41FFEBFF, 0xEAFFE5FF, + 0xE5FFE5FF, 0xEAFFE7FF, 0x38FF00A0, 0x00000000, 0x00000007, 0x001F0047, 0x006B0086, 0x00960090, 0x00430000, + 0x00000034, 0x03FAB8FF, 0xF8FF6EFF, 0x00FA0050, 0x00000000, 0x00000000, 0x00000000, 0x009902FF, 0x3DFF33FF, + 0x0FFF04FF, 0x00F400D2, 0x009F0069, 0x00270039, 0x00EF78FF, 0xF5FFF7FF, 0xF2FFF8FF, 0xF3FF6FFF, 0x00EC0030, + 0x00250069, 0x009F00D2, 0x00F404FF, 0x0FFF33FF, 0x3DFF02FF, 0x00990000, 0x0000004E, 0x0FFFE2FF, 0x89FF00FF, + 0x00720000, 0x00000000, 0x00000000, 0x00000000, 0x002601E3, 0x4FFFE8FF, 0xE1FFBCFF, 0x9BFF75FF, 0x46FF19FF, + 0x02F600CD, 0x00E700FF, 0x4BFFA2FF, 0xC3FF9FFF, 0x46FF00FF, 0x00E500CD, 0x01F519FF, 0x46FF75FF, 0x9BFFBCFF, + 0xE1FFE8FF, 0x4FFF01E3, 0x00260000, 0x0000005F, 0x19FF67FF, 0x03FF007B, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x0000003D, 0x00F055FF, 0xF4FFFFFF, 0xFFFFFFFF, 0xF5FFE4FF, 0xBAFF86FF, 0x52FF1EFF, 0x00FF00FF, + 0x00FF00FF, 0x00FF1EFF, 0x52FF86FF, 0xB7FFE4FF, 0xF5FFFFFF, 0xFFFFFFFF, 0xF4FF56FF, 0x00F0003D, 0x00000000, + 0x0000005B, 0x01FF00F4, 0x00670000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x004700EA, + 0x48FFE7FF, 0xFFFFF7FF, 0xF8FFFAFF, 0xFFFFFFFF, 0xFCFFECFF, 0xC7FF9CFF, 0x8EFF9DFF, 0xC7FFECFF, 0xFCFFFFFF, + 0xFFFFFAFF, 0xF8FFF7FF, 0xFFFFE7FF, 0x48FF00EA, 0x00470000, 0x00000000, 0x0000001B, 0x008A003B, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000003D, 0x00E133FF, 0xD3FFFFFF, 0xFBFFFAFF, + 0xFAFFFAFF, 0xFCFFFEFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFEFF, 0xFCFFFAFF, 0xFAFFFAFF, 0xFBFFFFFF, 0xD3FF33FF, + 0x00E1003D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x002B00CD, 0x1BFFB3FF, 0xFFFFFFFF, 0xFEFFFEFF, 0xFEFFFEFF, 0xFEFFFEFF, + 0xFEFFFEFF, 0xFEFFFEFF, 0xFEFFFEFF, 0xFEFFFFFF, 0xFFFFB3FF, 0x1BFF00CD, 0x002B0000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000015, 0x00AB05FF, 0x83FFFCFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFCFF, 0x83FF05FF, 0x00AB0015, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0002007D, 0x00FB4CFF, + 0xDBFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xDFFF4CFF, 0x00FB007D, 0x00020000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x004A00D9, 0x1BFFA0FF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFA0FF, 0x20FF00D9, 0x004A0000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x0000001A, 0x00A000FF, 0x52FFD2FF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFD2FF, 0x52FF00FF, + 0x00AA001A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000056, 0x00D70FFF, 0x75FFDBFF, 0xFEFFDBFF, 0x75FF0FFF, 0x00D70056, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0013007F, 0x00E412FF, + 0x3FFF12FF, 0x00E4007F, 0x00130000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x001A006F, 0x0094006F, 0x001A0000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, +}; +static Gfx D_8821AAD8[] = { + gsSPEndDisplayList(), +}; +u32 D_8821AAE0[] = { + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00060038, + 0x00540016, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00060036, 0x00250000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000F006B, 0x00CB0AFC, 0x03FF0059, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x003601FC, 0x05F600BD, 0x005F0009, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000059, 0x00D219FF, 0x5CFF67FF, 0x06E7001A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x001003DD, + 0x55FF55FF, 0x14FF00CA, 0x00510000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000023, 0x00AA0DFF, 0x5BFF9FFF, 0xA4FF24FF, + 0x006C0000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000005C, 0x1FFFA4FF, 0x9CFF55FF, 0x0AFF00A4, + 0x00200000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x004E00E2, 0x33FF96FF, 0xAFFFAAFF, 0x56FF00BF, 0x00040000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000001, 0x00B14FFF, 0xABFFB1FF, 0x93FF2EFF, 0x00DE004B, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0004007F, 0x08FB67FF, + 0xB7FFB5FF, 0xB0FF87FF, 0x08EF002B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x002105E9, 0x82FFB1FF, 0xB7FFB8FF, 0x65FF06FB, 0x007C0003, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000012, 0x00AB1FFF, 0x97FFC2FF, 0xBBFFB5FF, 0xA9FF24FF, 0x00720000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000063, 0x1DFFA7FF, 0xB6FFBDFF, + 0xC3FF96FF, 0x1EFF00AA, 0x00120000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x001C00C6, 0x3BFFBAFF, 0xCAFFC2FF, 0xBBFFB5FF, 0x5CFF00BC, 0x00040000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00AE53FF, 0xB6FFBDFF, 0xC4FFCBFF, 0xBCFF3BFF, 0x00C6001E, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000015, 0x00C84BFF, 0xD3FFD2FF, 0xC9FFC2FF, + 0xBCFF9BFF, 0x0BF5002E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x002306EE, 0x94FFBDFF, 0xC3FFCCFF, 0xD4FFD3FF, 0x4CFF00CB, 0x00180000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x001300C2, 0x56FFE1FF, 0xDDFFD3FF, 0xCAFFC2FF, 0xBBFF3EFF, 0x008D0000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000007C, 0x32FFBCFF, + 0xC4FFCBFF, 0xD5FFDEFF, 0xE2FF5AFF, 0x00C60017, 0x00000000, 0x00000000, 0x00000000, 0x00000007, 0x00B454FF, + 0xECFFE8FF, 0xDDFFD3FF, 0xCAFFC2FF, 0x8FFF01E3, 0x00160000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000000D, 0x00D785FF, 0xC4FFCCFF, 0xD4FFDEFF, 0xE9FFEEFF, + 0x59FF00BB, 0x000A0000, 0x00000000, 0x00000000, 0x00000090, 0x45FFF4FF, 0xF4FFE8FF, 0xDDFFD3FF, 0xCAFFC2FF, + 0x3DFF0072, 0x00000000, 0x00000000, 0x00000001, 0x000B0018, 0x0026002C, 0x002C0028, 0x0019000C, 0x00020000, + 0x00000000, 0x00000000, 0x005D2FFF, 0xC1FFCBFF, 0xD4FFDEFF, 0xE9FFF3FF, 0xF7FF4BFF, 0x009B0000, 0x00000000, + 0x00000000, 0x00511CFF, 0xE2FFFFFF, 0xF4FFE8FF, 0xDDFFD3FF, 0xCAFFA3FF, 0x05E70013, 0x00000000, 0x00190059, + 0x009000BF, 0x00E002F2, 0x04F606F8, 0x06F805F7, 0x02F200E2, 0x00C30095, 0x005F001E, 0x00000000, 0x000901D9, + 0x94FFCBFF, 0xD5FFDEFF, 0xE8FFF3FF, 0xFFFFE8FF, 0x23FF005F, 0x00000000, 0x00000011, 0x01DBACFF, 0xFFFFFFFF, + 0xF3FFE8FF, 0xDDFFD3FF, 0xCAFF62FF, 0x009A0000, 0x001F0095, 0x00E915FF, 0x38FF51FF, 0x60FF6BFF, 0x71FF72FF, + 0x74FF74FF, 0x6FFF64FF, 0x55FF3BFF, 0x19FF00ED, 0x009F0029, 0x00000082, 0x51FFCCFF, 0xD4FFDEFF, 0xE8FFF3FF, + 0xFFFFFFFF, 0xBAFF05E5, 0x00190000, 0x0000007C, 0x56FFFFFF, 0xFFFFFFFF, 0xF3FFE8FF, 0xDDFFD3FF, 0xC7FF28FF, + 0x00410035, 0x00DF2EFF, 0x71FF97FF, 0x9AFF95FF, 0x90FF8AFF, 0x86FF81FF, 0x84FF89FF, 0x8EFF93FF, 0x97FF9CFF, + 0x9CFF79FF, 0x36FF00E9, 0x00470027, 0x16FCC2FF, 0xD4FFDEFF, 0xE9FFF4FF, 0xFFFFFFFF, 0xFFFF67FF, 0x00900000, + 0x000F04E2, 0xCBFFFFFF, 0xFFFFFFFF, 0xF3FFE8FF, 0xDDFFD3FF, 0xB2FF08E2, 0x003001DF, 0x5EFFA9FF, 0xA4FF9FFF, + 0x9AFF95FF, 0x90FF8BFF, 0x85FF81FF, 0x85FF89FF, 0x8EFF92FF, 0x97FF9DFF, 0xA1FFA6FF, 0xACFF6AFF, 0x06ED0032, + 0x02CC9EFF, 0xD4FFDEFF, 0xE8FFF4FF, 0xFFFFFFFF, 0xFFFFDBFF, 0x0CF1001D, 0x004A39FF, 0xFEFFFFFF, 0xFFFFFFFF, + 0xF3FFE8FF, 0xDDFFD3FF, 0x97FF01AF, 0x008C49FF, 0xB0FFA9FF, 0xA5FF9FFF, 0x9AFF95FF, 0x8FFF8BFF, 0x85FF81FF, + 0x84FF89FF, 0x8EFF93FF, 0x97FF9CFF, 0xA2FFA7FF, 0xACFFB1FF, 0x5AFF009B, 0x009680FF, 0xD4FFDFFF, 0xE8FFF4FF, + 0xFFFFFFFF, 0xFFFFFFFF, 0x51FF0065, 0x007279FF, 0xFFFFFFFF, 0xFFFFFFFF, 0xF3FFE8FF, 0xDCFFD3FF, 0x8AFF009D, + 0x03B192FF, 0xAFFFA9FF, 0xA4FF9FFF, 0x9AFF95FF, 0x90FF8AFF, 0x86FF80FF, 0x85FF89FF, 0x8DFF93FF, 0x98FF9DFF, + 0xA2FFA6FF, 0xACFFB1FF, 0xA4FF07BF, 0x008570FF, 0xD4FFDEFF, 0xE9FFF3FF, 0xFFFFFFFF, 0xFFFFFFFF, 0x95FF0090, + 0x00747EFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xF4FFE7FF, 0xDDFFD3FF, 0x88FF009C, 0x04B19AFF, 0xB0FFA9FF, 0xA4FF9FFF, + 0x9AFF95FF, 0x90FF8AFF, 0x86FF81FF, 0x84FF89FF, 0x8EFF93FF, 0x98FF9DFF, 0xA1FFA6FF, 0xACFFB1FF, 0xABFF0ABF, + 0x00806EFF, 0xD5FFDFFF, 0xE9FFF4FF, 0xFFFFFFFF, 0xFFFFFFFF, 0xA4FF0096, 0x005141FF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xF4FFE8FF, 0xDDFFD3FF, 0x95FF01AE, 0x009E61FF, 0xAFFFAAFF, 0xA4FF9FFF, 0x9AFF95FF, 0x90FF8BFF, 0x86FF81FF, + 0x84FF89FF, 0x8DFF93FF, 0x97FF9CFF, 0xA2FFA7FF, 0xACFFB1FF, 0x72FF01A9, 0x008D79FF, 0xD5FFDFFF, 0xE9FFF3FF, + 0xFFFFFFFF, 0xFFFFFFFF, 0x6EFF007A, 0x001407E9, 0xD4FFFFFF, 0xFFFFFFFF, 0xF3FFE8FF, 0xDDFFD3FF, 0xB0FF07DB, + 0x00460BF5, 0x7FFFAAFF, 0xA4FF9FFF, 0x99FF95FF, 0x90FF8BFF, 0x85FF81FF, 0x84FF89FF, 0x8EFF93FF, 0x97FF9DFF, + 0xA1FFA6FF, 0xACFF8BFF, 0x12FD004A, 0x00B492FF, 0xD4FFDEFF, 0xE9FFF4FF, 0xFFFFFFFF, 0xFFFFF2FF, 0x20FE0037, + 0x0000008B, 0x66FFFFFF, 0xFFFFFFFF, 0xF3FFE8FF, 0xDDFFD3FF, 0xC6FF21FE, 0x0039005F, 0x07FC52FF, 0x91FF9FFF, + 0x9AFF94FF, 0x90FF8BFF, 0x86FF81FF, 0x84FF89FF, 0x8EFF93FF, 0x97FF9DFF, 0xA2FF96FF, 0x5CFF0CFF, 0x00760014, + 0x0AF1B6FF, 0xD4FFDEFF, 0xE9FFF3FF, 0xFFFFFFFF, 0xFFFF99FF, 0x00BD0003, 0x00000019, 0x06E6BFFF, 0xFFFFFFFF, + 0xF3FFE8FF, 0xDDFFD2FF, 0xCAFF5BFF, 0x008D0000, 0x004900CB, 0x0DFF37FF, 0x59FF72FF, 0x80FF85FF, 0x82FF7EFF, + 0x82FF86FF, 0x88FF84FF, 0x77FF5EFF, 0x3CFF11FF, 0x00D30057, 0x00000061, 0x38FFCAFF, 0xD4FFDEFF, 0xE9FFF4FF, + 0xFFFFFFFF, 0xE6FF1DFC, 0x003E0000, 0x00000000, 0x006228FF, 0xEBFFFFFF, 0xF3FFE8FF, 0xDDFFD3FF, 0xCAFF9CFF, + 0x03DF000D, 0x00000007, 0x00490091, 0x00C601EC, 0x07F910FF, 0x19FF1DFF, 0x1EFF1AFF, 0x11FF07FA, 0x02EE00CB, + 0x00970051, 0x000C0000, 0x000000BA, 0x7CFFCCFF, 0xD4FFDEFF, 0xE9FFF4FF, 0xFFFFFFFF, 0x55FF0097, 0x00000000, + 0x00000000, 0x000000A4, 0x56FFFDFF, 0xF3FFE8FF, 0xDCFFD2FF, 0xCAFFC1FF, 0x35FF0064, 0x00000000, 0x00000000, + 0x00030013, 0x00300049, 0x005A005F, 0x005F005B, 0x004A0033, 0x00150004, 0x00000000, 0x00000000, 0x003416FA, + 0xB7FFCCFF, 0xD4FFDEFF, 0xE8FFF4FF, 0xFFFF8DFF, 0x00D40013, 0x00000000, 0x00000000, 0x00000010, 0x00C86BFF, + 0xF3FFE8FF, 0xDDFFD2FF, 0xCAFFC2FF, 0x85FF00D8, 0x000E0000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00AD64FF, 0xC4FFCBFF, 0xD4FFDEFF, 0xE8FFF3FF, + 0xA2FF04EB, 0x00310000, 0x00000000, 0x00000000, 0x00000000, 0x002100D5, 0x6DFFE8FF, 0xDDFFD2FF, 0xC9FFC2FF, + 0xBBFF33FF, 0x007C0000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000048, 0x16FEAFFF, 0xC3FFCCFF, 0xD4FFDEFF, 0xE8FFA0FF, 0x07F4004A, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000025, 0x00D760FF, 0xD9FFD3FF, 0xCAFFC2FF, 0xBBFF92FF, 0x07ED0024, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000800CE, 0x71FFBDFF, + 0xC4FFCBFF, 0xD5FFDEFF, 0x91FF07F5, 0x00500000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x002800D9, 0x4BFFC8FF, 0xCAFFC2FF, 0xBBFFB5FF, 0x52FF00AC, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00762FFF, 0xB4FFBDFF, 0xC4FFCCFF, 0xD4FF7BFF, 0x02F70057, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000022, 0x00C230FF, 0xA7FFC2FF, + 0xBBFFB5FF, 0xA3FF19FF, 0x005E0000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x0000002F, 0x07F18FFF, 0xB7FFBDFF, 0xC3FFC1FF, 0x57FF00E5, 0x004B0000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000F009A, 0x14FF7CFF, 0xBCFFB5FF, 0xAFFF7DFF, 0x03E6001D, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000500C2, 0x5AFFB1FF, 0xB6FFBDFF, + 0x9EFF31FF, 0x00C8002F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x006700EE, 0x44FFA0FF, 0xAFFFAAFF, 0x4BFF00AF, 0x00010000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00792BFF, 0xA9FFB1FF, 0xB4FF6AFF, 0x0DFF009A, 0x000E0000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000033, + 0x00C317FF, 0x6EFFA8FF, 0xA3FF1AFF, 0x005B0000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000002D, + 0x07F48DFF, 0xABFF8DFF, 0x34FF00E6, 0x00620000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00090075, 0x00E629FF, 0x6EFF68FF, + 0x04DC0012, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000201B2, 0x51FF8BFF, 0x47FF07FD, 0x00A40025, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x001F0088, 0x00E115FF, 0x05FF0056, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x002F03FF, 0x22FF07F8, 0x00B30043, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00140054, 0x006F0020, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x001A008A, + 0x00780032, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, +}; +static Gfx D_8821B860[] = { + gsSPEndDisplayList(), +}; +u32 D_8821B868[] = { + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x0001003B, 0x000A0000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x002E00E8, + 0x002D0000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x008A00FF, 0x00350000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0039006F, + 0x00000000, 0x00000012, 0x00E100FF, 0x002C0000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x008400CA, 0x00010000, 0x0000006C, 0x00FF00EB, + 0x00120000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00BE00E0, 0x00070000, 0x001900DE, 0x00FF00B4, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000001A, 0x00F300E1, + 0x00090000, 0x008E00FF, 0x00FF0052, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000005E, 0x00FF00CE, 0x0000004D, 0x00FD00FF, 0x00F50041, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x000300C1, 0x00FF00A2, 0x004A00E6, 0x15FF5DFF, 0x5AFF05EC, 0x002A0000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x005400FF, 0x00FF00E8, + 0x0FF55EFF, 0xB0FFC3FF, 0xC3FF2BFF, 0x00570000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x0000000F, 0x00D100FF, 0x04FF48FF, 0xA3FFBCFF, 0xBFFFC3FF, 0x89FF08F5, + 0x00330000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000081, 0x00FF28FF, 0x89FFB5FF, 0xB9FFBCFF, 0xB5FF4FFF, 0x02FF00AE, 0x00000000, 0x00000000, 0x00000000, + 0x0061009B, 0x00680010, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000029, 0x00A90EFF, 0x63FFABFF, 0xB1FFB5FF, + 0xB8FF85FF, 0x1AFF33FF, 0x7BFF0DF4, 0x003D0000, 0x00000000, 0x00000009, 0x00DB36FF, 0x21FF00D5, 0x00380000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x0000001E, 0x008E04F3, 0x3DFF92FF, 0xAAFFAEFF, 0xB1FF9EFF, 0x3DFF0BFF, 0x68FFC3FF, 0xC7FF5FFF, + 0x00BC0001, 0x00000000, 0x00000001, 0x00C06AFF, 0xE2FF5BFF, 0x00F00056, 0x00000000, 0x00000011, 0x00320016, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000019, 0x008402ED, 0x2FFF7DFF, + 0xA3FFA7FF, 0xABFFA6FF, 0x5FFF0EFF, 0x38FFA3FF, 0xC0FFC3FF, 0xC6FFB3FF, 0x13FF0046, 0x00000000, 0x00000000, + 0x007B21FF, 0xDEFFEDFF, 0x7FFF00FB, 0x005D0000, 0x000000A2, 0x08FF03E6, 0x00670002, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x0000000F, 0x007601EA, 0x29FF73FF, 0x9CFFA0FF, 0xA3FFA7FF, 0x73FF1CFF, 0x01FF34FF, + 0xB9FFBCFF, 0xBFFFC3FF, 0xC6FFCAFF, 0x57FF009D, 0x00000000, 0x00000000, 0x002B00F4, 0x9BFFEDFF, 0xF1FF82FF, + 0x00F8004D, 0x000000A5, 0x43FF8EFF, 0x10FF009B, 0x00060000, 0x00000000, 0x00000000, 0x00000005, 0x005F00DC, + 0x20FF6AFF, 0x95FF99FF, 0x9CFFA0FF, 0x86FF2FFF, 0x0FFF6AFF, 0x5AFF40FF, 0xB8FFBCFF, 0xBFFFC4FF, 0xC6FFCAFF, + 0x97FF00E2, 0x00100000, 0x00000000, 0x000000B2, 0x4CFFEEFF, 0xF1FFF4FF, 0x6CFF00E9, 0x0021004B, 0x0BFFDCFF, + 0xCDFF1EFF, 0x00A80007, 0x00000000, 0x00000000, 0x002E00BE, 0x13FF56FF, 0x8CFF91FF, 0x95FF99FF, 0x8BFF40FF, + 0x0AFF40FF, 0x9BFFAEFF, 0x56FF46FF, 0xB8FFBCFF, 0xC0FFC3FF, 0xC7FFCAFF, 0xC3FF19FE, 0x003F0000, 0x00000000, + 0x0000005B, 0x0EFFCDFF, 0xF1FFF4FF, 0xF0FF3FFF, 0x00BB000F, 0x00CD7EFF, 0xFFFFCDFF, 0x19FF0097, 0x00000000, + 0x00000055, 0x00F136FF, 0x7FFF8AFF, 0x8EFF91FF, 0x8EFF4DFF, 0x09FF25FF, 0x82FFA7FF, 0xABFFADFF, 0x53FF48FF, + 0xB9FFBCFF, 0xBFFFC3FF, 0xC7FFCAFF, 0xCDFF41FF, 0x006C0000, 0x00000000, 0x00000016, 0x00E98EFF, 0xF1FFF4FF, + 0xF8FFC9FF, 0x0AFF005C, 0x006C2EFF, 0xF8FFFFFF, 0xB1FF02FF, 0x00600000, 0x003F03F5, 0x4FFF84FF, 0x87FF8BFF, + 0x89FF51FF, 0x11FF1BFF, 0x6BFF9FFF, 0xA3FFA7FF, 0xAAFFAEFF, 0x53FF48FF, 0xB8FFBCFF, 0xC0FFC3FF, 0xC7FFCAFF, + 0xCDFF62FF, 0x008E0000, 0x00000000, 0x00000000, 0x00AB57FF, 0xF1FFF4FF, 0xF8FFFBFF, 0x6BFF00CA, 0x003505F4, + 0xCDFFFFFF, 0xFFFF6EFF, 0x00DE0016, 0x008E35FF, 0x80FF84FF, 0x82FF54FF, 0x15FF16FF, 0x5FFF96FF, 0x9CFFA0FF, + 0xA3FFA7FF, 0xAAFFAEFF, 0x55FF47FF, 0xB8FFBCFF, 0xBFFFC3FF, 0xC6FFCAFF, 0xCDFF78FF, 0x00A40000, 0x00000000, + 0x00000000, 0x00772FFF, 0xECFFF4FF, 0xF8FFFCFF, 0xCBFF05FB, 0x004800CC, 0xA3FFFFFF, 0xFFFFE1FF, 0x16FF006B, + 0x00923DFF, 0x80FF84FF, 0x31FF02FF, 0x58FF90FF, 0x95FF99FF, 0x9CFF9FFF, 0xA4FFA7FF, 0xAAFFAEFF, 0x58FF45FF, + 0xB8FFBCFF, 0xC0FFC4FF, 0xC7FFCAFF, 0xCDFF86FF, 0x00A50000, 0x00000000, 0x00000000, 0x005A20FF, 0xE8FFF5FF, + 0xF8FFFBFF, 0xF6FF25FF, 0x005B00B2, 0x92FFFFFF, 0xFFFFFFFF, 0x57FF008F, 0x006317FF, 0x7AFF83FF, 0x61FF0BFF, + 0x4AFF92FF, 0x95FF98FF, 0x9CFF9FFF, 0xA3FFA7FF, 0xAAFFAEFF, 0x5BFF43FF, 0xB9FFBCFF, 0xBFFFC3FF, 0xC6FFCAFF, + 0xCDFF82FF, 0x00A50000, 0x00000000, 0x00000000, 0x006425FF, 0xE8FFF4FF, 0xF8FFFBFF, 0xEAFF16FF, 0x005800BA, + 0x98FFFFFF, 0xFFFFFCFF, 0x3BFF0086, 0x001100D5, 0x42FF83FF, 0x87FF6FFF, 0x12FF2BFF, 0x8AFF98FF, 0x9DFF9FFF, + 0xA3FFA7FF, 0xABFFAEFF, 0x60FF3EFF, 0xB9FFBCFF, 0xC0FFC3FF, 0xC7FFCAFF, 0xCDFF72FF, 0x009E0000, 0x00000000, + 0x00000000, 0x008E41FF, 0xF1FFF5FF, 0xF8FFFCFF, 0xA0FF00EC, 0x003500E2, 0xB5FFFFFF, 0xFFFFB0FF, 0x00FD0040, + 0x00000044, 0x03F758FF, 0x87FF8BFF, 0x81FF28FF, 0x0EFF6BFF, 0x9DFFA0FF, 0xA3FFA7FF, 0xABFFAEFF, 0x67FF37FF, + 0xB9FFBCFF, 0xC0FFC3FF, 0xC6FFCAFF, 0xCDFF57FF, 0x00840000, 0x00000000, 0x00000006, 0x00CD73FF, 0xF1FFF5FF, + 0xF8FFF2FF, 0x34FF0096, 0x004913FF, 0xE6FFFFFF, 0xEBFF2DFF, 0x00A70000, 0x00000000, 0x006006FC, 0x59FF8AFF, + 0x8EFF91FF, 0x52FF07FF, 0x3AFF93FF, 0xA3FFA6FF, 0xAAFFAEFF, 0x75FF2DFF, 0xB7FFBCFF, 0xBFFFC3FF, 0xC7FFCAFF, + 0xCBFF31FF, 0x005C0000, 0x00000000, 0x00000037, 0x01FBB1FF, 0xF0FFF4FF, 0xF8FF82FF, 0x00ED0026, 0x009D57FF, + 0xFFFFFFFF, 0x59FF00DB, 0x001E0000, 0x00000000, 0x0000005B, 0x02F348FF, 0x8DFF91FF, 0x95FF7FFF, 0x25FF0EFF, + 0x68FFA7FF, 0xAAFFAEFF, 0x88FF1EFF, 0xAFFFBBFF, 0xC0FFC3FF, 0xC7FFCAFF, 0xB2FF0BF6, 0x00280000, 0x00000000, + 0x0000008A, 0x2AFFE6FF, 0xF1FFF5FF, 0xB7FF09FF, 0x00670021, 0x00F1AFFF, 0xFFFF6BFF, 0x00ED003A, 0x00000000, + 0x00000000, 0x00000000, 0x004100E0, 0x33FF88FF, 0x95FF99FF, 0x9BFF5AFF, 0x0CFF2EFF, 0x8EFFAEFF, 0xA1FF15FF, + 0x9DFFBCFF, 0xC0FFC3FF, 0xC6FFCAFF, 0x78FF00C5, 0x00030000, 0x00000000, 0x000E00D9, 0x75FFEEFF, 0xF1FFD1FF, + 0x22FF00A6, 0x0000007E, 0x2DFFDFFF, 0x60FF00EB, 0x00460000, 0x00000000, 0x00000000, 0x00000000, 0x0000001C, + 0x00B217FF, 0x6BFF99FF, 0x9CFFA0FF, 0x94FF40FF, 0x0BFF46FF, 0x97FF2BFF, 0x6FFFBCFF, 0xBFFFC3FF, 0xC7FFC6FF, + 0x2FFF0071, 0x00000000, 0x00000000, 0x005309FF, 0xC1FFEDFF, 0xD2FF2DFF, 0x00BB000D, 0x000000B3, 0x2DFF2BFF, + 0x00D60037, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00030072, 0x01EE3AFF, 0x8BFFA0FF, + 0xA3FFA6FF, 0x87FF34FF, 0x12FF08FF, 0x36FFBBFF, 0xC0FFC3FF, 0xC7FF81FF, 0x00E00017, 0x00000000, 0x00000000, + 0x00A045FF, 0xEAFFC1FF, 0x27FF00BB, 0x00110000, 0x00000057, 0x00AB007A, 0x00100000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x002400AC, 0x0CFE56FF, 0x9AFFA7FF, 0xAAFFAEFF, 0x8FFF49FF, + 0x12FF23FF, 0x58FF85FF, 0x8CFF1AFF, 0x005E0000, 0x00000000, 0x00000008, 0x00D66AFF, 0x84FF0DFF, 0x00A0000A, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x004900CA, 0x17FF67FF, 0xA5FFAEFF, 0xB1FFB5FF, 0xADFF76FF, 0x46FF39FF, 0x20FF00EA, + 0x00240000, 0x00000000, 0x00000003, 0x01BE05FF, 0x01DA0066, 0x00020000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000005, + 0x005E00D3, 0x20FF6CFF, 0xA7FFB5FF, 0xB8FFBCFF, 0xC0FFC3FF, 0xBFFF3FFF, 0x00960000, 0x00000000, 0x00000000, + 0x00100023, 0x000B0000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000000A, 0x006900CE, 0x15FF57FF, + 0x95FFB9FF, 0xBFFFC3FF, 0xC6FF75FF, 0x00B50000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000004, 0x004A00A4, 0x03EA26FF, 0x5AFF81FF, 0x7BFF1DFF, + 0x00790000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00130053, 0x008B00A8, 0x00B0006D, 0x00050000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, +}; +static Gfx D_8821C5E8[] = { + gsSPEndDisplayList(), +}; +u32 D_8821C5F0[] = { + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x001D0083, 0x00CC00F0, + 0x00F000DD, 0x008F0031, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000006, 0x00C800FF, 0x00FF00FF, 0x01FF00FF, 0x00FF00E8, 0x00200000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00E508FF, 0x95FFB8FF, 0xB9FFA6FF, 0x27FF00FE, 0x002A0000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0004001D, 0x003E005B, 0x00EC06FF, 0x66FF59FF, + 0x51FF67FF, 0x20FF00FC, 0x0076003E, 0x001C0003, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00330085, 0x00C800F0, 0x00FE00FF, 0x00FF00FF, 0x00FF00FF, 0x00FF00FF, 0x00FF00FF, 0x00FF00FD, + 0x00F000C6, 0x00790026, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x005F00BC, 0x00F600FF, 0x09FF2BFF, + 0x56FF7BFF, 0x7BFF95FF, 0xA3FFA9FF, 0xA9FFA3FF, 0x99FFA3FF, 0x85FF5EFF, 0x31FF0BFF, 0x00FF00F0, 0x00B30053, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00170096, 0x00FF0CFF, 0x34FF64FF, 0x9AFF9AFF, 0xC2FFDAFF, 0xEEFFFCFF, 0xFEFFFDFF, + 0xFDFFFEFF, 0xFFFFFCFF, 0xE8FFCEFF, 0xCEFFA6FF, 0x6AFF35FF, 0x08FF00FF, 0x009B001C, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000057, 0x00E200FF, + 0x00FF00FF, 0x02FF0DFF, 0x13FF10FF, 0x0DFF0CFF, 0x0CFF0DFF, 0x0DFF0DFF, 0x0DFF0DFF, 0x0DFF0DFF, 0x0DFF0EFF, + 0x11FF15FF, 0x0EFF01FF, 0x00FF00FF, 0x00FF00E5, 0x007D0002, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000000A9, 0x00FF01FF, 0x03FF03FF, 0x02FF01FF, 0x00FF00FF, + 0x00FF00FF, 0x00FF00FF, 0x00FF00FF, 0x00FF00FF, 0x00FF00FF, 0x00FF00FF, 0x00FF00FF, 0x01FF03FF, 0x03FF03FF, + 0x02FF00FF, 0x00E20009, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x000000A3, 0x00FF39FF, 0x63FF6DFF, 0x77FF81FF, 0x8CFF97FF, 0xA1FFABFF, 0xB5FFC0FF, 0xC2FFC2FF, + 0xC2FFC2FF, 0xC2FFC0FF, 0xB6FFABFF, 0xA1FF97FF, 0x8CFF81FF, 0x77FF6DFF, 0x4FFF01FF, 0x00DB0009, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000000A4, 0x00FF16FF, + 0x25FF29FF, 0x2DFF31FF, 0x35FF39FF, 0x3DFF41FF, 0x45FF49FF, 0x4AFF4AFF, 0x4AFF4AFF, 0x4AFF49FF, 0x45FF41FF, + 0x3DFF39FF, 0x35FF31FF, 0x2EFF29FF, 0x1EFF00FF, 0x00DC0006, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000005, 0x00040092, 0x00FF00FF, 0x00FF00FF, 0x00FF00FF, 0x00FF00FF, + 0x00FF00FF, 0x00FF00FF, 0x00FF00FF, 0x00FF00FF, 0x00FF00FF, 0x00FF00FF, 0x00FF00FF, 0x00FF00FF, 0x00FF00FF, + 0x00FF00FF, 0x00C6000E, 0x00060000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x016D00CC, 0x00CB00DF, 0x00FF04FF, 0x4FFF62FF, 0x6AFF6FFF, 0x78FF82FF, 0x93FF98FF, 0xA1FFAFFF, 0xACFFA6FF, + 0xA6FFA9FF, 0xB1FFAAFF, 0xA1FF9BFF, 0x8CFF81FF, 0x78FF71FF, 0x6CFF5FFF, 0x13FF00FF, 0x00ED00D8, 0x00D00085, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00F400FF, 0x01FF01FF, 0x00FF05FF, + 0x76FF8FFF, 0x3BFF26FF, 0x28FF30FF, 0x99FFE1FF, 0xEFFFEDFF, 0x53FF39FF, 0x39FF43FF, 0xCCFFFCFF, 0xEEFFC4FF, + 0x39FF2CFF, 0x29FF32FF, 0x91FF8FFF, 0x16FF00FF, 0x02FF02FF, 0x00FF00F5, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00F1A1FF, 0xA1FF63FF, 0x03FF01FF, 0x6CFF83FF, 0x01FF00FF, 0x00FF00FF, + 0x55FFE1FF, 0xEEFFB4FF, 0x00FF00FF, 0x00FF00FF, 0x7BFFFCFF, 0xEEFF88FF, 0x00FF00FF, 0x00FF00FF, 0x75FF8DFF, + 0x0AFF00FF, 0x63FFA1FF, 0xA1FF00F1, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00F763FF, 0x63FF63FF, 0x02FF00FF, 0x66FF88FF, 0x07FF0AFF, 0x2EFF00FF, 0x55FFE1FF, 0xEEFFB7FF, 0x00FF29FF, + 0x35FF00FF, 0x80FFFCFF, 0xEEFF81FF, 0x00FF2CFF, 0x15FF00FF, 0x7BFF89FF, 0x06FF00FF, 0x63FF63FF, 0x63FF00F6, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00CB00FB, 0x00FA00FA, 0x00FE00FF, + 0x61FF8CFF, 0x07FF0DFF, 0x38FF00FF, 0x4DFFE1FF, 0xEFFFB6FF, 0x00FF36FF, 0x45FF00FF, 0x80FFFCFF, 0xEFFF74FF, + 0x00FF3BFF, 0x11FF01FF, 0x7FFF84FF, 0x06FF00FD, 0x00FA00FA, 0x00FB00D6, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00140034, 0x00330033, 0x00B800FF, 0x5CFF8EFF, 0x0CFF0AFF, 0x3AFF00FF, + 0x47FFE1FF, 0xEEFFB6FF, 0x00FF34FF, 0x43FF00FF, 0x80FFFCFF, 0xEFFF6DFF, 0x00FF3BFF, 0x0EFF02FF, 0x84FF7DFF, + 0x04FF00E0, 0x003A0033, 0x0035001D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x009F00FF, 0x55FF8FFF, 0x15FF07FF, 0x3FFF00FF, 0x43FFE1FF, 0xEFFFB6FF, 0x00FF34FF, + 0x43FF00FF, 0x80FFFCFF, 0xEEFF69FF, 0x00FF3EFF, 0x0EFF03FF, 0x8BFF76FF, 0x02FF00DA, 0x00010000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x009600FF, + 0x51FF8FFF, 0x1CFF04FF, 0x41FF00FF, 0x3DFFE1FF, 0xEFFFB6FF, 0x00FF34FF, 0x43FF00FF, 0x80FFFCFF, 0xEEFF64FF, + 0x00FF3EFF, 0x0EFF05FF, 0x8FFF70FF, 0x01FF00CE, 0x00050000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x007D00FF, 0x4CFF8FFF, 0x20FF01FF, 0x43FF00FF, + 0x38FFE1FF, 0xEFFFB7FF, 0x00FF34FF, 0x43FF00FF, 0x80FFFCFF, 0xEFFF5EFF, 0x00FF3EFF, 0x0EFF06FF, 0x93FF6BFF, + 0x00FF00B5, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x006B00FF, 0x46FF8FFF, 0x25FF00FF, 0x45FF01FF, 0x32FFDFFF, 0xEEFFB6FF, 0x00FF34FF, + 0x43FF00FF, 0x80FFFCFF, 0xEFFF58FF, 0x00FF3DFF, 0x0EFF07FF, 0x97FF64FF, 0x00FF00A3, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x006700FF, + 0x3FFF8FFF, 0x2BFF00FF, 0x44FF02FF, 0x2AFFDDFF, 0xEFFFB6FF, 0x00FF34FF, 0x43FF00FF, 0x80FFFDFF, 0xEFFF4FFF, + 0x00FF3AFF, 0x0DFF08FF, 0x9CFF5DFF, 0x00FF009F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x005700FF, 0x39FF8FFF, 0x34FF00FF, 0x49FF07FF, + 0x24FFDCFF, 0xEFFFB6FF, 0x00FF34FF, 0x43FF00FF, 0x80FFFDFF, 0xEFFF4AFF, 0x00FF40FF, 0x09FF11FF, 0x9CFF58FF, + 0x00FF008F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x003B00FC, 0x31FF8FFF, 0x3BFF00FF, 0x4DFF0AFF, 0x1FFFDAFF, 0xEEFFB6FF, 0x00FF34FF, + 0x43FF00FF, 0x80FFFCFF, 0xEFFF45FF, 0x00FF45FF, 0x06FF19FF, 0x9CFF52FF, 0x00FF0073, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x003200FA, + 0x28FF8FFF, 0x42FF00FF, 0x4FFF0DFF, 0x1AFFD8FF, 0xEFFFB7FF, 0x00FF34FF, 0x43FF00FF, 0x80FFFCFF, 0xEFFF40FF, + 0x00FF47FF, 0x03FF1FFF, 0x9DFF4BFF, 0x00FF006A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x002A00F8, 0x20FF8FFF, 0x48FF00FF, 0x52FF11FF, + 0x15FFD6FF, 0xEFFFB6FF, 0x00FF34FF, 0x43FF00FF, 0x80FFFCFF, 0xEEFF39FF, 0x00FF49FF, 0x00FF27FF, 0x9CFF44FF, + 0x00FF0062, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x001700EE, 0x19FF8FFF, 0x4EFF00FF, 0x52FF14FF, 0x0CFFD6FF, 0xEEFFB6FF, 0x00FF34FF, + 0x43FF00FF, 0x80FFFDFF, 0xECFF31FF, 0x02FF48FF, 0x00FF2CFF, 0x9CFF3CFF, 0x00FE004B, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000B00E2, + 0x10FF8FFF, 0x53FF00FF, 0x52FF1BFF, 0x07FFD1FF, 0xEFFFB6FF, 0x00FF35FF, 0x45FF00FF, 0x80FFFCFF, 0xEAFF2AFF, + 0x05FF4DFF, 0x00FF34FF, 0x9DFF32FF, 0x00FA0033, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000B00E2, 0x08FF8EFF, 0x59FF00FF, 0x41FF1EFF, + 0x05FFC9FF, 0xEFFFB5FF, 0x00FF2CFF, 0x39FF00FF, 0x7FFFFCFF, 0xE8FF25FF, 0x07FF46FF, 0x00FF3DFF, 0x9CFF28FF, + 0x00FA0032, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x000900D9, 0x06FF8AFF, 0x5EFF00FF, 0x00FF00FF, 0x03FFC4FF, 0xEEFFBAFF, 0x00FF00FF, + 0x00FF00FF, 0x80FFFCFF, 0xEAFF1EFF, 0x00FF00FF, 0x00FF44FF, 0x9CFF21FF, 0x00F70025, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000300C7, + 0x04FF74FF, 0x77FF1CFF, 0x16FF18FF, 0x3AFFC8FF, 0xE1FFD6FF, 0x43FF1FFF, 0x1EFF30FF, 0xB9FFEDFF, 0xDDFF58FF, + 0x1BFF17FF, 0x1DFF71FF, 0x93FF16FF, 0x00EB0012, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000000C3, 0x00FF06FF, 0x0CFF08FF, 0x06FF07FF, + 0x0EFF0FFF, 0x0EFF13FF, 0x12FF09FF, 0x09FF0EFF, 0x16FF0FFF, 0x0FFF11FF, 0x08FF07FF, 0x09FF0FFF, 0x09FF01FF, + 0x00E8000B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000084, 0x00EE00F0, 0x00F000F0, 0x00F000F0, 0x00F000F0, 0x00F000F0, 0x00F000F0, + 0x00F000F0, 0x00F000F0, 0x00F000F0, 0x00F000F0, 0x00F000F0, 0x00F000F0, 0x00AB0004, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, +}; +static Gfx D_8821D370[] = { + gsSPEndDisplayList(), +}; +u32 D_8821D378[] = { + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00440039, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000006, 0x00450020, 0x00000000, 0x00000000, 0x0000006A, 0x00FF2AFC, + 0x00A20021, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000068, 0x00FF00F0, 0x00AB005A, 0x000B0000, 0x004800F8, 0xFFFFFFFF, 0xB3FF00EC, 0x00700000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000700CF, 0xA8FFF4FF, 0xADFF00FF, + 0x00580007, 0x00D8B3FF, 0xFFFFFFFF, 0xFFFF3FFF, 0x00BB0000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x004100FE, 0xEDFFF1FF, 0xF3FF00DE, 0x00120082, 0xB3FFFFFF, 0xFEFFFEFF, + 0x00FF00B2, 0x00110000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x008000FF, 0xEBFFEEFF, 0x00FF006A, 0x001B00ED, 0xFCFFFFFF, 0xFFFF00FF, 0x00B3000A, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00B6A1FF, 0xE8FFA5FF, 0x00E0000B, + 0x008A00FF, 0xF9FFFCFF, 0x00FF00D2, 0x00160000, 0x00000007, 0x00030000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x0000000D, 0x00E3E2FF, 0xE5FF00FF, 0x008C0010, 0x00E4ABFF, 0xF6FFAFFF, 0x00F70040, + 0x0000002C, 0x00A400D7, 0x00CA0073, 0x00020031, 0x008A00A3, 0x00730015, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000026, + 0x00F6DFFF, 0xE2FF00FF, 0x0036005C, 0x00FFF0FF, 0xF4FF00FF, 0x008C0000, 0x002C00E1, 0x07FF46FF, 0x2AFF00FF, + 0x00B000E5, 0x07FF13FF, 0x02FF00CA, 0x00120000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000003A, 0x00FC9BFF, 0x9DFF00D8, 0x000B00B6, + 0x03FFEEFF, 0xA9FF00E2, 0x00110024, 0x00DC00FF, 0x98FFFFFF, 0xEAFF19FF, 0x00FF11FF, 0xB6FFFDFF, 0x6EFF00FF, + 0x006C0000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x0000000E, 0x007600D8, 0x00FF009C, 0x000000AE, 0x00FF04FF, 0x00FF006D, 0x001600D2, + 0x00FF8CFF, 0xFFFFFFFF, 0xCCFF0AFF, 0x09FFB4FF, 0xFFFFFEFF, 0x8EFF00FF, 0x00730000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00130085, 0x00CA00C4, + 0x0065000E, 0x00350017, 0x00000004, 0x0039008E, 0x00930027, 0x00C800FF, 0x7EFFF9FF, 0xFDFFD8FF, 0x21FF00FF, + 0xABFFFFFF, 0xFFFFBBFF, 0x0DFF00FF, 0x00760000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000005, 0x00BD02FF, 0x32FF2AFF, 0x00FF0094, 0x00000000, 0x00000000, + 0x00000000, 0x001500C5, 0x00FF78FF, 0xF3FFF7FF, 0xD3FF24FF, 0x00FFA7FF, 0xFFFFFFFF, 0xBBFF10FF, 0x01FF0BFF, + 0x00FF00AA, 0x00060000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x0000003B, 0x00FC3EFF, 0xC8FFC1FF, 0x25FF00EE, 0x00170000, 0x00000000, 0x00000011, 0x00BF00FF, 0x6CFFEEFF, + 0xF1FFD6FF, 0x2AFF00FF, 0x9CFFFFFF, 0xFFFFC6FF, 0x10FF0CFF, 0xB1FFEFFF, 0x4FFF00FF, 0x00540000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000005A, 0x00FF61FF, 0xC5FFC8FF, + 0x4EFF00FD, 0x003D0000, 0x00000000, 0x000D00BD, 0x00FF63FF, 0xE8FFEBFF, 0xD6FF2DFF, 0x00FF91FF, 0xF9FFFCFF, + 0xCCFF15FF, 0x06FFB7FF, 0xFFFFFFFF, 0x82FF00FF, 0x00650000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000074, 0x00FF76FF, 0xC2FFC6FF, 0x6BFF00FF, 0x00640000, 0x0000000A, + 0x00B000FF, 0x57FFDFFF, 0xE5FFD4FF, 0x35FF00FF, 0x83FFF3FF, 0xF6FFCEFF, 0x1EFF03FF, 0xACFFFEFF, 0xFFFFB7FF, + 0x0FFF00E2, 0x00210000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x0000008D, 0x00FF88FF, 0xBFFFC2FF, 0x88FF00FF, 0x008A0000, 0x000500A8, 0x00FF4BFF, 0xD8FFE0FF, 0xD3FF39FF, + 0x00FF76FF, 0xEEFFF1FF, 0xD1FF23FF, 0x00FFA1FF, 0xFFFFFFFF, 0xC1FF12FF, 0x00FF0071, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000000AB, 0x05FF9AFF, 0xBDFFC0FF, + 0xA4FF06FF, 0x00B00003, 0x00A100FF, 0x48FFD0FF, 0xDAFFDCFF, 0xA3FF01FF, 0x70FFE8FF, 0xEAFFCDFF, 0x27FF00FF, + 0x99FFF9FF, 0xFCFFC2FF, 0x15FF00FF, 0x01FF00F4, 0x007D0000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x000300C6, 0x0CFFA9FF, 0xBAFFBDFF, 0xB6FF17FF, 0x00DB00AB, 0x00FF3DFF, + 0xC9FFD4FF, 0xD6FFD9FF, 0xDAFFCDFF, 0xDFFFE5FF, 0xCFFF29FF, 0x00FF8DFF, 0xF3FFF6FF, 0xC7FF16FF, 0x06FF96FF, + 0xBEFF2FFF, 0x00F90034, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x000B00E0, 0x1CFFAEFF, 0xB7FFBAFF, 0xBDFF52FF, 0x00FF00FF, 0x41FFC1FF, 0xCEFFD1FF, 0xD4FFD6FF, 0xDAFFDDFF, + 0xDFFFE2FF, 0x9BFF00FF, 0x81FFEDFF, 0xF1FFC9FF, 0x1AFF00FF, 0xA9FFFFFF, 0xFFFF76FF, 0x00FF0051, 0x00000000, + 0x0000001B, 0x00260000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x001900F2, 0x2DFFB0FF, 0xB4FFB7FF, + 0xB9FFB3FF, 0x7CFF87FF, 0xC0FFC8FF, 0xCBFFCEFF, 0xD1FFD4FF, 0xD6FFDAFF, 0xDCFFDFFF, 0xDEFFCEFF, 0xE4FFEBFF, + 0xCAFF22FF, 0x00FF9AFF, 0xF9FFFCFF, 0xC2FF14FF, 0x00E90022, 0x00000000, 0x002100D7, 0x00F60040, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x003100FA, 0x3CFFAEFF, 0xB1FFB4FF, 0xB7FFBAFF, 0xBCFFC0FF, 0xC2FFC5FF, + 0xC8FFCBFF, 0xCEFFD1FF, 0xD4FFD7FF, 0xD9FFDDFF, 0xDFFFE2FF, 0xE5FFCBFF, 0x27FF00FF, 0x90FFF3FF, 0xF7FFC8FF, + 0x19FF00F9, 0x00550000, 0x00000018, 0x00C7B3FF, 0x05FF00D8, 0x001D0000, 0x00000000, 0x00000000, 0x00000000, + 0x004600FF, 0x49FFABFF, 0xAEFFB1FF, 0xB4FFB7FF, 0xBAFFBDFF, 0xBFFFC2FF, 0xC5FFC8FF, 0xCBFFCEFF, 0xD0FFD3FF, + 0xD6FFD9FF, 0xDDFFDFFF, 0xE2FF68FF, 0x00FF87FF, 0xEDFFF1FF, 0xC7FF1DFF, 0x00FC005E, 0x00000000, 0x002100CB, + 0xB3FFFFFF, 0xFFFF00FF, 0x00BE0004, 0x00000000, 0x00000000, 0x00000000, 0x004D00FF, 0x4AFFA8FF, 0xACFFAEFF, + 0xB1FFB4FF, 0xB7FFBAFF, 0xBCFFBFFF, 0xC3FFC5FF, 0xC8FFCBFF, 0xCEFFD1FF, 0xD3FFD6FF, 0xDAFFDDFF, 0xDFFFC6FF, + 0xACFFE6FF, 0xEBFFC8FF, 0x25FF00FD, 0x00690000, 0x0000004C, 0x00E1B3FF, 0xFFFFFFFF, 0xB3FF00FF, 0x00DA000F, + 0x00000000, 0x00000000, 0x00000000, 0x002800F7, 0x2EFFA5FF, 0xA9FFABFF, 0xAEFFB1FF, 0xB4FFB7FF, 0xBAFFBDFF, + 0xC0FFC3FF, 0xC5FFC8FF, 0xCBFFCEFF, 0xD0FFD3FF, 0xD6FFDAFF, 0xDCFFDFFF, 0xE2FFE5FF, 0xC8FF24FF, 0x00FF0067, + 0x00000018, 0x009D00FD, 0xB3FFFFFF, 0xFFFFB3FF, 0x00FF00D1, 0x00260000, 0x00000000, 0x00000000, 0x00000000, + 0x000500CD, 0x0BFF90FF, 0xA6FFA8FF, 0xABFFAEFF, 0xB1FFB4FF, 0xB7FFBAFF, 0xBCFFC0FF, 0xC2FFC5FF, 0xC9FFCBFF, + 0xCEFFD1FF, 0xD3FFD6FF, 0xDAFFDCFF, 0xE0FFC7FF, 0x2CFF00FF, 0x006F0008, 0x007600E5, 0x01FFF9FF, 0xFCFFFFFF, + 0xB3FF00FF, 0x0098000F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000087, 0x00FF60FF, 0xA2FFA5FF, + 0xA9FFACFF, 0xAEFFB2FF, 0xB4FFB7FF, 0xBAFFBCFF, 0xC0FFC3FF, 0xC5FFC8FF, 0xCBFFCEFF, 0xD1FFD3FF, 0xD7FFD9FF, + 0xC9FF32FF, 0x00FF0079, 0x003000E4, 0x02FFA9FF, 0xF3FFF6FF, 0xAFFF00FF, 0x00D50059, 0x0052003E, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000033, 0x00F928FF, 0x9FFFA2FF, 0xA6FFA9FF, 0xABFFAEFF, 0xB1FFB4FF, + 0xB7FFBAFF, 0xBDFFC0FF, 0xC2FFC5FF, 0xC8FFCBFF, 0xCEFFD1FF, 0xD4FFC9FF, 0x35FF00FF, 0x00870000, 0x004000FE, + 0xA5FFEDFF, 0xA9FF00FF, 0x00E4006C, 0x002E009E, 0x00FF00F1, 0x00300000, 0x00000000, 0x00000000, 0x00000000, + 0x00000001, 0x00BE00FF, 0x6EFFA0FF, 0xA3FFA6FF, 0xA8FFABFF, 0xAEFFB1FF, 0xB4FFB7FF, 0xB9FFBDFF, 0xC0FFC2FF, + 0xC5FFC8FF, 0xCBFFCEFF, 0xC6FF3DFF, 0x00FF0093, 0x00010000, 0x00000099, 0x00FF00FF, 0x00CD0067, 0x00340073, + 0x00E407FF, 0xB3FF3EFF, 0x00B70004, 0x00000000, 0x00000000, 0x00000000, 0x0000004B, 0x00F008FF, 0x75FF9DFF, + 0x9FFFA2FF, 0xA5FFA8FF, 0xACFFAEFF, 0xB1FFB4FF, 0xB7FFB9FF, 0xBDFFC0FF, 0xC2FFC5FF, 0xC9FFC5FF, 0x42FF00FF, + 0x009E0002, 0x00000000, 0x00000015, 0x00730046, 0x00200072, 0x00E200FF, 0xADFFF9FF, 0xFCFFB2FF, 0x00FF0045, + 0x00000000, 0x00000000, 0x00000000, 0x005500F5, 0x0BFF6DFF, 0x97FF9AFF, 0x9DFFA0FF, 0xA2FFA6FF, 0xA8FFABFF, + 0xAEFFB1FF, 0xB4FFB7FF, 0xBAFFBCFF, 0xBFFFC3FF, 0xBBFF40FF, 0x00FF00A1, 0x00040000, 0x00000000, 0x00000000, + 0x00350096, 0x00EB06FF, 0xA6FFF0FF, 0xF3FFADFF, 0x3DFF00FE, 0x009E0010, 0x00000000, 0x00000000, 0x00000055, + 0x00F70AFF, 0x6AFF92FF, 0x94FF97FF, 0x9AFF9DFF, 0x9FFFA3FF, 0xA5FFA9FF, 0xACFFAFFF, 0xB1FFB4FF, 0xB7FFBAFF, + 0xBDFFB0FF, 0x37FF00FF, 0x00A60006, 0x00000000, 0x00000000, 0x00000067, 0x00FF9FFF, 0xE5FFE8FF, 0xEAFFA6FF, + 0x4BFF00FD, 0x00C40049, 0x00000000, 0x00000000, 0x00000000, 0x005B00F8, 0x0BFF68FF, 0x8BFF8EFF, 0x91FF94FF, + 0x97FF9AFF, 0x9DFFA0FF, 0xA2FFA6FF, 0xA8FFABFF, 0xAEFFB1FF, 0xB4FFB7FF, 0x8EFF1EFF, 0x00FF009F, 0x00040000, + 0x00000000, 0x00000000, 0x0000004A, 0x00FF98FF, 0x99FF38FF, 0x00FF00E8, 0x0098003B, 0x00020000, 0x00000000, + 0x00000000, 0x00000060, 0x00F711FF, 0x69FF85FF, 0x89FF8CFF, 0x8EFF92FF, 0x94FF97FF, 0x9AFF9DFF, 0xA0FFA3FF, + 0xA6FFA8FF, 0xABFFABFF, 0x8CFF49FF, 0x06FF00F5, 0x00720002, 0x00000000, 0x00000000, 0x00000000, 0x00000001, + 0x00AE00F4, 0x00C4008F, 0x00500014, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x006200FF, 0x00FF1FFF, + 0x3EFF3BFF, 0x3BFF3DFF, 0x3EFF42FF, 0x44FF44FF, 0x46FF4AFF, 0x4CFF4DFF, 0x4EFF4AFF, 0x3DFF1EFF, 0x02FF00FE, + 0x00BC0034, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0007000E, 0x00030000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x008800EB, 0x00DD00DD, 0x00DD00DC, 0x00E800F1, 0x00F000F0, + 0x00F000F0, 0x00F000F0, 0x00F000F0, 0x00F100E6, 0x00D300B6, 0x00840038, 0x00020000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, +}; +static Gfx D_8821E0F8[] = { + gsSPEndDisplayList(), +}; +u32 D_8821E100[] = { + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00550096, 0x00960096, + 0x00960096, 0x00960096, 0x00960096, 0x00960096, 0x00960096, 0x00960096, 0x00960096, 0x00960096, 0x00960096, + 0x00960096, 0x00960096, 0x006F0003, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0x00CA3EFF, 0x69FF69FF, 0x69FF69FF, 0x69FF69FF, 0x69FF69FF, + 0x69FF68FF, 0x66FF64FF, 0x62FF60FF, 0x5EFF5BFF, 0x59FF57FF, 0x55FF53FF, 0x51FF4FFF, 0x4FFF39FF, 0x01FA000F, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000002, 0x00C49DFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xF8FFF3FF, + 0xEEFFE8FF, 0xE3FFDDFF, 0xD8FFD3FF, 0xCDFFC7FF, 0xC9FF91FF, 0x01F1000F, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0x00C397FF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFDFF, 0xF9FFF5FF, 0xEFFFEAFF, 0xE5FFDFFF, 0xDAFFD5FF, 0xD0FFCBFF, + 0xC5FFC0FF, 0xC2FF8BFF, 0x01F0000F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0x00C397FF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFDFF, 0xF9FFF5FF, 0xEFFFEAFF, 0xE5FFDFFF, 0xDAFFD5FF, 0xD0FFCBFF, 0xC5FFC0FF, 0xC2FF8BFF, 0x01F0000F, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000002, 0x00C49DFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xF8FFF3FF, + 0xEEFFE8FF, 0xE3FFDDFF, 0xD8FFD3FF, 0xCDFFC7FF, 0xC9FF91FF, 0x01F1000F, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0x00CA3EFF, 0x69FF69FF, + 0x69FF69FF, 0x69FF69FF, 0x69FF69FF, 0x69FF68FF, 0x66FF64FF, 0x62FF60FF, 0x5EFF5BFF, 0x59FF57FF, 0x55FF53FF, + 0x51FF4FFF, 0x4FFF39FF, 0x01F9000F, 0x00000000, 0x004100BB, 0x00A7004C, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0050008C, 0x008C008C, 0x008C008C, 0x008C008C, 0x008C008C, + 0x008C008C, 0x008D008E, 0x008F0090, 0x00910092, 0x00930094, 0x00940095, 0x00960097, 0x0098009A, 0x00700003, + 0x00000000, 0x00B132FF, 0x41FF00FF, 0x00A7001D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x000F0031, 0x00310031, 0x00310031, 0x00310031, 0x00310031, 0x00310031, 0x00310032, 0x00320032, + 0x00320033, 0x00330033, 0x00330034, 0x00340034, 0x00350035, 0x001A0000, 0x00000000, 0x00B05BFF, 0xDAFF95FF, + 0x22FF00DB, 0x00420000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00B009FC, 0x0FFC0FFC, + 0x0FFC0FFC, 0x0FFC0FFC, 0x0FFC0FFC, 0x0FFC0FFC, 0x0FFC0FFC, 0x0EFC0EFC, 0x0EFC0DFC, 0x0DFC0DFC, 0x0DFC0CFC, + 0x0CFC0CFC, 0x0CFC08FB, 0x00DC000B, 0x00000000, 0x008320FF, 0xC7FFDFFF, 0xC7FF4AFF, 0x00F4005E, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0x00C78DFF, 0xF0FFF0FF, 0xF0FFF0FF, 0xF0FFF0FF, 0xF0FFF0FF, + 0xF0FFEDFF, 0xE9FFE5FF, 0xE0FFDBFF, 0xD6FFD1FF, 0xCCFFC7FF, 0xC2FFBEFF, 0xB8FFB3FF, 0xB5FF83FF, 0x01F50010, + 0x00000000, 0x003700FC, 0x93FFDBFF, 0xDDFFDEFF, 0x64FF00FD, 0x00660000, 0x00000000, 0x00000000, 0x00000000, + 0x00000002, 0x00C399FF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFCFFF8FF, 0xF2FFEDFF, + 0xE8FFE2FF, 0xDDFFD8FF, 0xD3FFCEFF, 0xC7FFC2FF, 0xC4FF8DFF, 0x01F0000F, 0x00000000, 0x000100BA, 0x3EFFD6FF, + 0xD6FFDEFF, 0xEAFF83FF, 0x02FF0076, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0x00C396FF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFCFF, 0xF8FFF4FF, 0xEEFFE9FF, 0xE4FFDEFF, 0xD9FFD4FF, 0xCFFFCAFF, + 0xC4FFBFFF, 0xC1FF8BFF, 0x01F0000F, 0x00000000, 0x00000051, 0x03FFA6FF, 0xDFFFDAFF, 0xE2FFF2FF, 0x8CFF01FF, + 0x00690000, 0x00000000, 0x00000000, 0x00000002, 0x00C39CFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFDFF, 0xF7FFF2FF, 0xEDFFE7FF, 0xE1FFDCFF, 0xD7FFD2FF, 0xCCFFC6FF, 0xC8FF90FF, 0x01F0000F, + 0x00000000, 0x00000006, 0x00CF51FF, 0xDFFFDBFF, 0xE0FFE7FF, 0xF7FF82FF, 0x00FB0052, 0x00000000, 0x00000000, + 0x00000002, 0x00C370FF, 0xBEFFBEFF, 0xBEFFBEFF, 0xBEFFBEFF, 0xBEFFBEFF, 0xBEFFBCFF, 0xB9FFB6FF, 0xB2FFAEFF, + 0xAAFFA6FF, 0xA2FF9EFF, 0x9AFF97FF, 0x92FF8EFF, 0x90FF68FF, 0x00F0000F, 0x00000000, 0x00000000, 0x00680CFF, + 0xBBFFE0FF, 0xE0FFE5FF, 0xEEFFFAFF, 0x66FF00EC, 0x002B0000, 0x00000000, 0x00000002, 0x00C30AFF, 0x12FF12FF, + 0x12FF12FF, 0x12FF12FF, 0x12FF12FF, 0x12FF11FF, 0x11FF11FF, 0x10FF10FF, 0x10FF0FFF, 0x0FFF0FFF, 0x0EFF0EFF, + 0x0DFF0DFF, 0x0DFF0AFF, 0x00F0000F, 0x00000000, 0x00000000, 0x001200E6, 0x74FFE6FF, 0xE0FFE5FF, 0xEBFFF5FF, + 0xF0FF38FF, 0x00C20007, 0x00000000, 0x00000002, 0x00C38BFF, 0xEDFFEDFF, 0xEDFFEDFF, 0xEDFFEDFF, 0xEDFFEDFF, + 0xEDFFEAFF, 0xE6FFE3FF, 0xDDFFD8FF, 0xD4FFCEFF, 0xCAFFC5FF, 0xC0FFBCFF, 0xB6FFB1FF, 0xB3FF81FF, 0x01F0000F, + 0x00000000, 0x00000000, 0x00000099, 0x37FFDBFF, 0xE2FFE5FF, 0xEBFFF0FF, 0xFFFFC6FF, 0x0AFF0062, 0x00000000, + 0x00000002, 0x00C399FF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFCFFF8FF, 0xF2FFEDFF, + 0xE8FFE2FF, 0xDDFFD8FF, 0xD3FFCEFF, 0xC7FFC2FF, 0xC4FF8DFF, 0x01F0000F, 0x00000000, 0x00000000, 0x00000058, + 0x13FFCFFF, 0xE3FFE5FF, 0xEBFFF0FF, 0xF6FFFFFF, 0x5BFF00B5, 0x00010000, 0x00000002, 0x00C396FF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFCFF, 0xF8FFF4FF, 0xEEFFE9FF, 0xE4FFDEFF, 0xD9FFD4FF, 0xCFFFCAFF, + 0xC4FFBFFF, 0xC1FF8BFF, 0x01F0000F, 0x00000000, 0x00000000, 0x00000047, 0x0CFFCDFF, 0xE3FFE5FF, 0xEBFFF0FF, + 0xF5FFFFFF, 0x7CFF00C4, 0x00010000, 0x00000002, 0x00C39CFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFDFF, 0xF7FFF2FF, 0xEDFFE7FF, 0xE1FFDCFF, 0xD7FFD2FF, 0xCCFFC6FF, 0xC8FF90FF, 0x01F0000F, + 0x00000000, 0x00000000, 0x0000007A, 0x24FFD5FF, 0xE3FFE5FF, 0xEBFFF0FF, 0xFAFFECFF, 0x25FF008C, 0x00000000, + 0x00000002, 0x00C370FF, 0xBFFFBFFF, 0xBFFFBFFF, 0xBFFFBFFF, 0xBFFFBFFF, 0xBFFFBDFF, 0xBAFFB7FF, 0xB2FFAFFF, + 0xABFFA6FF, 0xA2FF9FFF, 0x9BFF97FF, 0x93FF8FFF, 0x91FF68FF, 0x00F0000F, 0x00000000, 0x00000000, 0x000300C9, + 0x59FFE3FF, 0xE0FFE5FF, 0xEBFFF1FF, 0xFFFF72FF, 0x00EB0021, 0x00000000, 0x00000002, 0x00C307FF, 0x0CFF0CFF, + 0x0CFF0CFF, 0x0CFF0CFF, 0x0CFF0CFF, 0x0CFF0CFF, 0x0CFF0BFF, 0x0BFF0BFF, 0x0BFF0AFF, 0x0AFF0AFF, 0x0AFF09FF, + 0x09FF09FF, 0x09FF06FF, 0x00F0000F, 0x00000000, 0x00000000, 0x003D00FD, 0x9FFFE4FF, 0xE0FFE5FF, 0xEBFFFFFF, + 0xAFFF04FF, 0x00690000, 0x00000000, 0x00000002, 0x00C380FF, 0xDAFFDAFF, 0xDAFFDAFF, 0xDAFFDAFF, 0xDAFFDAFF, + 0xDAFFD8FF, 0xD4FFD1FF, 0xCBFFC7FF, 0xC3FFBEFF, 0xBAFFB6FF, 0xB1FFADFF, 0xA8FFA3FF, 0xA5FF77FF, 0x01F0000F, + 0x00000000, 0x00000000, 0x00A52EFF, 0xD5FFDDFF, 0xE0FFE5FF, 0xF7FFC6FF, 0x19FF009C, 0x00020000, 0x00000000, + 0x00000002, 0x00C39AFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFAFF, 0xF4FFEFFF, + 0xEAFFE4FF, 0xDFFFDAFF, 0xD4FFCFFF, 0xC9FFC4FF, 0xC6FF8FFF, 0x01F0000F, 0x00000000, 0x0000002B, 0x00F786FF, + 0xE2FFDAFF, 0xE0FFF1FF, 0xCCFF22FF, 0x00B40008, 0x00000000, 0x00000000, 0x00000002, 0x00C396FF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFCFF, 0xF8FFF4FF, 0xEEFFE9FF, 0xE4FFDEFF, 0xD9FFD4FF, 0xCFFFCAFF, + 0xC4FFBFFF, 0xC1FF8BFF, 0x01F0000F, 0x00000000, 0x00000091, 0x1FFFCAFF, 0xD9FFDAFF, 0xECFFC6FF, 0x27FF00C2, + 0x00110000, 0x00000000, 0x00000000, 0x00000002, 0x00C39CFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFDFF, 0xF7FFF2FF, 0xEDFFE7FF, 0xE1FFDCFF, 0xD7FFD2FF, 0xCCFFC6FF, 0xC8FF90FF, 0x01F0000F, + 0x00000000, 0x001600E9, 0x6FFFDCFF, 0xD7FFE8FF, 0xB4FF20FF, 0x00BF0015, 0x00000000, 0x00000000, 0x00000000, + 0x00000002, 0x00C370FF, 0xBEFFBEFF, 0xBEFFBEFF, 0xBEFFBEFF, 0xBEFFBEFF, 0xBEFFBCFF, 0xB9FFB6FF, 0xB2FFAEFF, + 0xAAFFA6FF, 0xA2FF9EFF, 0x9AFF97FF, 0x92FF8EFF, 0x90FF68FF, 0x00F0000F, 0x00000000, 0x00640DFF, 0xB5FFDAFF, + 0xE1FF96FF, 0x12FF00B1, 0x00100000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0x00C30AFF, 0x12FF12FF, + 0x12FF12FF, 0x12FF12FF, 0x12FF12FF, 0x12FF11FF, 0x11FF11FF, 0x10FF10FF, 0x10FF0FFF, 0x0FFF0FFF, 0x0EFF0EFF, + 0x0DFF0DFF, 0x0DFF0AFF, 0x00F0000F, 0x00000000, 0x00A345FF, 0xDEFFCCFF, 0x66FF02FF, 0x00950007, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0x00C38BFF, 0xEDFFEDFF, 0xEDFFEDFF, 0xEDFFEDFF, 0xEDFFEDFF, + 0xEDFFEAFF, 0xE6FFE3FF, 0xDDFFD8FF, 0xD4FFCEFF, 0xCAFFC5FF, 0xC0FFBCFF, 0xB6FFB1FF, 0xB3FF81FF, 0x01F0000F, + 0x00000000, 0x00B953FF, 0x90FF29FF, 0x00EC0066, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000002, 0x00C399FF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFCFFF8FF, 0xF2FFEDFF, + 0xE8FFE2FF, 0xDDFFD8FF, 0xD3FFCEFF, 0xC7FFC2FF, 0xC4FF8DFF, 0x01F0000F, 0x00000000, 0x007A03FB, 0x00F300A6, + 0x002B0000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0x00C396FF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFCFF, 0xF8FFF4FF, 0xEEFFE9FF, 0xE4FFDEFF, 0xD9FFD4FF, 0xCFFFCAFF, + 0xC4FFBFFF, 0xC1FF8BFF, 0x01F0000F, 0x00000000, 0x00030034, 0x00240000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0x00C39CFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFDFF, 0xF7FFF2FF, 0xEDFFE7FF, 0xE1FFDCFF, 0xD7FFD2FF, 0xCCFFC6FF, 0xC8FF90FF, 0x01F0000F, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000002, 0x00CA73FF, 0xC3FFC3FF, 0xC3FFC3FF, 0xC3FFC3FF, 0xC3FFC3FF, 0xC3FFC0FF, 0xBDFFBAFF, 0xB6FFB2FF, + 0xAEFFA9FF, 0xA6FFA2FF, 0x9EFF9AFF, 0x95FF92FF, 0x93FF6AFF, 0x01F80010, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x009901F0, 0x02F002F0, + 0x02F002F0, 0x02F002F0, 0x02F002F0, 0x02F002F0, 0x02F002F0, 0x02F002F0, 0x02F002F0, 0x02F002F0, 0x02F002F0, + 0x02F001F0, 0x02F001F0, 0x00C40008, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0003000F, 0x000F000F, 0x000F000F, 0x000F000F, 0x000F000F, + 0x000F000F, 0x000F000F, 0x000F000F, 0x000F000F, 0x000F000F, 0x000F000F, 0x000F000F, 0x000F000F, 0x00060000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, +}; +static Gfx D_8821EE80[] = { + gsSPEndDisplayList(), +}; +u32 D_8821EE88[] = { + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000009, 0x00170029, 0x00340035, 0x00260000, 0x00000000, 0x00000000, 0x00000023, + 0x00350034, 0x002B001A, 0x000A0000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0006002A, 0x0055007D, 0x00AC00D9, 0x00F200F7, + 0x00FB00FB, 0x00F60095, 0x00000000, 0x00000000, 0x007F00F5, 0x00FB00FB, 0x00F800F3, 0x00DC00B1, 0x00820059, + 0x002F0009, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000000F, + 0x00460086, 0x00D100F8, 0x00FF03FF, 0x17FF33FF, 0x4CFF5EFF, 0x6BFF6DFF, 0x32FF00FC, 0x00320000, 0x00000025, + 0x00F825FF, 0x6BFF6DFF, 0x62FF50FF, 0x39FF1CFF, 0x04FF00FF, 0x00F900D8, 0x008D004D, 0x00140000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x0000002B, 0x007F00DC, 0x00FF00FF, 0x22FF55FF, 0x8EFFCBFF, 0xE9FFEAFF, + 0xECFFEEFF, 0xEEFFF1FF, 0xAEFF03FF, 0x00800000, 0x0000005D, 0x02FF9CFF, 0xF0FFEAFF, 0xEBFFE9FF, 0xE7FFE9FF, + 0xCFFF8DFF, 0x59FF28FF, 0x01FF00FF, 0x00E30087, 0x00320000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000025, 0x009400F4, + 0x00FF22FF, 0x66FFB7FF, 0xF4FFFFFF, 0xBDFF76FF, 0xC8FFF7FF, 0xEAFFE5FF, 0xE0FFDFFF, 0xD1FF1FFF, 0x00AA0000, + 0x00000088, 0x18FFD3FF, 0xBCFF35FF, 0x32FF31FF, 0x33FF4FFF, 0xAAFFFFFF, 0xFFFFF7FF, 0xBFFF6DFF, 0x29FF00FF, + 0x00F800A0, 0x002F0000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x006100EA, 0x00FF37FF, 0x99FFF1FF, 0xFFFFFFFF, 0xFFFFFFFF, 0x67FF00FF, + 0x9BFFFBFF, 0xE8FFE4FF, 0xE0FFDDFF, 0xDDFF4BFF, 0x00C60001, 0x000000B1, 0x36FFDEFF, 0xAFFF00FF, 0x00FF0AFF, + 0x08FF00FF, 0x00FF94FF, 0xFFFFFFFF, 0xFFFFFFFF, 0xF4FFA3FF, 0x40FF00FF, 0x00F10070, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000007B, 0x00FF20FF, + 0x98FFFAFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x70FF00FF, 0xA0FFFAFF, 0xE8FFE4FF, 0xE0FFDBFF, 0xE4FF6AFF, + 0x00DB0006, 0x000300D0, 0x4CFFE3FF, 0xAFFF00FF, 0x41FFDEFF, 0xE5FF87FF, 0x00FF31FF, 0xFAFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFDFFA6FF, 0x2AFF00FF, 0x00900000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x004F00FF, 0x40FFDFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0x70FF00FF, 0xA0FFFAFF, 0xE8FFE4FF, 0xE0FFDBFF, 0xE3FF7CFF, 0x00E8000A, 0x000800E3, 0x5CFFE8FF, 0xAFFF00FF, + 0x47FFF0FF, 0xF9FFE8FF, 0x09FF1BFF, 0xF3FFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xE8FF4FFF, 0x00FF0069, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000004, 0x00C224FF, + 0xECFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x70FF00FF, 0xA0FFFAFF, 0xE8FFE4FF, 0xE0FFDBFF, + 0xE3FF86FF, 0x00ED0012, 0x000D00EA, 0x67FFEAFF, 0xAFFF00FF, 0x45FFECFF, 0xF5FFADFF, 0x01FF2DFF, 0xF9FFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFF4FF, 0x32FF00D4, 0x00060000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x0000000F, 0x00F16AFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0x70FF00FF, 0xA0FFFAFF, 0xE8FFE4FF, 0xE0FFDBFF, 0xE1FF8DFF, 0x00F00017, 0x001100ED, 0x70FFE9FF, + 0xAFFF03FF, 0x12FF3CFF, 0x3BFF0CFF, 0x00FF82FF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0x91FF00F1, 0x00100000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000008, + 0x00D93FFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x70FF00FF, 0xA0FFFAFF, 0xE8FFE4FF, + 0xE0FFDBFF, 0xE1FF8DFF, 0x00F00018, 0x001100ED, 0x70FFE9FF, 0xAFFF03FF, 0x06FF17FF, 0x04FF00FF, 0x66FFFAFF, + 0xFEFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x57FF00E2, 0x000A0000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x007701FF, 0x84FFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0x70FF00FF, 0xA0FFFAFF, 0xE8FFE4FF, 0xE0FFDBFF, 0xE2FF87FF, 0x00EE0012, 0x000E00EB, + 0x68FFEAFF, 0xAFFF00FF, 0x42FFEDFF, 0x99FF00FF, 0x5DFFFFFF, 0xFEFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFF98FF, 0x01FF0096, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x000D00BD, 0x00FF69FF, 0xE9FFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x70FF00FF, 0xA8FFFFFF, + 0xF3FFEFFF, 0xE7FFDBFF, 0xE3FF7DFF, 0x00E8000A, 0x000800E4, 0x5DFFE8FF, 0xAFFF00FF, 0x46FFF2FF, 0xE4FF20FF, + 0x08FFCCFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFF0FF, 0x78FF01FF, 0x00CD0013, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000015, 0x00B600FF, 0x27FFA4FF, + 0xF6FFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x70FF00FF, 0x6DFFABFF, 0x9EFF9AFF, 0xAFFFDCFF, 0xE4FF6CFF, 0x00DC0006, + 0x000300D2, 0x4DFFE3FF, 0xAFFF00FF, 0x45FFEAFF, 0xFCFF85FF, 0x00FF59FF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFAFF, + 0xADFF32FF, 0x00FF00C3, 0x00200000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x0004007C, 0x00EB00FF, 0x33FF9DFF, 0xE6FFFFFF, 0xFFFFFFFF, 0x6BFF00FF, + 0x00FF00FF, 0x00FF00FF, 0x3BFFE0FF, 0xDFFF4FFF, 0x00C80001, 0x000000B4, 0x38FFDEFF, 0xADFF00FF, 0x3AFFEAFF, + 0xF4FFD4FF, 0x05FF00FF, 0xC9FFFFFF, 0xFFFFEBFF, 0xA5FF3EFF, 0x00FF00F1, 0x00890009, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x0027009B, 0x00ED00FF, 0x18FF6EFF, 0xB5FFEBFF, 0xAAFF66FF, 0x5DFF57FF, 0x52FF50FF, 0x7BFFE1FF, 0xD2FF23FF, + 0x00AD0000, 0x0000008C, 0x1CFFD2FF, 0xC7FF6FFF, 0x95FFEBFF, 0xF1FFFDFF, 0xAFFF85FF, 0xA9FFBBFF, 0x76FF1EFF, + 0x00FF00F2, 0x00A50032, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00230085, 0x00D000FF, 0x00FF1AFF, + 0x61FF9FFF, 0xC4FFE1FF, 0xEDFFF5FF, 0xF3FFF0FF, 0xB7FF04FF, 0x00860000, 0x00000061, 0x03FFA5FF, 0xF4FFFDFF, + 0xFAFFE7FF, 0xDCFFC1FF, 0xA8FF77FF, 0x28FF00FF, 0x00FF00D6, 0x008E002B, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00060045, 0x009300CB, 0x00F500FF, 0x05FF12FF, 0x37FF63FF, 0x7CFF87FF, + 0x46FF00FE, 0x003B0000, 0x0000002B, 0x00FB35FF, 0x85FF7CFF, 0x65FF3AFF, 0x14FF05FF, 0x00FF00F8, 0x00CF0099, + 0x004D0009, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000005, 0x00250066, 0x009700B8, 0x00D900F2, 0x00F900FD, 0x00F800A2, 0x00010000, 0x00000000, 0x008C00F7, + 0x00FD00FA, 0x00F300DC, 0x00BB009A, 0x006C002C, 0x00060000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00090017, + 0x0030003D, 0x002C0002, 0x00000000, 0x00000000, 0x00000029, 0x003D0031, 0x001A000A, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0xDF000000, 0x00000000, 0xB56BA4A7, 0x9CE7A4A7, 0x9CE5A4E7, 0xA4E7A4A7, 0xA4E7A4E9, 0xA4E7A4E7, + 0xA4E7ACE9, 0xA4E9AD27, 0xAD29A4E9, 0xAD29AD29, 0xACE9AD29, 0xAD29AD29, 0xAD29AD29, 0xAD29AD2B, 0xAD2BB52B, + 0xAD29AD2B, 0xB56BAD29, 0xB52BAD6B, 0xB529AD2B, 0xB56BAD6B, 0xF7BCFFFE, 0xFFFEFFFE, 0xFFFEFFFE, 0xFFFEFFFE, + 0x9C658C1F, 0x93E38C21, 0x94219423, 0x94239C63, 0x94639C23, 0x9C659C63, 0x94659C63, 0x9C65A4A5, 0x9CA5A4A7, + 0xA4A5A4A7, 0xA4A7A4E7, 0xA4A7ACE7, 0xA4E7ACA7, 0xACE7A4E9, 0xACE9ACE9, 0xACE7AD29, 0xACE9AD29, 0xACE9ACE9, + 0xACE9ACE9, 0xAD29A4A7, 0xDEF4FFFE, 0xFFFEFFFE, 0xFFFEFFFE, 0xFFFEFFFE, 0x9CA593E1, 0x8C219423, 0x94239463, + 0x9C239463, 0x9C639C63, 0x94659C63, 0x9C659C65, 0x9CA59CA5, 0xA4A79C65, 0xA4A5A4E7, 0xA4A7A4A7, 0xA4A7A4E7, + 0xA4E7A4E7, 0xACE9ACE7, 0xA4E9ACE7, 0xACE9A4E7, 0xACE9AD29, 0xACE9AD29, 0xB529ACE9, 0xAD29ACE9, 0xA529C5EF, + 0xBDEFDEB5, 0xFFFEFFFE, 0xFFFEFFFE, 0x9CA593E1, 0x94219423, 0x94219463, 0x942393E1, 0x83DF7B5D, 0x7B5B7B5D, + 0x7B5D7B5D, 0x7B5D7B5D, 0x7B5B7B9D, 0x7B5D7B5D, 0x7B5B7B9D, 0x7B5D7B5D, 0x7B5D7B5D, 0x7B5D7B9D, 0x7B5D7B5D, + 0x7B9D7B9D, 0x835D7B9D, 0x839D839F, 0x9CA7B529, 0xAD29ACE9, 0xB529AD2B, 0xACE7B52B, 0xFFFEFFFE, 0xFFFEFFFE, + 0xA4E9839D, 0x8BDF839F, 0x8B9F8C21, 0x8BE18BDF, 0x839D839F, 0x7B5D839D, 0x7B5B7B5D, 0x7B5D7B5D, 0x7B9D7B5D, + 0x7B5D7B9D, 0x7B5D7B5D, 0x7B5D7B9D, 0x7B5D7B9D, 0x7B5D7B5D, 0x7B5D839D, 0x7B9D839D, 0x835D839D, 0x839D7B5D, + 0x7B9D9C63, 0xA4A79CA5, 0xA4679CA5, 0xA465A527, 0xFFFEFFFE, 0xFFFEFFFE, 0xAD298BDF, 0x8BE18BE1, 0x8C218BE1, + 0x94219421, 0x8BE18BE1, 0x8BDF839D, 0x839F839F, 0x839F839F, 0x839D8BDF, 0x839F8B9F, 0x839D839F, 0x839D839F, + 0x839F8BDF, 0x839D839F, 0x8BDF839D, 0x839F8B9F, 0x83DF839F, 0x8B9F839F, 0x83DF839D, 0xA465A4E7, 0xA4A7A4A7, + 0xA4A5AD29, 0xFFFEFFFE, 0xFFFEFFFE, 0xA4E98BDF, 0x8BDF8BE1, 0x8BE19421, 0x9CA59C65, 0x9C659421, 0x94239421, + 0x8BE19421, 0x8BE18BE1, 0x8BE19421, 0x94219421, 0x94239C65, 0x94619423, 0x94239423, 0x9C639463, 0x94239C23, + 0x9461A467, 0x94639C63, 0x94238BDF, 0x8BE18BDF, 0x9423A4E7, 0xA4659CA5, 0xA4A5A4E9, 0xFFFEFFFE, 0xFFFEFFFE, + 0xAD29839F, 0x8BDF8BE1, 0x8BE1A4A5, 0xA4E9ACE7, 0xA4A7A4E5, 0x9C679CA3, 0x9C659C63, 0x9C259463, 0x9C639C65, + 0x9465A4A5, 0xACE79CA7, 0xB529A4A7, 0xAD29AD2B, 0xB529ACE9, 0xA4A7AD69, 0xACA7AD29, 0xAD2BAD29, 0xA4659463, + 0x9C638BE3, 0x9C63A4E7, 0xA4A7A4A7, 0x9CA5ACE9, 0xFFFEFFFE, 0xFFFEFFFE, 0xAD298BE1, 0x8BDF8BE1, 0x8BE1ACE7, + 0xAD29AD29, 0xACE9B52B, 0xAD29ACE7, 0xA4E7B52B, 0xAD29A4A7, 0xA4E7A4E7, 0xACA7A4E9, 0xA4E7A4A5, 0xACE9A4E7, + 0xACE7AD29, 0xA4E9ACA7, 0xA4E7A4A7, 0xA4E7ACE7, 0xA4E9ACE7, 0xA4A7A4E7, 0x9CA79C63, 0x9C65ACE9, 0xA4A5A4A7, + 0x9CA7AD27, 0xFFFEFFFE, 0xFFFEFFFE, 0xA4E793E1, 0x8C219421, 0x94219CA7, 0xB52BB529, 0xAD29AD29, 0xACE9ACE9, + 0xACE9AD29, 0xAD29B529, 0xACE99CA7, 0xA4A7A4E7, 0xA4E7ACE9, 0xA4A5ACE9, 0xA4E7A4E7, 0xA4E7ACA7, 0xA4E7A4A7, + 0xA4E9ACE7, 0xA4E9ACE9, 0xAD29ACE7, 0xA4E7A4A7, 0xA4A7A4E7, 0xA4A7A4E7, 0xA4A7AD29, 0xFFFEFFFE, 0xFFFEFFFE, + 0xAD29839F, 0x8BDF8BE1, 0x83DF9423, 0xAD29B52B, 0xB529AD29, 0xAD29ACE9, 0xA4E7A4A7, 0xA4E7A4E7, 0xA4E7A4E7, + 0xACA7A4E7, 0xACA7A4E9, 0xACE7A529, 0xACE9ACE9, 0xACE9ACE9, 0xAD29AD29, 0xACE9AD29, 0xB52BAD29, 0xAD2BB529, + 0xACE9A4E7, 0xA4A7A4A5, 0x9CA5A4A7, 0x9CA5A4E7, 0xFFFEFFFE, 0xFFFEFFFE, 0xA4E78C21, 0x93E39421, 0x94239423, + 0x9CA5B529, 0xB52BAD29, 0xAD29ACE7, 0xACE9A4E9, 0xACE9A4E7, 0xACE7ACE7, 0xACE7ACE7, 0xACE7A4E9, 0xACE9AD27, + 0xACE9AD29, 0xAD29AD29, 0xAD29AD29, 0xB529AD2B, 0xB529B52B, 0xB52BB52B, 0xAD29A4E7, 0xACE9ACE7, 0xACE7A4E7, + 0xACE9A529, 0xFFFEFFFE, 0xFFFEFFFE, 0x9CA593E1, 0x8C219423, 0x94219423, 0x94239C63, 0xAD29A4E9, 0xACE7ACE9, + 0xACE9ACE9, 0xA4E7AD29, 0xACE9ACE9, 0xACE9ACE9, 0xAD27ACE9, 0xAD29AD29, 0xACEBB529, 0xB529AD2B, 0xAD29B52B, + 0xB529B52B, 0xAD69B52B, 0xB52BAD29, 0xAD29ACE9, 0xAD29ACE7, 0xAD29AD29, 0xACE9B56B, 0xFFFEFFFE, 0xFFFEFFFE, + 0x9CA58BE1, 0x93E19421, 0x94239423, 0x94239421, 0x9C639425, 0x9C639463, 0x9C659C65, 0x9C659CA5, 0xA4659CA5, + 0xA4A59CA7, 0xA4A7A4A5, 0xA4E7A4A7, 0xA4E7A4A7, 0xA4E7A4A7, 0xACE7A4E7, 0xACE9ACE7, 0xA4A9AD27, 0xA4E9ACE9, + 0xACE9A4E9, 0xACE7AD29, 0xAD29ACE9, 0xACE9AD69, 0xFFFEFFFE, 0xFFFEFFFE, 0x9CA58BE1, 0x94219423, 0x94218BE1, + 0x93E18C21, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BDF, 0x93E18C21, 0x93E18BE1, 0x8C218BE1, 0x8BE18C21, + 0x8BE18BE1, 0x8C218BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE193E1, 0x8BE18BE1, 0x8BE1941F, 0x9423AD29, 0xACE9ACE9, + 0xACE7AD6B, 0xFFFEFFFE, 0xFFFEFFFE, 0x9CA58BE1, 0x93E19421, 0x94219421, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, + 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, + 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BDF, 0x9C63AD29, 0xACE9ACE9, 0xAD27AD2B, 0xFFFEFFFE, 0xFFFEFFFE, + 0x9C658C1F, 0x93E38C21, 0x94219421, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, + 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, + 0x8BE18BDF, 0x9C63ACE9, 0xA4E9ACE9, 0xAD27AD2B, 0xFFFEFFFE, 0xFFFEFFFE, 0x9CA58BE1, 0x93E19421, 0x8C219421, + 0x8BE193E1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, + 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BDF, 0x9463ACE9, 0xACE9ACE7, + 0xAD29AD2B, 0xFFFEFFFE, 0xFFFEFFFE, 0x94638BE1, 0x8BDF9423, 0x94219421, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, + 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, + 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BDF, 0x9423AD29, 0xACE9ACE9, 0xA4E7AD29, 0xFFFEFFFE, 0xFFFEFFFE, + 0x7B9D7B5D, 0x94219421, 0x8BE39421, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, + 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, + 0x8BE18BDF, 0x9C63ACE9, 0xA4E7AD29, 0x94239423, 0xFFFEFFFE, 0xFFFEFFFE, 0x7B9F7B5B, 0x94218BE1, 0x94218BE1, + 0x94218BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, + 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BDF, 0x9463ACE9, 0xACE7ACE9, + 0x94239461, 0xFFFEFFFE, 0xFFFEFFFE, 0x839F735B, 0x94219421, 0x93E18C21, 0x93E18BE1, 0x8BE18BE1, 0x8BE18BE1, + 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, + 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BDF, 0x9C63A4E9, 0xACE7ACE9, 0x94219423, 0xFFFEFFFE, 0xFFFEFFFE, + 0x7B9F7B5B, 0x94218BE1, 0x94218C23, 0x93DF8BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, + 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, + 0x8BE18BDF, 0x9C63A4E9, 0xA4A7ACE7, 0x94239463, 0xFFFEFFFE, 0xFFFEFFFE, 0x7B9F7B5B, 0x94218BE1, 0x94219421, + 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, + 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BDF, 0x9C63A4A7, 0xA4E9ACE7, + 0x94239463, 0xFFFEFFFE, 0xFFFEFFFE, 0x7B9F7B5B, 0x94218BE1, 0x94218BE1, 0x94218BE1, 0x8BE18BE1, 0x8BE18BE1, + 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, + 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BDF, 0x9C23A4E9, 0xACE7ACE7, 0x8C239423, 0xFFFEFFFE, 0xFFFEFFFE, + 0x7B9F7B5B, 0x94218BE1, 0x8BE19421, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, + 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, + 0x8BE18BDF, 0x9423ACE7, 0xA4E7A4A7, 0x94239463, 0xFFFEFFFE, 0xFFFEFFFE, 0x7B9F7B5B, 0x94218BE1, 0x8BDF9423, + 0x8BDF8BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, + 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BDF, 0x9423ACE7, 0xA4E7ACA7, + 0x8C239463, 0xFFFEFFFE, 0xFFFEFFFE, 0x7B9F7B5B, 0x94218BE1, 0x8BDF9423, 0x8BDF8BE1, 0x8BE18BE1, 0x8BE18BE1, + 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, + 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BDF, 0x9423A4E7, 0xA4A7A4E7, 0x94219423, 0xFFFEFFFE, 0xFFFEFFFE, + 0x7B9F7B5B, 0x8BDF8BE1, 0x8BE19421, 0x8BDF8BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, + 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, + 0x8BE18BDF, 0x9423A4E7, 0xA4A7A4E7, 0x93E19463, 0xFFFEFFFE, 0xFFFEFFFE, 0x7B9F7B5B, 0x8BE18BDF, 0x93E18C21, + 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, + 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BDF, 0x9423A4E7, 0xA465A4E7, + 0x8C219423, 0xFFFEFFFE, 0xFFFEFFFE, 0x7B9F7B5B, 0x8BDF8BE1, 0x8BDF9423, 0x8BDF8BE1, 0x8BE18BE1, 0x8BE18BE1, + 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, + 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BDF, 0x9423A4E7, 0xA465A4A5, 0x8C239421, 0xFFFEFFFE, 0xFFFEFFFE, + 0x7B9F7B5B, 0x8BDF8BE1, 0x8BDF93E1, 0x8C218BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, + 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, + 0x8BE18BDF, 0x9423A4A5, 0x9CA5A465, 0x8C239461, 0xFFFEFFFE, 0xFFFEFFFE, 0x7B9F7B5B, 0x8BDF8BE1, 0x8BDF8BE1, + 0x94218BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, + 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BDF, 0x94239CA5, 0x9CA5A4A7, + 0x8BE19421, 0xFFFEFFFE, 0xFFFEFFFE, 0x7B9F7B5B, 0x8BDF839F, 0x8BE19421, 0x8BDF8BE1, 0x8BE18BE1, 0x8BE18BE1, + 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, + 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BDF, 0x9423A4A5, 0x9C659CA5, 0x93E19463, 0xFFFEFFFE, 0xFFFEFFFE, + 0x7B9F7B5B, 0x8BDF8BDF, 0x8BE18BE1, 0x8BDF8BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, + 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, + 0x8BE18BDF, 0x94239CA5, 0x9C639C65, 0x94219423, 0xFFFEFFFE, 0xFFFEFFFE, 0x7B9F7B5B, 0x8BDF839F, 0x8BDF8BE1, + 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, + 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BDF, 0x94239C63, 0x9C659C63, + 0x8C219423, 0xFFFEFFFE, 0xFFFEFFFE, 0x7B9F7B5B, 0x8BDF839F, 0x8BDF8BE1, 0x8BDF8BE1, 0x8BE18BE1, 0x8BE18BE1, + 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, + 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BDF, 0x94239C63, 0x9C659C63, 0x8C219423, 0xFFFEFFFE, 0xFFFEFFFE, + 0x7B9F7B5B, 0x8BDF839F, 0x839F9421, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, + 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, + 0x8BE18BDF, 0x94239C63, 0x9C639C65, 0x8BE19421, 0xFFFEFFFE, 0xFFFEFFFE, 0x839F735B, 0x839F839F, 0x839F9421, + 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, + 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BDF, 0x94239C63, 0x94639C65, + 0x8BDF9423, 0xFFFEFFFE, 0xFFFEFFFE, 0x7B9F7B5B, 0x839F839D, 0x8BDF8BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, + 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, + 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BDF, 0x94239C63, 0x94639C23, 0x8C219423, 0xFFFEFFFE, 0xFFFEFFFE, + 0x839F735B, 0x839D8B9F, 0x83DF8BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, + 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, + 0x8BE18BDF, 0x94239423, 0x94639463, 0x93E19423, 0xFFFEFFFE, 0xFFFEFFFE, 0x7B9F7B5B, 0x839D83DF, 0x839F93E1, + 0x8BDF8BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, + 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BDF, 0x94239421, 0x94239C63, + 0x8BE19463, 0xFFFEFFFE, 0xFFFEFFFE, 0x839F735B, 0x839D839F, 0x839F8C21, 0x8BDF8BE1, 0x8BE18BE1, 0x8BE18BE1, + 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, + 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BDF, 0x94219423, 0x94239421, 0x8BE19463, 0xFFFEFFFE, 0xFFFEFFFE, + 0x839F735B, 0x839D839F, 0x839D8BDF, 0x8BE18BE1, 0x8BE193E1, 0x8BE18BDF, 0x93E18BE1, 0x93E18BE1, 0x8BDF93E1, + 0x8BE18BE1, 0x8BE18BE1, 0x8BE18BE1, 0x8BE193E1, 0x8BDF8BE1, 0x8BE18BE1, 0x8BE193E1, 0x8BE18BE1, 0x8BE18BE1, + 0x8BE18BE1, 0x93E19421, 0x94239421, 0x8BE19463, 0xFFFEFFFE, 0xFFFEFFFE, 0x839F735B, 0x839D7B9D, 0x839F839D, + 0x839F8B9F, 0x8BDF8BDF, 0x839F8BDF, 0x839F8BDF, 0x8BDF8BE1, 0x8BDF8BDF, 0x839F835D, 0x7B9D839F, 0x7B5D839D, + 0x839F8C21, 0x8BE18BE1, 0x94218BE1, 0x94219421, 0x8BE19421, 0x94219421, 0x8BE19423, 0x94219421, 0x94219423, + 0x8BDF9423, 0xFFFEFFFE, 0xFFFEFFFE, 0x839F735B, 0x839D839F, 0x7B9D839D, 0x839F8B9F, 0x83DF839D, 0x8B9F839F, + 0x8BDF839F, 0x8BDF8BDF, 0x8BDF83DF, 0x8BA19421, 0x8BDF8BE1, 0x8BE19421, 0x93E18C1F, 0x8BE19421, 0x94218BE1, + 0x8BE18BE1, 0x94219421, 0x8BE19421, 0x8BE19423, 0x94218BE1, 0x94219421, 0x8BE19423, 0xFFFEFFFE, 0xFFFEFFFE, + 0x7B9F7B59, 0x7B9F835D, 0x839D839F, 0x839F839F, 0x839F839D, 0x839F839F, 0x8BDF839F, 0x8BDF8BDF, 0x839F8BDF, + 0x8BDF839F, 0x8BE19421, 0x8BE19421, 0x8BE18BDF, 0x8BE18BE1, 0x8C2193E1, 0x8BE18BE1, 0x94219421, 0x94218BE1, + 0x94218BE1, 0x94218BE1, 0x94218BE1, 0x8BE19461, 0xFFFEFFFE, 0xFFFEFFFE, 0x839F7359, 0x7B5F839D, 0x7B9D839F, + 0x839D839D, 0x839F839F, 0x839D8BDF, 0x839F839F, 0x839F839F, 0x8BDF839F, 0x8BDF8BDF, 0x839F8BE1, 0x8C218BDF, + 0x8BE18BE1, 0x8BDF8BE1, 0x8BE18BE1, 0x8BDF8BE1, 0x8BDF8BE1, 0x94218BE1, 0x8BDF9421, 0x8BE18BE1, 0x8C2193E1, + 0x8BDF9423, 0xFFFEFFFE, 0xFFFEFFFE, 0x7B9D731B, 0x7B5D7B9D, 0x835D7B9D, 0x835D7B9D, 0x839D835D, 0x839D839D, + 0x839F839D, 0x839F839F, 0x839F839F, 0x839F839D, 0x8B9F83DF, 0x8B9F83DF, 0x8B9F83DF, 0x8BE18BDF, 0x8BE18BDF, + 0x8BE18BE1, 0x8BDF8BDF, 0x8BE18BDF, 0x8BE18BE1, 0x8BDF8BE1, 0x8BDF93E1, 0x83DF9421, 0xFFFEFFFE, 0xFFFEFFFE, + 0x9CA583E1, 0x94218C21, 0x8C218C23, 0x94219423, 0x94239423, 0x8C239461, 0x94238C61, 0x94239423, 0x94639463, + 0x94219463, 0x94639423, 0x94639463, 0x94239463, 0x94639C65, 0x94639C63, 0x94639C65, 0x94639C65, 0x94639C65, + 0x94639C63, 0x94659C63, 0x9C639465, 0x9463AD29, 0xFFFEFFFE, 0xFFFEFFFE, 0xDF000000, 0x00000000, 0xF0FCFEFE, + 0xFEFEFCF0, 0xF0F0F0FE, 0xFEF0F0F0, 0xF0F0F0FE, 0xFEF0F0F0, 0xF0F0F0FE, 0xFEF0F0F0, 0xF0F0F0FE, 0xFEF0F0F0, + 0xF0F0F0FE, 0xFEF0F0F0, 0xF0F0F0FE, 0xFEF0F0F0, 0xF0F0F0FE, 0xFEF0F0F0, 0xF0F0F0FE, 0xFEF0F0F0, 0xF0F0F0FE, + 0xFEF0F0F0, 0xF0F0F0FE, 0xFEF0F0F0, 0xF0FCFEFE, 0xFEFEFCF0, 0xDF000000, 0x00000000, 0xFEFEFEFE, 0xFEF3F0F0, + 0xFEFEF3F3, 0xFCFEF3F0, 0xFEFEF0F0, 0xF3FEFCF0, 0xFEFEF0F0, 0xF3FEFEF0, 0xFEFEF0F0, 0xF0FEFEF0, 0xFEFEF0F0, + 0xF0FEFEF0, 0xFEFEF0F0, 0xF0FEFEF0, 0xFEFEF0F0, 0xF0FEFEF0, 0xFEFEF0F0, 0xF3FEFEF0, 0xFEFEF0F0, 0xF3FEFCF0, + 0xFEFEF3F3, 0xFCFEF3F0, 0xFEFEFEFE, 0xFEF3F0F0, 0xDF000000, 0x00000000, 0xFFFFFFF0, 0xF0F0F0F0, 0xF0F3F9F3, + 0xF0F0F0F0, 0xFFFFFFF0, 0xF0F0F0F0, 0xF0F9FFF9, 0xF0F0F0F0, 0xFFFFFFF0, 0xF0F0F0F0, 0xF0F3F9F3, 0xF0F0F0F0, + 0xFFFFFFF0, 0xF0F0F0F0, 0xF0F0F0F0, 0xF0F0F0F0, 0xFFFFFFF0, 0xF0F0F0F0, 0xF0F0F0F0, 0xF0F0F0F0, 0xFFFFFFF0, + 0xF0F0F0F0, 0xF0F3F9F3, 0xF0F0F0F0, 0xFFFFFFF0, 0xF0F0F0F0, 0xF0F9FFF9, 0xF0F0F0F0, 0xFFFFFFF0, 0xF0F0F0F0, + 0xF0F3F9F3, 0xF0F0F0F0, 0xFFFFFFFF, 0xFFFFFFFF, 0xF0F0F0F0, 0xF0F0F0F0, 0xFFFFFFFF, 0xFFFFFFFF, 0xF0F0F0F0, + 0xF0F0F0F0, +}; +static Gfx D_88220CC8[] = { + gsSPEndDisplayList(), +}; +u32 D_88220CD0[] = { + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x108418C7, 0x294B39CF, 0x4A115295, 0x5AD75AD7, 0x62D962D9, 0x62D75B17, 0x5AD75A97, 0x52954A51, + 0x398F294B, 0x18C71084, 0x08420000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000842, 0x1084294B, 0x421162D9, 0x6B9B7B9F, 0x841F7BE1, 0x739D7B9D, 0x739D8421, + 0x84219423, 0x8C638C23, 0x94638C21, 0x84638BE1, 0x7BDF739D, 0x739B6B1D, 0x739D7BDD, 0x735D6B59, 0x5AD741D1, + 0x294B1084, 0x08420000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000842, 0x18C639CF, 0x2109735B, 0x8C637C21, + 0x7B9D8421, 0x9CA79CE7, 0xAD29A529, 0xAD6BB56B, 0xB5ADBDAF, 0xBDEFBDED, 0xBDEFBDEF, 0xBDAFBDAD, 0xBDADB5AD, + 0xB56DAD69, 0xAD299CA7, 0x9CE79CA5, 0x94638C23, 0x7BDD6B1B, 0x739D7B9D, 0x6B5B2109, 0x314B18C7, 0x08420000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x1084294B, 0x52957BDF, 0x8C638421, 0x39CF8C21, 0xAD6BAD6B, 0xB5ADC631, 0xCDF1B5ED, 0xB56DA529, 0x9CA58421, + 0x7BDF735D, 0x735B6319, 0x5AD75AD7, 0x5AD75AD7, 0x62D76319, 0x735D739D, 0x7BDD8C23, 0x9465A4E5, 0xA4E9AD6B, + 0xAD6BA4E7, 0x94639465, 0x83DF314D, 0x5B177B9D, 0x6B1B4A53, 0x314B1082, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00001084, 0x318D5AD7, 0x842194A5, 0x7BDF94A5, 0xAD6BBDAD, 0x5297B5AB, + 0xC631CE31, 0xA4E96B9B, 0x52553A0F, 0x41CF3A11, 0x41CF4253, 0x52535B19, 0x63196B19, 0x635B6B5B, 0x63196319, + 0x63195AD7, 0x52954A53, 0x39CF31CF, 0x318D318D, 0x318D4211, 0x5A97841F, 0xACE9A529, 0xACE939CF, 0x83DF9463, + 0x7BDF6B19, 0x735D6B5B, 0x4A532909, 0x10840000, 0x00000000, 0x00000000, 0x00000000, 0x00002108, 0x4A53739D, + 0x9CE78C21, 0x94E7B5AD, 0xC5EFC631, 0xCE31C631, 0x5AD7AD2B, 0xC631A527, 0x398F5295, 0x7BDF8C63, 0x94A594E7, + 0x9CE79CE7, 0x9CE79CE7, 0x94A59CE7, 0x94A594A5, 0x8C638C63, 0x94A58421, 0x8C638C63, 0x84217BDF, 0x7BDF739D, + 0x6B5B5AD7, 0x4211294B, 0x735DAD29, 0x9CA539CF, 0x8C63ACE7, 0x9CA79CA5, 0x94637B9F, 0x62D76319, 0x5295294B, + 0x18C70000, 0x00000000, 0x00000000, 0x318D94A5, 0x94A5A529, 0xBDEFC631, 0xD673C671, 0xC5F1C631, 0xC62FC631, + 0x5295AD2B, 0xCE735AD7, 0x6319AD6B, 0xA5279CE9, 0x9CE79CE7, 0x94A594A5, 0x94A594A5, 0x8C6394A3, 0x8C638423, + 0x8C618423, 0x84218421, 0x841F7BE1, 0x7BDF7BDF, 0x7BDD739F, 0x7BDD739F, 0x841F5295, 0x41D1A529, 0x9CA539CF, + 0x8C23A4E5, 0x9C679CA5, 0x9CA59CA5, 0x94637B9F, 0x63195295, 0x5253214B, 0x00000000, 0x00000000, 0x7BDFDEF7, + 0xE6F7D6F7, 0xCE73CE31, 0xC631C631, 0xC631BE31, 0xC5F1C5F1, 0x52D5AD29, 0xCE335295, 0x739DA529, 0x9CE79CE7, + 0x94A594E5, 0x94A59465, 0x8CA39465, 0x8C638C63, 0x84618C23, 0x84618421, 0x83E17C1F, 0x83E17BDF, 0x7BDF73DD, + 0x7B9F739D, 0x739D739D, 0x739D52D5, 0x41D1A4E7, 0xA4E7398F, 0x8421A4E7, 0x9C659CA5, 0x94659CA3, 0x8C238421, + 0x83DF7B9D, 0x739D4A55, 0x00000000, 0x00000000, 0x8421E739, 0xD6B5D6B5, 0xCE31C631, 0xC631C631, 0xBDF1C5EF, + 0xC5EFBDEF, 0x5AD7A529, 0xCE335295, 0x739BA529, 0x94A79CE5, 0x94A594A5, 0x8C6594A5, 0x8C638C63, 0x8C638C61, + 0x84238421, 0x8421841F, 0x7BE17BDF, 0x841F739F, 0x7BDF739D, 0x739D739D, 0x739D6B5B, 0x739D5A95, 0x3A0FA4E9, + 0xA4A539CF, 0x83E1A4E7, 0x94659CA5, 0x94659C63, 0x8C6383DF, 0x7B9F739D, 0x739D5253, 0x00000000, 0x00000000, + 0x7BDFE739, 0xD6B5D6B5, 0xCE31C633, 0xC62FC631, 0xBDEFC5EF, 0xC5F1C5EF, 0x52D7AD29, 0xC6315A95, 0x6B9D9CE7, + 0x9CA794E5, 0x94658CA3, 0x94A58C63, 0x8C638C63, 0x8C238461, 0x84218421, 0x84217BDF, 0x83E17BDF, 0x73DD7BDF, + 0x739D739D, 0x739D739D, 0x6B5B6B5B, 0x739D5295, 0x39CFACE9, 0x9CA539CF, 0x8421A4A5, 0x9CA59465, 0x9C6594A5, + 0x8C2183E1, 0x7B9D739D, 0x739B5255, 0x00000000, 0x00000000, 0x7BDFE739, 0xD6B5D673, 0xC673C631, 0xC5F1C62F, + 0xC5EFBDEF, 0xBDEFBDEF, 0x5AD7A529, 0xCE315295, 0x6B5BA4E9, 0x94E59465, 0x8CA394A5, 0x8C638C63, 0x8C238461, + 0x84238C21, 0x7C21841F, 0x83E17C1F, 0x7B9F73DD, 0x7BDF739D, 0x739D739D, 0x739D6B5B, 0x6B5B6B5B, 0x6B5B5295, + 0x41D1A4E7, 0x9CA539CF, 0x83E19CE5, 0x9C659CA5, 0x94659463, 0x942383DF, 0x73DF735B, 0x735D5293, 0x00000000, + 0x00000000, 0x7BDFE739, 0xD6B5CE73, 0xCE33C631, 0xC62FC5F1, 0xBE2FC5EF, 0xBDEFBDEF, 0x5AD7A529, 0xC6315A95, + 0x6B5B9CE7, 0x8CA59463, 0x8CA59463, 0x8C638423, 0x8C638421, 0x84218421, 0x84217BDF, 0x7BDF7BDF, 0x7BDF739D, + 0x7BDF739D, 0x6B5B739D, 0x6B5B739D, 0x6B5B6319, 0x6B5B5295, 0x39CFA4E9, 0x9CA539CD, 0x8BE19CA7, 0x94A59C65, + 0x94639465, 0x94218421, 0x7B9D6B5D, 0x739B5255, 0x00000000, 0x00000000, 0x7BDFE739, 0xD6B5CE73, 0xCE31C631, + 0xBE31C5EF, 0xBDEFC5EF, 0xBDEFBDEF, 0x5A97A529, 0xC6315295, 0x6B5B9CE5, 0x8C659463, 0x8CA38C23, 0x84638C61, + 0x84238421, 0x841F7BE1, 0x841F7BDF, 0x7BDF7B9F, 0x73DF739D, 0x739D739D, 0x735B6B9D, 0x6B5B6B5B, 0x6B59631B, + 0x6B594A55, 0x41CFA4E7, 0x94A5398F, 0x8C219CA5, 0x94659C63, 0x94A59423, 0x8C6383DF, 0x7B9D6B5D, 0x735B5295, + 0x00000000, 0x00000000, 0x7BDFE739, 0xD6B5CE31, 0xC633C631, 0xC62FBDEF, 0xC5EFBDEF, 0xBDEFBDEF, 0x5A95A529, + 0xC6315295, 0x6B1B94E5, 0x8C658C63, 0x8C618C63, 0x84238C21, 0x84217C1F, 0x83E17BDF, 0x7BDF7BDF, 0x7BDF739D, + 0x739D739D, 0x739D6B5B, 0x739D6B5B, 0x63196B5B, 0x63196319, 0x6B5B4A53, 0x39CFA4E7, 0x9CA5398F, 0x8C219C65, + 0x94A59465, 0x9C639463, 0x8C2383DF, 0x7B9D6B5D, 0x735B5295, 0x00000000, 0x00000000, 0x7BDFE739, 0xD673CE73, + 0xC631C631, 0xC5F1BDEF, 0xBDEFBDEF, 0xBDEFBDEF, 0x5A95A529, 0xC6315295, 0x6B1994A7, 0x8C638C63, 0x84618C23, + 0x84218421, 0x841F7C21, 0x7BDF7BDF, 0x7BDF7B9F, 0x73DD739D, 0x739D739D, 0x735D6B5B, 0x6B9B6B1B, 0x6B59631B, + 0x635962D9, 0x63594A53, 0x39CFA4A7, 0x9CA5398F, 0x841F9C67, 0x9CA39465, 0x94639423, 0x8C6183E1, 0x7B9D6B5B, + 0x735D5253, 0x00000000, 0x00000000, 0x7BDFE739, 0xD673C673, 0xCE31BE31, 0xC5EFBDEF, 0xC5EFBDEF, 0xBDEFBDAF, + 0x5AD5A4E9, 0xC6315295, 0x631994A5, 0x8C618423, 0x8C618423, 0x841F7BE1, 0x841F7BE1, 0x7BDF7BDD, 0x739F7BDD, + 0x739D739D, 0x6B5D739B, 0x6B5D6B5B, 0x6B59631B, 0x63196319, 0x63196319, 0x63174213, 0x39CFA4E7, 0x9CA5398F, + 0x83DF9CA5, 0x94659463, 0x94639463, 0x8C2383DF, 0x7B9D6B5B, 0x735D5253, 0x00000000, 0x00000000, 0x7BDFE739, + 0xCE73CE33, 0xC631C62F, 0xC5F1BDEF, 0xBDEFBDAD, 0xBDEFBDAF, 0x5295A529, 0xC6315253, 0x631994A5, 0x84218C63, + 0x84218421, 0x7BDF8421, 0x7BDF7BDF, 0x7B9F73DD, 0x739D739D, 0x739D739D, 0x6B5B6B5B, 0x6B5B6B5B, 0x6B1B6359, + 0x63196319, 0x5AD762D9, 0x5B174213, 0x41CD9CE7, 0x9C6539CF, 0x83DF9CA5, 0x94639425, 0x94639463, 0x8C2183DF, + 0x7B9D6B5B, 0x6B5D5253, 0x00000000, 0x00000000, 0x7BDFE739, 0xCE73CE33, 0xC631C62F, 0xBDEFBDEF, 0xBDAFBDEF, + 0xBDEDBDAF, 0x5295A529, 0xC5F15293, 0x63199465, 0x84218421, 0x84217C1F, 0x83E17BDF, 0x7BDF7BDF, 0x73DD739D, + 0x739D739D, 0x735D6B9B, 0x6B5B6B5B, 0x6B1B6359, 0x63196319, 0x631962D9, 0x5B175AD7, 0x62D94211, 0x39CFA4E7, + 0x946339CF, 0x83DF9C65, 0x94639463, 0x94639423, 0x8C2183E1, 0x739D735B, 0x6B5B5255, 0x00000000, 0x00000000, + 0x7BDFE6F7, 0xCE75C671, 0xCDF1BE2F, 0xC5EFBDEF, 0xBDAFBDEF, 0xBDADBDAF, 0x5295A529, 0xC5EF5295, 0x62D98C63, + 0x7C1F8421, 0x84217BDF, 0x7BDF7BDF, 0x7BDF739D, 0x739D739D, 0x739D735D, 0x6B9B6B5B, 0x6B5B6319, 0x6B5B6319, + 0x63196319, 0x5AD75AD7, 0x62D952D5, 0x5AD74211, 0x39CFA4A7, 0x94A3398F, 0x83DF9CA5, 0x94239463, 0x94638C23, + 0x8C2183E1, 0x7B9D6B5B, 0x735B4A53, 0x00000000, 0x00000000, 0x7BDFDEF7, 0xCE73CE33, 0xC62FC5F1, 0xBDEFBDEF, + 0xBDADBDAF, 0xBDEDBDAD, 0x5295A529, 0xC5EF4A95, 0x62D98461, 0x842183E1, 0x7BDF7BDF, 0x7BDF73DD, 0x7B9D739F, + 0x739B6B9D, 0x735D6B5B, 0x6B5B6B5B, 0x63596B1B, 0x63196319, 0x5B1762D9, 0x5AD75AD7, 0x5AD752D5, 0x5A974211, + 0x39CD9CA7, 0x946539CD, 0x83DF9C65, 0x94639463, 0x8C239463, 0x8BE183DF, 0x739D6B5B, 0x735B4A53, 0x00000000, + 0x00000000, 0x7BDFDEF7, 0xCE73CE31, 0xC5F1BE2F, 0xBDAFBDEF, 0xBDAFBDAF, 0xBDEDBDAD, 0x5295A529, 0xBDEF5295, + 0x5AD78C23, 0x7C1F83DF, 0x7BDF73DF, 0x7B9F73DD, 0x739D739D, 0x735D6B9B, 0x735B6B5B, 0x635B6B1B, 0x63596319, + 0x631962D9, 0x5B175AD7, 0x5AD75AD7, 0x5A975295, 0x52D541D1, 0x39CF9CA5, 0x9C6531CD, 0x83DF9C65, 0x94639423, + 0x8C639421, 0x83E183DF, 0x7B9D6B5B, 0x735B5255, 0x00000000, 0x00000000, 0x7BDFDEF7, 0xCE31C633, 0xC62FBDF1, + 0xBDEDBDAF, 0xBDADBDAD, 0xBDAFBDAD, 0x52959CE9, 0xC62F5255, 0x5AD78421, 0x7BDF7BDF, 0x7BDF73DD, 0x7B9D739D, + 0x739D6B5D, 0x739B6B5B, 0x6B5B6B5B, 0x631B6319, 0x63196319, 0x63175AD9, 0x5AD75AD7, 0x5AD55297, 0x5AD55295, + 0x529539D1, 0x39CD9CA7, 0x9463398D, 0x83E19463, 0x94639463, 0x94238C21, 0x8C21839F, 0x739D6B5B, 0x735B4A55, + 0x00000000, 0x00000000, 0x7BDFDEB7, 0xCE71C631, 0xBDF1C5EF, 0xBDEFBDAD, 0xB5EFBDAD, 0xBDADBDAD, 0x52959CE7, + 0xC5F15293, 0x52D783E1, 0x7BDF7BDD, 0x739F7BDD, 0x739D6B5D, 0x739B6B5D, 0x6B9B6B5B, 0x6B1B6B59, 0x63196319, + 0x63195AD9, 0x63175AD7, 0x52D75A97, 0x52D55A95, 0x52954A55, 0x529539CF, 0x39CD9CA7, 0x9463398D, 0x83DF9465, + 0x94218C63, 0x94238C21, 0x8BE183DF, 0x739D6B5B, 0x735D5253, 0x00000000, 0x00000000, 0x7BDFDEB5, 0xCE73C631, + 0xBDEFC5F1, 0xBDEDBDAF, 0xB5ADBDAD, 0xBDADBDAD, 0x52959CE9, 0xC5EF5293, 0x52978421, 0x739D7BDF, 0x739D739D, + 0x739D6B5B, 0x739B6B5D, 0x6B59631B, 0x6B59631B, 0x63196317, 0x5AD95AD7, 0x5AD75AD7, 0x5AD75295, 0x52955295, + 0x52955293, 0x4A5539CF, 0x39CD9CA7, 0x942339CD, 0x7B9F9C65, 0x8C639421, 0x8C239421, 0x842183DF, 0x7B5D6B5B, + 0x6B5B5295, 0x00000000, 0x00000000, 0x7BDFDEB5, 0xC673C5F1, 0xC62FBDEF, 0xBDAFBDED, 0xBDADB56D, 0xB5ADB5AD, + 0x5295A4E7, 0xBDEF5255, 0x52958421, 0x739D739D, 0x739D739D, 0x6B5B739B, 0x6B5D6B59, 0x631B6B59, 0x63196319, + 0x5AD96317, 0x5AD95AD7, 0x5AD55297, 0x5AD55295, 0x4A555295, 0x4A535293, 0x4A5539CD, 0x318F9CA5, 0x9463398D, + 0x839F9465, 0x8C619423, 0x8C238C21, 0x8BDF83DF, 0x7B9F6B19, 0x6B5D5293, 0x00000000, 0x00000000, 0x7B9FD6F5, + 0xCE33C62F, 0xC5F1BDEF, 0xBDADB5EF, 0xBDADB56D, 0xB5ADB5AD, 0x5295A4E7, 0xBDAF5293, 0x52957BDF, 0x739F739B, + 0x739D6B5B, 0x6B5D6B5B, 0x6B59631B, 0x6B596319, 0x63195AD9, 0x63175AD7, 0x5AD75AD7, 0x52955297, 0x52955295, + 0x52934A55, 0x4A534A53, 0x4A5339CD, 0x318D9CA7, 0x942339CD, 0x7B9F9463, 0x94238C21, 0x8C239421, 0x83DF83DF, + 0x739D6B1B, 0x735B5295, 0x00000000, 0x00000000, 0x7BDFE6F7, 0xCE73C631, 0xC5F1BDEF, 0xBDADB5ED, 0xBD6DB5AD, + 0xB5ADB5AD, 0x5295A4A7, 0xBDEF5293, 0x525573DF, 0x739D739B, 0x6B5D735B, 0x6B5B635B, 0x6B596319, 0x63196319, + 0x62D95B17, 0x5AD75AD7, 0x5A9752D5, 0x52975295, 0x52955293, 0x4A554A53, 0x4A534A51, 0x4A13318D, 0x31CD9C67, + 0x9463398D, 0x7BDD9425, 0x94618C23, 0x8C218BE1, 0x8BE17BDF, 0x7B9D735B, 0x739D5253, 0x00000000, 0x00000000, + 0x4A5394A5, 0xA4E7BDEF, 0xC631BDEF, 0xBDAFBDAD, 0xB5ADB5AD, 0xB56DB5AD, 0x52559CE5, 0xC5EF4A55, 0x5293739F, + 0x739D6B5B, 0x6B5B6B5B, 0x6B59631B, 0x63196319, 0x63196317, 0x5AD95AD7, 0x5AD75AD5, 0x52975295, 0x52955295, + 0x52934A55, 0x4A534A53, 0x42514A13, 0x4211318D, 0x39CD9C65, 0x8C63398D, 0x7B9F9463, 0x94238C21, 0x8C218BE1, + 0x8BE18BE1, 0x739D5AD5, 0x5255318D, 0x00000000, 0x00000000, 0x6B5B9463, 0x3A1139CF, 0x7B9FB5AD, 0xBDEDBDAD, + 0xB56DB5AD, 0xB5ADB5AB, 0x52559CE7, 0xBDAD5255, 0x4A93739F, 0x6B5B6B5B, 0x6B5B6B59, 0x631B6319, 0x63196317, + 0x62D95B17, 0x5AD75AD7, 0x52975AD5, 0x52955295, 0x52954A55, 0x52534A53, 0x42534A51, 0x42134A11, 0x4211318D, + 0x318D9CA5, 0x9423318D, 0x7B9F9463, 0x8C218C21, 0x8BE38C1F, 0x8BE15A97, 0x298B20C7, 0x42534A11, 0x00000000, + 0x00000000, 0x739DCE73, 0xB56B8421, 0x318F735B, 0xBDEFB5AD, 0xB56BB5AD, 0xAD6BB56B, 0x4A959CA5, 0xBDAF5253, + 0x4A53739D, 0x6B5B635B, 0x6B196359, 0x631B6317, 0x63195AD7, 0x5AD75AD7, 0x5AD75AD7, 0x52955295, 0x52955295, + 0x4A534A53, 0x4A534A53, 0x4A534211, 0x42114211, 0x4211294D, 0x398D94A3, 0x9423318D, 0x7B9D9423, 0x8C218C21, + 0x8BE18C21, 0x5A972109, 0x52536B5B, 0x735B5255, 0x00000000, 0x00000000, 0x739DC631, 0xAD29AD6B, 0x7BDF5AD7, + 0xBDAFB56B, 0xB56BAD6B, 0xAD6BAD6B, 0x525394A5, 0xBD6D4A53, 0x4A536B9B, 0x6B1B6359, 0x63196319, 0x63195AD9, + 0x62D75AD7, 0x52D75AD5, 0x5A975295, 0x52954A95, 0x52534A93, 0x4A534A53, 0x4A134253, 0x4A114211, 0x3A11420F, + 0x41D1298B, 0x318D9463, 0x93E3318D, 0x7B9D8C21, 0x8BE1841F, 0x8BE183E1, 0x420F4A13, 0x7B9D6B1B, 0x6B594A53, + 0x00000000, 0x00000000, 0x739DCE33, 0xAD699CE9, 0x7B9D5AD7, 0xB5ABAD6D, 0xAD29AD2B, 0xAD6BAD29, 0x4A5394A5, + 0xB56B4A53, 0x4A536B5B, 0x63196319, 0x5AD76319, 0x5AD75AD7, 0x5AD75AD7, 0x5A9552D7, 0x52955295, 0x4A535295, + 0x4A534A53, 0x4A534A53, 0x42114A53, 0x42114211, 0x39CF39CF, 0x4211294B, 0x318D9463, 0x8BE1318D, 0x7B9D8C21, + 0x8BE18BDF, 0x83E183DF, 0x4A114A13, 0x739D6319, 0x6B194A53, 0x00000000, 0x00000000, 0x739DCE73, 0xAD2BA527, + 0x6B5B5295, 0xB56DAD29, 0xA56BAD29, 0xAD29AD29, 0x4A539465, 0xAD6B4A53, 0x4A11635B, 0x631962D7, 0x5B1962D7, + 0x5AD752D7, 0x5A9552D7, 0x52955295, 0x52935255, 0x4A934A55, 0x4A534A51, 0x4A134253, 0x42114211, 0x421141CF, + 0x3A0F39D1, 0x39CF294B, 0x318D9423, 0x8C21318D, 0x7B5D8C21, 0x83DF8C21, 0x83E18BDF, 0x41D14211, 0x7B9D6319, + 0x6B194A55, 0x00000000, 0x00000000, 0x739DC631, 0xAD299CE9, 0x6B595295, 0xAD2BAD69, 0xA4E9A529, 0xAD29A529, + 0x4A539463, 0xAD2B4A51, 0x42136319, 0x63175AD9, 0x5AD75AD5, 0x52975AD5, 0x52975295, 0x52935255, 0x4A954A53, + 0x52534A53, 0x42534A51, 0x42134211, 0x42114211, 0x41CF3A11, 0x39CF39CD, 0x39CF294B, 0x294B9463, 0x8BE1318B, + 0x735D8BE1, 0x83DF83DF, 0x83DF8BE1, 0x39CF4211, 0x7B5D6319, 0x6B194A53, 0x00000000, 0x00000000, 0x6B5BC631, + 0xA4E994E5, 0x6B1B5295, 0xAD69ACE9, 0xA529A529, 0xA529A4E7, 0x4A539463, 0xAD2B4253, 0x420F6B1B, 0x5B175AD9, + 0x5AD75AD5, 0x5A975295, 0x52D55255, 0x52954A95, 0x52534A53, 0x4A934A13, 0x4A534251, 0x42134211, 0x420F41D1, + 0x3A0F39D1, 0x39CD398F, 0x39CF214B, 0x314B8C21, 0x83E1314B, 0x735B83E1, 0x83DF83DD, 0x7B9F839F, 0x41CF4211, + 0x6B5B62D9, 0x6B194A53, 0x00000000, 0x00000000, 0x6B5BB5AD, 0x9CA794A3, 0x631B5295, 0xAD29A527, 0xA529A4E9, + 0xA4E7A4E9, 0x4A518C63, 0xAD2B6319, 0x290952D7, 0x5A9552D7, 0x5A955295, 0x4A955253, 0x4A954A53, 0x4A534A53, + 0x4A114253, 0x42114211, 0x42114211, 0x39CF39CF, 0x39CF39CF, 0x39CD318F, 0x318D318D, 0x318D18C7, 0x41CF8C21, + 0x7BDF314D, 0x735B839F, 0x83DF7B9D, 0x7B9F839D, 0x39CF41D1, 0x735B5AD9, 0x6B194A53, 0x00000000, 0x00000000, + 0x6319AD6B, 0x94638C63, 0x63195255, 0xA5279CA7, 0x9CE79CE7, 0x9CA59CA7, 0x42518C21, 0x9CE99CA5, 0x5253210B, + 0x294B2909, 0x214B2949, 0x29092109, 0x210B2109, 0x29092109, 0x21092109, 0x21092109, 0x20C92107, 0x190920C7, + 0x210918C7, 0x18C720C7, 0x18C718C7, 0x18C7318D, 0x839F841F, 0x839F318D, 0x731B83DF, 0x7B9F83DF, 0x7B9D7B9F, + 0x418F3A0F, 0x735B62D9, 0x6B194A53, 0x00000000, 0x00000000, 0x6319AD6B, 0x946394A5, 0x63195255, 0xA5299CE5, + 0x9CA79CE7, 0x9CA594A5, 0x42118C21, 0x94A59CA5, 0x9CA79463, 0x8C638C23, 0x8C639463, 0x8C219463, 0x8C239463, + 0x8C239463, 0x8C218C21, 0x8C218C23, 0x8C218C21, 0x8BE18421, 0x83DF83E1, 0x83DF83DF, 0x839F7BDF, 0x839F8C21, + 0x8C218BE1, 0x8421314B, 0x735D8BE1, 0x83DF83DF, 0x839F83DF, 0x41CF4211, 0x735D6B5B, 0x735B5253, 0x00000000, + 0x00000000, 0x52959CA5, 0x7C2183DF, 0x63194A53, 0x8C238C61, 0x8C2183E1, 0x84218421, 0x39CF735B, 0x83E183DF, + 0x7BDF8C21, 0x84218C21, 0x84218421, 0x83E18C21, 0x83E18C21, 0x83E183DF, 0x842183DF, 0x83DF83E1, 0x83DF7BDF, + 0x839F7BDF, 0x839F7B9D, 0x7B9F7B9D, 0x7B9D7B9D, 0x739D7B5B, 0x735D735B, 0x6B5B310B, 0x62D96B5B, 0x7359731B, + 0x73196B5B, 0x398F39CF, 0x6B195A97, 0x63174A13, 0x00000000, 0x00000000, 0x18C7318D, 0x318D294B, 0x294B314D, + 0x294B318B, 0x294B314B, 0x314B314B, 0x10C7294B, 0x314B294D, 0x294B294B, 0x294B314B, 0x294B294B, 0x294B294B, + 0x294B294B, 0x294B294B, 0x294B294B, 0x294B294B, 0x294B294B, 0x294B294B, 0x294B290B, 0x294B294B, 0x290B294B, + 0x2909294B, 0x21092909, 0x21091085, 0x18C72109, 0x21092109, 0x21092109, 0x20C718C9, 0x21092107, 0x210B18C5, + 0x00000000, 0x00000000, +}; +static Gfx D_882220D0[] = { + gsSPEndDisplayList(), +}; +u32 D_882220D8[] = { + 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, + 0x00010001, 0x00010001, 0x00010001, 0x0001BD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, + 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2B0001, 0x0001BD2B, 0xBD2B83DD, 0x190B2109, + 0x21092109, 0x21092109, 0x21092109, 0x21092109, 0x21092109, 0x21092109, 0x21092109, 0x83DFB52B, 0xBD2B0001, + 0x0001BD2B, 0x83DD190B, 0x6B19B569, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, + 0xBD2B6359, 0x2109839F, 0xB5690001, 0x0001BD2B, 0x83DD190B, 0xBD29BD2B, 0xD631D631, 0xD631D631, 0xD631D631, + 0xD631D631, 0xD631D631, 0xD631D631, 0xBD2BBD2B, 0x21497B9F, 0xBD290001, 0x0001BD2B, 0x83DD190B, 0xDE31E675, + 0xEEB7EEB7, 0xEEB7EEB7, 0xEEB7EEB7, 0xEEB7EEB7, 0xEEB7EEB7, 0xEEB7EEB7, 0xEEB7D5F1, 0x2149839D, 0xB52B0001, + 0x0001BD2B, 0x83DD190B, 0x6B19F6F7, 0xF6F9F6F9, 0xF6F9F6F9, 0xF6F9F6F9, 0xF6F9F6F9, 0xF6F9F6F9, 0xF6F9F6F9, + 0xF6F96319, 0x2149839F, 0xBD290001, 0x0001BD2B, 0xBD2B83DD, 0x190B2109, 0x21092109, 0x21092109, 0x21092109, + 0x21092109, 0x21092109, 0x21092109, 0x21092109, 0x83DFB52B, 0xBD2B0001, 0x0001BD2B, 0xBD2BBD2B, 0xBD2BBD2B, + 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2B0001, + 0x0001BD2B, 0xBD2B2149, 0x21092109, 0x21092109, 0x21092109, 0x21092109, 0x21092109, 0x21092109, 0x21092109, + 0x21092109, 0x2109BD6B, 0xBD2B0001, 0x0001BD2B, 0xBD2B2149, 0x7A138213, 0x82138213, 0x82138213, 0x82138213, + 0x82138213, 0x82138213, 0x82138213, 0x82138213, 0x2109B56B, 0xBD2B0001, 0x0001BD2B, 0xBD2B2149, 0x7A138213, + 0x82138213, 0x82138213, 0x82138213, 0x82138213, 0x82138213, 0x82138213, 0x82138213, 0x2109B56B, 0xBD2B0001, + 0x0001BD2B, 0xBD2B2149, 0x7A138213, 0x82138213, 0x82138213, 0x82138213, 0x82138213, 0x82138213, 0x82138213, + 0x82138213, 0x2109B56B, 0xBD2B0001, 0x0001BD2B, 0xBD2B2149, 0x7A138213, 0x82138213, 0x82138213, 0x82138213, + 0x82138213, 0x82138213, 0x82138213, 0x82138213, 0x2109B56B, 0xBD2B0001, 0x0001BD2B, 0xBD2B2149, 0x7A138213, + 0x82138213, 0x82138213, 0x82138213, 0x82138213, 0x82138213, 0x82138213, 0x82138213, 0x2109B56B, 0xBD2B0001, + 0x0001BD2B, 0xBD2B2149, 0x7A138213, 0x82138213, 0x82138213, 0x82138213, 0x82138213, 0x82138213, 0x82138213, + 0x82138213, 0x2109B56B, 0xBD2B0001, 0x0001BD2B, 0xBD2B2149, 0x7A138213, 0x82138213, 0x82138213, 0x82138213, + 0x82138213, 0x82138213, 0x82138213, 0x82138213, 0x2109B56B, 0xBD2B0001, 0x0001BD2B, 0xBD2B2149, 0x7A138213, + 0x82138213, 0x82138213, 0x82138213, 0x82138213, 0x82138213, 0x82138213, 0x82138213, 0x2109B56B, 0xBD2B0001, + 0x0001BD2B, 0xBD2B2149, 0x7A138213, 0x82138213, 0x82138213, 0x82138213, 0x82138213, 0x82138213, 0x82138213, + 0x82138213, 0x2109B56B, 0xBD2B0001, 0x0001BD2B, 0xBD2B2149, 0x7A138213, 0x82138213, 0x82138213, 0x82138213, + 0x82138213, 0x82138213, 0x82138213, 0x82138213, 0x2109B56B, 0xBD2B0001, 0x0001BD2B, 0xBD2B2149, 0x7A138213, + 0x82138213, 0x82138213, 0x82138213, 0x82138213, 0x82138213, 0x82138213, 0x82138213, 0x2109B56B, 0xBD2B0001, + 0x0001BD2B, 0xBD2B2149, 0x7A138213, 0x82138213, 0x82138213, 0x82138213, 0x82138213, 0x82138213, 0x82138213, + 0x82138213, 0x2109B56B, 0xBD2B0001, 0x0001BD2B, 0xBD2B2149, 0x21092109, 0x21092109, 0x21092109, 0x21092109, + 0x21092109, 0x21092109, 0x21092109, 0x21092109, 0x2109BD6B, 0xBD2B0001, 0x0001BD2B, 0xBD2BBD2B, 0xBD2BBD2B, + 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2B0001, + 0x0001BD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, + 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2B0001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, + 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, +}; +static Gfx D_882225B8[] = { + gsSPEndDisplayList(), +}; +u32 D_882225C0[] = { + 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, + 0x00010001, 0x00010001, 0x00010001, 0x0001BD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, + 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2B0001, 0x0001BD2B, 0xBD2B83DD, 0x190B2109, + 0x21092109, 0x21092109, 0x21092109, 0x21092109, 0x21092109, 0x21092109, 0x21092109, 0x83DFB52B, 0xBD2B0001, + 0x0001BD2B, 0x83DD190B, 0x6B19B569, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, + 0xBD2B6359, 0x2109839F, 0xB5690001, 0x0001BD2B, 0x83DD190B, 0xBD29BD2B, 0xD631D631, 0xD631D631, 0xD631D631, + 0xD631D631, 0xD631D631, 0xD631D631, 0xBD2BBD2B, 0x21497B9F, 0xBD290001, 0x0001BD2B, 0x83DD190B, 0xDE31E675, + 0xEEB7EEB7, 0xEEB7EEB7, 0xEEB7EEB7, 0xEEB7EEB7, 0xEEB7EEB7, 0xEEB7EEB7, 0xEEB7D5F1, 0x2149839D, 0xB52B0001, + 0x0001BD2B, 0x83DD190B, 0x6B19F6F7, 0xF6F9F6F9, 0xF6F9F6F9, 0xF6F9F6F9, 0xF6F9F6F9, 0xF6F9F6F9, 0xF6F9F6F9, + 0xF6F96319, 0x2149839F, 0xBD290001, 0x0001BD2B, 0xBD2B83DD, 0x190B2109, 0x21092109, 0x21092109, 0x21092109, + 0x21092109, 0x21092109, 0x21092109, 0x21092109, 0x83DFB52B, 0xBD2B0001, 0x0001BD2B, 0xBD2BBD2B, 0xBD2BBD2B, + 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2B0001, + 0x0001BD2B, 0xBD2B2149, 0x21092109, 0x21092109, 0x21092109, 0x21092109, 0x21092109, 0x21092109, 0x21092109, + 0x21092109, 0x2109BD6B, 0xBD2B0001, 0x0001BD2B, 0xBD2B2149, 0x3C154415, 0x44154415, 0x44154415, 0x44154415, + 0x44154415, 0x44154415, 0x44154415, 0x44154415, 0x2109B56B, 0xBD2B0001, 0x0001BD2B, 0xBD2B2149, 0x3C154415, + 0x44154415, 0x44154415, 0x44154415, 0x44154415, 0x44154415, 0x44154415, 0x44154415, 0x2109B56B, 0xBD2B0001, + 0x0001BD2B, 0xBD2B2149, 0x3C154415, 0x44154415, 0x44154415, 0x44154415, 0x44154415, 0x44154415, 0x44154415, + 0x44154415, 0x2109B56B, 0xBD2B0001, 0x0001BD2B, 0xBD2B2149, 0x3C154415, 0x44154415, 0x44154415, 0x44154415, + 0x44154415, 0x44154415, 0x44154415, 0x44154415, 0x2109B56B, 0xBD2B0001, 0x0001BD2B, 0xBD2B2149, 0x3C154415, + 0x44154415, 0x44154415, 0x44154415, 0x44154415, 0x44154415, 0x44154415, 0x44154415, 0x2109B56B, 0xBD2B0001, + 0x0001BD2B, 0xBD2B2149, 0x3C154415, 0x44154415, 0x44154415, 0x44154415, 0x44154415, 0x44154415, 0x44154415, + 0x44154415, 0x2109B56B, 0xBD2B0001, 0x0001BD2B, 0xBD2B2149, 0x3C154415, 0x44154415, 0x44154415, 0x44154415, + 0x44154415, 0x44154415, 0x44154415, 0x44154415, 0x2109B56B, 0xBD2B0001, 0x0001BD2B, 0xBD2B2149, 0x3C154415, + 0x44154415, 0x44154415, 0x44154415, 0x44154415, 0x44154415, 0x44154415, 0x44154415, 0x2109B56B, 0xBD2B0001, + 0x0001BD2B, 0xBD2B2149, 0x3C154415, 0x44154415, 0x44154415, 0x44154415, 0x44154415, 0x44154415, 0x44154415, + 0x44154415, 0x2109B56B, 0xBD2B0001, 0x0001BD2B, 0xBD2B2149, 0x3C154415, 0x44154415, 0x44154415, 0x44154415, + 0x44154415, 0x44154415, 0x44154415, 0x44154415, 0x2109B56B, 0xBD2B0001, 0x0001BD2B, 0xBD2B2149, 0x3C154415, + 0x44154415, 0x44154415, 0x44154415, 0x44154415, 0x44154415, 0x44154415, 0x44154415, 0x2109B56B, 0xBD2B0001, + 0x0001BD2B, 0xBD2B2149, 0x3C154415, 0x44154415, 0x44154415, 0x44154415, 0x44154415, 0x44154415, 0x44154415, + 0x44154415, 0x2109B56B, 0xBD2B0001, 0x0001BD2B, 0xBD2B2149, 0x21092109, 0x21092109, 0x21092109, 0x21092109, + 0x21092109, 0x21092109, 0x21092109, 0x21092109, 0x2109BD6B, 0xBD2B0001, 0x0001BD2B, 0xBD2BBD2B, 0xBD2BBD2B, + 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2B0001, + 0x0001BD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, + 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2B0001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, + 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, +}; +static Gfx D_88222AA0[] = { + gsSPEndDisplayList(), +}; +u32 D_88222AA8[] = { + 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, + 0x00010001, 0x00010001, 0x00010001, 0x0001BD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, + 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2B0001, 0x0001BD2B, 0xBD2B83DD, 0x190B2109, + 0x21092109, 0x21092109, 0x21092109, 0x21092109, 0x21092109, 0x21092109, 0x21092109, 0x83DFB52B, 0xBD2B0001, + 0x0001BD2B, 0x83DD190B, 0x6B19B569, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, + 0xBD2B6359, 0x2109839F, 0xB5690001, 0x0001BD2B, 0x83DD190B, 0xBD29BD2B, 0xD631D631, 0xD631D631, 0xD631D631, + 0xD631D631, 0xD631D631, 0xD631D631, 0xBD2BBD2B, 0x21497B9F, 0xBD290001, 0x0001BD2B, 0x83DD190B, 0xDE31E675, + 0xEEB7EEB7, 0xEEB7EEB7, 0xEEB7EEB7, 0xEEB7EEB7, 0xEEB7EEB7, 0xEEB7EEB7, 0xEEB7D5F1, 0x2149839D, 0xB52B0001, + 0x0001BD2B, 0x83DD190B, 0x6B19F6F7, 0xF6F9F6F9, 0xF6F9F6F9, 0xF6F9F6F9, 0xF6F9F6F9, 0xF6F9F6F9, 0xF6F9F6F9, + 0xF6F96319, 0x2149839F, 0xBD290001, 0x0001BD2B, 0xBD2B83DD, 0x190B2109, 0x21092109, 0x21092109, 0x21092109, + 0x21092109, 0x21092109, 0x21092109, 0x21092109, 0x83DFB52B, 0xBD2B0001, 0x0001BD2B, 0xBD2BBD2B, 0xBD2BBD2B, + 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2B0001, + 0x0001BD2B, 0xBD2B2149, 0x21092109, 0x21092109, 0x21092109, 0x21092109, 0x21092109, 0x21092109, 0x21092109, + 0x21092109, 0x2109BD6B, 0xBD2B0001, 0x0001BD2B, 0xBD2B2149, 0x3B214321, 0x43214321, 0x43214321, 0x43214321, + 0x43214321, 0x43214321, 0x43214321, 0x43214321, 0x2109B56B, 0xBD2B0001, 0x0001BD2B, 0xBD2B2149, 0x3B214321, + 0x43214321, 0x43214321, 0x43214321, 0x43214321, 0x43214321, 0x43214321, 0x43214321, 0x2109B56B, 0xBD2B0001, + 0x0001BD2B, 0xBD2B2149, 0x3B214321, 0x43214321, 0x43214321, 0x43214321, 0x43214321, 0x43214321, 0x43214321, + 0x43214321, 0x2109B56B, 0xBD2B0001, 0x0001BD2B, 0xBD2B2149, 0x3B214321, 0x43214321, 0x43214321, 0x43214321, + 0x43214321, 0x43214321, 0x43214321, 0x43214321, 0x2109B56B, 0xBD2B0001, 0x0001BD2B, 0xBD2B2149, 0x3B214321, + 0x43214321, 0x43214321, 0x43214321, 0x43214321, 0x43214321, 0x43214321, 0x43214321, 0x2109B56B, 0xBD2B0001, + 0x0001BD2B, 0xBD2B2149, 0x3B214321, 0x43214321, 0x43214321, 0x43214321, 0x43214321, 0x43214321, 0x43214321, + 0x43214321, 0x2109B56B, 0xBD2B0001, 0x0001BD2B, 0xBD2B2149, 0x3B214321, 0x43214321, 0x43214321, 0x43214321, + 0x43214321, 0x43214321, 0x43214321, 0x43214321, 0x2109B56B, 0xBD2B0001, 0x0001BD2B, 0xBD2B2149, 0x3B214321, + 0x43214321, 0x43214321, 0x43214321, 0x43214321, 0x43214321, 0x43214321, 0x43214321, 0x2109B56B, 0xBD2B0001, + 0x0001BD2B, 0xBD2B2149, 0x3B214321, 0x43214321, 0x43214321, 0x43214321, 0x43214321, 0x43214321, 0x43214321, + 0x43214321, 0x2109B56B, 0xBD2B0001, 0x0001BD2B, 0xBD2B2149, 0x3B214321, 0x43214321, 0x43214321, 0x43214321, + 0x43214321, 0x43214321, 0x43214321, 0x43214321, 0x2109B56B, 0xBD2B0001, 0x0001BD2B, 0xBD2B2149, 0x3B214321, + 0x43214321, 0x43214321, 0x43214321, 0x43214321, 0x43214321, 0x43214321, 0x43214321, 0x2109B56B, 0xBD2B0001, + 0x0001BD2B, 0xBD2B2149, 0x3B214321, 0x43214321, 0x43214321, 0x43214321, 0x43214321, 0x43214321, 0x43214321, + 0x43214321, 0x2109B56B, 0xBD2B0001, 0x0001BD2B, 0xBD2B2149, 0x21092109, 0x21092109, 0x21092109, 0x21092109, + 0x21092109, 0x21092109, 0x21092109, 0x21092109, 0x2109BD6B, 0xBD2B0001, 0x0001BD2B, 0xBD2BBD2B, 0xBD2BBD2B, + 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2B0001, + 0x0001BD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, + 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2B0001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, + 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, +}; +static Gfx D_88222F88[] = { + gsSPEndDisplayList(), +}; +u32 D_88222F90[] = { + 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, + 0x00010001, 0x00010001, 0x00010001, 0x0001BD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, + 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2B0001, 0x0001BD2B, 0xBD2B83DD, 0x190B2109, + 0x21092109, 0x21092109, 0x21092109, 0x21092109, 0x21092109, 0x21092109, 0x21092109, 0x83DFB52B, 0xBD2B0001, + 0x0001BD2B, 0x83DD190B, 0x6B19B569, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, + 0xBD2B6359, 0x2109839F, 0xB5690001, 0x0001BD2B, 0x83DD190B, 0xBD29BD2B, 0xD631D631, 0xD631D631, 0xD631D631, + 0xD631D631, 0xD631D631, 0xD631D631, 0xBD2BBD2B, 0x21497B9F, 0xBD290001, 0x0001BD2B, 0x83DD190B, 0xDE31E675, + 0xEEB7EEB7, 0xEEB7EEB7, 0xEEB7EEB7, 0xEEB7EEB7, 0xEEB7EEB7, 0xEEB7EEB7, 0xEEB7D5F1, 0x2149839D, 0xB52B0001, + 0x0001BD2B, 0x83DD190B, 0x6B19F6F7, 0xF6F9F6F9, 0xF6F9F6F9, 0xF6F9F6F9, 0xF6F9F6F9, 0xF6F9F6F9, 0xF6F9F6F9, + 0xF6F96319, 0x2149839F, 0xBD290001, 0x0001BD2B, 0xBD2B83DD, 0x190B2109, 0x21092109, 0x21092109, 0x21092109, + 0x21092109, 0x21092109, 0x21092109, 0x21092109, 0x83DFB52B, 0xBD2B0001, 0x0001BD2B, 0xBD2BBD2B, 0xBD2BBD2B, + 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2B0001, + 0x0001BD2B, 0xBD2B2149, 0x21092109, 0x21092109, 0x21092109, 0x21092109, 0x21092109, 0x21092109, 0x21092109, + 0x21092109, 0x2109BD6B, 0xBD2B0001, 0x0001BD2B, 0xBD2B2149, 0x73CF73CF, 0x73CF73CF, 0x73CF73CF, 0x73CF73CF, + 0x73CF73CF, 0x73CF73CF, 0x73CF73CF, 0x73CF73CF, 0x210BBD69, 0xBD2B0001, 0x0001BD2B, 0xBD2B2149, 0x73CF73CF, + 0x73CF73CF, 0x73CF73CF, 0x73CF73CF, 0x73CF73CF, 0x73CF73CF, 0x73CF73CF, 0x73CF73CF, 0x210BBD69, 0xBD2B0001, + 0x0001BD2B, 0xBD2B2149, 0x73CF73CF, 0x73CF73CF, 0x73CF73CF, 0x73CF73CF, 0x73CF73CF, 0x73CF73CF, 0x73CF73CF, + 0x73CF73CF, 0x210BBD69, 0xBD2B0001, 0x0001BD2B, 0xBD2B2149, 0x73CF73CF, 0x73CF73CF, 0x73CF73CF, 0x73CF73CF, + 0x73CF73CF, 0x73CF73CF, 0x73CF73CF, 0x73CF73CF, 0x210BBD69, 0xBD2B0001, 0x0001BD2B, 0xBD2B2149, 0x73CF73CF, + 0x73CF73CF, 0x73CF73CF, 0x73CF73CF, 0x73CF73CF, 0x73CF73CF, 0x73CF73CF, 0x73CF73CF, 0x210BBD69, 0xBD2B0001, + 0x0001BD2B, 0xBD2B2149, 0x73CF73CF, 0x73CF73CF, 0x73CF73CF, 0x73CF73CF, 0x73CF73CF, 0x73CF73CF, 0x73CF73CF, + 0x73CF73CF, 0x210BBD69, 0xBD2B0001, 0x0001BD2B, 0xBD2B2149, 0x73CF73CF, 0x73CF73CF, 0x73CF73CF, 0x73CF73CF, + 0x73CF73CF, 0x73CF73CF, 0x73CF73CF, 0x73CF73CF, 0x210BBD69, 0xBD2B0001, 0x0001BD2B, 0xBD2B2149, 0x73CF73CF, + 0x73CF73CF, 0x73CF73CF, 0x73CF73CF, 0x73CF73CF, 0x73CF73CF, 0x73CF73CF, 0x73CF73CF, 0x210BBD69, 0xBD2B0001, + 0x0001BD2B, 0xBD2B2149, 0x73CF73CF, 0x73CF73CF, 0x73CF73CF, 0x73CF73CF, 0x73CF73CF, 0x73CF73CF, 0x73CF73CF, + 0x73CF73CF, 0x210BBD69, 0xBD2B0001, 0x0001BD2B, 0xBD2B2149, 0x73CF73CF, 0x73CF73CF, 0x73CF73CF, 0x73CF73CF, + 0x73CF73CF, 0x73CF73CF, 0x73CF73CF, 0x73CF73CF, 0x210BBD69, 0xBD2B0001, 0x0001BD2B, 0xBD2B2149, 0x73CF73CF, + 0x73CF73CF, 0x73CF73CF, 0x73CF73CF, 0x73CF73CF, 0x73CF73CF, 0x73CF73CF, 0x73CF73CF, 0x210BBD69, 0xBD2B0001, + 0x0001BD2B, 0xBD2B2149, 0x73CF73CF, 0x73CF73CF, 0x73CF73CF, 0x73CF73CF, 0x73CF73CF, 0x73CF73CF, 0x73CF73CF, + 0x73CF73CF, 0x210BBD69, 0xBD2B0001, 0x0001BD2B, 0xBD2B2149, 0x21092109, 0x21092109, 0x21092109, 0x21092109, + 0x21092109, 0x21092109, 0x21092109, 0x21092109, 0x2109BD6B, 0xBD2B0001, 0x0001BD2B, 0xBD2BBD2B, 0xBD2BBD2B, + 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2B0001, + 0x0001BD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2BBD2B, + 0xBD2BBD2B, 0xBD2BBD2B, 0xBD2B0001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, + 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, +}; +u32* D_88223470[] = { D_882220D8, D_882225C0, D_88222AA8, D_88222F90 }; +static Gfx D_88223480[] = { + gsSPEndDisplayList(), +}; +u32 D_88223488[] = { + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00001044, 0x00000001, 0x00010001, 0x00010001, + 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00010000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x08420000, 0x00010001, 0x00010001, 0x318D5A95, 0xA4E9AD69, 0xA52BAD6B, 0xAD29AD2B, 0xA529AD29, 0xA529A4E7, + 0x9CE79CA5, 0x8C235A97, 0x318B0001, 0x00010001, 0x00000842, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x0001318D, 0x5A959D29, 0xB56DBDAD, + 0xAD6B94A5, 0x8C217BDF, 0x6B5B6B5B, 0x6B196B1B, 0x63196319, 0x6B196B1B, 0x6B5B7BDF, 0x8C219463, 0xA4E99CE5, + 0x8C235253, 0x318D0001, 0x00010000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00010001, 0x318D5A95, 0xB56DBDEF, 0x6B5BBDEF, 0xC5EF635B, 0x52535295, 0x5AD75B19, 0x735B7BDF, + 0x7C1F7BE1, 0x7BDD739F, 0x739B5B19, 0x52954A13, 0x42113A0F, 0x52559CA5, 0xAD295AD7, 0x94639465, 0x5A95314D, + 0x00010001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0001318D, 0x5A95B5AF, 0xBDEFCE31, + 0xC631C5EF, 0x635BC5EF, 0x8C63739D, 0xA529A529, 0x9CE7A529, 0x94A594A5, 0x94A58C63, 0x84618C23, 0x84218461, + 0x842183E1, 0x7BDF7BDF, 0x52956B19, 0xA5295A97, 0x9463A4E7, 0x9CA59463, 0x7B9F5A95, 0x318D0001, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x0001E739, 0xD6B5CE73, 0xCE31C631, 0xBE31C5AF, 0x6359C5EF, 0x7BE18421, + 0x9CE79CE5, 0x94A594A5, 0x8C658C63, 0x8C618423, 0x8421841F, 0x7BE17BDF, 0x7BDD739D, 0x739D739D, 0x5AD95AD5, + 0xACE95297, 0x94639CA5, 0x9CA59463, 0x8C2383DF, 0x739D0001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x0001E739, 0xCE73CE31, 0xC631C631, 0xBDEFBDEF, 0x6B19BDF1, 0x841F83DF, 0x94E794A5, 0x94658CA3, 0x8C638C23, + 0x84218421, 0x7C1F7BDF, 0x7BDF7BDF, 0x739D739D, 0x6B5B735D, 0x5AD75AD5, 0xA4E95A95, 0x94639CA5, 0x94659465, + 0x8C1F7B9F, 0x739D0001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0001E739, 0xCE73C631, 0xC631C5EF, + 0xBDF1BDED, 0x6319C5F1, 0x7BDF83DF, 0x94E58C65, 0x94638C63, 0x84638421, 0x84218421, 0x7BDF7BDF, 0x7B9D739D, + 0x6B9D739D, 0x6B5B6B5B, 0x5AD55A97, 0xA4E75297, 0x94619CA7, 0x94639465, 0x8BE17BDD, 0x735D0001, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x0001E739, 0xCE33C671, 0xC5EFC5F1, 0xBDEFBDED, 0x6319C5EF, 0x7BE17BDD, + 0x94A58C65, 0x8C618423, 0x8C217C21, 0x841F7BDF, 0x7B9F73DF, 0x739D739D, 0x735B6B5B, 0x635B6B5B, 0x52955A95, + 0xA4E95A95, 0x8C619C65, 0x94A59423, 0x8C21739D, 0x739D0001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x0001E6F9, 0xCE71C631, 0xC631BDEF, 0xBDEFBDAF, 0x6319BDEF, 0x83DF739D, 0x94A58463, 0x8C218421, 0x84217C21, + 0x83DF73DF, 0x7B9D739D, 0x739D6B9D, 0x6B5B6B59, 0x6B1B6319, 0x52955AD7, 0xA4E75A95, 0x8C239C65, 0x94A39423, + 0x84217B9F, 0x739B0001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0001DEF7, 0xCE73C631, 0xC5F1BDEF, + 0xBDEFBDAD, 0x6319BDEF, 0x7B9F73DD, 0x8C638C23, 0x841F7C21, 0x83E17BDF, 0x73DD7B9F, 0x739D6B9B, 0x735B6B5B, + 0x631B6319, 0x63196319, 0x52935297, 0xA4E75A95, 0x8C219465, 0x9C638C63, 0x8BE1739D, 0x739D0001, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x0001DEF7, 0xCE73C5EF, 0xBE31C5AF, 0xBDEDB5AD, 0x6319BDAF, 0x7BDF739B, + 0x84238421, 0x841F7BE1, 0x7BDD739F, 0x739D739D, 0x739B6B5B, 0x6B5B631B, 0x63196319, 0x5AD76317, 0x4A535297, + 0xA4A75293, 0x8C239C63, 0x94638C23, 0x8C217B9D, 0x6B5B0001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x0001DEF7, 0xCE31BE31, 0xC5EFBDEF, 0xBDAFB5AD, 0x6319BDAD, 0x7BDF735B, 0x84217C21, 0x7BDF7BDF, 0x7BDF739D, + 0x739D6B5B, 0x6B5B6B5B, 0x6B5B6319, 0x62D75B19, 0x5AD75AD7, 0x4A535295, 0xA4A75A95, 0x8C219463, 0x94658C21, + 0x8BE1739D, 0x735B0001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0001DEF7, 0xC631C5F1, 0xBDEFBDED, + 0xBDAFB5AD, 0x6317BDAF, 0x7BDF6B5B, 0x83DF7C21, 0x739D7BDF, 0x739D739D, 0x6B5B6B5B, 0x6B5B6B5B, 0x631962D7, + 0x5B195AD7, 0x5AD75295, 0x42115A95, 0x9CE75A55, 0x8C219463, 0x94638C23, 0x83DF7B9D, 0x6B5D0001, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x0001DEF7, 0xC5F1C62F, 0xBDEFBDAF, 0xBDADB5AD, 0x6317BDAF, 0x739D6B5B, + 0x7BDF7BDF, 0x7B9F73DD, 0x735D6B9B, 0x6B5B6B1B, 0x63596319, 0x63195AD7, 0x5AD75AD7, 0x52955A97, 0x42515255, + 0xA4E55255, 0x8C219463, 0x8C239423, 0x841F735D, 0x735B0001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x0001DEB5, 0xC631BDF1, 0xBDEFBDED, 0xBDADB56D, 0x6319B5AD, 0x7B9D635B, 0x7BDF739D, 0x739D739D, 0x735B6B5B, + 0x635B6319, 0x63196319, 0x62D752D7, 0x5A9552D7, 0x52955253, 0x42115295, 0x9CA55255, 0x8C219463, 0x94238C21, + 0x83E17B9D, 0x735B0001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0001DEB5, 0xC631BDEF, 0xBDEFBDAD, + 0xB5ADB56D, 0x6317B56D, 0x7BDF6319, 0x739D739D, 0x6B5D739B, 0x6B1B6359, 0x63196319, 0x5AD75AD7, 0x5AD75297, + 0x52955293, 0x52954A53, 0x39CF5255, 0x9CA55A95, 0x83DF9465, 0x94218C21, 0x83DF735D, 0x739D0001, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x0001D6B5, 0xCE73C5EF, 0xBDEFB5AD, 0xBDADAD6B, 0x62D9BDAD, 0x739D6319, + 0x739D6B5B, 0x6B5B6B5B, 0x6B5B6319, 0x62D95B17, 0x5AD75AD7, 0x52955295, 0x52954A53, 0x4A534A53, 0x39CF5255, + 0x9CA55293, 0x8BE18C23, 0x94218C21, 0x83E17B9D, 0x739D0001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00017BDF, 0x73DDAD2B, 0xC5EFB5AD, 0xB5ADB56B, 0x62D7B5AD, 0x739D62D9, 0x6B9B6B5B, 0x6B5B6B1B, 0x63196319, + 0x5AD75AD7, 0x5AD752D5, 0x52955255, 0x4A934A53, 0x4A134251, 0x398F4A53, 0xA4A54A55, 0x8BDF8C63, 0x942183E1, + 0x7B9F5253, 0x420F0001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0001B5AD, 0x735B4253, 0xAD2BBDAD, + 0xB5ADAD29, 0x5B19B56B, 0x735D5AD7, 0x6B5B6B59, 0x631B6319, 0x63175AD9, 0x5AD552D7, 0x5A955295, 0x4A955253, + 0x4A534253, 0x4A114211, 0x318D4A55, 0x9CA55253, 0x83DF8C21, 0x8BE383DF, 0x398D4A13, 0x63190001, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x0001BDEF, 0xAD2B5293, 0x94A5B56D, 0xAD6BAD29, 0x5AD7AD29, 0x6B5D5AD5, + 0x631B6319, 0x63175AD9, 0x5AD75AD7, 0x52955295, 0x52955293, 0x4A534A53, 0x42134A11, 0x3A114211, 0x318B4A13, + 0x9CA54A13, 0x83DF8C21, 0x83E17B5D, 0x318D735B, 0x735B0001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x0001BDEF, 0xA4E74A53, 0x8C65AD69, 0xAD2BA4E7, 0x5AD7A4E9, 0x6B595295, 0x63195AD7, 0x5AD75AD7, 0x52975295, + 0x52935295, 0x4A534A53, 0x4A534211, 0x42114211, 0x39CF39D1, 0x318B4A13, 0x94634A13, 0x83DD83E1, 0x8BE1739B, + 0x314D735B, 0x6B1B0001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0001B5AD, 0x9CA54253, 0x9463A529, + 0xAD299CE9, 0x5A95A529, 0x6B195295, 0x63195AD7, 0x5AD75295, 0x52D75295, 0x52534A95, 0x52534253, 0x4A114211, + 0x42114211, 0x39CF39CF, 0x294B4211, 0x94234A51, 0x7B5D83E1, 0x83DF6B1B, 0x318B6B19, 0x6B1B0001, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x0001AD29, 0x8C654A51, 0x8423AD29, 0x9CE7A4E7, 0x5295A4E7, 0x83E139CF, + 0x42514213, 0x420F4211, 0x39CF39CF, 0x39CF31CF, 0x398D318D, 0x318D298D, 0x294B294B, 0x294B2109, 0x210962D7, + 0x8BE14A51, 0x735D83DF, 0x839F6B19, 0x318D62D9, 0x6B190001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x0001A529, 0x94654A51, 0x8C63A4E9, 0x9CE79CE5, 0x52559CA5, 0x9CA59CA5, 0x9CA59CA5, 0x9CA59CA5, 0x9CA59CA5, + 0x9CA59CA5, 0x9CA59CA5, 0x9CA59CA5, 0x9CA59CA5, 0x9CA59CA5, 0x9CA59CA5, 0x9CA54A53, 0x7B9D8BE1, 0x83E17B5B, + 0x318D6B1B, 0x735B0001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00010001, 0x00010001, 0x00010001, + 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, + 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, +}; +u32 D_88223E48[] = { + 0xAA99A989, 0x9998AAAA, 0xBA9B9899, 0x99A99AA9, 0x88998999, 0x9A98A988, 0x9989989A, 0x98989989, 0x999A98A9, + 0x88000000, 0x00000000, 0x0007AB99, 0x98575000, 0x00000000, 0x00000000, 0x01458999, 0x98899A9A, 0xABA89999, + 0x9888A9AA, 0x999898A9, 0x99AA8888, 0x99788989, 0x99888888, 0x9999AA89, 0x88997889, 0x99233333, 0x33222220, + 0x0004A977, 0x85674000, 0x00000000, 0x00000000, 0x01358A98, 0x999AA999, 0xB99A98AA, 0x9989A89A, 0x99999A99, + 0x8A989989, 0x98988988, 0x99989999, 0x888A8899, 0x89999899, 0x8BCCCDDC, 0xCCCCCBB6, 0x00008975, 0x56660000, + 0x13222222, 0x22333331, 0x00357999, 0x8AAA98AA, 0xA8999899, 0x9BAAA9A9, 0x889BAA89, 0x99888888, 0x98A99A99, + 0x9878AAA8, 0x8A998888, 0x8999A9AA, 0x8BBCCCCC, 0xCCBBBBB9, 0x00002887, 0x76510000, 0x23222222, 0x23333331, + 0x00257998, 0xAA989A9A, 0xA899AAB9, 0xA999989A, 0x89BA98A9, 0x9988899A, 0x99989888, 0x988AA879, 0x98997889, + 0x9A998988, 0x89BBBBBB, 0xBBBBAAAA, 0x30000045, 0x52000000, 0x22222222, 0x33333330, 0x00246999, 0xBBA79AAB, + 0xAAB99AA9, 0xAA98879A, 0xA9BB979A, 0xAA9A9899, 0x99988778, 0x9A8AA978, 0x99AA9A89, 0x9A8A9887, 0x79AABBBB, + 0xBAAAAA99, 0x81000000, 0x00000002, 0x22222223, 0x33333320, 0x001369A9, 0xAB99999A, 0x9AB99AAB, 0xBA9A99A9, + 0x9AAB9999, 0x989A98A9, 0xAAA99989, 0x9999A889, 0x98989A88, 0xA9AAA8A9, 0x999AAAAA, 0xAAA99998, 0x87100000, + 0x00000022, 0x22222223, 0x33333320, 0x0024799A, 0xA989A9A9, 0x89ABBBBB, 0xABB8ABAA, 0xABA989A9, 0x9889A9AA, + 0xB9AA89AA, 0xA9B98889, 0x99989ABA, 0xAAB9AA8A, 0xAA899999, 0x99999888, 0x87610000, 0x00000222, 0x22222233, + 0x33333300, 0x00258AAB, 0x88AAA9A9, 0xAA9BBA9A, 0xAB9AAAA9, 0xA9899754, 0x66679999, 0x99A989AA, 0x999779A9, + 0x9A8999AA, 0x9999B99A, 0xAA888999, 0x98888877, 0x77664210, 0x00122222, 0x22222333, 0x33333300, 0x002589A9, + 0x8A9A9A99, 0xAA99ABA8, 0xA99ABA89, 0x85422222, 0x22222478, 0x999799A9, 0x99979999, 0x9889999A, 0xA979989A, + 0xAA878888, 0x88877777, 0x66655544, 0x33222222, 0x22223333, 0x33334100, 0x002589AA, 0x9BB98999, 0x9ABBBA99, + 0xAA9A9984, 0x22222222, 0x22222111, 0x36999AA9, 0x8899AA87, 0x89889AAA, 0xA88AA99B, 0xAA867777, 0x77777666, + 0x65554443, 0x32222222, 0x22233333, 0x33343000, 0x01368989, 0xAA9BAA99, 0x9A89AA9A, 0xBA997322, 0x22222222, + 0x22222211, 0x11279999, 0x9A99A999, 0x99999899, 0x989A9999, 0x99985666, 0x66666655, 0x55444333, 0x22222222, + 0x22333333, 0x33441000, 0x013689BA, 0x9BABAAAA, 0x99A9899A, 0xBA842222, 0x22222222, 0x22222111, 0x11113789, + 0xA99999AA, 0x99A88988, 0x889AAA97, 0x899A6555, 0x66555555, 0x44433322, 0x22222222, 0x22333333, 0x34430000, + 0x023689AB, 0xAA99AA99, 0x9A98AA99, 0x97322222, 0x22222222, 0x22222211, 0x11111159, 0xAB9A9999, 0x98889989, + 0x999A98A9, 0x89998445, 0x55554444, 0x33332222, 0x22222222, 0x23333333, 0x34300000, 0x02579A99, 0x99999A9A, + 0xAAB9A889, 0x62222222, 0x22222222, 0x22222221, 0x11111116, 0x9AA99988, 0xA99AAA89, 0x88998889, 0x89A99733, + 0x44444333, 0x32222222, 0x22222222, 0x33333333, 0x44100000, 0x13679AA9, 0x9AAAA999, 0xAA9A8896, 0x22222222, + 0x22222222, 0x22222211, 0x11111110, 0x489A9899, 0x898A8899, 0x89999899, 0x89998962, 0x33333222, 0x22222222, + 0x22222223, 0x33333334, 0x42000000, 0x24779A99, 0x9BBA98AA, 0xA8998972, 0x22222222, 0x33322222, 0x22222111, + 0x11111100, 0x15899899, 0x9A997989, 0x8989A9A9, 0x8A9889A6, 0x12222211, 0x11122222, 0x22222233, 0x33333344, + 0x30000001, 0x36899A98, 0xBB98999A, 0xA9999822, 0x22222333, 0x44433222, 0x22222211, 0x11111110, 0x005998A9, + 0x98A98899, 0xAA998988, 0x78989A98, 0x41111111, 0x11222222, 0x22222333, 0x33333442, 0x00000012, 0x46788999, + 0xBBAAAAAB, 0xA9BA8322, 0x22223346, 0x67654322, 0x22222211, 0x11111100, 0x001789AA, 0xA9AAAA89, 0x999A9888, + 0x79A99AA9, 0x77211111, 0x12222222, 0x22223333, 0x33334310, 0x00000024, 0x57889AB9, 0xAB9A999A, 0x8AA94222, + 0x2223357A, 0xCCA85422, 0x22222111, 0x11111100, 0x000388AA, 0x9A989A99, 0xA9AAA9A9, 0x99999AA8, 0x99831111, + 0x22222222, 0x22233333, 0x33343000, 0x00000246, 0x79A9A99A, 0xA9999AA9, 0x89A72222, 0x223358CF, 0xFFEA6432, + 0x22111111, 0x11111100, 0x00004688, 0x88989ABA, 0xAAB9AA8A, 0xAAAAA988, 0x9A995212, 0x22222222, 0x22233333, + 0x33310000, 0x00002458, 0x99ABBAAB, 0x88A998A9, 0x88932222, 0x22347CFF, 0xFFFA7432, 0x22211111, 0x11111000, + 0x00001678, 0x889998AA, 0xA999A89A, 0xAA99878A, 0xA9998853, 0x22222222, 0x22333333, 0x21000000, 0x00123569, + 0x99AABAA9, 0x8B99AA9A, 0x8A722222, 0x22359FFF, 0xFFEA6422, 0x22111111, 0x11111000, 0x00000358, 0x9AA9989A, + 0xA979989A, 0xAA9A88A9, 0x99988986, 0x43222222, 0x23333210, 0x00000000, 0x01245579, 0x8ABBAAAA, 0x9A999998, + 0x89522222, 0x2346BFFF, 0xFFC84100, 0x00011111, 0x11111000, 0x00000046, 0x89989ABA, 0xA89AA99B, 0xAA899AA9, + 0x88998999, 0x96522111, 0x11100000, 0x00000001, 0x235677AA, 0xA9BBBA9A, 0xAA8B9987, 0x78222222, 0x2347AEFF, + 0xFD832100, 0x00000111, 0x11110000, 0x00000025, 0x68788789, 0x989AA999, 0x99AB999A, 0xA9999987, 0x88654321, + 0x10000000, 0x00000122, 0x346789BA, 0xA999AABA, 0xAAAAAAA9, 0x86222222, 0x23469CDD, 0xB7421000, 0x00000011, + 0x11100000, 0x00000014, 0x68A89998, 0x999AAA97, 0x899A9AA9, 0xA9A9A899, 0x88877654, 0x32211111, 0x11222344, + 0x67789ABB, 0xAA88A9AB, 0xAAB9AA89, 0xA5222222, 0x22356898, 0x63210000, 0x00000000, 0x11100000, 0x00000002, + 0x578A9989, 0x99999899, 0x99998988, 0x8A898998, 0x89988876, 0x55443333, 0x33344567, 0x879A99AA, 0x9AA9AAA9, + 0x999AA99A, 0xA3222222, 0x22334555, 0x21100169, 0x86200000, 0x11000000, 0x00000001, 0x358AAA99, 0x89998899, + 0x89A99989, 0x99A89AA9, 0x9989A887, 0x87666565, 0x56677799, 0xA9A99AA9, 0x89A99AAA, 0xA98BA89A, 0x92222222, + 0x22233332, 0x10003CBB, 0xBA920000, 0x00000000, 0x00000000, 0x24799898, 0x8999A999, 0x899989A9, 0xA8899A88, + 0x988999A9, 0x98898778, 0x889788AA, 0x89999A9A, 0xA9A99A99, 0xA99AA9AB, 0x82222222, 0x22222221, 0x0001BBBD, + 0xCA980000, 0x00000000, 0x00000000, 0x147A9989, 0x8989A999, 0x8A9889AA, 0x988A9979, 0x99898AA9, 0xAA9A988A, + 0xBA989AA9, 0x89A9999B, 0xAAAAAB98, 0x99989999, 0x97000000, 0x00000000, 0x0006BCEA, 0x98884000, 0x00000000, + 0x00000000, 0x13689999, 0xAB898887, 0x78999A98, 0x7999A989, 0x99BA9989, 0x878899AB, 0x978A9AB9, 0x99AACAA9, + 0x998889AA, 0x8998AAA8, 0xA8000000, 0x00000000, 0x0008BDB9, 0x98586000, 0x00000000, 0x00000000, 0x02479A89, + 0x999AA888, 0x89A98AB9, 0x799AA9AA, 0x8A999B98, 0x988AA99B, 0xB889ABAA, 0xB99B9AAB, 0x99989AB9, 0x99999889, + 0x88000000, 0x00000000, 0x0007AB99, 0x98575000, 0x00000000, 0x00000000, 0x01458AA9, 0xAAA99999, 0xA999AA98, + 0x9989889A, 0x9AAAAA99, 0x99A99AAA, 0x89998989, 0xAA9BAAAA, 0x999A9A9A, 0x88998899, 0x99233333, 0x33222220, + 0x0004A977, 0x85773000, 0x00000000, 0x00000000, 0x013589B9, 0x99A9A98A, 0xA9999888, 0x9999888A, 0xB99A9AA9, + 0x9AA99A98, 0x8999A988, 0x9AA99A9A, 0xA89AA9A9, 0x89999899, 0x9BCCCDDC, 0xCCCCCBB6, 0x00008975, 0x56750000, + 0x13222222, 0x22333331, 0x0035799A, 0xA989A89A, 0x9A9A8799, 0x99999AA9, 0x9AA88998, 0x9AAA9A77, 0x9A99999A, + 0x99AA989A, 0x98A9AA99, 0x8999A999, 0x8BBCCCCC, 0xCCBBBBB9, 0x00002887, 0x76510000, 0x23222222, 0x23333331, + 0x0025789A, 0x988998AA, 0xAA9988A9, 0x78887999, 0x9A988A99, 0xAB9A9979, 0xA879888A, 0x99AA989A, 0x89AAA998, + 0x9A998988, 0x8ABBBBBB, 0xBBBBAAAA, 0x30000045, 0x52000000, 0x22222222, 0x33333330, 0x002479AA, 0x989A999A, + 0x9A999A99, 0x9999899A, 0xB998AA99, 0x9AAA9A9A, 0x9A999989, 0xAAA998A9, 0x99A9A999, 0x9AAA9887, 0x89AABBBB, + 0xBAAAAA99, 0x81000000, 0x00000002, 0x22222223, 0x33333320, 0x00246888, 0x879AAA88, 0x899B99AA, 0x99999888, + 0x8888AAA9, 0x8899AA99, 0xAA999998, 0x889888AA, 0xA98899B9, 0xAA9AA9A9, 0x999AAAAA, 0xAAA99998, 0x87100000, + 0x00000022, 0x22222223, 0x33333320, 0x00247989, 0x999A99A8, 0x89899AA9, 0xAA999899, 0x89A9AA99, 0xA789899A, + 0x99AA9999, 0xA999A9AA, 0x9A979999, 0xAA999989, 0xAA899999, 0x99999888, 0x87610000, 0x00000222, 0x22222233, + 0x33333300, 0x00258989, 0x88998889, 0x99A98888, 0x79899AA8, 0x89889988, 0x999AA888, 0x888A899A, 0xA8998998, + 0x88999AA9, 0x9999A99A, 0xA9888999, 0x98888877, 0x77664210, 0x00122222, 0x22222333, 0x33333300, 0x00257999, + 0x89998899, 0x88A99989, 0x99989A99, 0x99899754, 0x65679999, 0x999998A9, 0x99A89AA9, 0x88A8899A, 0x8989989A, + 0xAA878888, 0x88877777, 0x66655544, 0x33222222, 0x22223333, 0x33334100, 0x01356888, 0x8899A999, 0x899878A9, + 0x988A9979, 0x85422222, 0x22222347, 0xA99799A9, 0x7988899A, 0xA9A99997, 0x9999999B, 0xAA867777, 0x77777666, + 0x65554443, 0x32222222, 0x22233333, 0x33343000, 0x0135688A, 0x89899999, 0x899789A9, 0x99999954, 0x22222222, + 0x22222111, 0x26999998, 0x88A9999A, 0x99999A88, 0xAA999999, 0x99985666, 0x66666655, 0x55444333, 0x22222222, + 0x22333333, 0x33441000, 0x01467999, 0xAA898887, 0x77999A98, 0x69997322, 0x22222222, 0x22222111, 0x11179AA9, + 0x9999A999, 0x897778A9, 0x9B9A9998, 0x899A6555, 0x66555555, 0x44433322, 0x22222222, 0x22333333, 0x34430000, + 0x02569A78, 0x999AA899, 0x89998AA8, 0x89842222, 0x22222222, 0x22222111, 0x11112899, 0xA88A99AA, 0x999899A8, + 0xA98A99A9, 0x89998445, 0x55554444, 0x33332222, 0x22222222, 0x23333333, 0x34300000, 0x12569AAA, 0xBAB9A989, + 0xAAA9A988, 0x97322222, 0x22222222, 0x22222111, 0x11111159, 0xABABABAA, 0xA99AAA9B, 0x98998899, 0x89999733, + 0x44444333, 0x32222222, 0x22222222, 0x33333333, 0x44100000, 0x145789BA, 0x999AA99A, 0xA9999889, 0x62222222, + 0x22222222, 0x22222111, 0x11111104, 0x8AA99AAA, 0xA9AAA9A9, 0x79999999, 0x89998972, 0x33333222, 0x22222222, + 0x22222223, 0x33333334, 0x42000001, 0x2469A99A, 0xA989989A, 0x9A9A8796, 0x22222222, 0x22222222, 0x22222111, + 0x11111100, 0x38AA989A, 0x98AAAAAA, 0x8AA8A989, 0x8A988AA6, 0x12222211, 0x11122222, 0x22222233, 0x33333344, + 0x30000001, 0x3568999A, 0xA98998AB, 0xAA898972, 0x22222222, 0x33332222, 0x22222111, 0x11111100, 0x039A989A, + 0x99BBA999, 0xAA9A9999, 0x78989A98, 0x54111111, 0x11222222, 0x22222333, 0x33333442, 0x00000013, 0x568899AA, + 0x989A9999, 0x9A9A9822, 0x22222333, 0x44433222, 0x22221111, 0x11111100, 0x005899A9, 0x99A9A9AA, 0x9AAA9999, + 0x79999AA9, 0x9A211111, 0x12222222, 0x22223333, 0x33334310, 0x00000124, 0x67988888, 0x889AAA88, 0x899B8322, + 0x22223346, 0x77654322, 0x22221111, 0x11111100, 0x000578AB, 0xA98899BA, 0xAA99A999, 0x99999AA8, 0xAA831111, + 0x22222222, 0x22233333, 0x33342000, 0x00001246, 0x77989989, 0x999A98A8, 0x89994222, 0x2223358B, 0xCCA85322, + 0x22211111, 0x11111100, 0x000078AA, 0x9A989999, 0x98888A9A, 0xAAAAA988, 0x98886212, 0x22222222, 0x22233333, + 0x33310000, 0x00001346, 0x8899A989, 0x88998889, 0x99A72222, 0x223359DF, 0xFFEA6432, 0x22111111, 0x11111100, + 0x00003788, 0x88999AA8, 0x9999A989, 0xAA99879A, 0xA9899853, 0x22222222, 0x22333333, 0x21000000, 0x00123578, + 0x889A9999, 0x89998899, 0x88932222, 0x22348DFF, 0xFFFA6422, 0x22111111, 0x11111000, 0x00000578, 0x88A88A99, + 0x8AAA97A9, 0xA99A88A9, 0x9A988886, 0x53222222, 0x23333210, 0x00000000, 0x01236788, 0x7A998888, 0x8899A99A, + 0x89722222, 0x2236AFFF, 0xFFEA6322, 0x21111111, 0x11111000, 0x00000259, 0x9AA99A97, 0xAA98999A, 0x98899AA9, + 0x88998999, 0x76522111, 0x10000000, 0x00000001, 0x22467879, 0x98997889, 0x9A899998, 0x89522222, 0x2347BFFF, + 0xFFC83100, 0x00011111, 0x11111000, 0x00000046, 0x89989A88, 0xAB978AAB, 0xA9AA99A9, 0xA9998888, 0x98764321, + 0x10000000, 0x00000112, 0x45689868, 0x99AA9A99, 0x9A899887, 0x77222222, 0x2347BFFF, 0xFD832000, 0x00000111, + 0x11110000, 0x00000025, 0x687789A9, 0xAB98999A, 0x9AB89A9A, 0xAA999899, 0x88987654, 0x32211111, 0x11223345, + 0x6779A988, 0x9898AA88, 0xA9AAA8A9, 0x86222222, 0x23469CDD, 0xB7421000, 0x00000011, 0x11100000, 0x00000014, + 0x68A899A9, 0xA989A999, 0x89ABABBB, 0xAA9999A9, 0x99988876, 0x54443334, 0x43455578, 0x98A98889, 0x99989AAA, + 0xBAB9AA89, 0xA5222222, 0x22356888, 0x63210000, 0x00000000, 0x11100000, 0x00000002, 0x578BAA9B, 0x889A99A9, + 0x999BA99A, 0xABA9AAA9, 0x9989A987, 0x77666655, 0x66777889, 0x99988999, 0x9A8999AA, 0x999AA99A, 0xA2222222, + 0x22334555, 0x21100169, 0x86200000, 0x11000000, 0x00000001, 0x358AA9A9, 0x799A9A99, 0xAA99AA98, 0x9989AAB9, + 0x998A99A9, 0x98987888, 0x7788899A, 0xA9979999, 0x9889A999, 0xA989989A, 0x92222222, 0x22233332, 0x10003CCB, + 0xBA920000, 0x00000000, 0x00000000, 0x2479AAAA, 0x8AA88998, 0x9AAABA98, 0xAA9ABBA9, 0x989AA889, 0x88999A99, + 0x89A99BAA, 0x9888AA87, 0x888899AA, 0xA989A9AB, 0x82222222, 0x22222221, 0x0001CCCD, 0xCA981000, 0x00000000, + 0x00000000, 0x147AA989, 0xAA9AAA99, 0x9A9AA99A, 0xAA9999AA, 0xBAAA9AA9, 0x98999998, 0x9A999999, 0x9AA999A9, + 0x99999899, 0x989A9999, 0x87000000, 0x00000000, 0x0006BCEA, 0x98784000, 0x00000000, 0x00000000, 0x135799AA, + 0x9AAA9A9A, 0x9999889A, 0xBBA989A9, 0xBA9BAA9A, 0x98888888, 0x9AAA9889, 0x9AA8AAA9, 0x99988888, 0x889AAA88, + 0x88000000, 0x00000000, 0x0008BDB9, 0x99586000, 0x00000000, 0x00000000, 0x024699BA, 0x00000000, 0x00000000, +}; diff --git a/src/fragments/25/fragment25.c b/src/fragments/25/fragment25.c index bba7caa5..6fd4f4df 100644 --- a/src/fragments/25/fragment25.c +++ b/src/fragments/25/fragment25.c @@ -1,4 +1,4 @@ -#include "global.h" +#include "fragment25.h" #pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/25/fragment25/func_88400020.s") diff --git a/src/fragments/25/fragment25.h b/src/fragments/25/fragment25.h new file mode 100644 index 00000000..10a65183 --- /dev/null +++ b/src/fragments/25/fragment25.h @@ -0,0 +1,16 @@ +#ifndef _FRAGMENT25_H_ +#define _FRAGMENT25_H_ + +#include "global.h" + +typedef struct unk_D_88400138 { + /* 0x00 */ s32 unk_00; + /* 0x04 */ Color_RGBA8 unk_04; + /* 0x08 */ Color_RGBA8 unk_08; +} unk_D_88400138; // size = 0xC + +typedef unk_D_88400138* (*func884000C4)(u8); + +unk_D_88400138* func_884000C4(u8); + +#endif // _FRAGMENT25_H_ diff --git a/src/fragments/26/fragment26.h b/src/fragments/26/fragment26.h index 96f8a222..7bc4dd92 100644 --- a/src/fragments/26/fragment26.h +++ b/src/fragments/26/fragment26.h @@ -3,30 +3,40 @@ #include "global.h" #include "src/memory.h" +#include "src/memmap.h" #include "src/controller.h" +#include "src/29BA0.h" +#include "src/1AB70.h" +#include "src/2D340.h" struct unk_func_88001300; struct unk_func_88001300_000; struct unk_func_88001300_03C; +struct unk_func_88203ED8; +struct unk_func_88203ED8_064; +struct unk_func_882025E0; typedef s32 (*unk_func_88001300_018)(struct unk_func_88001300_000*, s32, s32); typedef s32 (*unk_func_88001300_01C)(struct unk_func_88001300_000*); typedef s32 (*unk_func_88001300_020)(struct unk_func_88001300*, Controller*); -typedef void (*unk_func_88001300_024)(struct unk_func_88001300*, s32); +typedef void (*unk_func_88001300_024)(struct unk_func_88001300_000*, s32); typedef struct unk_func_88001300_000_000 { /* 0x00 */ char unk00[0x4]; - /* 0x04 */ struct unk_func_88001300* unk_04; - /* 0x08 */ struct unk_func_88001300* unk_08; + /* 0x04 */ struct unk_func_88001300_000_000* unk_04; + /* 0x08 */ struct unk_func_88001300_000_000* unk_08; } unk_func_88001300_000_000; // size >= 0xC +typedef struct unk_func_88001300_000_010 { + /* 0x00 */ s16 unk_00; + /* 0x02 */ s16 unk_02; +} unk_func_88001300_000_010; // size = 0x4 + typedef struct unk_func_88001300_000 { /* 0x00 */ unk_func_88001300_000_000 unk_00; /* 0x0C */ char unk0C[0x4]; - /* 0x10 */ s16 unk_10; - /* 0x12 */ s16 unk_12; - /* 0x14 */ s16 unk_14; - /* 0x16 */ s16 unk_16; + /* 0x10 */ unk_func_88001300_000_010 unk_10; + /* 0x14 */ unk_func_88001300_000_010 unk_14; /* 0x18 */ unk_func_88001300_018 unk_18; /* 0x1C */ unk_func_88001300_01C unk_1C; /* 0x20 */ unk_func_88001300_020 unk_20; @@ -36,8 +46,7 @@ typedef struct unk_func_88001300_000 { } unk_func_88001300_000; // size = 0x2C typedef struct unk_func_88001300_02C { - /* 0x00 */ unk_func_88001300_000_000 unk_00; - /* 0x0C */ char unk0C[0x20]; + /* 0x00 */ unk_func_88001300_000 unk_00; /* 0x2C */ s32 unk_2C; } unk_func_88001300_02C; // size = 0x30 @@ -50,20 +59,27 @@ typedef struct unk_func_88001300_030 { /* 0x38 */ char unk38[0x4]; } unk_func_88001300_030; // size = 0x3C +typedef struct unk_func_88001300_038 { + /* 0x00 */ u8* unk_00[1]; + /* 0x04 */ char unk04[0x8]; + /* 0x0C */ s32 unk_0C; + /* 0x10 */ char unk10[0x4]; + /* 0x14 */ s16 unk_14; + /* 0x16 */ s16 unk_16; + /* 0x18 */ char unk18[0x10]; + /* 0x28 */ u16 unk_28; + /* 0x2C */ s32 unk_2C; + /* 0x30 */ s32 unk_30; +} unk_func_88001300_038; // size = 0x34 + typedef struct unk_func_88001300_034 { /* 0x00 */ unk_func_88001300_000 unk_00; - /* 0x2C */ char unk2C[0x4]; + /* 0x2C */ unk_func_88001300_038* unk_2C; /* 0x30 */ s32 unk_30; /* 0x34 */ char unk34[0xC]; /* 0x40 */ s32 unk_40; } unk_func_88001300_034; // size = 0x44 -typedef struct unk_func_88001300_038 { - /* 0x00 */ char unk00[0x28]; - /* 0x28 */ u16 unk_28; - /* 0x2A */ char unk2A[0xA]; -} unk_func_88001300_038; // size = 0x34 - typedef struct unk_func_88001300_03C_00C { /* 0x00 */ char unk00[0x10]; /* 0x10 */ s16 unk_10; @@ -75,7 +91,7 @@ typedef struct unk_func_88001300_03C_00C { typedef struct unk_func_88001300_03C_01C { /* 0x00 */ unk_func_88001300_000 unk_00; - /* 0x2C */ Color_RGBA8_u32 unk_2C; + /* 0x2C */ Color_RGBA8 unk_2C; /* 0x30 */ s32 unk_30; } unk_func_88001300_03C_01C; // size = 0x34 @@ -89,7 +105,7 @@ typedef struct unk_func_88001300_03C { /* 0x14 */ unk_func_88001300_03C_014 unk_14; /* 0x18 */ unk_func_88001300_000** unk_18; /* 0x1C */ unk_func_88001300_03C_01C* unk_1C; - /* 0x20 */ char unk20[0x4]; + /* 0x20 */ s32 unk_20; /* 0x24 */ s32 unk_24; /* 0x28 */ char unk28[0x4]; /* 0x2C */ s32 unk_2C; @@ -124,48 +140,506 @@ typedef struct unk_func_88509A2C { /* 0x40 */ char unk_40[12]; } unk_func_88509A2C; // size = 0x4C -typedef struct unk_func_88500020 { - /* 0x00 */ s32 unk_00; +typedef struct unk_func_88500EE4 { + /* 0x00 */ unk_func_88001300_000 unk_00; + /* 0x2C */ u8* unk_2C; + /* 0x30 */ Color_RGBA8 unk_30; + /* 0x34 */ Color_RGBA8 unk_34; +} unk_func_88500EE4; // size = 0x38 + +typedef struct unk_func_885088F4 { + /* 0x00 */ unk_func_88001300_000 unk_00; + /* 0x2C */ s32 unk_2C; + /* 0x30 */ s32 unk_30; + /* 0x34 */ s32 unk_34; + /* 0x38 */ s32 unk_38; +} unk_func_885088F4; // size = 0x3C + +typedef struct unk_func_88509E34 { + /* 0x00 */ unk_func_88001300_000 unk_00; + /* 0x2C */ char* unk_2C; + /* 0x30 */ char unk30[0x4]; +} unk_func_88509E34; // size = 0x34 + +typedef struct unk_func_8850B254 { + /* 0x00 */ unk_func_88001300_000 unk_00; + /* 0x2C */ Color_RGBA8 unk_2C; + /* 0x30 */ Color_RGBA8 unk_30; +} unk_func_8850B254; // size = 0x34 + +typedef struct unk_func_8850878C { + /* 0x00 */ unk_func_88001300_000 unk_00; + /* 0x2C */ s32 unk_2C; + /* 0x30 */ Color_RGBA8 unk_30; + /* 0x34 */ Color_RGBA8 unk_34; + /* 0x38 */ s32 unk_38; + /* 0x3C */ s32 unk_3C; + /* 0x40 */ char* unk_40; + /* 0x44 */ s32 unk_44; +} unk_func_8850878C; // size = 0x48 + +typedef struct unk_func_885012A4 { + /* 0x00 */ unk_func_88001300_000 unk_00; + /* 0x2C */ Color_RGBA8 unk_2C; +} unk_func_885012A4; // size = 0x30 + +typedef struct unk_func_88503298 { + /* 0x00 */ unk_func_88001300_000 unk_00; + /* 0x2C */ unk_func_88001300_038* unk_2C; + /* 0x30 */ unk_func_8850878C* unk_30; +} unk_func_88503298; // size = 0x34 + +typedef void (*unk_func_88200FA0_030_030_040)(); + +typedef struct unk_func_88200FA0_030_030 { + /* 0x00 */ unk_func_88001300_000 unk_00; + /* 0x2C */ unk_func_8820BE14_06C* unk_2C; + /* 0x30 */ s32 unk_30; + /* 0x34 */ u16* unk_34; + /* 0x38 */ s32 unk_38; + /* 0x3C */ s16 unk_3C; + /* 0x3E */ s16 unk_3E; + /* 0x40 */ unk_func_88200FA0_030_030_040 unk_40; + /* 0x44 */ unk_func_88001300_03C_01C* unk_44; + /* 0x48 */ s16 unk_48; + /* 0x4A */ s16 unk_4A; + /* 0x4C */ s16 unk_4C; + /* 0x4E */ s16 unk_4E; + /* 0x50 */ s16 unk_50; + /* 0x52 */ s16 unk_52; +} unk_func_88200FA0_030_030; // size = 0x54 + +// Copy of above with unk_2C changed just for fragment23_1AE680 +typedef struct unk_func_88200FA0_030_030_1AE680 { + /* 0x00 */ unk_func_88001300_000 unk_00; + /* 0x2C */ unk_func_88205880_A030* unk_2C; + /* 0x30 */ s32 unk_30; + /* 0x34 */ u16* unk_34; + /* 0x38 */ s32 unk_38; + /* 0x3C */ s16 unk_3C; + /* 0x3E */ s16 unk_3E; + /* 0x40 */ unk_func_88200FA0_030_030_040 unk_40; + /* 0x44 */ unk_func_88001300_03C_01C* unk_44; + /* 0x48 */ s16 unk_48; + /* 0x4A */ s16 unk_4A; + /* 0x4C */ s16 unk_4C; + /* 0x4E */ s16 unk_4E; + /* 0x50 */ s16 unk_50; + /* 0x52 */ s16 unk_52; +} unk_func_88200FA0_030_030_1AE680; // size = 0x54 + +typedef struct unk_func_8850182C { + /* 0x00 */ unk_func_88001300_000 unk_00; + /* 0x2C */ Color_RGBA8 unk_2C; +} unk_func_8850182C; // size = 0x30 + +typedef struct unk_func_889000C4 { + /* 0x00 */ unk_func_88001300_000 unk_00; + /* 0x2C */ void* unk_2C; + /* 0x30 */ void* unk_30; + /* 0x34 */ unk_func_88200FA0_030_038 unk_34; + /* 0x40 */ void* unk_40; + /* 0x44 */ s32 unk_44; +} unk_func_889000C4; // size = 0x48 + +typedef struct unk_func_88500994 { + /* 0x00 */ unk_func_88001300_000 unk_00; + /* 0x2C */ s32 unk_2C; + /* 0x30 */ s32 unk_30; +} unk_func_88500994; // size = 0x34 + +typedef struct unk_func_8850143C { + /* 0x00 */ unk_func_88001300_000 unk_00; + /* 0x2C */ Color_RGBA8 unk_2C; + /* 0x30 */ Color_RGBA8 unk_30; +} unk_func_8850143C; // size = 0x34 + +typedef struct unk_func_8820399C { + /* 0x00 */ unk_func_88001300_000 unk_00; + /* 0x2C */ s32 unk_2C; + /* 0x30 */ unk_func_8850143C* unk_30; +} unk_func_8820399C; // size = 0x34 + +typedef struct unk_func_88509F48 { + /* 0x00 */ unk_func_88001300_000 unk_00; + /* 0x2C */ void* unk_2C; + /* 0x30 */ void* unk_30; + /* 0x34 */ void* unk_34; + /* 0x38 */ s32 unk_38; +} unk_func_88509F48; // size = 0x3C + +typedef void (*unk_func_8850CD44_010)(); +typedef void (*unk_func_8850CD44_014)(); + +typedef struct unk_func_882173EC { + /* 0x00 */ unk_func_88001300_000 unk_00; + /* 0x2C */ s32 unk_2C; + /* 0x30 */ unk_func_88001300_000_010 unk_30; + /* 0x34 */ unk_func_88001300_000_010 unk_34; +} unk_func_882173EC; // size = 0x38 + +typedef struct unk_func_8850CD44 { + /* 0x00 */ char unk00[0x10]; + /* 0x10 */ unk_func_8850CD44_010 unk_10; + /* 0x14 */ unk_func_8850CD44_014 unk_14; + /* 0x18 */ s32 unk_18; + /* 0x1C */ unk_func_882173EC** unk_1C; + /* 0x20 */ s32 unk_20; +} unk_func_8850CD44; // size = 0x24 + +typedef struct unk_func_882025E0_03C { + /* 0x00 */ unk_func_8850878C* unk_00; /* 0x04 */ s32 unk_04; /* 0x08 */ s32 unk_08; - /* 0x0C */ u8* unk_0C; -} unk_func_88500020; // size = 0x10 +} unk_func_882025E0_03C; // size = 0xC + +typedef s32 (*unk_func_882025E0_010)(struct unk_func_882025E0* arg0, Controller* arg1); +typedef void (*unk_func_882025E0_014)(struct unk_func_882025E0* arg0, s32 arg1); + +typedef struct unk_func_882025E0_024_02C { + /* 0x00 */ unk_func_88205880_00D0* unk_00[2]; + /* 0x08 */ s32 unk_08; +} unk_func_882025E0_024_02C; // size >= 0xC + +typedef struct unk_func_882025E0_024_02C_wrap { + /* 0x00 */ unk_func_882025E0_024_02C* unk_00; +} unk_func_882025E0_024_02C_wrap; // size >= 0xC + +typedef struct unk_func_882025E0_024 { + /* 0x00 */ unk_func_88001300_000 unk_00; + /* 0x2C */ unk_func_882025E0_024_02C_wrap* unk_2C; + /* 0x30 */ s32 unk_30; + /* 0x34 */ u16* unk_34; + /* 0x38 */ s32 unk_38; + /* 0x3C */ s16 unk_3C; + /* 0x3E */ s16 unk_3E; + /* 0x40 */ unk_func_88200FA0_030_030_040 unk_40; + /* 0x44 */ unk_func_88001300_03C_01C* unk_44; + /* 0x48 */ s16 unk_48; + /* 0x4A */ s16 unk_4A; + /* 0x4C */ s16 unk_4C; + /* 0x4E */ s16 unk_4E; + /* 0x50 */ s16 unk_50; + /* 0x52 */ s16 unk_52; +} unk_func_882025E0_024; // size >= 0x54 + +typedef struct unk_func_882025E0 { + /* 0x00 */ char unk00[0x10]; + /* 0x10 */ unk_func_882025E0_010 unk_10; + /* 0x14 */ unk_func_882025E0_014 unk_14; + /* 0x18 */ s32 unk_18; + /* 0x1C */ s32 unk_1C; + /* 0x20 */ struct unk_func_88203ED8* unk_20; + /* 0x24 */ unk_func_88200FA0_030_030* unk_24[2]; // unk_func_882025E0_024 + /* 0x2C */ s32 unk_2C; + /* 0x30 */ s32 unk_30; + /* 0x34 */ s32 unk_34; + /* 0x38 */ s32 unk_38; + /* 0x3C */ unk_func_882025E0_03C unk_3C[5]; +} unk_func_882025E0; // size = 0x78 + +// copy of the above for _1A9780 +typedef struct unk_func_882025E0_1A9780 { + /* 0x00 */ char unk00[0x10]; + /* 0x10 */ unk_func_882025E0_010 unk_10; + /* 0x14 */ unk_func_882025E0_014 unk_14; + /* 0x18 */ s32 unk_18; + /* 0x1C */ s32 unk_1C; + /* 0x20 */ struct unk_func_88203ED8* unk_20; + /* 0x24 */ unk_func_88200FA0_030_030_1AE680* unk_24[2]; + /* 0x2C */ s32 unk_2C; + /* 0x30 */ s32 unk_30; + /* 0x34 */ s32 unk_34; + /* 0x38 */ s32 unk_38; + /* 0x3C */ unk_func_882025E0_03C unk_3C[5]; +} unk_func_882025E0_1A9780; // size = 0x78 + + +typedef s32 (*unk_func_88203ED8_064_010)(struct unk_func_88203ED8_064*, Controller*); +typedef void (*unk_func_88203ED8_064_014)(struct unk_func_88203ED8_064*); + +typedef struct unk_func_88203ED8_064 { + /* 0x00 */ char unk00[0x4]; + /* 0x04 */ struct unk_func_88203ED8_064* unk_04; + /* 0x08 */ struct unk_func_88203ED8_064* unk_08; + /* 0x0C */ char unk0C[0x4]; + /* 0x10 */ unk_func_88203ED8_064_010 unk_10; + /* 0x14 */ unk_func_88203ED8_064_014 unk_14; + /* 0x18 */ char unk18[0x4]; + /* 0x1C */ s32 unk_1C; + /* 0x20 */ s32 unk_20; + /* 0x24 */ struct unk_func_88203ED8* unk_24; +} unk_func_88203ED8_064; // size = 0x28 + +typedef struct unk_func_88205880_0098_008 { + /* 0x00 */ unk_func_88001300_000 unk_00; + /* 0x2C */ char unk2C[0x64]; +} unk_func_88205880_0098_008; // size = 0x90 + +typedef struct unk_func_88205880_0098 { + /* 0x00 */ s16 unk_00; + /* 0x02 */ s16 unk_02; + /* 0x04 */ MemoryPool* unk_04; + /* 0x08 */ unk_func_88205880_0098_008* unk_08; + /* 0x0C */ s32 unk_0C; + /* 0x10 */ s32 unk_10; + /* 0x14 */ char* unk_14; + /* 0x18 */ char* unk_18; + /* 0x1C */ char* unk_1C; + /* 0x20 */ char* unk_20; + /* 0x24 */ char* unk_24; + /* 0x28 */ char* unk_28; + /* 0x2C */ char* unk_2C; + /* 0x30 */ char* unk_30; + /* 0x34 */ char* unk_34; +} unk_func_88205880_0098; // size = 0x38 + +typedef struct unk_func_88201DA0 { + /* 0x00 */ unk_func_88001300_000 unk_00; + /* 0x2C */ unk_func_88001300_038* unk_2C; + /* 0x30 */ unk_func_88200FA0_030_030* unk_30; + /* 0x34 */ unk_func_88201DA0_034* unk_34; + /* 0x38 */ unk_func_88201DA0_038 unk_38; + /* 0x48 */ FragmentEntry unk_48; + /* 0x4C */ unk_func_88205880_0098* unk_4C; + /* 0x50 */ unk_func_8850878C* unk_50; + /* 0x54 */ char* unk_54; + /* 0x58 */ unk_func_8850182C* unk_58; + /* 0x5C */ unk_func_88205880_00D0* unk_5C; + /* 0x60 */ u32 unk_60; +} unk_func_88201DA0; // size = 0x64 + +typedef struct unk_func_8820253C { + /* 0x00 */ unk_func_88001300_000 unk_00; + /* 0x2C */ unk_func_88205880_00D0* unk_2C; +} unk_func_8820253C; // size = 0x30 + +typedef struct unk_func_88217740 { + /* 0x00 */ unk_func_88001300_000 unk_00; + /* 0x2C */ s32 unk_2C; + /* 0x30 */ s32 unk_30; +} unk_func_88217740; // size = 0x34 + +typedef struct unk_func_882149A0 { + /* 0x00 */ unk_func_88001300_000 unk_00; + /* 0x2C */ u8* unk_2C; + /* 0x30 */ s16 unk_30; + /* 0x32 */ Color_RGBA8 unk_32; + /* 0x36 */ Color_RGBA8 unk_36; + /* 0x3A */ Color_RGBA8 unk_3A; + /* 0x40 */ s32 unk_40; +} unk_func_882149A0; // size = 0x44 + +typedef struct unk_func_88203ED8 { + /* 0x00 */ unk_func_88001300_000 unk_00; + /* 0x2C */ unk_func_88001300_038* unk_2C; + /* 0x2C */ unk_func_8820399C* unk_30; + /* 0x2C */ unk_func_8820399C* unk_34; + /* 0x2C */ unk_func_88200FA0_030_030* unk_38; + /* 0x2C */ unk_func_88200FA0_030_030* unk_3C; + /* 0x2C */ unk_func_88217740* unk_40; + /* 0x44 */ unk_func_882149A0* unk_44[5]; + /* 0x58 */ unk_func_88500994* unk_58; + /* 0x5C */ unk_func_88201DA0* unk_5C; + /* 0x60 */ unk_func_88509F48* unk_60; + /* 0x64 */ unk_func_88203ED8_064* unk_64; + /* 0x68 */ unk_func_88001300_03C* unk_68; + /* 0x6C */ unk_func_882025E0* unk_6C; + /* 0x70 */ unk_func_8850CD44* unk_70; + /* 0x74 */ unk_func_882173EC* unk_74[2]; + /* 0x7C */ unk_func_8820253C* unk_7C[2]; + /* 0x84 */ unk_func_889000C4* unk_84; +} unk_func_88203ED8; // size = 0x88 + +typedef struct unk_func_8820BE14_02C_038_084 { + /* 0x00 */ unk_func_88001300_000 unk_00; +} unk_func_8820BE14_02C_038_084; // size >= 0x18 + +typedef struct unk_func_8820BE14_02C_038 { + /* 0x00 */ unk_func_88200FA0_030_030 unk_00; // unk_func_882025E0_024 + /* 0x54 */ u16 unk_54; + /* 0x56 */ u16 unk_56; + /* 0x58 */ s32 unk_58; + /* 0x5C */ s32 unk_5C; + /* 0x60 */ s32 unk_60; + /* 0x64 */ s32 unk_64; + /* 0x68 */ s32 unk_68; + /* 0x6C */ s32 unk_6C; + /* 0x70 */ s32 unk_70; + /* 0x74 */ unk_func_88001300_01C unk_74; + /* 0x78 */ unk_func_88001300_018 unk_78; + /* 0x7C */ unk_func_88001300_020 unk_7C; + /* 0x80 */ unk_func_88001300_018 unk_80; + /* 0x84 */ unk_func_8820BE14_02C_038_084* unk_84; + /* 0x88 */ s32* unk_88; + /* 0x8C */ u32 unk_8C; +} unk_func_8820BE14_02C_038; // size = 0x90 + +typedef struct unk_func_88507D4C { + /* 0x00 */ unk_func_88001300_000 unk_00; + /* 0x2C */ unk_func_8820BE14_02C_038* unk_2C; + /* 0x30 */ s32 unk_30; +} unk_func_88507D4C; // size = 0x34 + +typedef struct unk_func_8850BD40 { + /* 0x00 */ unk_func_88001300_000_000 unk_00; + /* 0x0C */ char unk0C[0x14]; +} unk_func_8850BD40; // size = 0x20 + +typedef struct unk_func_8821421C_038_034 { + /* 0x00 */ unk_func_88200FA0_030_030 unk_00; + /* 0x54 */ char unk54[0x1C]; +} unk_func_8821421C_038_034; // size = 0x70 + +typedef struct unk_func_8821421C_038_050 { + /* 0x00 */ char unk00[0x8]; + /* 0x08 */ char unk_08[4]; + /* 0x0C */ char unk0C[0x8]; +} unk_func_8821421C_038_050; // size = 0x14 + +typedef struct unk_func_8820E99C_030_044 { + /* 0x00 */ unk_func_88001300_000 unk_00; + /* 0x2C */ char unk2C[0x4]; + /* 0x30 */ s32 unk_30; +} unk_func_8820E99C_030_044; // size = 0x34 typedef void (*func88500020)(unk_func_88500020*, s32, s32); +typedef void (*func88500668)(unk_func_882025E0*, s32); typedef void (*func8850068C)(unk_func_88001300_000_000*, unk_func_88001300_000_000*); typedef void (*func885007CC)(unk_func_88001300_000*, s32); typedef void (*func88500828)(unk_func_88001300*, s32, s32); typedef void (*func885008C4)(unk_func_88001300*); typedef void (*func8850093C)(s32, s32); +typedef void (*func88500994)(unk_func_88500994*, s32, s32); +typedef void (*func88500A3C)(unk_func_88500994*, unk_func_8850878C*); +typedef void (*func88500A6C)(unk_func_88500994*, s32); typedef void (*func88500E34)(unk_func_88500E34*, s32, s32, s32, s32, u8*); +typedef void (*func88500EE4)(unk_func_88500EE4*, s32, s32, s32, s32, u8*, Color_RGBA8, Color_RGBA8); +typedef void (*func885012A4)(unk_func_885012A4*, s32, s32, s32, s32, Color_RGBA8); +typedef void (*func8850143C)(unk_func_8850143C*, s32, s32, s32, s32, Color_RGBA8, Color_RGBA8); +typedef void (*func8850182C)(unk_func_8850182C*, s32, s32, s32, s32, Color_RGBA8); typedef void (*func88502274)(unk_func_88001300_038*, s32, s32, s32, s32); +typedef void (*func88502C98)(unk_func_88001300_038*); typedef void (*func88503118)(unk_func_88001300_02C*, s32, s32, s32, s32); +typedef void (*func885031E8)(unk_func_88001300_000*, s32, s32, s32, s32); +typedef void (*func88503298)(unk_func_88503298*, unk_func_88001300_038*, unk_func_88001300_000*); +typedef void (*func88503340)(unk_func_88001300_03C_01C*, s32, s32, s32, s32, Color_RGBA8); typedef void (*func88504570)(unk_func_88001300_03C_01C*, s32, s32, s32, s32, Color_RGBA8); +typedef void (*func88504F98)(unk_func_8820E99C_030_044*, s32, s32, s32, s32); typedef void (*func885054D8)(unk_func_88001300_030*, s32, s32, s32, s32, Color_RGBA8); typedef void (*func88505E2C)(unk_func_88001300_034*, s32, s32, s32, s32, s32, Color_RGBA8, unk_D_800AC870*); typedef void (*func88506074)(unk_func_88001300_034*, char*); +typedef void (*func885060BC)(unk_func_88200FA0_030_030*, s32, s32, unk_func_88200FA0_030_030_040, s32, s32, s32, s32, MemoryPool*); +typedef void (*func88506238)(unk_func_88200FA0_030_030*, s32, MemoryPool*); +typedef void (*func8850628C)(unk_func_88200FA0_030_030*); +typedef void (*func88506384)(unk_func_88200FA0_030_030*, unk_func_88200FA0_030_038*, MemoryPool*); +typedef void (*func885063B8)(unk_func_88200FA0_030_030*, unk_func_88201DA0_038*); +typedef void (*func88506404)(unk_func_88200FA0_030_030*, u8*, MemoryPool*); +typedef void (*func88506BFC)(unk_func_88200FA0_030_030*, s32); +typedef void (*func88506CE4)(unk_func_88200FA0_030_030*); +typedef void (*func88506DCC)(unk_func_8821421C_038_034*, s32, s32, void (*)(), s32, s32, s32, MemoryPool*); +typedef void (*func88506EE4)(unk_func_8820BE14_02C_038*, unk_func_88200FA0_030_038*); +typedef void (*func88506F50)(unk_func_8821421C_038_034*, unk_func_8821421C_038_050**); +typedef void (*func88506FC0)(unk_func_8820BE14_02C_038*); +typedef void (*func88506FE0)(unk_func_8820BE14_02C_038*); +typedef void (*func88507AE4)(unk_func_8820BE14_02C_038*, s32); +typedef void (*func88507B80)(unk_func_8820BE14_02C_038*, s32); +typedef void (*func88507CC4)(unk_func_8820BE14_02C_038*, unk_func_88205880_00D0*); +typedef void (*func88507CEC)(unk_func_8820BE14_02C_038*); +typedef void (*func88507D4C)(unk_func_88507D4C*, s32, s32, s32, s32, unk_func_8820BE14_02C_038*); +typedef void (*func8850878C)(unk_func_8850878C*, s32, s32, char*, s32); +typedef void (*func885088F4)(unk_func_885088F4*, s32, s32, s32); typedef void (*func88509A2C)(unk_func_88509A2C*, s32, s32, s32, char*); +typedef void (*func88509E34)(unk_func_88509E34*, s32, s32, char*); +typedef void (*func88509F48)(unk_func_88509F48*, s32, s32, s32, s32, MemoryPool*, s32); +typedef void (*func8850A10C)(unk_func_88509F48*, unk_func_8850878C*, s32, s32); +typedef void (*func8850A3CC)(unk_func_88509F48*, Controller*); +typedef void (*func8850A3EC)(unk_func_88509F48*, Controller*); +typedef void (*func8850A40C)(unk_func_88001300_000*, s32, s32, s32, s32); +typedef void (*func8850AB48)(unk_func_88001300_000*, s32, s32, s32, s32); +typedef void (*func8850B254)(unk_func_8850B254*, s32, s32, s32, s32, Color_RGBA8, Color_RGBA8); typedef void (*func8850BC94)(s32); +typedef void (*func8850BD40)(unk_func_8850BD40*, unk_func_8821421C_038_034*); +typedef void (*func8850BDF0)(unk_func_88203ED8_064* arg0); +typedef void (*func8850BF60)(unk_func_88001300_000*, s32); +typedef void (*func8850BF80)(unk_func_88001300_000*, unk_func_88001300_000*); +typedef void (*func8850BFB0)(unk_func_88203ED8_064*); +typedef void (*func8850C064)(unk_func_88203ED8_064*, s32); typedef void (*func8850C284)(unk_func_88001300_03C*, s32, s32, MemoryPool*); +typedef void (*func8850CAB4)(unk_func_88001300_03C*); typedef void (*func8850CB48)(unk_func_88001300_03C*, s32); +typedef void (*func8850CC74)(unk_func_88001300_000*, unk_func_88001300_000*); +typedef void (*func8850CD44)(unk_func_8850CD44*, s32, MemoryPool*); +typedef void (*func8850CF00)(unk_func_8850CD44*, s32); + void func_88500020(unk_func_88500020*, s32, s32); +void func_88500668(unk_func_882025E0*, s32); void func_8850068C(unk_func_88001300_000_000*, unk_func_88001300_000_000*); void func_885007CC(unk_func_88001300_000*, s32); -void func_88500828(unk_func_88001300*, s32, s32); -void func_885008C4(unk_func_88001300*); +void func_88500828(unk_func_88001300_000*, s32, s32); +void func_885008C4(unk_func_88001300_000*); void func_8850093C(s32, s32); +void func_88500994(unk_func_88500994*, s32, s32); +void func_88500A3C(unk_func_88500994*, unk_func_8850878C*); +void func_88500A6C(unk_func_88500994*, s32); void func_88500E34(unk_func_88500E34*, s32, s32, s32, s32, u8*); +void func_88500EE4(unk_func_88500EE4*, s32, s32, s32, s32, u8*, Color_RGBA8, Color_RGBA8); +void func_885012A4(unk_func_885012A4*, s32, s32, s32, s32, Color_RGBA8); +void func_8850143C(unk_func_8850143C*, s32, s32, s32, s32, Color_RGBA8, Color_RGBA8); +void func_8850182C(unk_func_8850182C*, s32, s32, s32, s32, Color_RGBA8); void func_88502274(unk_func_88001300_038*, s32, s32, s32, s32); +void func_88502C98(unk_func_88001300_038*); void func_88503118(unk_func_88001300_02C*, s32, s32, s32, s32); +void func_885031E8(unk_func_88001300_000*, s32, s32, s32, s32); +void func_88503298(unk_func_88503298*, unk_func_88001300_038*, unk_func_88001300_000*); +void func_88503340(unk_func_88001300_03C_01C*, s32, s32, s32, s32, Color_RGBA8); void func_88504570(unk_func_88001300_03C_01C*, s32, s32, s32, s32, Color_RGBA8); +void func_88504F98(unk_func_8820E99C_030_044*, s32, s32, s32, s32); void func_885054D8(unk_func_88001300_030*, s32, s32, s32, s32, Color_RGBA8); void func_88505E2C(unk_func_88001300_034*, s32, s32, s32, s32, s32, Color_RGBA8, unk_D_800AC870*); void func_88506074(unk_func_88001300_034* arg0, char* arg1); +void func_885060BC(unk_func_88200FA0_030_030*, s32, s32, unk_func_88200FA0_030_030_040, s32, s32, s32, s32, MemoryPool*); +void func_88506238(unk_func_88200FA0_030_030*, s32, MemoryPool*); +void func_8850628C(unk_func_88200FA0_030_030*); +void func_88506384(unk_func_88200FA0_030_030*, unk_func_88200FA0_030_038*, MemoryPool*); +void func_885063B8(unk_func_88200FA0_030_030*, unk_func_88201DA0_038*); +void func_88506404(unk_func_88200FA0_030_030*, u8*, MemoryPool*); +void func_88506BFC(unk_func_88200FA0_030_030*, s32); +void func_88506CE4(unk_func_88200FA0_030_030*); +void func_88506DCC(unk_func_8821421C_038_034*, s32, s32, void (*)(), s32, s32, s32, MemoryPool*); +void func_88506EE4(unk_func_8820BE14_02C_038*, unk_func_88200FA0_030_038*); +void func_88506F50(unk_func_8821421C_038_034*, unk_func_8821421C_038_050**); +void func_88506FC0(unk_func_8820BE14_02C_038*); +void func_88506FE0(unk_func_8820BE14_02C_038*); +void func_88507AE4(unk_func_8820BE14_02C_038*, s32); +void func_88507B80(unk_func_8820BE14_02C_038*, s32); +void func_88507CC4(unk_func_8820BE14_02C_038*, unk_func_88205880_00D0*); +void func_88507CEC(unk_func_8820BE14_02C_038*); +void func_88507D4C(unk_func_88507D4C*, s32, s32, s32, s32, unk_func_8820BE14_02C_038*); +void func_8850878C(unk_func_8850878C*, s32, s32, char*, s32); +void func_885088F4(unk_func_885088F4*, s32, s32, s32); void func_88509A2C(unk_func_88509A2C*, s32, s32, s32, char*); +void func_88509E34(unk_func_88509E34*, s32, s32, char*); +void func_88509F48(unk_func_88509F48*, s32, s32, s32, s32, MemoryPool*, s32); +void func_8850A10C(unk_func_88509F48*, unk_func_8850878C*, s32, s32); +void func_8850A3CC(unk_func_88509F48*, Controller*); +void func_8850A3EC(unk_func_88509F48*, Controller*); +void func_8850A40C(unk_func_88001300_000*, s32, s32, s32, s32); +void func_8850AB48(unk_func_88001300_000*, s32, s32, s32, s32); +void func_8850B254(unk_func_8850B254*, s32, s32, s32, s32, Color_RGBA8, Color_RGBA8); void func_8850BC94(s32); +void func_8850BD40(unk_func_8850BD40*, unk_func_8821421C_038_034*); +void func_8850BDF0(unk_func_88203ED8_064* arg0); +void func_8850BF60(unk_func_88001300_000*, s32); +void func_8850BF80(unk_func_88001300_000*, unk_func_88001300_000_000*); +void func_8850BFB0(unk_func_88203ED8_064*); +void func_8850C064(unk_func_88203ED8_064*, s32); void func_8850C284(unk_func_88001300_03C*, s32, s32, MemoryPool*); +void func_8850CAB4(unk_func_88001300_03C*); void func_8850CB48(unk_func_88001300_03C*, s32, s32); - +void func_8850CC74(unk_func_88001300_000*, unk_func_88001300_000*); +void func_8850CD44(unk_func_8850CD44*, s32, MemoryPool*); +void func_8850CF00(unk_func_8850CD44*, s32); #endif // _FRAGMENT26_H_ diff --git a/src/fragments/29/fragment29.c b/src/fragments/29/fragment29.c index a0268d7a..19e5c774 100644 --- a/src/fragments/29/fragment29.c +++ b/src/fragments/29/fragment29.c @@ -1,4 +1,4 @@ -#include "global.h" +#include "fragment29.h" #pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/29/fragment29/func_88900020.s") diff --git a/src/fragments/29/fragment29.h b/src/fragments/29/fragment29.h new file mode 100644 index 00000000..a0a64090 --- /dev/null +++ b/src/fragments/29/fragment29.h @@ -0,0 +1,19 @@ +#ifndef _FRAGMENT29_H_ +#define _FRAGMENT29_H_ + +#include "global.h" +#include "src/fragments/26/fragment26.h" + +typedef void (*func889000C4)(unk_func_889000C4*, s32, unk_func_88001300_038*, s32, char*, MemoryPool*); +typedef void (*func889006D4)(unk_func_889000C4*, s32); +typedef void (*func889007AC)(unk_func_889000C4*); +typedef s32 (*func88900808)(unk_func_889000C4*, Controller*, s32); +typedef void (*func88900970)(unk_func_889000C4*, s32); + +void func_889000C4(unk_func_889000C4*, s32, unk_func_88001300_038*, s32, char*, MemoryPool*); +void func_889006D4(unk_func_889000C4*, s32); +void func_889007AC(unk_func_889000C4*); +s32 func_88900808(unk_func_889000C4*, Controller*, s32); +void func_88900970(unk_func_889000C4*, s32); + +#endif // _FRAGMENT29_H_ diff --git a/src/memmap.c b/src/memmap.c index 26563c28..b5c9a436 100644 --- a/src/memmap.c +++ b/src/memmap.c @@ -170,15 +170,16 @@ uintptr_t Memmap_GetFragmentBaseVaddr(u32 id) { * Y: Fragment number. * Z: Fragment offset. */ -uintptr_t Memmap_GetFragmentVaddr(u32 mask) { - if ((mask >= 0x81000000U) && (mask < 0x90000000U)) { - u32 id = ((mask & 0x0FF00000) >> 0x14) - 0x10; - u32 value = ((mask & 0x000FFFFF)); +uintptr_t Memmap_GetFragmentVaddr(void* addr) { + if (((u32)addr >= 0x81000000U) && ((u32)addr < 0x90000000U)) { + u32 id = (((u32)addr & 0x0FF00000) >> 0x14) - 0x10; + u32 value = (((u32)addr & 0x000FFFFF)); + if (gFragments[id].vaddr != NULL) { - mask = gFragments[id].vaddr + value; + addr = gFragments[id].vaddr + value; } } - return mask; + return (uintptr_t)addr; } /* diff --git a/src/memmap.h b/src/memmap.h index 26d29a49..94c82227 100644 --- a/src/memmap.h +++ b/src/memmap.h @@ -49,7 +49,7 @@ void Memmap_SetSegments(Gfx** gfxDl); void Memmap_RelocateFragment(u32 id, struct Fragment* fragment); void Memmap_SetFragmentMap(u32 id, uintptr_t vaddr, size_t size); uintptr_t Memmap_GetFragmentBaseVaddr(u32 id); -uintptr_t Memmap_GetFragmentVaddr(u32 mask); +uintptr_t Memmap_GetFragmentVaddr(void* addr); u32 Memmap_GetFragmentVaddrMask(u32 i, uintptr_t addr); void Memmap_ClearFragmentMemmap(u32 id); uintptr_t Memmap_GetLoadedFragmentVaddr(uintptr_t addr); diff --git a/src/memory.h b/src/memory.h index 3d6e8128..f73182f6 100644 --- a/src/memory.h +++ b/src/memory.h @@ -69,8 +69,8 @@ MainPool*main_pool_get_pool(void); // memory.c MemoryPool *mem_pool_try_init(u32 size, s32 side); -MainPool* mem_pool_init(MainPool*pool, s32 size); -void *mem_pool_alloc(MainPool*node, s32 size); +MainPool* mem_pool_init(MainPool* pool, s32 size); +void *mem_pool_alloc(MainPool* node, s32 size); void mem_pool_free(MemoryPool* pool, void* addr); void *func_80002D10(u32 size, s32 side); diff --git a/src/memory_main.c b/src/memory_main.c index 9bf25dd9..c49b381d 100644 --- a/src/memory_main.c +++ b/src/memory_main.c @@ -214,7 +214,7 @@ u32 main_pool_get_available(void) { * in the pool. */ u32 main_pool_push_state(u32 arg) { - struct MainPoolState* state; + MainPoolState* state; MainPoolBlock* listHeadL; MainPoolBlock* listHeadR; uintptr_t available; @@ -263,11 +263,11 @@ u32 main_pool_push_state(u32 arg) { * amount of free space left in the pool. */ u32 main_pool_pop_state(u32 arg) { - struct MainPoolState* node; + MainPoolState* node; MainPoolBlock* argptr; void* listHeadL; void* listHeadR; - struct MainPoolState* state; + MainPoolState* state; osRecvMesg(&sMemPool.queue, NULL, OS_MESG_BLOCK); @@ -387,7 +387,7 @@ void main_pool_set_func(void* block, s32 arg, AllocateFunc func) { * Get the distance offset from the block's state listHeadL pointer to the current block. */ size_t main_pool_get_block_dist(MainPoolBlock* block) { - struct MainPoolState* state = ((u8*)block - sizeof(MainPoolBlock)); + MainPoolState* state = ((u8*)block - sizeof(MainPoolBlock)); return (size_t)((uintptr_t)state->listHeadL - (uintptr_t)block); } diff --git a/yamls/us/rom.yaml b/yamls/us/rom.yaml index a659c474..80986868 100644 --- a/yamls/us/rom.yaml +++ b/yamls/us/rom.yaml @@ -1145,12 +1145,19 @@ - [0x1AE680, c, fragments/23/fragment23_1AE680] - [0x1B4EA0, c, fragments/23/fragment23_1B4EA0] - [0x1BCF10, c, fragments/23/fragment23_1BCF10] - - [0x1C0160, data, fragments/23/fragment23_data] - - [0x1CD3C0, rodata, fragments/23/fragment23_rodata_1CD3C0] - - [0x1CD400, rodata, fragments/23/fragment23_rodata_1CD400] - - [0x1CD470, rodata, fragments/23/fragment23_rodata_1CD470] - - - {vram: 0x88224F90, type: bss, name: fragments/23/fragment23_bss} + - [0x1C0160, c, fragments/23/fragment23_882181B0] + - [0x1C0160, .data, fragments/23/fragment23_1A8800] # fragment23_1A8800 + - [0x1C0190, .data, fragments/23/fragment23_1A9780] # fragment23_1A9780 + - [0x1C0280, .data, fragments/23/fragment23_1AE680] # fragment23_1AE680 + - [0x1C0540, .data, fragments/23/fragment23_1B4EA0] # fragment23_1B4EA0 + - [0x1C0720, .data, fragments/23/fragment23_882181B0] # fragment23_882181B0 + - [0x1CD3C0, .rodata, fragments/23/fragment23_1A9780] # fragment23_1A9780 + - [0x1CD400, .rodata, fragments/23/fragment23_1AE680] + - [0x1CD470, .rodata, fragments/23/fragment23_1B4EA0] + + - {vram: 0x88224F90, type: .bss, name: fragments/23/fragment23_1A8800} # fragment23_1A8800 + - {vram: 0x88224FA0, type: .bss, name: fragments/23/fragment23_1A9780} # fragment23_1A9780 + - {vram: 0x88224FC0, type: .bss, name: fragments/23/fragment23_1B4EA0} # fragment23_1B4EA0 - name: fragment23_relocs type: code