From 4b7e47bbc5e10565fab250d11dccfc49f89f62d9 Mon Sep 17 00:00:00 2001 From: Maide Date: Sat, 31 Aug 2024 18:20:16 +0100 Subject: [PATCH] fragment2 --- include/global.h | 29 +- include/macros.h | 12 + include/math.h | 4 +- include/variables.h | 35 +- linker_scripts/us/symbol_addrs.txt | 6 +- src/11BA0.c | 52 +- src/11BA0.h | 12 +- src/1C720.c | 36 +- src/1CF30.c | 47 +- src/1CF30.h | 35 +- src/20470.h | 1 + src/26820.c | 2 +- src/26820.h | 11 + src/2E110.h | 4 + src/490A0.h | 1 + src/4BA90.h | 5 +- src/4CBC0.c | 2 +- src/4CBC0.h | 29 +- src/fragments/2/fragment2.c | 660 +++++++- src/fragments/2/fragment2.h | 72 +- src/fragments/2/fragment2_1.c | 196 +++ src/fragments/2/fragment2_2.c | 2305 ++++++++++++++++++++++++++++ yamls/us/rom.yaml | 15 +- 23 files changed, 3344 insertions(+), 227 deletions(-) create mode 100644 src/26820.h create mode 100644 src/fragments/2/fragment2_1.c create mode 100644 src/fragments/2/fragment2_2.c diff --git a/include/global.h b/include/global.h index 16bf8617..055aade6 100644 --- a/include/global.h +++ b/include/global.h @@ -44,16 +44,20 @@ typedef struct unk_D_86002F58_004_000_004 { /* 0x08 */ unk_D_86002F58_004_000_010* unk_08; } unk_D_86002F58_004_000_004; // size >= 0x0C +typedef struct unk_D_86002F58_004_000_000 { + /* 0x00 */ u8 unk_00; + /* 0x01 */ u8 unk_01; + /* 0x02 */ u8 unk_02; + /* 0x03 */ u8 unk_03; + /* 0x04 */ struct unk_D_86002F58_004_000_000* unk_04; + /* 0x08 */ struct unk_D_86002F58_004_000_000* unk_08; + /* 0x0C */ unk_D_86002F58_004_000_00C* unk_0C; + /* 0x10 */ s32 unk_10; + /* 0x14 */ s32 unk_14; +} unk_D_86002F58_004_000_000; // size = 0x18 + typedef struct unk_D_86002F58_004_000 { - /* 0x000 */ u8 unk_000; - /* 0x001 */ u8 unk_001; - /* 0x002 */ u8 unk_002; - /* 0x003 */ u8 unk_003; - /* 0x004 */ struct unk_D_86002F58_004_000* unk_004; - /* 0x008 */ struct unk_D_86002F58_004_000* unk_008; - /* 0x00C */ unk_D_86002F58_004_000_00C* unk_00C; - /* 0x010 */ s32 unk_010; - /* 0x014 */ s32 unk_014; + /* 0x000 */ unk_D_86002F58_004_000_000 unk_000; /* 0x018 */ s16 unk_018; /* 0x01A */ s16 unk_01A; /* 0x01C */ u8 unk_01C; @@ -83,7 +87,6 @@ typedef struct unk_D_86002F58_004_000 { /* 0x0B4 */ char padB4[0xB4]; } unk_D_86002F58_004_000; // size = 0x168 -// possibly unk_D_86002F58_004_000 typedef struct unk_D_86002F34_00C { /* 0x00 */ char pad0[0x24]; /* 0x24 */ MtxF* unk_024; @@ -115,12 +118,6 @@ typedef struct unk_D_86002F30 { /* 0x08 */ unk_D_86002F58_004_000_004* unk_08[4]; } unk_D_86002F30; // size = 0x18 ?? -typedef struct unk_D_800AC840 { - /* 0x00 */ char pad0[0xC]; - /* 0x0C */ unk_D_86002F58_004_000* unk_0C; - /* 0x10 */ char pad10[8]; -} unk_D_800AC840; // size = 0x18 - struct UnkInputStruct8000D738 { s32 unk0; s32 unk4; diff --git a/include/macros.h b/include/macros.h index 9ce74973..07f7c37f 100644 --- a/include/macros.h +++ b/include/macros.h @@ -37,4 +37,16 @@ #define ALIGN16(val) (((val) + 0xF) & ~0xF) #define ALIGN64(val) (((val) + 0x3F) & ~0x3F) +#define DECR(x) ((x) == 0 ? 0 : --(x)) + +//! checks min first +#define CLAMP(x, min, max) ((x) < (min) ? (min) : (x) > (max) ? (max) : (x)) +//! checks max first +#define CLAMP_ALT(x, min, max) ((x) > (max) ? (max) : (x) < (min) ? (min) : (x)) +#define CLAMP_MAX(x, max) ((x) > (max) ? (max) : (x)) +#define CLAMP_MIN(x, min) ((x) < (min) ? (min) : (x)) + +#define ABS(x) ((x) >= 0 ? (x) : -(x)) +#define ABS_ALT(x) ((x) < 0 ? -(x) : (x)) + #endif diff --git a/include/math.h b/include/math.h index 7e8bc839..248fa3ed 100644 --- a/include/math.h +++ b/include/math.h @@ -29,13 +29,13 @@ typedef union { }; } MtxF; -typedef struct { +typedef struct Vec3f { /* 0x0 */ f32 x; /* 0x4 */ f32 y; /* 0x8 */ f32 z; } Vec3f; // size = 0xC -typedef struct { +typedef struct Vec3s { /* 0x0 */ s16 x; /* 0x2 */ s16 y; /* 0x4 */ s16 z; diff --git a/include/variables.h b/include/variables.h index 346e6ee5..34c901da 100644 --- a/include/variables.h +++ b/include/variables.h @@ -36,9 +36,11 @@ extern u32 D_81000000; extern u32 D_8D000000; typedef struct unk_D_80068BA0 { - /* 0x00 */ char pad00[6]; + /* 0x00 */ char pad00[0x4]; + /* 0x04 */ s16 unk_04; /* 0x06 */ u16 unk_06; /* 0x08 */ u16 unk_08; + /* 0x0A */ char pad0A[0x2]; } unk_D_80068BA0; // size >= 0xC extern unk_D_80068BA0* D_80068BA0; @@ -95,13 +97,13 @@ typedef struct unk_D_800A7440 { } unk_D_800A7440; // size >= 0x8 extern unk_D_800A7440 D_800A7440; -extern struct unk_D_800AC840 D_800AC840; -extern struct unk_D_800AC840 D_800AC858; +extern struct unk_D_86002F58_004_000_000 D_800AC840; +extern struct unk_D_86002F58_004_000_000 D_800AC858; extern struct unk_D_86002F58_004_000* D_8006F09C; -extern s32 D_8006F050[]; -extern s16 D_8006F05C[]; -extern f32 D_8006F064[]; +extern struct Vec3f D_8006F050; +extern struct Vec3s D_8006F05C; +extern struct Vec3f D_8006F064; typedef struct unk_D_8006FF00 { /* 0x00 */ char unk_00[0x10]; @@ -111,11 +113,6 @@ typedef struct unk_D_8006FF00 { } unk_D_8006FF00; // size = 0x1C extern unk_D_8006FF00 D_8006FF00[]; -extern s16 D_8780FA2C; -extern s16 D_8780FA32; -extern s16 D_8780FA34; -extern s16 D_8780FA36; - typedef struct unk_D_800AC870_sub { /* 0x00 */ s16 unk_00; /* 0x02 */ s16 unk_02; @@ -199,4 +196,20 @@ typedef struct unk_D_800FC798 { } unk_D_800FC798; // size >= 0xC extern unk_D_800FC798* D_800FC798; +typedef struct unk_D_800A6CF4 { + /* 0x00 */ char unk00[0x20]; + /* 0x20 */ s32 unk_20; +} unk_D_800A6CF4; // size = 0x24 +extern unk_D_800A6CF4 D_800A6CF4; + +extern Mtx D_8006F010; +extern u32 D_3010000; +extern u32 D_3016E80; +extern u32 D_30200C0; +extern u32 D_3004000; +extern u32 D_3008000; +extern u32 D_300C000; +extern u32 D_1003E78[]; +extern u32 D_304F120[]; + #endif diff --git a/linker_scripts/us/symbol_addrs.txt b/linker_scripts/us/symbol_addrs.txt index fa54f516..618d72a5 100644 --- a/linker_scripts/us/symbol_addrs.txt +++ b/linker_scripts/us/symbol_addrs.txt @@ -71,8 +71,7 @@ gSIEventMesgBuf = 0x800A73F8; gEepromMesgQueue = 0x800A7400; gEepromMesgBuf = 0x800A73FC; .L8120A860 = 0x8120A860; -D_8780FA30 = 0x8780FA30; -D_8780FA34 = 0x8780FA34; +D_8780FA30 = 0x8780FA30; // size:0x8 D_87906044 = 0x87906044; D_87906048 = 0x87906048; D_87906060 = 0x87906060; @@ -241,3 +240,6 @@ D_87A01190 = 0x87A01190; D_87A011A4 = 0x87A011A4; D_800A7428 = 0x800A7428; D_80079014 = 0x80079014; +D_3004000 = 0x3004000; +D_8780FCB8 = 0x8780FCB8; // size:0x20 +D_8780FA68 = 0x8780FA68; // size:0x8 diff --git a/src/11BA0.c b/src/11BA0.c index 14238b71..b9fd6528 100644 --- a/src/11BA0.c +++ b/src/11BA0.c @@ -1,25 +1,25 @@ #include "global.h" #include "11BA0.h" -void func_80010FA0(unk_D_86002F58_004_000* arg0, u8 arg1) { +void func_80010FA0(unk_D_86002F58_004_000_000* arg0, u8 arg1) { if (arg0 != NULL) { - arg0->unk_000 = arg1; - arg0->unk_001 = 0x11; - arg0->unk_002 = 0; - arg0->unk_003 = 0; - arg0->unk_004 = arg0; - arg0->unk_008 = arg0; - arg0->unk_00C = NULL; - arg0->unk_010 = 0; - arg0->unk_014 = 0; + arg0->unk_00 = arg1; + arg0->unk_01 = 0x11; + arg0->unk_02 = 0; + arg0->unk_03 = 0; + arg0->unk_04 = arg0; + arg0->unk_08 = arg0; + arg0->unk_0C = NULL; + arg0->unk_10 = 0; + arg0->unk_14 = 0; } } #pragma GLOBAL_ASM("asm/us/nonmatchings/11BA0/func_80010FDC.s") -unk_D_86002F58_004_000* func_8001103C(MainPoolState* arg0, void* arg1) { +unk_D_86002F58_004_000_000* func_8001103C(MainPoolState* arg0, void* arg1) { if (arg0 != 0) { - arg1 = func_80002DCC(arg0, 0x18, 4); + arg1 = func_80002DCC(arg0, sizeof(unk_D_86002F58_004_000_000), 4); } if (arg1 != NULL) { @@ -67,10 +67,10 @@ unk_D_86002F58_004_000* func_8001103C(MainPoolState* arg0, void* arg1) { #pragma GLOBAL_ASM("asm/us/nonmatchings/11BA0/func_800118D0.s") -unk_D_86002F58_004_000* func_80011938(s32 arg0, unk_D_86002F58_004_000* arg1, s16 arg2, Vec3f* arg3, Vec3s* arg4, - Vec3f* arg5) { +unk_D_86002F58_004_000* func_80011938(MainPoolState* arg0, unk_D_86002F58_004_000* arg1, s16 arg2, Vec3f* arg3, + Vec3s* arg4, Vec3f* arg5) { if (arg0 != 0) { - arg1 = func_80002DCC(arg0, 0x168, 4); + arg1 = func_80002DCC(arg0, sizeof(unk_D_86002F58_004_000), 4); } if (arg1 != NULL) { @@ -93,8 +93,8 @@ unk_D_86002F58_004_000* func_80011938(s32 arg0, unk_D_86002F58_004_000* arg1, s1 arg1->unk_058 = 0; arg1->unk_05C = 0; arg1->unk_05E = 0; - func_80010FA0(arg1, 0x16); - arg1->unk_002 |= 0x60; + func_80010FA0(&arg1->unk_000, 0x16); + arg1->unk_000.unk_02 |= 0x60; } return arg1; @@ -124,21 +124,21 @@ unk_D_86002F58_004_000* func_80011938(s32 arg0, unk_D_86002F58_004_000* arg1, s1 #pragma GLOBAL_ASM("asm/us/nonmatchings/11BA0/func_80012044.s") -void func_80012094(unk_D_800AC840* arg0, unk_D_86002F58_004_000* arg1) { - unk_D_86002F58_004_000* temp_v0; - unk_D_86002F58_004_000_004* temp_v1; +void func_80012094(unk_D_86002F58_004_000_000* arg0, unk_D_86002F58_004_000_000* arg1) { + unk_D_86002F58_004_000_000* temp_v0; + unk_D_86002F58_004_000_000* temp_v1; if ((arg0 != NULL) && (arg1 != NULL)) { temp_v0 = arg0->unk_0C; if (temp_v0 == NULL) { arg0->unk_0C = arg1; - arg1->unk_004 = arg1; - arg1->unk_008 = arg1; + arg1->unk_04 = arg1; + arg1->unk_08 = arg1; } else { - temp_v1 = temp_v0->unk_004; - arg1->unk_008 = temp_v0; - arg1->unk_004 = temp_v1; - temp_v0->unk_004 = arg1; + temp_v1 = temp_v0->unk_04; + arg1->unk_08 = temp_v0; + arg1->unk_04 = temp_v1; + temp_v0->unk_04 = arg1; temp_v1->unk_08 = arg1; } } diff --git a/src/11BA0.h b/src/11BA0.h index 1c693db4..c2cb9df1 100644 --- a/src/11BA0.h +++ b/src/11BA0.h @@ -4,9 +4,15 @@ #include "global.h" #include "src/memory.h" -unk_D_86002F58_004_000* func_8001103C(MainPoolState*, void*); -unk_D_86002F58_004_000* func_80011938(s32 arg0, unk_D_86002F58_004_000* arg1, s16 arg2, Vec3f* arg3, Vec3s* arg4, Vec3f* arg5); -void func_80012094(unk_D_800AC840*, unk_D_86002F58_004_000*); +typedef struct unk_func_80011B94 { + /* 0x00 */ unk_D_86002F58_004_000_000 unk_00; + /* 0x18 */ Gfx* unk_18; +} unk_func_80011B94; // size = 0x1C + +unk_D_86002F58_004_000_000* func_8001103C(MainPoolState*, void*); +unk_D_86002F58_004_000* func_80011938(MainPoolState* arg0, unk_D_86002F58_004_000* arg1, s16 arg2, Vec3f* arg3, Vec3s* arg4, Vec3f* arg5); +unk_func_80011B94* func_80011B94(MainPoolState*, void*, s32, Gfx*); +void func_80012094(unk_D_86002F58_004_000_000*, unk_D_86002F58_004_000_000*); #endif // _11BA0_H_ diff --git a/src/1C720.c b/src/1C720.c index 26f82a5c..3e9066d6 100644 --- a/src/1C720.c +++ b/src/1C720.c @@ -15,20 +15,20 @@ void func_8001BB20(void) { } void func_8001BB58(unk_D_86002F58_004_000* arg0) { - func_80011938(0, arg0, 0, D_8006F050, D_8006F05C, D_8006F064); - func_80012094(&D_800AC840, arg0); + func_80011938(NULL, arg0, 0, &D_8006F050, &D_8006F05C, &D_8006F064); + func_80012094(&D_800AC840, &arg0->unk_000); arg0->unk_0A6 = 0; - arg0->unk_001 &= ~1; + arg0->unk_000.unk_01 &= ~1; } void func_8001BBC8(unk_D_86002F58_004_000* arg0) { - func_80011938(0, arg0, 0, D_8006F050, D_8006F05C, D_8006F064); - func_80012094(&D_800AC858, arg0); - arg0->unk_001 &= ~1; + func_80011938(NULL, arg0, 0, &D_8006F050, &D_8006F05C, &D_8006F064); + func_80012094(&D_800AC858, &arg0->unk_000); + arg0->unk_000.unk_01 &= ~1; } void func_8001BC34(unk_D_86002F58_004_000* arg0, s16 arg1, s16 arg2, unk_D_86002F58_004_000_004* arg3) { - func_80012094(arg0, arg3); + func_80012094(&arg0->unk_000, arg3); func_8000ED98(&arg0->unk_060); arg0->unk_018 = arg1; arg0->unk_01A = arg2; @@ -36,12 +36,12 @@ void func_8001BC34(unk_D_86002F58_004_000* arg0, s16 arg1, s16 arg2, unk_D_86002 arg0->unk_01D = 0xFF; arg0->unk_01C = 0; - arg0->unk_001 |= 0x1; + arg0->unk_000.unk_01 |= 0x1; - arg0->unk_002 &= ~0x4; - arg0->unk_002 |= 0x20; - arg0->unk_002 |= 0x40; - arg0->unk_002 &= ~0x2; + arg0->unk_000.unk_02 &= ~0x4; + arg0->unk_000.unk_02 |= 0x20; + arg0->unk_000.unk_02 |= 0x40; + arg0->unk_000.unk_02 &= ~0x2; arg0->unk_0A0 = -0x100; arg0->unk_03C = -0x100; @@ -50,7 +50,7 @@ void func_8001BC34(unk_D_86002F58_004_000* arg0, s16 arg1, s16 arg2, unk_D_86002 arg0->unk_054 = -1; arg0->unk_058 = 0; - arg0->unk_002 &= ~0x8; + arg0->unk_000.unk_02 &= ~0x8; if (arg2 > 0) { func_8003260C(arg0); @@ -58,12 +58,12 @@ void func_8001BC34(unk_D_86002F58_004_000* arg0, s16 arg1, s16 arg2, unk_D_86002 } void func_8001BCF0(unk_D_86002F58_004_000* arg0) { - arg0->unk_00C = NULL; - arg0->unk_001 &= ~1; + arg0->unk_000.unk_0C = NULL; + arg0->unk_000.unk_01 &= ~1; } s32 func_8001BD04(unk_D_86002F58_004_000* arg0, s32 arg1) { - unk_D_86002F58_004_000_00C* tmp = arg0->unk_00C; + unk_D_86002F58_004_000_00C* tmp = arg0->unk_000.unk_0C; unk_D_86002F58_004_000_00C_028* temp_v0 = tmp->unk_28(0, 0); if (arg1 == -1) { @@ -77,7 +77,7 @@ s32 func_8001BD04(unk_D_86002F58_004_000* arg0, s32 arg1) { } s32 func_8001BD9C(unk_D_86002F58_004_000* arg0, s32 arg1) { - unk_D_86002F58_004_000_00C* temp_v0 = arg0->unk_00C; + unk_D_86002F58_004_000_00C* temp_v0 = arg0->unk_000.unk_0C; unk_D_86002F58_004_000_00C_028* temp_v1 = temp_v0->unk_28(0, 0); if (arg1 == -1) { @@ -110,7 +110,7 @@ unk_D_86002F58_004_000_00C_028* func_8001BE90(unk_D_86002F58_004_000* arg0, s32 } if (arg0 != NULL) { - unk_D_86002F58_004_000_00C* tmp = arg0->unk_00C; + unk_D_86002F58_004_000_00C* tmp = arg0->unk_000.unk_0C; var_v1 = tmp->unk_28(arg1, 0); } diff --git a/src/1CF30.c b/src/1CF30.c index 78c60bdf..7cc968a5 100644 --- a/src/1CF30.c +++ b/src/1CF30.c @@ -58,7 +58,7 @@ void func_8001C604(s16 arg0, s16 arg1, s16 arg2, s16 arg3, u8 arg4, u8 arg5, u8 func_8001C330(arg0, arg1, arg2, arg3, 0, 0, 0, 0, 0); } -void func_8001C6AC(s16 arg0, s16 arg1, s16 arg2, s16 arg3, u32 arg4, s16 arg5, s32 arg6) { +void func_8001C6AC(s16 arg0, s16 arg1, s16 arg2, s16 arg3, u32* arg4, s16 arg5, s32 arg6) { gDPLoadTextureBlock(gDisplayListHead++, arg4, G_IM_FMT_RGBA, G_IM_SIZ_16b, arg5, arg3, 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); @@ -66,7 +66,7 @@ void func_8001C6AC(s16 arg0, s16 arg1, s16 arg2, s16 arg3, u32 arg4, s16 arg5, s func_8001C330(arg0, arg1, arg2, arg3, 0, 0, 0x400, 0x400, arg6); } -void func_8001C8C4(s16 arg0, s16 arg1, s16 arg2, s16 arg3, u32 arg4, s16 arg5, s32 arg6) { +void func_8001C8C4(s16 arg0, s16 arg1, s16 arg2, s16 arg3, u32* arg4, s16 arg5, s32 arg6) { gDPLoadTextureBlock(gDisplayListHead++, arg4, G_IM_FMT_RGBA, G_IM_SIZ_32b, arg5, arg3, 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); @@ -74,40 +74,40 @@ void func_8001C8C4(s16 arg0, s16 arg1, s16 arg2, s16 arg3, u32 arg4, s16 arg5, s func_8001C330(arg0, arg1, arg2, arg3, 0, 0, 0x400, 0x400, arg6); } -void func_8001CADC(s16 arg0, s16 arg1, s16 arg2, s16 arg3, u32 arg4, s16 arg5, s32 arg6) { +void func_8001CADC(s16 arg0, s16 arg1, s16 arg2, s16 arg3, u32* arg4, s16 arg5, s32 arg6) { gDPLoadTextureBlock(gDisplayListHead++, arg4, G_IM_FMT_IA, G_IM_SIZ_8b, arg5, arg3, 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); func_8001C330(arg0, arg1, arg2, arg3, 0, 0, 0x400, 0x400, arg6); } -void func_8001CCF8(s16 arg0, s16 arg1, s16 arg2, s16 arg3, u32 arg4, s16 arg5, s32 arg6) { +void func_8001CCF8(s16 arg0, s16 arg1, s16 arg2, s16 arg3, u32* arg4, s16 arg5, s32 arg6) { gDPLoadTextureBlock(gDisplayListHead++, arg4, G_IM_FMT_IA, G_IM_SIZ_16b, arg5, arg3, 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); func_8001C330(arg0, arg1, arg2, arg3, 0, 0, 0x400, 0x400, arg6); } -void func_8001CF10(s16 arg0, s16 arg1, s16 arg2, s16 arg3, u32 arg4, s16 arg5, s32 arg6) { +void func_8001CF10(s16 arg0, s16 arg1, s16 arg2, s16 arg3, u32* arg4, s16 arg5, s32 arg6) { gDPLoadTextureBlock_4b(gDisplayListHead++, arg4, G_IM_FMT_I, arg5, arg3, 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); func_8001C330(arg0, arg1, arg2, arg3, 0, 0, 0x400, 0x400, arg6); } -void func_8001D12C(s16 arg0, s16 arg1, s16 arg2, s16 arg3, u32 arg4, s16 arg5, s32 arg6) { +void func_8001D12C(s16 arg0, s16 arg1, s16 arg2, s16 arg3, u32* arg4, s16 arg5, s32 arg6) { gDPLoadTextureBlock(gDisplayListHead++, arg4, G_IM_FMT_I, G_IM_SIZ_8b, arg5, arg3, 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); func_8001C330(arg0, arg1, arg2, arg3, 0, 0, 0x400, 0x400, arg6); } -void func_8001D348(s16 arg0, s16 arg1, s16 arg2, s16 arg3, u32 arg4, s16 arg5, s32 arg6) { +void func_8001D348(s16 arg0, s16 arg1, s16 arg2, s16 arg3, u32* arg4, s16 arg5, s32 arg6) { gDPLoadTextureBlock(gDisplayListHead++, arg4, G_IM_FMT_I, G_IM_SIZ_16b, arg5, arg3, 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); func_8001C330(arg0, arg1, arg2, arg3, 0, 0, 0x400, 0x400, arg6); } -void func_8001D560(s16 arg0, s16 arg1, s16 arg2, s16 arg3, u32 arg4, u32 arg5, s16 arg6, s32 arg7) { +void func_8001D560(s16 arg0, s16 arg1, s16 arg2, s16 arg3, u32* arg4, u32* arg5, s16 arg6, s32 arg7) { gDPLoadTextureBlock(gDisplayListHead++, arg4, G_IM_FMT_RGBA, G_IM_SIZ_16b, arg6, arg3, 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); @@ -260,11 +260,11 @@ void func_8001E000(s16 arg0, s16 arg1, s16 arg2, f32 arg3, Vtx* arg4, u32 arg5) } #ifdef NON_MATCHING -unk_func_8001E680* func_8001E490(void) { +Vtx* func_8001E490(void) { s16 i; s16 j; - unk_func_8001E680* sp54; - unk_func_8001E680* var_s0; + Vtx* sp54; + Vtx* var_s0; sp54 = main_pool_alloc(0x4B00, 0); if (sp54 != NULL) { @@ -283,22 +283,21 @@ unk_func_8001E680* func_8001E490(void) { return sp54; } #else -unk_func_8001E680* func_8001E490(void); +Vtx* func_8001E490(void); #pragma GLOBAL_ASM("asm/us/nonmatchings/1CF30/func_8001E490.s") #endif -void func_8001E680(unk_func_8001E680* arg0, s16 arg1, s16 arg2, s16 arg3, s16 arg4, s16 arg5, u8 arg6, u8 arg7, u8 arg8, - u8 arg9) { - arg0->unk_00 = arg1; - arg0->unk_02 = arg2; - arg0->unk_04 = arg3; - arg0->unk_06 = 0; - arg0->unk_08 = arg4; - arg0->unk_0A = arg5; - arg0->unk_0C = arg6; - arg0->unk_0D = arg7; - arg0->unk_0E = arg8; - arg0->unk_0F = arg9; +void func_8001E680(Vtx* arg0, s16 arg1, s16 arg2, s16 arg3, s16 arg4, s16 arg5, u8 arg6, u8 arg7, u8 arg8, u8 arg9) { + arg0->v.ob[0] = arg1; + arg0->v.ob[1] = arg2; + arg0->v.ob[2] = arg3; + arg0->v.flag = 0; + arg0->v.tc[0] = arg4; + arg0->v.tc[1] = arg5; + arg0->v.cn[0] = arg6; + arg0->v.cn[1] = arg7; + arg0->v.cn[2] = arg8; + arg0->v.cn[3] = arg9; } void func_8001E6E8(Vp* arg0, s16 arg1, s16 arg2) { diff --git a/src/1CF30.h b/src/1CF30.h index d105186b..a0c6ab3f 100644 --- a/src/1CF30.h +++ b/src/1CF30.h @@ -3,35 +3,23 @@ #include "global.h" -typedef struct unk_func_8001E680 { - /* 0x00 */ s16 unk_00; - /* 0x02 */ s16 unk_02; - /* 0x04 */ s16 unk_04; - /* 0x06 */ s16 unk_06; - /* 0x08 */ s16 unk_08; - /* 0x0A */ s16 unk_0A; - /* 0x0C */ u8 unk_0C; - /* 0x0D */ u8 unk_0D; - /* 0x0E */ u8 unk_0E; - /* 0x0F */ u8 unk_0F; -} unk_func_8001E680; // size = 0x10 - +void func_8001C330(s16 arg0, s16 arg1, s16 arg2, s16 arg3, s16 arg4, s16 arg5, s16 arg6, s16 arg7, s32 arg8); void func_8001C4E4(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4, s32 arg5, s32 arg6); void func_8001C560(s16 arg0, s16 arg1, s16 arg2, s16 arg3, u8 arg4, u8 arg5, u8 arg6); void func_8001C604(s16 arg0, s16 arg1, s16 arg2, s16 arg3, u8 arg4, u8 arg5, u8 arg6, u8 arg7); -void func_8001C6AC(s16 arg0, s16 arg1, s16 arg2, s16 arg3, u32 arg4, s16 arg5, s32 arg6); -void func_8001C8C4(s16 arg0, s16 arg1, s16 arg2, s16 arg3, u32 arg4, s16 arg5, s32 arg6); -void func_8001CADC(s16 arg0, s16 arg1, s16 arg2, s16 arg3, u32 arg4, s16 arg5, s32 arg6); -void func_8001CCF8(s16 arg0, s16 arg1, s16 arg2, s16 arg3, u32 arg4, s16 arg5, s32 arg6); -void func_8001CF10(s16 arg0, s16 arg1, s16 arg2, s16 arg3, u32 arg4, s16 arg5, s32 arg6); -void func_8001D12C(s16 arg0, s16 arg1, s16 arg2, s16 arg3, u32 arg4, s16 arg5, s32 arg6); -void func_8001D348(s16 arg0, s16 arg1, s16 arg2, s16 arg3, u32 arg4, s16 arg5, s32 arg6); -void func_8001D560(s16 arg0, s16 arg1, s16 arg2, s16 arg3, u32 arg4, u32 arg5, s16 arg6, s32 arg7); +void func_8001C6AC(s16 arg0, s16 arg1, s16 arg2, s16 arg3, u32* arg4, s16 arg5, s32 arg6); +void func_8001C8C4(s16 arg0, s16 arg1, s16 arg2, s16 arg3, u32* arg4, s16 arg5, s32 arg6); +void func_8001CADC(s16 arg0, s16 arg1, s16 arg2, s16 arg3, u32* arg4, s16 arg5, s32 arg6); +void func_8001CCF8(s16 arg0, s16 arg1, s16 arg2, s16 arg3, u32* arg4, s16 arg5, s32 arg6); +void func_8001CF10(s16 arg0, s16 arg1, s16 arg2, s16 arg3, u32* arg4, s16 arg5, s32 arg6); +void func_8001D12C(s16 arg0, s16 arg1, s16 arg2, s16 arg3, u32* arg4, s16 arg5, s32 arg6); +void func_8001D348(s16 arg0, s16 arg1, s16 arg2, s16 arg3, u32* arg4, s16 arg5, s32 arg6); +void func_8001D560(s16 arg0, s16 arg1, s16 arg2, s16 arg3, u32* arg4, u32* arg5, s16 arg6, s32 arg7); void func_8001D924(u32 arg0); void func_8001DBDC(u32 arg0, s16 arg1, s16 arg2, s16 arg3, s16 arg4); void func_8001E000(s16 arg0, s16 arg1, s16 arg2, f32 arg3, Vtx* arg4, u32 arg5); -unk_func_8001E680* func_8001E490(void); -void func_8001E680(unk_func_8001E680* arg0, s16 arg1, s16 arg2, s16 arg3, s16 arg4, s16 arg5, u8 arg6, u8 arg7, u8 arg8, u8 arg9); +Vtx* func_8001E490(void); +void func_8001E680(Vtx* arg0, s16 arg1, s16 arg2, s16 arg3, s16 arg4, s16 arg5, u8 arg6, u8 arg7, u8 arg8, u8 arg9); void func_8001E6E8(Vp* arg0, s16 arg1, s16 arg2); u8 func_8001E730(u16 arg0); u8 func_8001E78C(unk_D_800AC870_sub* arg0, u16 arg1); @@ -62,5 +50,4 @@ void func_8001F504(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4, s32 arg5, s s32 func_8001F5B0(s32 x, s32 y, const char* fmt, ...); void func_8001F6E8(s32 arg0, s32 arg1); - #endif // _1CF30_H_ diff --git a/src/20470.h b/src/20470.h index 45124ad1..8057df06 100644 --- a/src/20470.h +++ b/src/20470.h @@ -4,6 +4,7 @@ #include "global.h" void func_80020460(s32, s32, s32, s32, s32); +void func_8002053C(s32 arg0, s32 arg1, s32 arg2, s32 arg3, u8*, u8*); #endif // _20470_H_ diff --git a/src/26820.c b/src/26820.c index b7c105b6..06c14873 100644 --- a/src/26820.c +++ b/src/26820.c @@ -1,4 +1,4 @@ -#include "global.h" +#include "26820.h" #pragma GLOBAL_ASM("asm/us/nonmatchings/26820/func_80025C20.s") diff --git a/src/26820.h b/src/26820.h new file mode 100644 index 00000000..f81f02e3 --- /dev/null +++ b/src/26820.h @@ -0,0 +1,11 @@ +#ifndef _26820_H_ +#define _26820_H_ + +#include "global.h" + +void func_80026684(s32, s32); +void func_800280D4(s32); +void func_800284B4(s32); +void func_80028AFC(s32); + +#endif // _26820_H_ diff --git a/src/2E110.h b/src/2E110.h index 7b158a23..efb513ec 100644 --- a/src/2E110.h +++ b/src/2E110.h @@ -3,7 +3,11 @@ #include "global.h" +void func_8002D510(void); +s32 func_8002D5AC(s32); +void func_8002D600(s32, s16); char* func_8002D7C0(char* arg0, s32 arg1, s32 arg2, s32 arg3); +s32 func_8002D80C(char*); #endif // _2E110_H_ diff --git a/src/490A0.h b/src/490A0.h index 55330c0c..162260bb 100644 --- a/src/490A0.h +++ b/src/490A0.h @@ -3,6 +3,7 @@ #include "global.h" +s32 func_800484C0(s32); s32 func_800484E0(void); #endif // _490A0_H_ diff --git a/src/4BA90.h b/src/4BA90.h index f9d0d66c..cac15c16 100644 --- a/src/4BA90.h +++ b/src/4BA90.h @@ -3,7 +3,10 @@ #include "global.h" -void func_8004B094(u32); +void func_8004AE90(s32 arg0, u32 arg1); +void func_8004AF24(s32 arg0); +void func_8004AF44(u32 arg0); +void func_8004B094(u32 arg0); void func_8004B154(void); #endif // _4BA90_H_ diff --git a/src/4CBC0.c b/src/4CBC0.c index 61694f9e..92385225 100644 --- a/src/4CBC0.c +++ b/src/4CBC0.c @@ -952,7 +952,7 @@ s32 func_8004D3B0(s32 arg0, s32 arg1, s32 arg2) { void func_8004D848(UNUSED s32 arg0, UNUSED s32 arg1, UNUSED s32 arg2) { } -s32 func_8004D858(s32 arg0, s32 arg1) { +s32 func_8004D858(s32 arg0, u32 arg1) { static s32 D_80079008 = 0x00000000; static s32 D_8007900C = 0x00000000; static s32 D_80079010 = 0x00000000; diff --git a/src/4CBC0.h b/src/4CBC0.h index cceb3188..a8966fed 100644 --- a/src/4CBC0.h +++ b/src/4CBC0.h @@ -6,8 +6,33 @@ extern s32 D_80078FA8; extern u32 D_80079014; +s32 func_8004BFC0(s32 arg0, s32 arg1, s32 arg2); +void func_8004C16C(UNUSED s32 arg0, UNUSED s32 arg1, UNUSED s32 arg2); +s32 func_8004C17C(s32 arg0, s32 arg1, s32 arg2); +void func_8004C444(UNUSED s32 arg0, UNUSED s32 arg1, UNUSED s32 arg2); +s32 func_8004C454(u32 arg0, u32 arg1); +s32 func_8004C4FC(s32 arg0, s32 arg1, s32 arg2); +void func_8004C6CC(UNUSED s32 arg0, UNUSED s32 arg1, UNUSED s32 arg2); +s32 func_8004C6DC(s32 arg0, s32 arg1, s32 arg2); +void func_8004C8A4(UNUSED s32 arg0, UNUSED s32 arg1, UNUSED s32 arg2); +s32 func_8004C8B4(s32 arg0, s32 arg1, UNUSED s32 arg2); +void func_8004CA6C(UNUSED s32 arg0, UNUSED s32 arg1, UNUSED s32 arg2); +s32 func_8004CA7C(s32 arg0, s32 arg1, UNUSED s32 arg2); +void func_8004CC10(UNUSED s32 arg0, UNUSED s32 arg1, UNUSED s32 arg2); +void func_8004CC20(s32 arg0, u32 arg1); +u32 func_8004CC34(void); +f32 func_8004CC94(void); +s32 func_8004CCD8(s32 arg0, s32 arg1, s32 arg2); +void func_8004D16C(s32 arg0, s32 arg1, UNUSED s32 arg2); +s32 func_8004D1B0(s32 arg0, UNUSED s32 arg1, UNUSED s32 arg2); +void func_8004D3A0(UNUSED s32 arg0, UNUSED s32 arg1, UNUSED s32 arg2); +s32 func_8004D3B0(s32 arg0, s32 arg1, s32 arg2); +void func_8004D848(UNUSED s32 arg0, UNUSED s32 arg1, UNUSED s32 arg2); +s32 func_8004D858(s32 arg0, u32 arg1); s32 func_8004D9B0(s32 arg0, s32 arg1, s32 arg2); -s32 func_8004DDA4(s32, s32, s32); -s32 func_8004DF94(s32, s32, s32); +void func_8004DC8C(s32 arg0, s32 arg1, s32 arg2); +s32 func_8004DDA4(s32 arg0, UNUSED s32 arg1, UNUSED s32 arg2); +s32 func_8004DF94(s32 arg0, s32 arg1, s32 arg2); +s32 func_8004E304(s32 arg0, UNUSED s32 arg1, UNUSED s32 arg2); #endif // _4CBC0_H_ diff --git a/src/fragments/2/fragment2.c b/src/fragments/2/fragment2.c index f40ed76d..5020f7ac 100644 --- a/src/fragments/2/fragment2.c +++ b/src/fragments/2/fragment2.c @@ -1,88 +1,598 @@ -#include "global.h" #include "fragment2.h" +#include "src/1CF30.h" +#include "src/2E110.h" +#include "src/controller.h" + +extern u32 D_878067F0[]; +extern u32 D_87807690[]; +extern u32 D_87808530[]; +extern u32 D_878093D0[]; +extern u32 D_8780B110[]; +extern u32 D_8780BFB0[]; +extern u32 D_8780CE50[]; +extern u32 D_8780DCF0[]; +extern u32 D_8780A270[]; +extern u32 D_878064F0[]; +extern u32 D_87806670[]; +extern u32 D_878065B0[]; +extern u32 D_87806730[]; + +s32 D_87806330 = 0; + +static s32 D_8780FA20; +static s32 D_8780FA24; +u16 D_8780FA28; +s16 D_8780FA2A; +s16 D_8780FA2C; + +s16 D_8780FA30[4]; +s16 D_8780FA38; +s16 D_8780FA3A; +s16 D_8780FA40[4]; +s16 D_8780FA48; + +static s32 pad_D_8780FA4C; + +s16 D_8780FA50; +s16 D_8780FA52[2][4]; +s16 D_8780FA68[4]; +u32* D_8780FA70; + +void func_87800020(void) { + func_8002D510(); + D_87806330 = func_8002D5AC(0x1D); + D_8780FA24 = func_8002D5AC(0x14); +} + +void func_8780005C(void) { + static s32 D_87806334 = 0; + + s32 sp24; + s16 temp_s0; + + if (!(Cont_GetControllerBits() & 1)) { + sp24 = func_8001F5B0(4, 0, func_8002D7C0(NULL, 0, D_8780FA24, 0)); + temp_s0 = 0x50 - D_87806334; + + gDPSetScissor(gDisplayListHead++, G_SC_NON_INTERLACE, 16, 0, 304, 240); + + func_8001F3F4(); + func_8001EBE0(4, 0); + func_8001F1E8(temp_s0, 0xB3, func_8002D7C0(NULL, 0, D_8780FA24, 0)); + + temp_s0 += sp24 + 0x1E; + if (temp_s0 < 0x140) { + func_8001F1E8(temp_s0, 0xB3, func_8002D7C0(NULL, 0, D_8780FA24, 0)); + } + + func_8001F444(); + + gDPSetScissor(gDisplayListHead++, G_SC_NON_INTERLACE, 0, 0, 320, 240); + + D_87806334++; + if (D_87806334 >= (sp24 + 0x50)) { + D_87806334 = 0x32; + } + } +} + +void func_878001D0(void) { + D_8780FA20++; +} + +u32 func_878001E8(s32 arg0) { + u32 temp_a0 = guRandom() + D_8780FA20; + u32 var_v1; + + if (arg0 == 0) { + var_v1 = 0; + } else { + var_v1 = (temp_a0 / 10) % arg0; + } + + return var_v1; +} + +#ifdef NON_MATCHING +void func_8780024C(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) { + s32 temp_lo; + s32 spF0; + + spF0 = arg2 - 2; + temp_lo = ((arg4 - arg3) * spF0) / arg4; + + gSPDisplayList(gDisplayListHead++, D_8006F518); + + gDPPipeSync(gDisplayListHead++); + gDPSetPrimColor(gDisplayListHead++, 0, 0, 0, 0, 0, 0); + gDPSetCombineMode(gDisplayListHead++, G_CC_PRIMITIVE, G_CC_PRIMITIVE); + gDPSetRenderMode(gDisplayListHead++, G_RM_XLU_SURF, G_RM_XLU_SURF2); + + gSPTextureRectangle(gDisplayListHead++, (arg0 - 2) << 2, (arg1 - 2) << 2, (arg0 + arg2 + 8) << 2, (arg1 + 16) << 2, + G_TX_RENDERTILE, 0, 0, 0, 0); + + gDPSetCombineMode(gDisplayListHead++, G_CC_DECALRGBA, G_CC_DECALRGBA); + gDPLoadTextureBlock(gDisplayListHead++, D_878064F0, G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 12, 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 << 2, arg1 << 2, (arg0 + 2) << 2, (arg1 + 0xC) << 2, G_TX_RENDERTILE, + 0, 0, 0x0400, 0x0400); + + gDPLoadTextureBlock(gDisplayListHead++, D_87806670, G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 12, 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 + spF0) + 2) << 2, arg1 << 2, ((arg0 + spF0) + 4) << 2, + (arg1 + 0xC) << 2, G_TX_RENDERTILE, 0x00C0, 0, 0x0400, 0x0400); + + spF0 = (arg2 - temp_lo) - 2; + + if (spF0 > 0) { + gDPLoadTextureBlock(gDisplayListHead++, D_87806730, G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 12, 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 + 2) << 2, arg1 << 2, ((arg0 + 2) + spF0) << 2, (arg1 + 0xC) << 2, + G_TX_RENDERTILE, 0, 0, 0, 0x0400); + } + + if (temp_lo > 0) { + gDPLoadTextureBlock(gDisplayListHead++, D_878065B0, G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 12, 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 + 2) + spF0) << 2, arg1 << 2, + (((arg0 + 2) + spF0) + temp_lo) << 2, (arg1 + 0xC) << 2, G_TX_RENDERTILE, 0, 0, 0, 0x0400); + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/2/fragment2/func_87800020.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/2/fragment2/func_8780005C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/2/fragment2/func_878001D0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/2/fragment2/func_878001E8.s") - + gSPDisplayList(gDisplayListHead++, D_8006F630); +} +#else #pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/2/fragment2/func_8780024C.s") - +#endif + +#ifdef NON_MATCHING +void func_878009BC(s32 arg0, s32 arg1, s32 arg2, s32 arg3) { + u32* spCC; + s32 sp14; + s32 temp_lo; + + if (arg2 < ((arg3 * 0xA) / 48)) { + spCC = D_87806730; + } else if (arg2 < ((arg3 * 0x1B) / 48)) { + spCC = D_87806730; + } else { + spCC = D_878065B0; + } + + gSPDisplayList(gDisplayListHead++, D_8006F518); + + gDPLoadTextureBlock(gDisplayListHead++, D_878064F0, G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 5, 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 << 2, arg1 << 2, (arg0 + 0x10) << 2, (arg1 + 5) << 2, G_TX_RENDERTILE, + 0, 0, 0x0400, 0x0400); + + gDPLoadTextureBlock(gDisplayListHead++, D_87806670, G_IM_FMT_RGBA, G_IM_SIZ_16b, 4, 5, 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 + 0x40) << 2, arg1 << 2, (arg0 + 0x41) << 2, (arg1 + 5) << 2, + G_TX_RENDERTILE, 0, 0, 0x0400, 0x0400); + + temp_lo = ((arg3 - arg2) * 0x30) / arg3; + sp14 = 0x30 - temp_lo; + + if (sp14 > 0) { + gDPLoadTextureBlock(gDisplayListHead++, spCC, G_IM_FMT_RGBA, G_IM_SIZ_16b, 4, 5, 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 + 0x10) << 2, arg1 << 2, (arg0 + sp14 + 0x10) << 2, + (arg1 + 5) << 2, G_TX_RENDERTILE, 0, 0, 0, 0x0400); + } + + if (temp_lo > 0) { + gDPLoadTextureBlock(gDisplayListHead++, D_1003E78, G_IM_FMT_RGBA, G_IM_SIZ_16b, 4, 5, 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 + sp14) + 0x10) << 2, arg1 << 2, + ((arg0 + sp14) + temp_lo + 0x10) << 2, (arg1 + 5) << 2, G_TX_RENDERTILE, 0, 0, 0, 0x0400); + } + + gSPDisplayList(gDisplayListHead++, D_8006F630); +} +#else #pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/2/fragment2/func_878009BC.s") +#endif -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/2/fragment2/func_878010C8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/2/fragment2/func_8780118C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/2/fragment2/func_87801290.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/2/fragment2/func_878013D4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/2/fragment2/func_87801400.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/2/fragment2/func_87801644.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/2/fragment2/func_87801684.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/2/fragment2/func_87801754.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/2/fragment2/func_87801824.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/2/fragment2/func_878018F4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/2/fragment2/func_87801AC0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/2/fragment2/func_87801C8C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/2/fragment2/func_87801D5C.s") +s16 D_87806338 = -1; +u32* D_8780633C[] = { D_878067F0, D_87807690, D_87808530, D_878093D0 }; +u32* D_8780634C[] = { D_8780B110, D_8780BFB0, D_8780CE50, D_8780DCF0, D_8780A270 }; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/2/fragment2/func_87801F48.s") +#ifdef NON_MATCHING +void func_878010C8(s16 arg0) { + s32 i; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/2/fragment2/func_878021B4.s") + D_8780FA28 = 0; + D_87806338 = arg0; + D_8780FA2A = 0; + D_8780FA2C = 0; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/2/fragment2/func_87802360.s") + for (i = 0; i < 4; i++) { + D_8780FA30[i] = 1; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/2/fragment2/func_87802528.s") + if (arg0 == 3) { + D_8780FA38 = 1; + } else { + D_8780FA38 = 3; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/2/fragment2/func_878025D0.s") + D_8780FA3A = 3; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/2/fragment2/func_8780295C.s") + for (i = 0; i < 4; i++) { + D_8780FA40[i] = 0; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/2/fragment2/func_87802974.s") + for (i = 0; i < 4; i++) { + D_8780FA68[i] = 0; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/2/fragment2/func_878029C0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/2/fragment2/func_87802E1C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/2/fragment2/func_87802E58.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/2/fragment2/func_87802EB8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/2/fragment2/func_87802F00.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/2/fragment2/func_87802F4C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/2/fragment2/func_87802FA0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/2/fragment2/func_8780304C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/2/fragment2/func_87803118.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/2/fragment2/func_87803200.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/2/fragment2/func_87803280.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/2/fragment2/func_87803368.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/2/fragment2/func_878038B8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/2/fragment2/func_87803EAC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/2/fragment2/func_87804320.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/2/fragment2/func_87804AD0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/2/fragment2/func_87804FD4.s") + func_87800020(); +} +#else +#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/2/fragment2/func_878010C8.s") +#endif + +void func_8780118C(s16 arg0, s16 arg1, s16 arg2, s16 arg3) { + gDPPipeSync(gDisplayListHead++); + gDPSetRenderMode(gDisplayListHead++, + IM_RD | CVG_DST_FULL | ZMODE_OPA | CVG_X_ALPHA | FORCE_BL | + GBL_c1(G_BL_CLR_MEM, G_BL_0, G_BL_CLR_MEM, G_BL_1MA), + IM_RD | CVG_DST_FULL | ZMODE_OPA | CVG_X_ALPHA | FORCE_BL | + GBL_c2(G_BL_CLR_MEM, G_BL_0, G_BL_CLR_MEM, G_BL_1MA)); + gDPSetCombineMode(gDisplayListHead++, G_CC_SHADE, G_CC_SHADE); + gDPSetCycleType(gDisplayListHead++, G_CYC_1CYCLE); + gDPFillRectangle(gDisplayListHead++, arg0, arg1, arg0 + arg2, arg1 + arg3); +} + +void func_87801290(s32* arg0, s32* arg1, s8* arg2, s8* arg3, s32 arg4) { + s32 var_a1; + s32 var_t2; + s8 sp38[0x100]; + s8* var_a2; + s32 sp30; + s8* var_t0; + s8* var_t1; + s8* var_v0; + + *arg0 = -1; + var_t1 = arg2; + *arg1 = -1; + var_t0 = sp38; + var_t2 = 0; + + while (*var_t1 != 0) { + var_a2 = arg3; + var_v0 = var_t1; + + if (*var_t1 != *var_a2) { + *var_t0++ = *var_t1; + } else { + var_a1 = 1; + + while (*var_a2 != 0) { + if (*var_v0 != *var_a2) { + var_a1 = 0; + break; + } + + var_v0++; + var_a2++; + } + + if (var_a1 != 0) { + var_t2 = 1; + break; + } + + *var_t0++ = *var_t1; + } + var_t1++; + } + + *var_t0 = 0; + var_t0 = sp38; + var_a2 = var_t0; + sp30 = 0; + + while (*var_t0 != 0) { + if (*var_t0 == 0xA) { + sp30 += 1; + var_a2 = var_t0; + } + var_t0++; + } + + if (var_t2 != 0) { + *arg0 = func_8001F5B0(0, 0, (char*)var_a2); + *arg1 = arg4 * sp30; + } +} + +s32 func_878013D4(UNUSED unk_D_800AC870* arg0, char* arg1) { + return func_8001F5B0(0, 0, arg1); +} + +#ifdef NON_MATCHING +void func_87801400(s32 arg0, s16 arg1, s16 arg2, f32 arg3, f32 arg4) { + f32 temp_fa0; + f32 temp_fv1; + s16 a; + s16 b; + u32* var_t3; + + if ((arg3 != 0.0f) && (arg4 != 0.0f)) { + if (arg0 < 0) { + arg0 = -1 - arg0; + var_t3 = D_8780634C[arg0]; + } else { + var_t3 = D_8780633C[arg0 % 4]; + } + + gDPLoadTextureBlock(gDisplayListHead++, var_t3, G_IM_FMT_RGBA, G_IM_SIZ_32b, 36, 26, 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); + D_8780FA70 = var_t3; + + temp_fa0 = 36.0f * arg3; + if (temp_fa0 > 0.0f) { + temp_fv1 = 0.5f; + } else { + temp_fv1 = -0.5f; + } + a = temp_fv1 + temp_fa0; + + temp_fa0 = 26.0f * arg4; + if (temp_fa0 > 0.0f) { + temp_fv1 = 0.5f; + } else { + temp_fv1 = -0.5f; + } + b = temp_fv1 + temp_fa0; + + func_8001C330(arg1, arg2, a, b, 0, 0, 1024.0f / arg3, 1024.0f / arg4, 0); + } +} +#else +#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/2/fragment2/func_87801400.s") +#endif + +void func_87801644(s32 arg0, s16 arg1, s16 arg2, f32 arg3) { + func_87801400(arg0, arg1, arg2, arg3, arg3); +} + +void func_87801684(s16 arg0, s16 arg1, unk_func_87801684* arg2) { + static unk_func_87801684* D_87806360 = NULL; + static unk_func_87801684* D_8780FA74; + static s16 D_8780FA78; + + if ((D_87806360 != arg2) || (arg2 == NULL)) { + D_87806360 = arg2; + if (arg2 == NULL) { + return; + } + D_8780FA74 = arg2; + D_8780FA78 = arg2->unk_04; + } + + D_8780FA78--; + if (D_8780FA78 <= 0) { + D_8780FA74++; + if (D_8780FA74->unk_00 == NULL) { + D_8780FA74 = arg2; + } + D_8780FA78 = D_8780FA74->unk_04; + } + + func_8001C8C4(arg0, arg1, 0x10, 0x10, D_8780FA74->unk_00, 0x10, 0); +} + +void func_87801754(s16 arg0, s16 arg1, unk_func_87801684* arg2) { + static unk_func_87801684* D_87806364 = NULL; + static unk_func_87801684* D_8780FA7C; + static s16 D_8780FA80; + + if ((D_87806364 != arg2) || (arg2 == NULL)) { + D_87806364 = arg2; + if (arg2 == NULL) { + return; + } + D_8780FA7C = arg2; + D_8780FA80 = arg2->unk_04; + } + + D_8780FA80--; + if (D_8780FA80 <= 0) { + D_8780FA7C++; + if (D_8780FA7C->unk_00 == NULL) { + D_8780FA7C = arg2; + } + D_8780FA80 = D_8780FA7C->unk_04; + } + + func_8001C8C4(arg0, arg1, 0x10, 0x10, D_8780FA7C->unk_00, 0x10, 0); +} + +void func_87801824(s16 arg0, s16 arg1, unk_func_87801684* arg2) { + static unk_func_87801684* D_87806368 = NULL; + static unk_func_87801684* D_8780FA84; + static s16 D_8780FA88; + + if ((D_87806368 != arg2) || (arg2 == NULL)) { + D_87806368 = arg2; + if (arg2 == NULL) { + return; + } + D_8780FA84 = arg2; + D_8780FA88 = arg2->unk_04; + } + + D_8780FA88--; + if (D_8780FA88 <= 0) { + D_8780FA84++; + if (D_8780FA84->unk_00 == NULL) { + D_8780FA84 = arg2; + } + D_8780FA88 = D_8780FA84->unk_04; + } + + func_8001C8C4(arg0, arg1, 0x10, 0x10, D_8780FA84->unk_00, 0x10, 0); +} + +void func_878018F4(s16 arg0, s16 arg1, unk_func_87801684* arg2) { + static unk_func_87801684* D_8780636C = NULL; + static unk_func_87801684* D_8780FA8C; + static s16 D_8780FA90; + + if ((D_8780636C != arg2) || (arg2 == NULL)) { + D_8780636C = arg2; + if (arg2 == NULL) { + return; + } + D_8780FA8C = arg2; + D_8780FA90 = arg2->unk_04; + } + + D_8780FA90--; + if (D_8780FA90 <= 0) { + D_8780FA8C++; + if (D_8780FA8C->unk_00 == NULL) { + D_8780FA8C = arg2; + } + D_8780FA90 = D_8780FA8C->unk_04; + } + + gDPLoadTextureTile(gDisplayListHead++, D_8780FA8C->unk_00, G_IM_FMT_RGBA, G_IM_SIZ_32b, 40, 0, 0, 0, 39, 19, 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); + + func_8001C330(arg0, arg1, 0x28, 0x14, 0, 0, 0x400, 0x400, 0); +} + +void func_87801AC0(s16 arg0, s16 arg1, unk_func_87801684* arg2) { + static unk_func_87801684* D_87806370 = NULL; + static unk_func_87801684* D_8780FA94; + static s16 D_8780FA98; + + if ((D_87806370 != arg2) || (arg2 == NULL)) { + D_87806370 = arg2; + if (arg2 == NULL) { + return; + } + D_8780FA94 = arg2; + D_8780FA98 = arg2->unk_04; + } + + D_8780FA98--; + if (D_8780FA98 <= 0) { + D_8780FA94++; + if (D_8780FA94->unk_00 == NULL) { + D_8780FA94 = arg2; + } + D_8780FA98 = D_8780FA94->unk_04; + } + + gDPLoadTextureTile(gDisplayListHead++, D_8780FA94->unk_00, G_IM_FMT_RGBA, G_IM_SIZ_32b, 40, 0, 0, 0, 39, 19, 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); + + func_8001C330(arg0, arg1, 0x28, 0x14, 0, 0, 0x400, 0x400, 0); +} + +void func_87801C8C(s16 arg0, s16 arg1, unk_func_87801684* arg2) { + static unk_func_87801684* D_87806374 = NULL; + static unk_func_87801684* D_8780FA9C; + static s16 D_8780FAA0; + + if ((D_87806374 != arg2) || (arg2 == NULL)) { + D_87806374 = arg2; + if (arg2 == NULL) { + return; + } + D_8780FA9C = arg2; + D_8780FAA0 = arg2->unk_04; + } + + D_8780FAA0--; + if (D_8780FAA0 <= 0) { + D_8780FA9C++; + if (D_8780FA9C->unk_00 == NULL) { + D_8780FA9C = arg2; + } + D_8780FAA0 = D_8780FA9C->unk_04; + } + + func_8001C8C4(arg0, arg1, 0x18, 0x13, D_8780FA9C->unk_00, 0x18, 0); +} + +void func_87801D5C(s16 arg0, s16 arg1, s16 arg2, unk_func_87801684* arg3) { + static unk_func_87801684* D_87806378[] = { + NULL, + NULL, + }; + static unk_func_87801684* D_8780FAA8[2]; + static s16 D_8780FAB0[2]; + + if ((arg3 != D_87806378[arg0]) || (arg3 == NULL)) { + D_87806378[arg0] = arg3; + if (arg3 == NULL) { + return; + } + D_8780FAA8[arg0] = arg3; + D_8780FAB0[arg0] = arg3->unk_04; + } + + D_8780FAB0[arg0]--; + if (D_8780FAB0[arg0] <= 0) { + D_8780FAA8[arg0]++; + if (D_8780FAA8[arg0]->unk_00 == NULL) { + D_8780FAA8[arg0] = arg3; + } + D_8780FAB0[arg0] = D_8780FAA8[arg0]->unk_04; + } + + gDPLoadTextureTile(gDisplayListHead++, D_8780FAA8[arg0]->unk_00, G_IM_FMT_RGBA, G_IM_SIZ_32b, 28, 0, 0, 0, 27, 27, + 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); + + func_8001C330(arg1, arg2, 0x1C, 0x1C, 0, 0, 0x400, 0x400, 0); +} + +void func_87801F48(s16 arg0, s16 arg1, s16 arg2) { + static u32 D_87806380[] = { 0x03049CA0, 0x0304B1C0, 0x0304C6E0, 0x0304DC00 }; + + u32 sp34 = D_87806380[arg0]; + + gDPLoadTextureTile(gDisplayListHead++, sp34, G_IM_FMT_RGBA, G_IM_SIZ_16b, 52, 0, 0, 0, 51, 25, 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); + + func_8001C330(arg1, arg2, 0x34, 0x1A, 0, 0, 0x400, 0x400, 0); + + gDPLoadTextureTile(gDisplayListHead++, sp34 + 0xA90, G_IM_FMT_RGBA, G_IM_SIZ_16b, 52, 0, 0, 0, 51, 25, 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); + + func_8001C330(arg1, arg2 + 0x1A, 0x34, 0x1A, 0, 0, 0x400, 0x400, 0); +} + +void func_878021B4(s16 arg0, s16 arg1) { + u32* ptr = D_304F120; + s32 i; + + for (i = 0; i < 7; i++, ptr += 800) { + gDPLoadTextureTile(gDisplayListHead++, ptr, G_IM_FMT_RGBA, G_IM_SIZ_32b, 100, 0, 0, 0, 99, 7, 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); + + func_8001C330(arg0, arg1 + (i * 8), 0x64, 8, 0, 0, 0x400, 0x400, 0); + } +} diff --git a/src/fragments/2/fragment2.h b/src/fragments/2/fragment2.h index 7f7f28d5..a51e3838 100644 --- a/src/fragments/2/fragment2.h +++ b/src/fragments/2/fragment2.h @@ -3,36 +3,74 @@ #include "global.h" +typedef struct unk_func_87801684 { + /* 0x00 */ u32* unk_00; + /* 0x04 */ s16 unk_04; +} unk_func_87801684; // size = 0x8 + extern s32 D_87806330; +extern s16 D_87806338; +extern u32* D_8780633C[]; +extern u32* D_8780634C[]; + +extern u16 D_8780FA28; extern s16 D_8780FA2A; +extern s16 D_8780FA2C; extern s16 D_8780FA30[4]; extern s16 D_8780FA38; +extern s16 D_8780FA3A; +extern s16 D_8780FA40[4]; +extern s16 D_8780FA48; extern u16 D_8780FC92; extern u16 D_8780FC94; extern u16 D_8780FC96; extern u16 D_8780FC98; + +void func_87800020(void); void func_8780005C(void); -u32 func_878001E8(s32); -void func_8780024C(s32, s32, s32, s32, s32); -void func_878010C8(s32); -void func_87801290(s32*, s32*, char*, char*, s32); -s32 func_878013D4(unk_D_800AC870*, char*); -void func_87801644(s32, s16, s16, f32); -void func_87801684(s32, s32, u8*); -void func_87801824(s32, s32, u8*); -void func_87801C8C(s32, s32, s32*); -void func_87801F48(s32, s32, s32); -void func_878021B4(s32, s32); +void func_878001D0(void); +u32 func_878001E8(s32 arg0); +void func_8780024C(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4); +void func_878009BC(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +void func_878010C8(s16 arg0); +void func_8780118C(s16 arg0, s16 arg1, s16 arg2, s16 arg3); +void func_87801290(s32* arg0, s32* arg1, s8* arg2, s8* arg3, s32 arg4); +s32 func_878013D4(UNUSED unk_D_800AC870* arg0, char* arg1); +void func_87801400(s32 arg0, s16 arg1, s16 arg2, f32 arg3, f32 arg4); +void func_87801644(s32 arg0, s16 arg1, s16 arg2, f32 arg3); +void func_87801684(s16 arg0, s16 arg1, unk_func_87801684* arg2); +void func_87801754(s16 arg0, s16 arg1, unk_func_87801684* arg2); +void func_87801824(s16 arg0, s16 arg1, unk_func_87801684* arg2); +void func_878018F4(s16 arg0, s16 arg1, unk_func_87801684* arg2); +void func_87801AC0(s16 arg0, s16 arg1, unk_func_87801684* arg2); +void func_87801C8C(s16 arg0, s16 arg1, unk_func_87801684* arg2); +void func_87801D5C(s16 arg0, s16 arg1, s16 arg2, unk_func_87801684* arg3); +void func_87801F48(s16 arg0, s16 arg1, s16 arg2); +void func_878021B4(s16 arg0, s16 arg1); + +void func_87802360(s16 arg0, s16 arg1, f32* arg2, f32* arg3); void func_87802528(void); void func_878025D0(void); -void func_8780295C(s16); +void func_8780295C(s16 arg0); s32 func_87802974(void); -void func_878029C0(void); -void func_87802EB8(s16); -void func_87802F00(s32); -void func_87803118(void); -void func_87804FD4(void); +void func_878029C0(void); +void func_87802E1C(void); +void func_87802E58(void); +void func_87802EB8(s16 arg0); +void func_87802F00(s32 arg0); +void func_87802F4C(void); +s32 func_87802FA0(void); +void func_8780304C(void); +s32 func_87803118(void); +void func_87803200(s32 arg0, s32 arg1, s32 arg2, s32 arg3, u8* arg4, u8* arg5); +void func_87803280(Mtx* arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5, f32 arg6, f32 arg7, f32 arg8, f32 arg9, f32 argA); +void func_87803368(s16 arg0); +void func_878038B8(s32 arg0, u32* arg1, u8 arg2, u8 arg3, s16 arg4, s16 arg5, s16 arg6, s16 arg7, f32 arg8, f32 arg9, f32 argA, f32 argB, f32 argC, f32 argD, f32 argE); +void func_87803EAC(u32* arg0, u16 arg1, UNUSED u16 arg2, u16 arg3, u16 arg4, u8 arg5, u8 arg6); +void func_87804320(u8 arg0, s8 arg1, s8 arg2, s8 arg3, s8 arg4); +void func_87804AD0(s16 arg0); +s32 func_87804FD4(void); #endif // _FRAGMENT2_H_ diff --git a/src/fragments/2/fragment2_1.c b/src/fragments/2/fragment2_1.c new file mode 100644 index 00000000..5043c58a --- /dev/null +++ b/src/fragments/2/fragment2_1.c @@ -0,0 +1,196 @@ +#include "global.h" +#include "fragment2.h" +#include "src/6A40.h" +#include "src/11BA0.h" +#include "src/1C720.h" +#include "src/math_util.h" + +static Gfx D_87806390[] = { + gsSPEndDisplayList(), +}; + +u32 D_87806398[] = { + 0x0B00001E, 0x00000000, 0x014000F0, 0x00000000, 0x000016A8, 0x00000190, 0x05000000, 0x0D000000, 0x05000000, + 0x0F000002, 0x05000000, 0x0A000000, 0x800AC858, 0x06000000, 0x06000000, 0x06000000, 0x04000000, 0x00000000, +}; + +static Vtx D_878063E0[] = { + VTX(-32, 32, 0, 0, 0, 0xFF, 0xFF, 0xFF, 0xFF), VTX(-32, 16, 0, 0, 512, 0xFF, 0xFF, 0xFF, 0xFF), + VTX(32, 16, 0, 2048, 512, 0xFF, 0xFF, 0xFF, 0xFF), VTX(32, 32, 0, 2048, 0, 0xFF, 0xFF, 0xFF, 0xFF), + VTX(-32, 16, 0, 0, 0, 0xFF, 0xFF, 0xFF, 0xFF), VTX(-32, 0, 0, 0, 512, 0xFF, 0xFF, 0xFF, 0xFF), + VTX(32, 0, 0, 2048, 512, 0xFF, 0xFF, 0xFF, 0xFF), VTX(32, 16, 0, 2048, 0, 0xFF, 0xFF, 0xFF, 0xFF), + VTX(-32, 0, 0, 0, 0, 0xFF, 0xFF, 0xFF, 0xFF), VTX(-32, -16, 0, 0, 512, 0xFF, 0xFF, 0xFF, 0xFF), + VTX(32, -16, 0, 2048, 512, 0xFF, 0xFF, 0xFF, 0xFF), VTX(32, 0, 0, 2048, 0, 0xFF, 0xFF, 0xFF, 0xFF), + VTX(-32, -16, 0, 0, 0, 0xFF, 0xFF, 0xFF, 0xFF), VTX(-32, -32, 0, 0, 512, 0xFF, 0xFF, 0xFF, 0xFF), + VTX(32, -32, 0, 2048, 512, 0xFF, 0xFF, 0xFF, 0xFF), VTX(32, -16, 0, 2048, 0, 0xFF, 0xFF, 0xFF, 0xFF), +}; + +static u32* D_878064E0[] = { &D_300C000, &D_3000000, 0x3004000, &D_3008000 }; + +static s16 D_8780FAC0; +static s16 D_8780FAC2; +static s16 D_8780FAC4; +static s16 D_8780FAC6; +static unk_D_86002F58_004_000 D_8780FAC8; +static unk_func_80011B94* D_8780FC30; + +void func_87802360(s16 arg0, s16 arg1, f32* arg2, f32* arg3) { + f32 var_fv0; + s32 temp_ft1; + s32 var_v0; + + if (arg1 >= 0x12) { + var_v0 = 0; + } else if (arg1 >= 8) { + var_v0 = 1; + } else if (arg1 > 0) { + var_v0 = 2; + } else { + var_v0 = 3; + } + + *arg3 = 0.0f; + *arg2 = 0.0f; + + switch (var_v0) { + case 0: + var_fv0 = 0.5f; + temp_ft1 = (1.0f - ((0x1B - arg1) / 10.0f)) * (0, 81920.0f); + if (temp_ft1 <= 0x10000) { + if (temp_ft1 > 0x10000) { + var_fv0 *= .5f; + } else { + var_fv0 *= 0.25f; + } + } + + var_fv0 *= ABS_ALT(gSineTable[((u16)temp_ft1 & 0xFFFF) >> 4]); + + *arg3 = 1.0f - var_fv0; + *arg2 = 1.0f - var_fv0; + break; + + case 1: + *arg3 = 1.0f; + *arg2 = 1.0f; + break; + + case 2: + if (arg0 == 0) { + *arg2 = arg1 / 7.0f; + if (0.001f < *arg2) { + *arg3 = 1.0f / *arg2; + } else { + *arg2 = 0.0f; + } + } + break; + } +} + +void func_87802528(void) { + MainPoolState* sp1C; + + D_8780FAC4 = 0; + D_8780FAC0 = 4; + D_8780FAC2 = 0; + D_8780FAC6 = 0; + + func_8001BBC8(&D_8780FAC8); + sp1C = func_80002D10(main_pool_get_available(), 0); + D_8780FC30 = func_80011B94(sp1C, NULL, 4, D_87806390); + D_8780FAC8.unk_000.unk_02 |= 8; + + func_80012094(&D_8780FAC8.unk_000, &D_8780FC30->unk_00); + func_80002D60(sp1C); +} + +void func_878025D0(void) { + s32 i; + Gfx* temp_v0; + s32 var_s2; + u32* temp_s1; + u32* img; + + var_s2 = 0; + switch (D_8780FAC4) { + case 0: + if (D_8780FAC6 != 0) { + D_8780FAC6 = 0; + D_8780FAC4 = 1; + var_s2 = 1; + D_8780FAC8.unk_000.unk_01 |= 1; + D_8780FAC8.unk_030.x = 0.5f; + D_8780FAC8.unk_030.y = 0.5f; + } + break; + + case 1: + D_8780FAC2 -= 1; + if (D_8780FAC2 <= 0) { + D_8780FAC2 = 0x1B; + D_8780FAC0 -= 1; + } + + if ((D_8780FAC0 >= 0) && (D_8780FAC0 < 4)) { + var_s2 = 1; + func_87802360(D_8780FAC0, D_8780FAC2, &D_8780FAC8.unk_030.x, &D_8780FAC8.unk_030.y); + } else { + D_8780FC30->unk_18 = D_87806390; + } + + if (D_8780FAC0 < 0) { + D_8780FAC4 = 2; + D_8780FAC2 = 0x1B; + D_8780FAC8.unk_000.unk_01 &= ~1; + } + break; + + case 2: + if (D_8780FAC2 == 0x1B) { + D_8780FAC2 = 0; + } + break; + } + + if ((var_s2 != 0) && (D_8780FAC0 < 4)) { + temp_s1 = D_878064E0[D_8780FAC0]; + temp_v0 = func_80005F5C(sizeof(Gfx) * 48); + D_8780FC30->unk_18 = temp_v0; + + gSPSetGeometryMode(&temp_v0[0], G_CULL_BACK); + gSPTexture(&temp_v0[1], 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON); + gDPPipeSync(&temp_v0[2]); + gDPSetCombineMode(&temp_v0[3], G_CC_DECALRGBA, G_CC_PASS2); + gSPVertex(&temp_v0[4], D_878063E0, 16, 0); + + temp_v0 += 5; + img = temp_s1; + + for (i = 0; i < 4; i++, img += 0x400) { + gDPLoadTextureTile(temp_v0++, img, G_IM_FMT_RGBA, G_IM_SIZ_32b, 64, 0, 0, 0, 63, 15, 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); + gSP2Triangles(temp_v0++, (i * 4) + 0, (i * 4) + 1, (i * 4) + 2, 0, (i * 4) + 0, (i * 4) + 2, (i * 4) + 3, + 0); + } + + gSPEndDisplayList(temp_v0++); + } +} + +void func_8780295C(s16 arg0) { + D_8780FAC6 = arg0; +} + +s32 func_87802974(void) { + s16 var_v1 = -1; + + if (D_8780FAC4 == 2) { + var_v1 = -2; + } else if ((D_8780FAC2 == 0x1B) && (D_8780FAC4 == 1)) { + var_v1 = D_8780FAC0; + } + + return var_v1; +} diff --git a/src/fragments/2/fragment2_2.c b/src/fragments/2/fragment2_2.c new file mode 100644 index 00000000..1c8114ef --- /dev/null +++ b/src/fragments/2/fragment2_2.c @@ -0,0 +1,2305 @@ +#include "global.h" +#include "fragment2.h" +#include "src/49790.h" +#include "src/4CBC0.h" +#include "src/4BDC0.h" +#include "src/1CF30.h" +#include "src/4BA90.h" +#include "src/26820.h" +#include "src/2E110.h" +#include "src/490A0.h" +#include "src/20470.h" +#include "src/6BC0.h" +#include "src/6A40.h" + +u32 D_878064F0[] = { + 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x000100DD, 0x00DD00DD, 0x00DD00DD, 0x00DD00DD, + 0x00010925, 0x09250925, 0x09250925, 0x09250925, 0x0001092F, 0x092F092F, 0x092F092F, 0x092F092F, + 0x00010925, 0x09250925, 0x09250925, 0x09250925, 0x000100DD, 0x00DD00DD, 0x00DD00DD, 0x00DD00DD, + 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0xFFFEFFFE, 0xFFFEFFFE, 0xFFFEFFFE, 0xFFFEFFFE, + 0xFFFEFFFE, 0xFFFEFFFE, 0xFFFEFFFE, 0xFFFEFFFE, 0xFFFEFFFE, 0xFFFEFFFE, 0xFFFEFFFE, 0xFFFEFFFE, + 0xFFFEFFFE, 0xFFFEFFFE, 0xFFFEFFFE, 0xFFFEFFFE, 0xFFFEFFFE, 0xFFFEFFFE, 0xFFFEFFFE, 0xFFFEFFFE, +}; + +u32 D_878065B0[] = { + 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00DD00DD, 0x00DD00DD, 0x00DD00DD, 0x00DD00DD, + 0x09250925, 0x09250925, 0x09250925, 0x09250925, 0x092F092F, 0x092F092F, 0x092F092F, 0x092F092F, + 0x09250925, 0x09250925, 0x09250925, 0x09250925, 0x00DD00DD, 0x00DD00DD, 0x00DD00DD, 0x00DD00DD, + 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0xFFFEFFFE, 0xFFFEFFFE, 0xFFFEFFFE, 0xFFFEFFFE, + 0xFFFEFFFE, 0xFFFEFFFE, 0xFFFEFFFE, 0xFFFEFFFE, 0xFFFEFFFE, 0xFFFEFFFE, 0xFFFEFFFE, 0xFFFEFFFE, + 0xFFFEFFFE, 0xFFFEFFFE, 0xFFFEFFFE, 0xFFFEFFFE, 0xFFFEFFFE, 0xFFFEFFFE, 0xFFFEFFFE, 0xFFFEFFFE, +}; + +u32 D_87806670[] = { + 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00DD00DD, 0x00DD00DD, 0x00DD00DD, 0x00DD0001, + 0x09250925, 0x09250925, 0x09250925, 0x09250001, 0x092F092F, 0x092F092F, 0x092F092F, 0x092F0001, + 0x09250925, 0x09250925, 0x09250925, 0x09250001, 0x00DD00DD, 0x00DD00DD, 0x00DD00DD, 0x00DD0001, + 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0xFFFEFFFE, 0xFFFEFFFE, 0xFFFEFFFE, 0xFFFEFFFE, + 0xFFFEFFFE, 0xFFFEFFFE, 0xFFFEFFFE, 0xFFFEFFFE, 0xFFFEFFFE, 0xFFFEFFFE, 0xFFFEFFFE, 0xFFFEFFFE, + 0xFFFEFFFE, 0xFFFEFFFE, 0xFFFEFFFE, 0xFFFEFFFE, 0xFFFEFFFE, 0xFFFEFFFE, 0xFFFEFFFE, 0xFFFEFFFE, +}; + +u32 D_87806730[] = { + 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0xC5C7C5C7, 0xC5C7C5C7, 0xC5C7C5C7, 0xC5C7C5C7, + 0xF709F709, 0xF709F709, 0xF709F709, 0xF709F709, 0xF7CBF7CB, 0xF7CBF7CB, 0xF7CBF7CB, 0xF7CBF7CB, + 0xF709F709, 0xF709F709, 0xF709F709, 0xF709F709, 0xC5C7C5C7, 0xC5C7C5C7, 0xC5C7C5C7, 0xC5C7C5C7, + 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0xFFFEFFFE, 0xFFFEFFFE, 0xFFFEFFFE, 0xFFFEFFFE, + 0xFFFEFFFE, 0xFFFEFFFE, 0xFFFEFFFE, 0xFFFEFFFE, 0xFFFEFFFE, 0xFFFEFFFE, 0xFFFEFFFE, 0xFFFEFFFE, + 0xFFFEFFFE, 0xFFFEFFFE, 0xFFFEFFFE, 0xFFFEFFFE, 0xFFFEFFFE, 0xFFFEFFFE, 0xFFFEFFFE, 0xFFFEFFFE, +}; + +u32 D_878067F0[] = { + 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, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x0000000C, 0x0000003C, 0x00000075, 0x000000A3, 0x000000CB, 0x000000EA, 0x000000FE, 0x000000FF, 0x000000FF, + 0x000000FE, 0x000000EA, 0x000000CB, 0x000000A3, 0x00000075, 0x0000003C, 0x0000000C, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000004, 0x00000028, 0x0000007E, + 0x000000CD, 0x000001FB, 0x000210FF, 0x000D35FF, 0x001B66FF, 0x00299CFF, 0x0039CCFF, 0x0042F1FF, 0x0043F3FF, + 0x003BD4FF, 0x002DA3FF, 0x001D6EFF, 0x000E3BFF, 0x000312FF, 0x000001FB, 0x000000CD, 0x0000007E, 0x00000028, + 0x00000004, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000021, 0x0000007E, 0x000000DF, 0x000006FF, + 0x000C37FF, 0x00288FFF, 0x0040E5FF, 0x0042EFFF, 0x0042EFFF, 0x0043F0FF, 0x0043F1FF, 0x0043F4FF, 0x0045F6FF, + 0x0045FAFF, 0x0046FDFF, 0x0048FFFF, 0x0049FFFF, 0x0048FBFF, 0x002DA6FF, 0x000F42FF, 0x000008FF, 0x000000DF, + 0x0000007E, 0x00000021, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0x00000032, 0x000000BA, 0x000103FE, 0x00092EFF, 0x002C9FFF, + 0x003DDEFF, 0x003EDFFF, 0x003EE0FF, 0x003FE5FF, 0x0041EAFF, 0x0042EEFF, 0x0044F3FF, 0x0044F8FF, 0x0046FCFF, + 0x0147FDFF, 0x0248FDFF, 0x0349FFFF, 0x0248FDFF, 0x0147FEFF, 0x0048FFFF, 0x0049FFFF, 0x0036C1FF, 0x000D3BFF, + 0x000104FE, 0x000000BA, 0x00000032, 0x00000002, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000002, 0x00000039, 0x000000D5, 0x000007FF, 0x001960FF, 0x0038C5FF, 0x003BD2FF, + 0x003BD4FF, 0x003DDCFF, 0x003FE2FF, 0x3064ECFF, 0x0042EFFF, 0x0043F3FF, 0x0046F9FF, 0x0047FEFF, 0x044AFFFF, + 0x1C5CFFFF, 0x5081FFFF, 0x5282FFFF, 0x4F80FFFF, 0x094EFFFF, 0x0248FFFF, 0x0046FCFF, 0x0046FFFF, 0x0045F9FF, + 0x002380FF, 0x00000CFF, 0x000000D5, 0x00000039, 0x00000002, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000001, 0x0000002B, 0x000000CC, 0x000009FF, 0x002179FF, 0x0036C1FF, 0x0037C6FF, 0x003ACEFF, + 0x003BD7FF, 0x003DDEFF, 0x99B3F5FF, 0xFFFFFFFF, 0x4476F5FF, 0x0045F7FF, 0x0046FEFF, 0x074CFFFF, 0x7FA2FFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xF0F4FFFF, 0x7CA1FFFF, 0x1354FFFF, 0x0044FAFF, 0x0044F7FF, + 0x0047FEFF, 0x002FA6FF, 0x00010EFF, 0x000000CC, 0x0000002B, 0x00000001, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000003, 0x00000097, 0x000005FF, 0x001E6CFF, 0x0033B6FF, 0x0034BAFF, 0x0037C6FF, 0x003BD1FF, + 0x1049DBFF, 0xBACBF7FF, 0xFFFFFFFF, 0xFFFFFFFF, 0x4476F6FF, 0x0045FAFF, 0x0248FFFF, 0x1154FFFF, 0xC2D3FFFF, + 0xFFFFFFFF, 0xD6E2FFFF, 0xC6D6FFFF, 0xE3EBFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xD0DDFFFF, 0x1053FDFF, 0x0045F7FF, + 0x0043F1FF, 0x0046FBFF, 0x002A96FF, 0x000108FF, 0x00000097, 0x00000003, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x0000003E, 0x000000F6, 0x001041FF, 0x0030AEFF, 0x0030ABFF, 0x0035BBFF, 0x0038C8FF, 0x003AD2FF, + 0xCEDAF8FF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x4476F8FF, 0x0046FDFF, 0x084DFFFF, 0x1758FFFF, 0xC3D4FFFF, + 0xFFFFFFFF, 0x6B95FFFF, 0x376FFFFF, 0x326CFFFF, 0x638FFFFF, 0xD4E0FFFF, 0xFFFFFFFF, 0x9AB6FFFF, 0x0044F9FF, + 0x0043F3FF, 0x0042ECFF, 0x0042F0FF, 0x001756FF, 0x000000F6, 0x0000003E, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x0000008C, 0x00010CFF, 0x002DA4FF, 0x002EA8FF, 0x0030ACFF, 0x0035BCFF, 0x0038C9FF, 0x003AD2FF, + 0xCEDAF8FF, 0x99B2F3FF, 0xBACCF9FF, 0xFFFFFFFF, 0x4476F8FF, 0x0046FEFF, 0x0B4FFFFF, 0x1A5AFFFF, 0xC5D5FFFF, + 0xFFFFFFFF, 0x7199FFFF, 0x4378FFFF, 0x3870FFFF, 0x2D67FFFF, 0x3E73FFFF, 0xFFFFFFFF, 0xEEF3FFFF, 0x0045FBFF, + 0x0044F4FF, 0x0042ECFF, 0x0040E8FF, 0x003DDDFF, 0x000311FF, 0x0000008C, 0x00000000, 0x00000000, 0x00000000, + 0x0000002B, 0x000000C8, 0x000E37FF, 0x0030ADFF, 0x002EA6FF, 0x0030AEFF, 0x0035BDFF, 0x0038C9FF, 0x003AD3FF, + 0x003DDBFF, 0x003EE1FF, 0xBACCF9FF, 0xFFFFFFFF, 0x4476F7FF, 0x0046FEFF, 0x0A4FFFFF, 0x195AFFFF, 0xC4D5FFFF, + 0xFFFFFFFF, 0x6F97FFFF, 0x3E74FFFF, 0x376EFFFF, 0x2C68FFFF, 0x215FFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x0044F9FF, + 0x0043F4FF, 0x0042EDFF, 0x003FE5FF, 0x0042E9FF, 0x001348FF, 0x000000C8, 0x0000002B, 0x00000000, 0x00000000, + 0x0000003E, 0x000000F5, 0x001E6DFF, 0x002FA9FF, 0x002EA6FF, 0x0030ABFF, 0x0034BBFF, 0x0037C7FF, 0x003BD2FF, + 0x003DDAFF, 0x003FE2FF, 0xBACBF9FF, 0xFFFFFFFF, 0x4476F7FF, 0x0045FBFF, 0x074CFFFF, 0x1356FFFF, 0xC3D4FFFF, + 0xFFFFFFFF, 0x3F73FFFF, 0x336BFFFF, 0x2F69FFFF, 0x2763FFFF, 0x769CFFFF, 0xFFFFFFFF, 0xCEDCFFFF, 0x0044F9FF, + 0x0043F2FF, 0x0042ECFF, 0x0040E6FF, 0x003EE1FF, 0x00278EFF, 0x000000F5, 0x0000003E, 0x00000000, 0x00000000, + 0x0000003E, 0x000000F8, 0x002B9CFF, 0x002EA7FF, 0x002EA6FF, 0x002FA9FF, 0x0033B9FF, 0x0037C5FF, 0x003AD0FF, + 0x003CD8FF, 0x003EE0FF, 0xCEDAFAFF, 0xFFFFFFFF, 0x4475F5FF, 0x0046F9FF, 0x0046FFFF, 0x0C50FFFF, 0xC0D2FFFF, + 0xFFFFFFFF, 0x2662FFFF, 0x2763FFFF, 0x2461FFFF, 0x779DFFFF, 0xEFF4FFFF, 0xFFFFFFFF, 0x658FFEFF, 0x0045F7FF, + 0x0043F0FF, 0x0041EAFF, 0x0040E4FF, 0x003EDEFF, 0x0038C8FF, 0x000000F8, 0x0000003E, 0x00000000, 0x00000000, + 0x0000003E, 0x000000F8, 0x002B9CFF, 0x002EA7FF, 0x002EA6FF, 0x002FA8FF, 0x0032B5FF, 0x0036C4FF, 0x0039CEFF, + 0x003CD6FF, 0x003EDEFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x0043F1FF, 0x0044F5FF, 0x0046FBFF, 0x0349FFFF, 0xEFF3FFFF, + 0xFFFFFFFF, 0xC1D2FFFF, 0xC1D2FFFF, 0xF0F4FFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x99B5FEFF, 0x0045F8FF, 0x0043F3FF, + 0x0042EEFF, 0x0041E8FF, 0x003EE2FF, 0x003EDCFF, 0x0037C6FF, 0x000000F8, 0x0000003E, 0x00000000, 0x00000000, + 0x0000003E, 0x000000F5, 0x001E6DFF, 0x002FA9FF, 0x002EA6FF, 0x002EA7FF, 0x0031AFFF, 0x0035BFFF, 0x0038CAFF, + 0x003BD2FF, 0x003DDAFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x0042ECFF, 0x0044F2FF, 0x0045F6FF, 0x0046FBFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xDEE7FFFF, 0x658FFEFF, 0x0045F8FF, 0x0043F3FF, 0x0042EFFF, + 0x0041EAFF, 0x0040E5FF, 0x003DDEFF, 0x003DDAFF, 0x002688FF, 0x000000F5, 0x0000003E, 0x00000000, 0x00000000, + 0x0000002B, 0x000000C8, 0x000E37FF, 0x0030ADFF, 0x002EA6FF, 0x002EA6FF, 0x0030AAFF, 0x0033B7FF, 0x0037C5FF, + 0x003ACFFF, 0x003CD6FF, 0xFFFFFFFF, 0xFFFFFFFF, 0x0041E8FF, 0x0042ECFF, 0x0043F1FF, 0x0044F4FF, 0xFFFFFFFF, + 0xFFFFFFFF, 0x4477FEFF, 0x4477FEFF, 0x205DFDFF, 0x0045FAFF, 0x0045F7FF, 0x0043F3FF, 0x0042EFFF, 0x0041EBFF, + 0x0040E7FF, 0x003FE1FF, 0x003DDBFF, 0x003DDCFF, 0x001143FF, 0x000000C8, 0x0000002B, 0x00000000, 0x00000000, + 0x00000000, 0x0000008C, 0x00010CFF, 0x002DA4FF, 0x002EA8FF, 0x002EA6FF, 0x002EA7FF, 0x0031B1FF, 0x0034BEFF, + 0x0038C9FF, 0x003AD1FF, 0xFFFFFFFF, 0xFFFFFFFF, 0x003FE3FF, 0x0040E7FF, 0x0042ECFF, 0x0043EFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0x0044F5FF, 0x0044F6FF, 0x0044F6FF, 0x0044F3FF, 0x0043F1FF, 0x0043EEFF, 0x0042EBFF, 0x0040E6FF, + 0x003EE1FF, 0x003DDCFF, 0x003DD8FF, 0x0039CCFF, 0x000210FF, 0x0000008C, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x0000003E, 0x000000F6, 0x001041FF, 0x0030AEFF, 0x002EA6FF, 0x002EA6FF, 0x0030AAFF, 0x0032B7FF, + 0x0036C2FF, 0x0038CBFF, 0xEEF2FCFF, 0xFFFFFFFF, 0x1049DFFF, 0x003EE1FF, 0x0040E5FF, 0x0041EAFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0x0042EDFF, 0x0043F0FF, 0x0043F0FF, 0x0042EDFF, 0x0042EBFF, 0x0041E8FF, 0x0040E5FF, 0x003EE1FF, + 0x003DDCFF, 0x003CD6FF, 0x003CD8FF, 0x00144DFF, 0x000000F6, 0x0000003E, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000003, 0x00000097, 0x000005FF, 0x001E6CFF, 0x0031B2FF, 0x002EA6FF, 0x002EA6FF, 0x0030ACFF, + 0x0034BAFF, 0x0036C3FF, 0xBAC9F1FF, 0xFFFFFFFF, 0x4471E3FF, 0x003EDCFF, 0x003FE2FF, 0x003FE3FF, 0xFFFFFFFF, + 0xFFFFFFFF, 0x0040E7FF, 0x0041E8FF, 0x0041E8FF, 0x0040E6FF, 0x0040E4FF, 0x003EE2FF, 0x003EDEFF, 0x003EDCFF, + 0x003CD5FF, 0x003DDDFF, 0x002483FF, 0x000007FF, 0x00000097, 0x00000003, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000001, 0x0000002B, 0x000000CC, 0x000009FF, 0x002077FF, 0x0031B0FF, 0x002EA7FF, 0x002EA5FF, + 0xCED7F0FF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xEEF2FCFF, 0x2055DFFF, 0x003EDDFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0x003EE1FF, 0x003EE1FF, 0x003EE1FF, 0x003EE0FF, 0x003EDEFF, 0x003DDBFF, 0x003CD7FF, 0x003BD5FF, + 0x003DDAFF, 0x00278FFF, 0x00000BFF, 0x000000CC, 0x0000002B, 0x00000001, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000002, 0x00000039, 0x000000D5, 0x000007FF, 0x00175AFF, 0x0030ABFF, 0x002FABFF, + 0xCED7EEFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xEEF2FCFF, 0x2053D7FF, 0x003BD6FF, 0xEEF2FCFF, + 0xEEF2FCFF, 0x003DD9FF, 0x003DD9FF, 0x003DD9FF, 0x003DD8FF, 0x003BD6FF, 0x003BD4FF, 0x003BD7FF, 0x003BD0FF, + 0x001C6BFF, 0x000009FF, 0x000000D5, 0x00000039, 0x00000002, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0x00000032, 0x000000BA, 0x000003FE, 0x000728FF, 0x002585FF, + 0x0031B1FF, 0x002FACFF, 0x0030ADFF, 0x0032B5FF, 0x0035BEFF, 0x0036C2FF, 0x0038C8FF, 0x0039CBFF, 0x2053D5FF, + 0x2053D7FF, 0x003AD1FF, 0x003AD1FF, 0x003AD1FF, 0x003AD1FF, 0x003BD4FF, 0x003CD9FF, 0x002C9FFF, 0x00092FFF, + 0x000103FE, 0x000000BA, 0x00000032, 0x00000002, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000021, 0x0000007E, 0x000000DF, 0x000004FF, + 0x00092CFF, 0x001F6FFF, 0x0031ADFF, 0x0032B3FF, 0x0032B6FF, 0x0034BAFF, 0x0034BDFF, 0x0036C1FF, 0x0036C4FF, + 0x0037C7FF, 0x0039CCFF, 0x0039CEFF, 0x003AD2FF, 0x0038CDFF, 0x002483FF, 0x000C34FF, 0x000005FF, 0x000000DF, + 0x0000007E, 0x00000021, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000004, 0x00000028, 0x0000007E, + 0x000000CD, 0x000001FB, 0x00010BFF, 0x000828FF, 0x00124BFF, 0x001E72FF, 0x002A98FF, 0x0033B6FF, 0x0033BAFF, + 0x002CA1FF, 0x00217CFF, 0x001654FF, 0x000A2CFF, 0x00010DFF, 0x000001FB, 0x000000CD, 0x0000007E, 0x00000028, + 0x00000004, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x0000000C, 0x0000003C, 0x00000075, 0x000000A3, 0x000000CB, 0x000000EA, 0x000000FE, 0x000000FF, 0x000000FF, + 0x000000FE, 0x000000EA, 0x000000CB, 0x000000A3, 0x00000075, 0x0000003C, 0x0000000C, 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, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, +}; + +u32 D_87807690[] = { + 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, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x0000000C, 0x0000003C, 0x00000075, 0x000000A3, 0x000000CB, 0x000000EA, 0x000000FE, 0x000000FF, 0x000000FF, + 0x000000FE, 0x000000EA, 0x000000CB, 0x000000A3, 0x00000075, 0x0000003C, 0x0000000C, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000004, 0x00000028, 0x0000007E, + 0x000000CD, 0x000100FB, 0x000800FF, 0x001E00FF, 0x013C00FF, 0x035C00FF, 0x067A00FF, 0x089100FF, 0x089100FF, + 0x067F00FF, 0x036100FF, 0x014100FF, 0x002200FF, 0x000A00FF, 0x000100FB, 0x000000CD, 0x0000007E, 0x00000028, + 0x00000004, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000021, 0x0000007E, 0x000000DF, 0x000200FF, + 0x001F00FF, 0x045500FF, 0x088900FF, 0x079000FF, 0x088F00FF, 0x088F00FF, 0x089000FF, 0x089300FF, 0x089300FF, + 0x089600FF, 0x089800FF, 0x089B00FF, 0x089E00FF, 0x099B00FF, 0x046300FF, 0x002600FF, 0x000300FF, 0x000000DF, + 0x0000007E, 0x00000021, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0x00000032, 0x000000BA, 0x000200FE, 0x001A00FF, 0x056000FF, + 0x088600FF, 0x078600FF, 0x078600FF, 0x088A00FF, 0x088D00FF, 0x088E00FF, 0x089300FF, 0x089500FF, 0x089700FF, + 0x089A00FF, 0x089A00FF, 0x089A00FF, 0x089A00FF, 0x089900FF, 0x089A00FF, 0x099E00FF, 0x067400FF, 0x002200FF, + 0x000200FE, 0x000000BA, 0x00000032, 0x00000002, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000002, 0x00000039, 0x000000D5, 0x000300FF, 0x013A00FF, 0x077700FF, 0x077E00FF, + 0x077F00FF, 0x078400FF, 0x49A844FF, 0x4AAB44FF, 0x088F00FF, 0x089200FF, 0x089600FF, 0x089900FF, 0x089B00FF, + 0x09A100FF, 0x18A910FF, 0x4BBC44FF, 0x4BBC44FF, 0x4BB944FF, 0x089A00FF, 0x089700FF, 0x089A00FF, 0x099500FF, + 0x024C00FF, 0x000500FF, 0x000000D5, 0x00000039, 0x00000002, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000001, 0x0000002B, 0x000000CC, 0x000300FF, 0x034900FF, 0x067500FF, 0x067700FF, 0x178410FF, + 0x8CC589FF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x8DCD89FF, 0x179F10FF, 0x089C00FF, 0x09A300FF, + 0x7AD175FF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xEFF9EEFF, 0x79C875FF, 0x179C10FF, 0x089500FF, + 0x089800FF, 0x056500FF, 0x000700FF, 0x000000CC, 0x0000002B, 0x00000001, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000003, 0x00000097, 0x000200FF, 0x044100FF, 0x056D00FF, 0x067000FF, 0x258820FF, 0xCFE6CEFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xBCE0BAFF, 0xD0E9CEFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xBCE4BAFF, 0x09A400FF, 0x09A900FF, + 0xBDEABAFF, 0xFFFFFFFF, 0xD0F0CEFF, 0xBDEABAFF, 0xDFF4DEFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xD0EBCEFF, 0x179B10FF, + 0x089000FF, 0x089600FF, 0x055A00FF, 0x000400FF, 0x00000097, 0x00000003, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x0000003E, 0x000000F6, 0x012600FF, 0x056800FF, 0x056600FF, 0x067100FF, 0xDFEEDEFF, 0xFFFFFFFF, + 0xCFE7CEFF, 0x279620FF, 0x088B00FF, 0x088F00FF, 0x4AB044FF, 0xEFF8EEFF, 0xFFFFFFFF, 0x37B830FF, 0x0AAF00FF, + 0xBDEBBAFF, 0xFFFFFFFF, 0x4BCC44FF, 0x0AB800FF, 0x0AB300FF, 0x4BC244FF, 0xD0EECEFF, 0xFFFFFFFF, 0x9CD599FF, + 0x089200FF, 0x088E00FF, 0x088F00FF, 0x013400FF, 0x000000F6, 0x0000003E, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x0000008C, 0x000600FF, 0x056300FF, 0x056500FF, 0x066700FF, 0x067100FF, 0x9BC999FF, 0x8CC389FF, + 0x078300FF, 0x078800FF, 0x088B00FF, 0x089100FF, 0x089300FF, 0xBCE3BAFF, 0xFFFFFFFF, 0x4BC144FF, 0x0AB000FF, + 0xBDECBAFF, 0xFFFFFFFF, 0x4CD244FF, 0x0ABA00FF, 0x0AB400FF, 0x0AAE00FF, 0x28B020FF, 0xFFFFFFFF, 0xEFF8EEFF, + 0x089300FF, 0x088E00FF, 0x078A00FF, 0x088500FF, 0x000900FF, 0x0000008C, 0x00000000, 0x00000000, 0x00000000, + 0x0000002B, 0x000000C8, 0x002000FF, 0x056900FF, 0x056400FF, 0x066800FF, 0x067100FF, 0x067900FF, 0x077F00FF, + 0x078400FF, 0x078700FF, 0x088C00FF, 0x088F00FF, 0x179A10FF, 0xEFF8EEFF, 0xFFFFFFFF, 0x18AE10FF, 0x0AB000FF, + 0xBDECBAFF, 0xFFFFFFFF, 0x4BCF44FF, 0x0ABA00FF, 0x0AB400FF, 0x0AAD00FF, 0x09A500FF, 0xFFFFFFFF, 0xFFFFFFFF, + 0x089300FF, 0x088E00FF, 0x078900FF, 0x078C00FF, 0x002A00FF, 0x000000C8, 0x0000002B, 0x00000000, 0x00000000, + 0x0000003E, 0x000000F5, 0x024100FF, 0x056600FF, 0x056400FF, 0x056600FF, 0x067100FF, 0x067800FF, 0x077E00FF, + 0x078300FF, 0x078700FF, 0x088A00FF, 0x088F00FF, 0x9CD499FF, 0xFFFFFFFF, 0xBCE5BAFF, 0x09A500FF, 0x09AD00FF, + 0xBDEBBAFF, 0xFFFFFFFF, 0x19BC10FF, 0x0AB600FF, 0x0AB100FF, 0x09AB00FF, 0x6AC765FF, 0xFFFFFFFF, 0xD0EBCEFF, + 0x089200FF, 0x088D00FF, 0x078900FF, 0x078700FF, 0x045400FF, 0x000000F5, 0x0000003E, 0x00000000, 0x00000000, + 0x0000003E, 0x000000F8, 0x055E00FF, 0x056400FF, 0x056400FF, 0x056600FF, 0x066F00FF, 0x067700FF, 0x077D00FF, + 0x078200FF, 0x078600FF, 0x179210FF, 0xADD9AAFF, 0xFFFFFFFF, 0xEFF8EEFF, 0x36AB30FF, 0x09A000FF, 0x09A600FF, + 0xBCE9BAFF, 0xFFFFFFFF, 0x0AB000FF, 0x0AAF00FF, 0x09AA00FF, 0x6AC865FF, 0xEFF8EEFF, 0xFFFFFFFF, 0x6ABE65FF, + 0x088F00FF, 0x088D00FF, 0x078900FF, 0x078500FF, 0x077800FF, 0x000000F8, 0x0000003E, 0x00000000, 0x00000000, + 0x0000003E, 0x000000F8, 0x055E00FF, 0x056400FF, 0x056400FF, 0x056500FF, 0x066D00FF, 0x067600FF, 0x077C00FF, + 0x078000FF, 0x5AAD55FF, 0xEFF7EEFF, 0xFFFFFFFF, 0xD0EACEFF, 0x36A730FF, 0x089800FF, 0x089A00FF, 0x09A000FF, + 0xEFF9EEFF, 0xFFFFFFFF, 0xBCE8BAFF, 0xBCE7BAFF, 0xEFF9EEFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x9CD599FF, 0x089200FF, + 0x088F00FF, 0x088B00FF, 0x078700FF, 0x078300FF, 0x077800FF, 0x000000F8, 0x0000003E, 0x00000000, 0x00000000, + 0x0000003E, 0x000000F5, 0x024100FF, 0x056600FF, 0x056400FF, 0x056400FF, 0x066A00FF, 0x067200FF, 0x168110FF, + 0x9CCB99FF, 0xFFFFFFFF, 0xFFFFFFFF, 0x79C075FF, 0x179410FF, 0x089000FF, 0x089400FF, 0x089700FF, 0x089700FF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xDFF2DEFF, 0x6AC065FF, 0x089200FF, 0x088F00FF, + 0x088D00FF, 0x078900FF, 0x078500FF, 0x078300FF, 0x045100FF, 0x000000F5, 0x0000003E, 0x00000000, 0x00000000, + 0x0000002B, 0x000000C8, 0x002000FF, 0x056900FF, 0x056400FF, 0x056400FF, 0x056600FF, 0x066E00FF, 0xCFE5CEFF, + 0xFFFFFFFF, 0xCFE7CEFF, 0x369B30FF, 0x088900FF, 0x088C00FF, 0x088D00FF, 0x089100FF, 0x089300FF, 0x089500FF, + 0xFFFFFFFF, 0xFFFFFFFF, 0x4AB244FF, 0x4AB244FF, 0x27A420FF, 0x089400FF, 0x089200FF, 0x088F00FF, 0x088C00FF, + 0x088A00FF, 0x078700FF, 0x078300FF, 0x078500FF, 0x002800FF, 0x000000C8, 0x0000002B, 0x00000000, 0x00000000, + 0x00000000, 0x0000008C, 0x000600FF, 0x056300FF, 0x056500FF, 0x056400FF, 0x056500FF, 0x78AE75FF, 0xFFFFFFFF, + 0xCFE5CEFF, 0x178510FF, 0x078100FF, 0x078600FF, 0x088900FF, 0x088B00FF, 0x088D00FF, 0x088F00FF, 0x089100FF, + 0xFFFFFFFF, 0xFFFFFFFF, 0x089300FF, 0x089300FF, 0x089200FF, 0x089100FF, 0x088F00FF, 0x088C00FF, 0x088A00FF, + 0x078600FF, 0x078400FF, 0x078100FF, 0x087A00FF, 0x000800FF, 0x0000008C, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x0000003E, 0x000000F6, 0x012600FF, 0x056900FF, 0x056400FF, 0x056400FF, 0xCFE2CEFF, 0xFFFFFFFF, + 0x5AA255FF, 0x077900FF, 0x077D00FF, 0x078100FF, 0x078400FF, 0x078700FF, 0x088A00FF, 0x088D00FF, 0x088D00FF, + 0xFFFFFFFF, 0xFFFFFFFF, 0x089100FF, 0x089000FF, 0x088D00FF, 0x088D00FF, 0x088C00FF, 0x088A00FF, 0x078700FF, + 0x078400FF, 0x078000FF, 0x088200FF, 0x012D00FF, 0x000000F6, 0x0000003E, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000003, 0x00000097, 0x000200FF, 0x044100FF, 0x056B00FF, 0x056300FF, 0xFFFFFFFF, 0xFFFFFFFF, + 0x066F00FF, 0x177E10FF, 0x499D44FF, 0x49A044FF, 0x49A344FF, 0x49A544FF, 0x178F10FF, 0x088800FF, 0x088A00FF, + 0xFFFFFFFF, 0xFFFFFFFF, 0x088B00FF, 0x088B00FF, 0x088A00FF, 0x088900FF, 0x088700FF, 0x078500FF, 0x078300FF, + 0x077F00FF, 0x078500FF, 0x055000FF, 0x000300FF, 0x00000097, 0x00000003, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000001, 0x0000002B, 0x000000CC, 0x000300FF, 0x034800FF, 0x056A00FF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xEEF7EEFF, 0x5AAD55FF, 0x078600FF, + 0xFFFFFFFF, 0xFFFFFFFF, 0x078700FF, 0x078700FF, 0x078600FF, 0x078500FF, 0x078300FF, 0x078100FF, 0x078000FF, + 0x078300FF, 0x045600FF, 0x000500FF, 0x000000CC, 0x0000002B, 0x00000001, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000002, 0x00000039, 0x000000D5, 0x000300FF, 0x013500FF, 0xACCDAAFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xCFE2CEFF, 0xBCD8BAFF, 0xBCD9BAFF, 0xBCDABAFF, 0xCFE6CEFF, 0xFFFFFFFF, 0x5AAA55FF, 0x078200FF, + 0xEEF7EEFF, 0xEEF7EEFF, 0x078200FF, 0x078200FF, 0x078200FF, 0x078100FF, 0x077F00FF, 0x078100FF, 0x077D00FF, + 0x014000FF, 0x000400FF, 0x000000D5, 0x00000039, 0x00000002, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0x00000032, 0x000000BA, 0x000200FE, 0x001600FF, 0x035100FF, + 0x056B00FF, 0x056800FF, 0x066800FF, 0x066E00FF, 0x067100FF, 0x067500FF, 0x067800FF, 0x077A00FF, 0x077C00FF, + 0x268E20FF, 0x268D20FF, 0x077D00FF, 0x077D00FF, 0x077E00FF, 0x078000FF, 0x078200FF, 0x055F00FF, 0x001B00FF, + 0x000200FE, 0x000000BA, 0x00000032, 0x00000002, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000021, 0x0000007E, 0x000000DF, 0x000100FF, + 0x001900FF, 0x024300FF, 0x056900FF, 0x056B00FF, 0x066C00FF, 0x067000FF, 0x067100FF, 0x067400FF, 0x067600FF, + 0x067700FF, 0x067B00FF, 0x067C00FF, 0x067E00FF, 0x077B00FF, 0x034E00FF, 0x001D00FF, 0x000200FF, 0x000000DF, + 0x0000007E, 0x00000021, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000004, 0x00000028, 0x0000007E, + 0x000000CD, 0x000000FB, 0x000500FF, 0x001600FF, 0x002C00FF, 0x024300FF, 0x055B00FF, 0x066D00FF, 0x066E00FF, + 0x056100FF, 0x034A00FF, 0x013000FF, 0x001900FF, 0x000600FF, 0x000000FB, 0x000000CD, 0x0000007E, 0x00000028, + 0x00000004, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x0000000C, 0x0000003C, 0x00000075, 0x000000A3, 0x000000CB, 0x000000EA, 0x000000FE, 0x000000FF, 0x000000FF, + 0x000000FE, 0x000000EA, 0x000000CB, 0x000000A3, 0x00000075, 0x0000003C, 0x0000000C, 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, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, +}; + +u32 D_87808530[] = { + 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, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x0000000C, 0x0000003C, 0x00000075, 0x000000A3, 0x000000CB, 0x000000EA, 0x000000FE, 0x000000FF, 0x000000FF, + 0x000000FE, 0x000000EA, 0x000000CB, 0x000000A3, 0x00000075, 0x0000003C, 0x0000000C, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000004, 0x00000028, 0x0000007E, + 0x000000CD, 0x010000FB, 0x0E0000FF, 0x2F0202FF, 0x5C0808FF, 0x8B0E0EFF, 0xB81414FF, 0xDB1717FF, 0xDD1717FF, + 0xBF1515FF, 0x930E0EFF, 0x630909FF, 0x350202FF, 0x100000FF, 0x010000FB, 0x000000CD, 0x0000007E, 0x00000028, + 0x00000004, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000021, 0x0000007E, 0x000000DF, 0x050000FF, + 0x310303FF, 0x810E0EFF, 0xCE1717FF, 0xD81818FF, 0xD71818FF, 0xD81919FF, 0xDA1818FF, 0xDC1818FF, 0xDE1919FF, + 0xE11919FF, 0xE51919FF, 0xEA1A1AFF, 0xEE1A1AFF, 0xE81B1BFF, 0x951010FF, 0x3B0303FF, 0x070000FF, 0x000000DF, + 0x0000007E, 0x00000021, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0x00000032, 0x000000BA, 0x030000FE, 0x290101FF, 0x8F1010FF, + 0xC81616FF, 0xC91616FF, 0xCA1717FF, 0xCE1717FF, 0xD31818FF, 0xD71818FF, 0xDB1818FF, 0xE01919FF, 0xE21818FF, + 0xE51A1AFF, 0xE51B1BFF, 0xE61C1CFF, 0xE41B1BFF, 0xE51A1AFF, 0xE81919FF, 0xED1A1AFF, 0xAE1313FF, 0x350202FF, + 0x040000FE, 0x000000BA, 0x00000032, 0x00000002, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000002, 0x00000039, 0x000000D5, 0x060000FF, 0x570707FF, 0xB21414FF, 0xBD1515FF, + 0xBF1616FF, 0xCD3333FF, 0xD95555FF, 0xDA4343FF, 0xD71818FF, 0xDB1818FF, 0xE11919FF, 0xE51919FF, 0xE61D1DFF, + 0xE82626FF, 0xE93636FF, 0xEE6363FF, 0xEE6161FF, 0xED5D5DFF, 0xE61B1BFF, 0xE31919FF, 0xE51919FF, 0xE01919FF, + 0x740A0AFF, 0x0A0000FF, 0x000000D5, 0x00000039, 0x00000002, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000001, 0x0000002B, 0x000000CC, 0x070000FF, 0x6D0C0CFF, 0xAE1313FF, 0xB21313FF, 0xCC5353FF, + 0xEEC0C0FF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFAE1E1FF, 0xEA6666FF, 0xE51919FF, 0xE72020FF, 0xE82A2AFF, + 0xF39191FF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFDF1F1FF, 0xF18484FF, 0xE32626FF, 0xDF1919FF, + 0xE51A1AFF, 0x971111FF, 0x0C0000FF, 0x000000CC, 0x0000002B, 0x00000001, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000003, 0x00000097, 0x050000FF, 0x620B0BFF, 0xA31212FF, 0xA71313FF, 0xCC6363FF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xF8E1E1FF, 0xF2C0C0FF, 0xFAE1E1FF, 0xFFFFFFFF, 0xFFFFFFFF, 0xEF6868FF, 0xE82929FF, 0xE93333FF, + 0xF9CBCBFF, 0xFFFFFFFF, 0xFBDBDBFF, 0xFACBCBFF, 0xFCE5E5FF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFAD3D3FF, 0xE12727FF, + 0xD91818FF, 0xE21A1AFF, 0x870F0FFF, 0x070000FF, 0x00000097, 0x00000003, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x0000003E, 0x000000F6, 0x390505FF, 0x9D1212FF, 0x9A1111FF, 0xA91313FF, 0xCE6363FF, 0xFBEFEFFF, + 0xDF8181FF, 0xCC1616FF, 0xD21818FF, 0xD61818FF, 0xED8383FF, 0xFFFFFFFF, 0xFAD5D5FF, 0xE82E2EFF, 0xEA3A3AFF, + 0xFACCCCFF, 0xFFFFFFFF, 0xF17B7BFF, 0xEB4848FF, 0xEB4040FF, 0xEF6C6CFF, 0xFBD6D6FF, 0xFFFFFFFF, 0xF3A3A3FF, + 0xDB1818FF, 0xD51818FF, 0xD91818FF, 0x4E0707FF, 0x000000F6, 0x0000003E, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x0000008C, 0x0B0000FF, 0x951111FF, 0x981111FF, 0x9B1111FF, 0xAA1313FF, 0xB51414FF, 0xBE1616FF, + 0xC51616FF, 0xCC1616FF, 0xD21818FF, 0xD81818FF, 0xDE1919FF, 0xFFFFFFFF, 0xFFFFFFFF, 0xE93131FF, 0xEA3D3DFF, + 0xFACDCDFF, 0xFFFFFFFF, 0xF28383FF, 0xEC4C4CFF, 0xEB4343FF, 0xEA3939FF, 0xEB4646FF, 0xFFFFFFFF, 0xFDF0F0FF, + 0xDC1818FF, 0xD51818FF, 0xD11717FF, 0xC71717FF, 0x0F0000FF, 0x0000008C, 0x00000000, 0x00000000, 0x00000000, + 0x0000002B, 0x000000C8, 0x320404FF, 0x9D1212FF, 0x961111FF, 0x9C1111FF, 0xAB1313FF, 0xB51414FF, 0xBF1616FF, + 0xC61616FF, 0xCB1616FF, 0xD31818FF, 0xD71818FF, 0xE55656FF, 0xFFFFFFFF, 0xFFFFFFFF, 0xE83030FF, 0xEA3C3CFF, + 0xFACDCDFF, 0xFFFFFFFF, 0xF18080FF, 0xEB4B4BFF, 0xEB4242FF, 0xE93838FF, 0xE82B2BFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xDC1818FF, 0xD51818FF, 0xCF1717FF, 0xD31717FF, 0x410606FF, 0x000000C8, 0x0000002B, 0x00000000, 0x00000000, + 0x0000003E, 0x000000F5, 0x630A0AFF, 0x991111FF, 0x961111FF, 0x9A1111FF, 0xA81313FF, 0xB41515FF, 0xBE1616FF, + 0xC51616FF, 0xD23333FF, 0xE37373FF, 0xEFA3A3FF, 0xFFFFFFFF, 0xFFFFFFFF, 0xF5A6A6FF, 0xE82B2BFF, 0xE93838FF, + 0xF9CCCCFF, 0xFFFFFFFF, 0xEC5353FF, 0xEB4444FF, 0xEA3D3DFF, 0xE93333FF, 0xF17D7DFF, 0xFFFFFFFF, 0xF9D3D3FF, + 0xDA1818FF, 0xD51818FF, 0xD01717FF, 0xCB1717FF, 0x800D0DFF, 0x000000F5, 0x0000003E, 0x00000000, 0x00000000, + 0x0000003E, 0x000000F8, 0x8D0F0FFF, 0x971111FF, 0x961111FF, 0x991111FF, 0xA61212FF, 0xB21414FF, 0xBC1515FF, + 0xD76363FF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xF7C1C1FF, 0xE72626FF, 0xE72525FF, 0xE82E2EFF, + 0xF9C9C9FF, 0xFFFFFFFF, 0xEA3D3DFF, 0xEA3A3AFF, 0xE93434FF, 0xF17E7EFF, 0xFDF0F0FF, 0xFFFFFFFF, 0xEB7474FF, + 0xD91818FF, 0xD31717FF, 0xCD1717FF, 0xC81616FF, 0xB41414FF, 0x000000F8, 0x0000003E, 0x00000000, 0x00000000, + 0x0000003E, 0x000000F8, 0x8D0F0FFF, 0x971111FF, 0x961111FF, 0x981111FF, 0xA31212FF, 0xB01313FF, 0xBA1414FF, + 0xCD4242FF, 0xE9A2A2FF, 0xF5D2D2FF, 0xFFFFFFFF, 0xFCF0F0FF, 0xED8383FF, 0xE21919FF, 0xE61C1CFF, 0xE72525FF, + 0xFDF1F1FF, 0xFFFFFFFF, 0xF9C7C7FF, 0xF9C6C6FF, 0xFDF1F1FF, 0xFFFFFFFF, 0xFFFFFFFF, 0xF3A3A3FF, 0xDA1818FF, + 0xD61818FF, 0xD11717FF, 0xCB1717FF, 0xC71616FF, 0xB21414FF, 0x000000F8, 0x0000003E, 0x00000000, 0x00000000, + 0x0000003E, 0x000000F5, 0x630A0AFF, 0x991111FF, 0x961111FF, 0x961111FF, 0x9E1212FF, 0xAC1414FF, 0xB61414FF, + 0xBD1616FF, 0xC51616FF, 0xCC1717FF, 0xD63434FF, 0xF7D3D3FF, 0xFFFFFFFF, 0xF09595FF, 0xE21919FF, 0xE41818FF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFBE1E1FF, 0xEC7474FF, 0xDB1818FF, 0xD81818FF, + 0xD31717FF, 0xCF1717FF, 0xC81616FF, 0xC51616FF, 0x7C0D0DFF, 0x000000F5, 0x0000003E, 0x00000000, 0x00000000, + 0x0000002B, 0x000000C8, 0x320404FF, 0x9D1212FF, 0x961111FF, 0x961111FF, 0x991111FF, 0xA61212FF, 0xB21414FF, + 0xBA1515FF, 0xC11515FF, 0xC71717FF, 0xCC1717FF, 0xD73535FF, 0xFFFFFFFF, 0xFFFFFFFF, 0xDE2727FF, 0xE01919FF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xEB5656FF, 0xEB5656FF, 0xE53535FF, 0xDF1919FF, 0xDB1919FF, 0xD71818FF, 0xD41818FF, + 0xD01717FF, 0xCB1717FF, 0xC51616FF, 0xC61616FF, 0x3C0505FF, 0x000000C8, 0x0000002B, 0x00000000, 0x00000000, + 0x00000000, 0x0000008C, 0x0B0000FF, 0x951111FF, 0x981111FF, 0x961111FF, 0x971111FF, 0x9F1212FF, 0xAC1313FF, + 0xB51515FF, 0xBD1616FF, 0xC21616FF, 0xC81717FF, 0xCC1717FF, 0xF2C0C0FF, 0xFFFFFFFF, 0xE25656FF, 0xDA1919FF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xDE1919FF, 0xDE1919FF, 0xDB1919FF, 0xDA1919FF, 0xD71818FF, 0xD41818FF, 0xCF1717FF, + 0xCB1717FF, 0xC61616FF, 0xC31616FF, 0xB81616FF, 0x0D0000FF, 0x0000008C, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x0000003E, 0x000000F6, 0x390505FF, 0x9D1212FF, 0x961111FF, 0x951111FF, 0xD09191FF, 0xCE7F7FFF, + 0xAE1414FF, 0xB71515FF, 0xBD1616FF, 0xC21616FF, 0xC71717FF, 0xF8E1E1FF, 0xFFFFFFFF, 0xDB4343FF, 0xD51818FF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xD81818FF, 0xD81818FF, 0xD61818FF, 0xD41818FF, 0xD21818FF, 0xCF1717FF, 0xCA1717FF, + 0xC61616FF, 0xC11616FF, 0xC41515FF, 0x450505FF, 0x000000F6, 0x0000003E, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000003, 0x00000097, 0x050000FF, 0x620B0BFF, 0xA01212FF, 0x951111FF, 0xF8EFEFFF, 0xFFFFFFFF, + 0xCA7171FF, 0xB01414FF, 0xB71414FF, 0xBD1515FF, 0xE39393FF, 0xFFFFFFFF, 0xF8E1E1FF, 0xCD1717FF, 0xCF1717FF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xD21818FF, 0xD21818FF, 0xD01818FF, 0xCE1717FF, 0xCC1717FF, 0xC91717FF, 0xC61616FF, + 0xC01616FF, 0xC81616FF, 0x760D0DFF, 0x060000FF, 0x00000097, 0x00000003, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000001, 0x0000002B, 0x000000CC, 0x070000FF, 0x6C0C0CFF, 0xA01212FF, 0xC06F6FFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xF4E0E0FF, 0xEABFBFFF, 0xFAEFEFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xD86464FF, 0xC81717FF, 0xC91717FF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xCB1616FF, 0xCB1616FF, 0xCA1616FF, 0xC91717FF, 0xC61717FF, 0xC11515FF, 0xC11616FF, + 0xC51616FF, 0x800E0EFF, 0x0A0000FF, 0x000000CC, 0x0000002B, 0x00000001, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000002, 0x00000039, 0x000000D5, 0x060000FF, 0x510707FF, 0x9B1212FF, 0xBC6161FF, + 0xF1E0E0FF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xF5E1E1FF, 0xCC5353FF, 0xBD1515FF, 0xC11515FF, 0xC21515FF, + 0xFBEFEFFF, 0xFBEFEFFF, 0xC41616FF, 0xC41616FF, 0xC31616FF, 0xC11515FF, 0xBF1616FF, 0xC21616FF, 0xBC1616FF, + 0x600909FF, 0x080000FF, 0x000000D5, 0x00000039, 0x00000002, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0x00000032, 0x000000BA, 0x030000FE, 0x240101FF, 0x780D0DFF, + 0xA01313FF, 0xAF3F3FFF, 0xB65050FF, 0xB43F3FFF, 0xAC1313FF, 0xAF1313FF, 0xB61414FF, 0xB71414FF, 0xBB1515FF, + 0xC53232FF, 0xC43232FF, 0xBC1515FF, 0xBC1515FF, 0xBD1515FF, 0xC01616FF, 0xC41616FF, 0x8F1010FF, 0x2A0101FF, + 0x030000FE, 0x000000BA, 0x00000032, 0x00000002, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000021, 0x0000007E, 0x000000DF, 0x040000FF, + 0x270202FF, 0x650A0AFF, 0x9D1212FF, 0xA11212FF, 0xA41313FF, 0xA71313FF, 0xAB1414FF, 0xAE1313FF, 0xB01313FF, + 0xB41515FF, 0xB71515FF, 0xBA1515FF, 0xBE1515FF, 0xB81515FF, 0x760C0CFF, 0x2E0303FF, 0x050000FF, 0x000000DF, + 0x0000007E, 0x00000021, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000004, 0x00000028, 0x0000007E, + 0x000000CD, 0x010000FB, 0x0A0000FF, 0x230101FF, 0x430505FF, 0x660A0AFF, 0x890E0EFF, 0xA31313FF, 0xA61313FF, + 0x910F0FFF, 0x6F0A0AFF, 0x4B0707FF, 0x280101FF, 0x0B0000FF, 0x010000FB, 0x000000CD, 0x0000007E, 0x00000028, + 0x00000004, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x0000000C, 0x0000003C, 0x00000075, 0x000000A3, 0x000000CB, 0x000000EA, 0x000000FE, 0x000000FF, 0x000000FF, + 0x000000FE, 0x000000EA, 0x000000CB, 0x000000A3, 0x00000075, 0x0000003C, 0x0000000C, 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, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, +}; + +u32 D_878093D0[] = { + 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, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x0000000C, 0x0000003C, 0x00000075, 0x000000A3, 0x000000CB, 0x000000EA, 0x000000FE, 0x000000FF, 0x000000FF, + 0x000000FE, 0x000000EA, 0x000000CB, 0x000000A3, 0x00000075, 0x0000003C, 0x0000000C, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000004, 0x00000028, 0x0000007E, + 0x000000CD, 0x010100FB, 0x0E0800FF, 0x2F2102FF, 0x5C4008FF, 0x8B620EFF, 0xB88214FF, 0xDB9917FF, 0xDD9A17FF, + 0xBF8515FF, 0x93670EFF, 0x634509FF, 0x352402FF, 0x100A00FF, 0x010100FB, 0x000000CD, 0x0000007E, 0x00000028, + 0x00000004, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000021, 0x0000007E, 0x000000DF, 0x050200FF, + 0x312103FF, 0x815B0EFF, 0xCE9117FF, 0xD89818FF, 0xD79818FF, 0xD89919FF, 0xDA9918FF, 0xDC9A18FF, 0xDE9C19FF, + 0xE19E19FF, 0xE5A119FF, 0xEAA51AFF, 0xEEA81AFF, 0xE8A41BFF, 0x956810FF, 0x3B2803FF, 0x070400FF, 0x000000DF, + 0x0000007E, 0x00000021, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0x00000032, 0x000000BA, 0x030200FE, 0x291B01FF, 0x8F6510FF, + 0xC88C16FF, 0xC98E16FF, 0xCA8E17FF, 0xCE9117FF, 0xD39518FF, 0xD79818FF, 0xDB9A18FF, 0xE09D19FF, 0xE29F18FF, + 0xE5A21AFF, 0xE5A21BFF, 0xE6A21CFF, 0xE4A21BFF, 0xE5A21AFF, 0xE8A419FF, 0xEDA61AFF, 0xAE7A13FF, 0x352402FF, + 0x040300FE, 0x000000BA, 0x00000032, 0x00000002, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000002, 0x00000039, 0x000000D5, 0x060300FF, 0x573D07FF, 0xB27E14FF, 0xBD8515FF, + 0xBF8716FF, 0xC68B16FF, 0xCB9017FF, 0xD19317FF, 0xDFAB43FF, 0xE0A635FF, 0xE19F19FF, 0xE5A119FF, 0xE6A31DFF, + 0xE8A726FF, 0xE9AD36FF, 0xEEBF63FF, 0xEEBF61FF, 0xEDBE5DFF, 0xE6A21BFF, 0xE3A019FF, 0xE5A119FF, 0xE09D19FF, + 0x74510AFF, 0x0A0600FF, 0x000000D5, 0x00000039, 0x00000002, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000001, 0x0000002B, 0x000000CC, 0x070300FF, 0x6D4D0CFF, 0xAE7B13FF, 0xB27E13FF, 0xBA8314FF, + 0xC28816FF, 0xC98D17FF, 0xCE9117FF, 0xEED5A3FF, 0xFFFFFFFF, 0xFDF8F0FF, 0xE5A119FF, 0xE7A420FF, 0xE8A82AFF, + 0xF3D291FF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFDF9F1FF, 0xF1CD84FF, 0xE3A526FF, 0xDF9D19FF, + 0xE5A11AFF, 0x976A11FF, 0x0C0700FF, 0x000000CC, 0x0000002B, 0x00000001, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000003, 0x00000097, 0x050300FF, 0x62450BFF, 0xA37312FF, 0xA77613FF, 0xB37F15FF, 0xBD8516FF, + 0xC38916FF, 0xCA8F16FF, 0xE0B765FF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xE7A31CFF, 0xE8A829FF, 0xE9AC33FF, + 0xF9EACBFF, 0xFFFFFFFF, 0xFBF0DBFF, 0xFAEACBFF, 0xFCF5E5FF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFAEDD3FF, 0xE1A327FF, + 0xD99918FF, 0xE29F1AFF, 0x875F0FFF, 0x070400FF, 0x00000097, 0x00000003, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x0000003E, 0x000000F6, 0x392805FF, 0x9D6F12FF, 0x9A6C11FF, 0xA97713FF, 0xB57F15FF, 0xBE8616FF, + 0xC48A16FF, 0xD29E33FF, 0xFCF8F0FF, 0xFAF2E1FF, 0xFFFFFFFF, 0xFFFFFFFF, 0xE7A522FF, 0xE8AB2EFF, 0xEAAF3AFF, + 0xFAEACCFF, 0xFFFFFFFF, 0xF1C97BFF, 0xEBB448FF, 0xEBB140FF, 0xEFC46CFF, 0xFBEED6FF, 0xFFFFFFFF, 0xF3D8A3FF, + 0xDB9A18FF, 0xD59618FF, 0xD99818FF, 0x4E3707FF, 0x000000F6, 0x0000003E, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x0000008C, 0x0B0700FF, 0x956811FF, 0x986B11FF, 0x9B6D11FF, 0xAA7813FF, 0xB58014FF, 0xBE8516FF, + 0xC58B16FF, 0xF1E1C0FF, 0xFFFFFFFF, 0xE5BA65FF, 0xFFFFFFFF, 0xFFFFFFFF, 0xE7A523FF, 0xE9AC31FF, 0xEAB03DFF, + 0xFAEBCDFF, 0xFFFFFFFF, 0xF2CD83FF, 0xECB74CFF, 0xEBB243FF, 0xEAAE39FF, 0xEBB446FF, 0xFFFFFFFF, 0xFDF9F0FF, + 0xDC9B18FF, 0xD59618FF, 0xD19417FF, 0xC78C17FF, 0x0F0A00FF, 0x0000008C, 0x00000000, 0x00000000, 0x00000000, + 0x0000002B, 0x000000C8, 0x322204FF, 0x9D6F12FF, 0x966A11FF, 0x9C6E11FF, 0xAB7813FF, 0xB58014FF, 0xBF8616FF, + 0xE0C081FF, 0xFFFFFFFF, 0xF3E2C0FF, 0xD79718FF, 0xFFFFFFFF, 0xFFFFFFFF, 0xE7A523FF, 0xE8AB30FF, 0xEAB03CFF, + 0xFAEACDFF, 0xFFFFFFFF, 0xF1CC80FF, 0xEBB64BFF, 0xEBB242FF, 0xE9AE38FF, 0xE8A92BFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xDC9A18FF, 0xD59618FF, 0xCF9217FF, 0xD39417FF, 0x412D06FF, 0x000000C8, 0x0000002B, 0x00000000, 0x00000000, + 0x0000003E, 0x000000F5, 0x63460AFF, 0x996C11FF, 0x966A11FF, 0x9A6C11FF, 0xA87613FF, 0xB47F15FF, 0xC69533FF, + 0xFBF7EFFF, 0xFCF8EFFF, 0xD7A135FF, 0xD69718FF, 0xFFFFFFFF, 0xFFFFFFFF, 0xE7A420FF, 0xE8A92BFF, 0xE9AE38FF, + 0xF9EACCFF, 0xFFFFFFFF, 0xECBA53FF, 0xEBB344FF, 0xEAB03DFF, 0xE9AC33FF, 0xF1CA7DFF, 0xFFFFFFFF, 0xF9ECD3FF, + 0xDA9918FF, 0xD59618FF, 0xD09217FF, 0xCB8E17FF, 0x805A0DFF, 0x000000F5, 0x0000003E, 0x00000000, 0x00000000, + 0x0000003E, 0x000000F8, 0x8D640FFF, 0x976A11FF, 0x966A11FF, 0x996C11FF, 0xA67512FF, 0xB27E14FF, 0xF2E7D2FF, + 0xFFFFFFFF, 0xE2C281FF, 0xCF9217FF, 0xD59618FF, 0xFFFFFFFF, 0xFFFFFFFF, 0xE5A018FF, 0xE7A625FF, 0xE8AA2EFF, + 0xF9E9C9FF, 0xFFFFFFFF, 0xEAB03DFF, 0xEAB03AFF, 0xE9AD34FF, 0xF1CA7EFF, 0xFDF9F0FF, 0xFFFFFFFF, 0xEBC374FF, + 0xD99918FF, 0xD39417FF, 0xCD9117FF, 0xC88D16FF, 0xB47E14FF, 0x000000F8, 0x0000003E, 0x00000000, 0x00000000, + 0x0000003E, 0x000000F8, 0x8D640FFF, 0x976A11FF, 0x966A11FF, 0x986B11FF, 0xA37312FF, 0xD4B87FFF, 0xFFFFFFFF, + 0xF3E8D2FF, 0xC88D17FF, 0xCD9017FF, 0xD39518FF, 0xFFFFFFFF, 0xFFFFFFFF, 0xE2A019FF, 0xE6A31CFF, 0xE7A625FF, + 0xFDF9F1FF, 0xFFFFFFFF, 0xF9E9C7FF, 0xF9E8C6FF, 0xFDF9F1FF, 0xFFFFFFFF, 0xFFFFFFFF, 0xF3D8A3FF, 0xDA9A18FF, + 0xD69718FF, 0xD19317FF, 0xCB8F17FF, 0xC78C16FF, 0xB27E14FF, 0x000000F8, 0x0000003E, 0x00000000, 0x00000000, + 0x0000003E, 0x000000F5, 0x63460AFF, 0x996C11FF, 0x966A11FF, 0x966A11FF, 0xBE9F61FF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xDBBD81FF, 0xD4A954FF, 0xDAAE55FF, 0xDDAF55FF, 0xFFFFFFFF, 0xFFFFFFFF, 0xE8B756FF, 0xE6AB36FF, 0xE4A018FF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFBF3E1FF, 0xECC474FF, 0xDB9A18FF, 0xD89818FF, + 0xD39417FF, 0xCF9217FF, 0xC88D16FF, 0xC58A16FF, 0x7C570DFF, 0x000000F5, 0x0000003E, 0x00000000, 0x00000000, + 0x0000002B, 0x000000C8, 0x322204FF, 0x9D6F12FF, 0x966A11FF, 0x966A11FF, 0xF8F5EFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xE6AF44FF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xEBB956FF, 0xEBB956FF, 0xE5AA35FF, 0xDF9C19FF, 0xDB9A19FF, 0xD79718FF, 0xD49518FF, + 0xD09217FF, 0xCB8E17FF, 0xC58C16FF, 0xC68B16FF, 0x3C2A05FF, 0x000000C8, 0x0000002B, 0x00000000, 0x00000000, + 0x00000000, 0x0000008C, 0x0B0700FF, 0x956811FF, 0x986B11FF, 0x966A11FF, 0xC0A66FFF, 0xCBB27FFF, 0xD2B67FFF, + 0xEBDDC0FF, 0xEDDEC0FF, 0xEEDFC0FF, 0xF0E0C0FF, 0xFFFFFFFF, 0xFFFFFFFF, 0xF4E3C0FF, 0xF2DCB2FF, 0xDCA027FF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xDE9D19FF, 0xDE9D19FF, 0xDB9B19FF, 0xDA9919FF, 0xD79718FF, 0xD49518FF, 0xCF9217FF, + 0xCB8E17FF, 0xC68B16FF, 0xC38916FF, 0xB88216FF, 0x0D0900FF, 0x0000008C, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x0000003E, 0x000000F6, 0x392805FF, 0x9D6F12FF, 0x966A11FF, 0x956911FF, 0x996B11FF, 0xA47412FF, + 0xAE7B14FF, 0xB78015FF, 0xBD8516FF, 0xC28916FF, 0xFFFFFFFF, 0xFFFFFFFF, 0xD09217FF, 0xD39518FF, 0xD59518FF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xD89818FF, 0xD89818FF, 0xD69618FF, 0xD49518FF, 0xD29318FF, 0xCF9117FF, 0xCA8E17FF, + 0xC68B16FF, 0xC18816FF, 0xC48915FF, 0x453005FF, 0x000000F6, 0x0000003E, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000003, 0x00000097, 0x050300FF, 0x62450BFF, 0xA07112FF, 0x956911FF, 0x966A11FF, 0x9C6E12FF, + 0xA87614FF, 0xB07C14FF, 0xB78114FF, 0xBD8515FF, 0xFFFFFFFF, 0xFFFFFFFF, 0xCC8F17FF, 0xCD9017FF, 0xCF9217FF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xD29418FF, 0xD29418FF, 0xD09318FF, 0xCE9117FF, 0xCC8F17FF, 0xC98E17FF, 0xC68B16FF, + 0xC08816FF, 0xC88C16FF, 0x76530DFF, 0x060300FF, 0x00000097, 0x00000003, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000001, 0x0000002B, 0x000000CC, 0x070300FF, 0x6C4C0CFF, 0xA07112FF, 0x976B11FF, 0x966A11FF, + 0x9D6F11FF, 0xA97613FF, 0xB17C14FF, 0xB68014FF, 0xFFFFFFFF, 0xFFFFFFFF, 0xC48A16FF, 0xC88D17FF, 0xC98E17FF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xCB8F16FF, 0xCB8F16FF, 0xCA8E16FF, 0xC98E17FF, 0xC68B17FF, 0xC18815FF, 0xC18816FF, + 0xC58B16FF, 0x805B0EFF, 0x0A0500FF, 0x000000CC, 0x0000002B, 0x00000001, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000002, 0x00000039, 0x000000D5, 0x060300FF, 0x513907FF, 0x9B6E12FF, 0x9B6D12FF, + 0x966A11FF, 0x9F6F11FF, 0xA87614FF, 0xAE7B13FF, 0xFAF6EFFF, 0xFFFFFFFF, 0xBD8515FF, 0xC18815FF, 0xC28815FF, + 0xFBF7EFFF, 0xFBF7EFFF, 0xC48A16FF, 0xC48A16FF, 0xC38916FF, 0xC18815FF, 0xBF8716FF, 0xC28916FF, 0xBC8516FF, + 0x604409FF, 0x080400FF, 0x000000D5, 0x00000039, 0x00000002, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0x00000032, 0x000000BA, 0x030200FE, 0x241801FF, 0x78550DFF, + 0xA07113FF, 0x9C6E12FF, 0x9C6E11FF, 0xA37312FF, 0xB68931FF, 0xBE943FFF, 0xB68014FF, 0xB78114FF, 0xBB8415FF, + 0xC59432FF, 0xC49432FF, 0xBC8515FF, 0xBC8515FF, 0xBD8515FF, 0xC08716FF, 0xC48A16FF, 0x8F6510FF, 0x2A1C01FF, + 0x030200FE, 0x000000BA, 0x00000032, 0x00000002, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000021, 0x0000007E, 0x000000DF, 0x040200FF, + 0x271B02FF, 0x65470AFF, 0x9D6F12FF, 0xA17212FF, 0xA47313FF, 0xA77613FF, 0xAB7814FF, 0xAE7A13FF, 0xB07D13FF, + 0xB47E15FF, 0xB78115FF, 0xBA8415FF, 0xBE8615FF, 0xB88115FF, 0x76520CFF, 0x2E1F03FF, 0x050200FF, 0x000000DF, + 0x0000007E, 0x00000021, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000004, 0x00000028, 0x0000007E, + 0x000000CD, 0x010000FB, 0x0A0600FF, 0x231801FF, 0x432F05FF, 0x66470AFF, 0x895F0EFF, 0xA37213FF, 0xA67513FF, + 0x91660FFF, 0x6F4D0AFF, 0x4B3407FF, 0x281B01FF, 0x0B0700FF, 0x010000FB, 0x000000CD, 0x0000007E, 0x00000028, + 0x00000004, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x0000000C, 0x0000003C, 0x00000075, 0x000000A3, 0x000000CB, 0x000000EA, 0x000000FE, 0x000000FF, 0x000000FF, + 0x000000FE, 0x000000EA, 0x000000CB, 0x000000A3, 0x00000075, 0x0000003C, 0x0000000C, 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, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, +}; + +u32 D_8780A270[] = { + 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, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x0000000C, 0x0000003C, 0x00000075, 0x000000A3, 0x000000CB, 0x000000EA, 0x000000FE, 0x000000FF, 0x000000FF, + 0x000000FE, 0x000000EA, 0x000000CB, 0x000000A3, 0x00000075, 0x0000003C, 0x0000000C, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000004, 0x00000028, 0x0000007E, + 0x000000CD, 0x010101FB, 0x070707FF, 0x191919FF, 0x323232FF, 0x4C4C4CFF, 0x656565FF, 0x797979FF, 0x7A7A7AFF, + 0x6A6A6AFF, 0x505050FF, 0x363636FF, 0x1B1B1BFF, 0x080808FF, 0x010101FB, 0x000000CD, 0x0000007E, 0x00000028, + 0x00000004, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000021, 0x0000007E, 0x000000DF, 0x020202FF, + 0x1A1A1AFF, 0x474747FF, 0x727272FF, 0x787878FF, 0x777777FF, 0x787878FF, 0x797979FF, 0x7A7A7AFF, 0x7B7B7BFF, + 0x7D7D7DFF, 0x7F7F7FFF, 0x828282FF, 0x848484FF, 0x818181FF, 0x525252FF, 0x1F1F1FFF, 0x030303FF, 0x000000DF, + 0x0000007E, 0x00000021, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0x00000032, 0x000000BA, 0x010101FE, 0x151515FF, 0x4F4F4FFF, + 0x6F6F6FFF, 0x6F6F6FFF, 0x707070FF, 0x727272FF, 0x757575FF, 0x777777FF, 0x797979FF, 0x7C7C7CFF, 0x7D7D7DFF, + 0x7F7F7FFF, 0x808080FF, 0x818181FF, 0x7F7F7FFF, 0x7F7F7FFF, 0x808080FF, 0x838383FF, 0x606060FF, 0x232323FF, + 0x030303FE, 0x000000BA, 0x00000032, 0x00000002, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000002, 0x00000039, 0x000000D5, 0x030303FF, 0x2F2F2FFF, 0x767676FF, 0xACACACFF, + 0xC2C2C2FF, 0x939393FF, 0x717171FF, 0x747474FF, 0x777777FF, 0x8D8D8DFF, 0xD2D2D2FF, 0xDDDDDDFF, 0xBCBCBCFF, + 0x8A8A8AFF, 0x888888FF, 0x898989FF, 0x888888FF, 0xBEBEBEFF, 0x8F8F8FFF, 0x7E7E7EFF, 0x7F7F7FFF, 0xC2C2C2FF, + 0x7C7C7CFF, 0x050505FF, 0x000000D5, 0x00000039, 0x00000002, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000001, 0x0000002B, 0x000000CC, 0x040404FF, 0x3C3C3CFF, 0x727272FF, 0xEBEBEBFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xB1B1B1FF, 0x727272FF, 0x767676FF, 0x8F8F8FFF, 0xFCFCFCFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xD9D9D9FF, 0x909090FF, 0x919191FF, 0x969696FF, 0xFFFFFFFF, 0xAFAFAFFF, 0x808080FF, 0x7C7C7CFF, 0xECECECFF, + 0xFDFDFDFF, 0x545454FF, 0x060606FF, 0x000000CC, 0x0000002B, 0x00000001, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000003, 0x00000097, 0x020202FF, 0x373737FF, 0x5A5A5AFF, 0xBEBEBEFF, 0xFEFEFEFF, 0xE7E7E7FF, + 0xFDFDFDFF, 0xB8B8B8FF, 0x747474FF, 0x777777FF, 0xE4E4E4FF, 0xFEFEFEFF, 0xBCBCBCFF, 0xC6C6C6FF, 0xF0F0F0FF, + 0xFFFFFFFF, 0xB2B2B2FF, 0x969696FF, 0xB5B5B5FF, 0xFFFFFFFF, 0xD5D5D5FF, 0x858585FF, 0x7E7E7EFF, 0xF9F9F9FF, + 0xFDFDFDFF, 0x7E7E7EFF, 0x4B4B4BFF, 0x030303FF, 0x00000097, 0x00000003, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x0000003E, 0x000000F6, 0x1F1F1FFF, 0x575757FF, 0x747474FF, 0xFFFFFFFF, 0xE8E8E8FF, 0x787878FF, + 0xD9D9D9FF, 0xAEAEAEFF, 0x757575FF, 0x949494FF, 0xFFFFFFFF, 0xD6D6D6FF, 0x848484FF, 0x8B8B8BFF, 0x929292FF, + 0xF8F8F8FF, 0xE3E3E3FF, 0x9B9B9BFF, 0xD3D3D3FF, 0xFFFFFFFF, 0xE5E5E5FF, 0x888888FF, 0x858585FF, 0xFDFDFDFF, + 0xFCFCFCFF, 0x7D7D7DFF, 0x787878FF, 0x2A2A2AFF, 0x000000F6, 0x0000003E, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x0000008C, 0x050505FF, 0x535353FF, 0x545454FF, 0xCDCDCDFF, 0xF9F9F9FF, 0x858585FF, 0x6A6A6AFF, + 0x6D6D6DFF, 0x717171FF, 0x757575FF, 0xD4D4D4FF, 0xF9F9F9FF, 0x8D8D8DFF, 0x858585FF, 0x8D8D8DFF, 0x939393FF, + 0xE1E1E1FF, 0xF8F8F8FF, 0xA1A1A1FF, 0xDFDFDFFF, 0xFFFFFFFF, 0xF5F5F5FF, 0x8A8A8AFF, 0x969696FF, 0xFEFEFEFF, + 0xFBFBFBFF, 0x818181FF, 0x747474FF, 0x6E6E6EFF, 0x070707FF, 0x0000008C, 0x00000000, 0x00000000, 0x00000000, + 0x0000002B, 0x000000C8, 0x1B1B1BFF, 0x575757FF, 0x676767FF, 0xFAFAFAFF, 0xC3C3C3FF, 0x646464FF, 0x6A6A6AFF, + 0x6E6E6EFF, 0x707070FF, 0x767676FF, 0xF6F6F6FF, 0xD0D0D0FF, 0x7E7E7EFF, 0x858585FF, 0x8C8C8CFF, 0x939393FF, + 0xBFBFBFFF, 0xFAFAFAFF, 0x9F9F9FFF, 0xF2F2F2FF, 0xFFFFFFFF, 0xF8F8F8FF, 0x898989FF, 0xBDBDBDFF, 0xFDFDFDFF, + 0xFAFAFAFF, 0xAAAAAAFF, 0x737373FF, 0x757575FF, 0x232323FF, 0x000000C8, 0x0000002B, 0x00000000, 0x00000000, + 0x0000003E, 0x000000F5, 0x363636FF, 0x555555FF, 0xA9A9A9FF, 0xFEFEFEFF, 0x6E6E6EFF, 0x646464FF, 0x6A6A6AFF, + 0x6D6D6DFF, 0x717171FF, 0x848484FF, 0xF9F9F9FF, 0x9B9B9BFF, 0x7D7D7DFF, 0x838383FF, 0x898989FF, 0x909090FF, + 0xD6D6D6FF, 0xFBFBFBFF, 0x999999FF, 0xF6F6F6FF, 0xFBFBFBFF, 0xF9F9F9FF, 0x898989FF, 0xD0D0D0FF, 0xF9F9F9FF, + 0xF9F9F9FF, 0xBBBBBBFF, 0x737373FF, 0x717171FF, 0x464646FF, 0x000000F5, 0x0000003E, 0x00000000, 0x00000000, + 0x0000003E, 0x000000F8, 0x4E4E4EFF, 0x545454FF, 0xECECECFF, 0xEEEEEEFF, 0x5E5E5EFF, 0x636363FF, 0x686868FF, + 0x6C6C6CFF, 0x707070FF, 0x8E8E8EFF, 0xFBFBFBFF, 0x888888FF, 0x7C7C7CFF, 0x7E7E7EFF, 0x868686FF, 0x8B8B8BFF, + 0xD6D6D6FF, 0xFAFAFAFF, 0x939393FF, 0xF7F7F7FF, 0xE6E6E6FF, 0xF8F8F8FF, 0x8D8D8DFF, 0xE9E9E9FF, 0xF4F4F4FF, + 0xF7F7F7FF, 0xC3C3C3FF, 0x727272FF, 0x6F6F6FFF, 0x646464FF, 0x000000F8, 0x0000003E, 0x00000000, 0x00000000, + 0x0000003E, 0x000000F8, 0x4E4E4EFF, 0x545454FF, 0xF6F6F6FF, 0xCBCBCBFF, 0x5A5A5AFF, 0x616161FF, 0x676767FF, + 0x6B6B6BFF, 0x6F6F6FFF, 0x949494FF, 0xFCFCFCFF, 0x787878FF, 0x7B7B7BFF, 0x7D7D7DFF, 0x818181FF, 0x868686FF, + 0xF3F3F3FF, 0xF6F6F6FF, 0x8D8D8DFF, 0xFAFAFAFF, 0xBDBDBDFF, 0xF8F8F8FF, 0xA0A0A0FF, 0xF5F5F5FF, 0xD9D9D9FF, + 0xF2F2F2FF, 0xE0E0E0FF, 0x717171FF, 0x6E6E6EFF, 0x636363FF, 0x000000F8, 0x0000003E, 0x00000000, 0x00000000, + 0x0000003E, 0x000000F5, 0x363636FF, 0x555555FF, 0xF8F8F8FF, 0xAFAFAFFF, 0x585858FF, 0x606060FF, 0x656565FF, + 0x696969FF, 0x6D6D6DFF, 0x939393FF, 0xFCFCFCFF, 0x767676FF, 0x797979FF, 0x7C7C7CFF, 0x7D7D7DFF, 0x7E7E7EFF, + 0xF6F6F6FF, 0xF0F0F0FF, 0x969696FF, 0xFFFFFFFF, 0x939393FF, 0xF9F9F9FF, 0xCCCCCCFF, 0xF7F7F7FF, 0xADADADFF, + 0xE8E8E8FF, 0xEBEBEBFF, 0x6F6F6FFF, 0x6D6D6DFF, 0x444444FF, 0x000000F5, 0x0000003E, 0x00000000, 0x00000000, + 0x0000002B, 0x000000C8, 0x1B1B1BFF, 0x575757FF, 0xF8F8F8FF, 0xAFAFAFFF, 0x555555FF, 0x5C5C5CFF, 0x636363FF, + 0x676767FF, 0x6B6B6BFF, 0x8B8B8BFF, 0xFBFBFBFF, 0x828282FF, 0x767676FF, 0x787878FF, 0x7A7A7AFF, 0x848484FF, + 0xFEFEFEFF, 0xE7E7E7FF, 0xBEBEBEFF, 0xFEFEFEFF, 0x808080FF, 0xF5F5F5FF, 0xF4F4F4FF, 0xFEFEFEFF, 0x8B8B8BFF, + 0xD1D1D1FF, 0xF2F2F2FF, 0x6D6D6DFF, 0x6E6E6EFF, 0x202020FF, 0x000000C8, 0x0000002B, 0x00000000, 0x00000000, + 0x00000000, 0x0000008C, 0x050505FF, 0x535353FF, 0xF8F8F8FF, 0xD9D9D9FF, 0x545454FF, 0x585858FF, 0x626262FF, + 0xB3B3B3FF, 0x777777FF, 0x787878FF, 0xF9F9F9FF, 0xA9A9A9FF, 0x747474FF, 0x767676FF, 0x777777FF, 0xB6B6B6FF, + 0xFCFCFCFF, 0xB1B1B1FF, 0xCFCFCFFF, 0xFAFAFAFF, 0x7A7A7AFF, 0xEBEBEBFF, 0xFEFEFEFF, 0xFDFDFDFF, 0x797979FF, + 0xBEBEBEFF, 0xF9F9F9FF, 0x6C6C6CFF, 0x666666FF, 0x060606FF, 0x0000008C, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x0000003E, 0x000000F6, 0x1F1F1FFF, 0xD6D6D6FF, 0xFDFDFDFF, 0x696969FF, 0x555555FF, 0xB3B3B3FF, + 0xFFFFFFFF, 0x828282FF, 0x696969FF, 0xF3F3F3FF, 0xFCFCFCFF, 0x828282FF, 0x737373FF, 0x878787FF, 0xFBFBFBFF, + 0xF1F1F1FF, 0x777777FF, 0xEBEBEBFF, 0xF5F5F5FF, 0x777777FF, 0xD0D0D0FF, 0xFFFFFFFF, 0xF7F7F7FF, 0x717171FF, + 0xB1B1B1FF, 0xFCFCFCFF, 0x777777FF, 0x252525FF, 0x000000F6, 0x0000003E, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000003, 0x00000097, 0x020202FF, 0x575757FF, 0xFBFBFBFF, 0xF8F8F8FF, 0xDFDFDFFF, 0xFFFFFFFF, + 0xF0F0F0FF, 0x626262FF, 0x656565FF, 0x878787FF, 0xFEFEFEFF, 0xFAFAFAFF, 0xDCDCDCFF, 0xFAFAFAFF, 0xFEFEFEFF, + 0x8E8E8EFF, 0x747474FF, 0xF3F3F3FF, 0xF0F0F0FF, 0x747474FF, 0xB7B7B7FF, 0xFFFFFFFF, 0xE9E9E9FF, 0x6E6E6EFF, + 0x868686FF, 0xFAFAFAFF, 0x616161FF, 0x030303FF, 0x00000097, 0x00000003, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000001, 0x0000002B, 0x000000CC, 0x040404FF, 0x7E7E7EFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xF4F4F4FF, + 0x7C7C7CFF, 0x5E5E5EFF, 0x626262FF, 0x656565FF, 0x9A9A9AFF, 0xFDFDFDFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xA0A0A0FF, + 0x707070FF, 0x707070FF, 0xF5F5F5FF, 0xD8D8D8FF, 0x707070FF, 0x8B8B8BFF, 0xFEFEFEFF, 0xC7C7C7FF, 0x6B6B6BFF, + 0x737373FF, 0xC5C5C5FF, 0x1E1E1EFF, 0x000000CC, 0x0000002B, 0x00000001, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000002, 0x00000039, 0x000000D5, 0x030303FF, 0x3E3E3EFF, 0x949494FF, 0x767676FF, + 0x535353FF, 0x585858FF, 0x5E5E5EFF, 0x606060FF, 0x646464FF, 0x6F6F6FFF, 0x939393FF, 0x797979FF, 0x6B6B6BFF, + 0x6D6D6DFF, 0x6D6D6DFF, 0xA6A6A6FF, 0x999999FF, 0x6C6C6CFF, 0x6C6C6CFF, 0xC3C3C3FF, 0x828282FF, 0x696969FF, + 0x353535FF, 0x333333FF, 0x000000D5, 0x00000039, 0x00000002, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0x00000032, 0x000000BA, 0x010101FE, 0x121212FF, 0x424242FF, + 0x595959FF, 0x575757FF, 0x565656FF, 0x5A5A5AFF, 0x5F5F5FFF, 0x616161FF, 0x656565FF, 0x656565FF, 0x686868FF, + 0x696969FF, 0x686868FF, 0x686868FF, 0x686868FF, 0x696969FF, 0x6B6B6BFF, 0x6D6D6DFF, 0x4F4F4FFF, 0x161616FF, + 0x020202FE, 0x000000BA, 0x00000032, 0x00000002, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000021, 0x0000007E, 0x000000DF, 0x020202FF, + 0x141414FF, 0x383838FF, 0x575757FF, 0x595959FF, 0x5B5B5BFF, 0x5D5D5DFF, 0x5F5F5FFF, 0x606060FF, 0x616161FF, + 0x646464FF, 0x666666FF, 0x676767FF, 0x696969FF, 0x666666FF, 0x404040FF, 0x181818FF, 0x020202FF, 0x000000DF, + 0x0000007E, 0x00000021, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000004, 0x00000028, 0x0000007E, + 0x000000CD, 0x000000FB, 0x050505FF, 0x121212FF, 0x242424FF, 0x383838FF, 0x4B4B4BFF, 0x5B5B5BFF, 0x5C5C5CFF, + 0x505050FF, 0x3D3D3DFF, 0x292929FF, 0x141414FF, 0x060606FF, 0x010101FB, 0x000000CD, 0x0000007E, 0x00000028, + 0x00000004, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x0000000C, 0x0000003C, 0x00000075, 0x000000A3, 0x000000CB, 0x000000EA, 0x000000FE, 0x000000FF, 0x000000FF, + 0x000000FE, 0x000000EA, 0x000000CB, 0x000000A3, 0x00000075, 0x0000003C, 0x0000000C, 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, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, +}; + +u32 D_8780B110[] = { + 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, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x0000000C, 0x0000003C, 0x00000075, 0x000000A3, 0x000000CB, 0x000000EA, 0x000000FE, 0x000000FF, 0x000000FF, + 0x000000FE, 0x000000EA, 0x000000CB, 0x000000A3, 0x00000075, 0x0000003C, 0x0000000C, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000004, 0x00000028, 0x0000007E, + 0x000000CD, 0x000001FB, 0x000210FF, 0x000D35FF, 0x001B66FF, 0x00299CFF, 0x0039CCFF, 0x0042F1FF, 0x0043F3FF, + 0x003BD4FF, 0x002DA3FF, 0x001D6EFF, 0x000E3BFF, 0x000312FF, 0x000001FB, 0x000000CD, 0x0000007E, 0x00000028, + 0x00000004, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000021, 0x0000007E, 0x000000DF, 0x000006FF, + 0x000C37FF, 0x00288FFF, 0x0040E5FF, 0x0042EFFF, 0x0042EFFF, 0x0043F0FF, 0x0043F1FF, 0x0043F4FF, 0x0045F6FF, + 0x0045FAFF, 0x0046FDFF, 0x0048FFFF, 0x0049FFFF, 0x0048FBFF, 0x002DA6FF, 0x000F42FF, 0x000008FF, 0x000000DF, + 0x0000007E, 0x00000021, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0x00000032, 0x000000BA, 0x000103FE, 0x00092EFF, 0x002C9FFF, + 0x003DDEFF, 0x003EDFFF, 0x003EE0FF, 0x003FE5FF, 0x0041EAFF, 0x0042EEFF, 0x0044F3FF, 0x0044F8FF, 0x0046FCFF, + 0x0147FDFF, 0x0248FDFF, 0x0349FFFF, 0x0248FDFF, 0x0147FEFF, 0x0048FFFF, 0x0049FFFF, 0x0036C1FF, 0x091540FF, + 0x020206FE, 0x000000BA, 0x00000032, 0x00000002, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000002, 0x00000039, 0x000000D5, 0x000007FF, 0x001960FF, 0x1F50CCFF, 0x7293E6FF, + 0x96AEEDFF, 0x416EE5FF, 0x003FE2FF, 0x0040E8FF, 0x0042EFFF, 0x2760F5FF, 0xA6BEFDFF, 0xBCCFFFFF, 0x799EFFFF, + 0x1456FFFF, 0x1153FFFF, 0x1354FFFF, 0x0F52FFFF, 0x7DA1FFFF, 0x215EFFFF, 0x0046FCFF, 0x0046FFFF, 0x89A9FCFF, + 0x5E6E9AFF, 0x00000CFF, 0x000000D5, 0x00000039, 0x00000002, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000001, 0x0000002B, 0x000000CC, 0x000009FF, 0x002179FF, 0x1D4DC8FF, 0xDFE6F8FF, 0xFFFFFFFF, + 0xFFFFFFFF, 0x7495EDFF, 0x0040E5FF, 0x0042EBFF, 0x2A63F3FF, 0xFAFBFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xB2C8FFFF, 0x205EFFFF, 0x215FFFFF, 0x2C67FFFF, 0xFEFEFFFF, 0x5D8AFFFF, 0x0349FFFF, 0x0044FAFF, 0xDAE4FEFF, + 0xFBFCFFFF, 0x002FA6FF, 0x00010EFF, 0x000000CC, 0x0000002B, 0x00000001, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000003, 0x00000097, 0x000005FF, 0x001E6CFF, 0x0033B6FF, 0x98ADE3FF, 0xFEFEFFFF, 0xD7E0F8FF, + 0xFCFDFFFF, 0x809FF0FF, 0x0040E7FF, 0x0042EDFF, 0xCBD9FDFF, 0xFDFEFFFF, 0x799EFFFF, 0x8DADFFFF, 0xE2EAFFFF, + 0xFFFFFFFF, 0x638EFFFF, 0x2C67FFFF, 0x6A94FFFF, 0xFFFFFFFF, 0xAAC2FFFF, 0x0A4EFFFF, 0x0047FDFF, 0xF4F7FFFF, + 0xFBFCFFFF, 0x0046FBFF, 0x002A96FF, 0x000108FF, 0x00000097, 0x00000003, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x0000003E, 0x000000F6, 0x001041FF, 0x0030AEFF, 0x2E55BAFF, 0xFFFFFFFF, 0xD9E1F7FF, 0x184DD6FF, + 0xBCCCF5FF, 0x6E92EFFF, 0x0041E9FF, 0x376BF2FF, 0xFFFFFFFF, 0xAFC5FEFF, 0x084DFFFF, 0x1758FFFF, 0x2360FFFF, + 0xF1F5FFFF, 0xC8D7FFFF, 0x376FFFFF, 0xA7C0FFFF, 0xFFFFFFFF, 0xCBDAFFFF, 0x1153FFFF, 0x0B4FFEFF, 0xFBFCFFFF, + 0xFAFBFFFF, 0x0D4CEDFF, 0x0042F0FF, 0x001756FF, 0x000000F6, 0x0000003E, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x0000008C, 0x00010CFF, 0x002DA4FF, 0x002EA8FF, 0xB3C1E6FF, 0xF5F7FCFF, 0x3662D4FF, 0x003AD2FF, + 0x003DDAFF, 0x003EE2FF, 0x0041E9FF, 0xAEC3FAFF, 0xF3F6FFFF, 0x1D5BFEFF, 0x0B4FFFFF, 0x1A5AFFFF, 0x2763FFFF, + 0xC4D4FFFF, 0xF1F5FFFF, 0x4378FFFF, 0xBFD1FFFF, 0xFFFFFFFF, 0xEAF0FFFF, 0x1455FFFF, 0x2F69FFFF, 0xFEFEFFFF, + 0xF8FAFFFF, 0x1451EDFF, 0x0040E8FF, 0x003DDDFF, 0x000311FF, 0x0000008C, 0x00000000, 0x00000000, 0x00000000, + 0x0000002B, 0x000000C8, 0x000E37FF, 0x0030ADFF, 0x1E47B0FF, 0xF7F9FCFF, 0xA0B4E6FF, 0x0038C9FF, 0x003AD3FF, + 0x003DDBFF, 0x003EE1FF, 0x0242E9FF, 0xEEF2FEFF, 0xA5BDFBFF, 0x0046FEFF, 0x0A4FFFFF, 0x195AFFFF, 0x2663FFFF, + 0x7FA3FFFF, 0xF4F7FFFF, 0x3E74FFFF, 0xE5ECFFFF, 0xFFFFFFFF, 0xF2F6FFFF, 0x1355FFFF, 0x7CA1FFFF, 0xFBFCFFFF, + 0xF6F8FFFF, 0x6089F4FF, 0x003FE5FF, 0x0042E9FF, 0x001348FF, 0x000000C8, 0x0000002B, 0x00000000, 0x00000000, + 0x0000003E, 0x000000F5, 0x001E6DFF, 0x002FA9FF, 0x7F96D2FF, 0xFDFDFEFF, 0x1B49C2FF, 0x0037C7FF, 0x003BD2FF, + 0x003DDAFF, 0x003FE2FF, 0x1D56EBFF, 0xF3F6FEFF, 0x4073F7FF, 0x0045FBFF, 0x074CFFFF, 0x1356FFFF, 0x2260FFFF, + 0xADC4FFFF, 0xF7F9FFFF, 0x336BFFFF, 0xECF1FFFF, 0xF7F9FFFF, 0xF3F6FFFF, 0x1153FFFF, 0xA1BBFFFF, 0xF4F7FFFF, + 0xF4F7FEFF, 0x81A2F6FF, 0x0040E6FF, 0x003EE1FF, 0x00278EFF, 0x000000F5, 0x0000003E, 0x00000000, 0x00000000, + 0x0000003E, 0x000000F8, 0x002B9CFF, 0x002EA7FF, 0xE3E8F5FF, 0xE5EAF6FF, 0x0335BAFF, 0x0037C5FF, 0x003AD0FF, + 0x003CD8FF, 0x003EE0FF, 0x3265EBFF, 0xF8FAFEFF, 0x1A56F3FF, 0x0046F9FF, 0x0046FFFF, 0x0C50FFFF, 0x1758FFFF, + 0xAEC4FFFF, 0xF6F8FFFF, 0x2763FFFF, 0xF0F4FFFF, 0xCDDBFFFF, 0xF0F4FFFF, 0x1C5BFFFF, 0xD4E0FFFF, 0xE9EFFEFF, + 0xEFF3FEFF, 0x91ADF6FF, 0x0040E4FF, 0x003EDEFF, 0x0038C8FF, 0x000000F8, 0x0000003E, 0x00000000, 0x00000000, + 0x0000003E, 0x000000F8, 0x002B9CFF, 0x002EA7FF, 0xF1F4FAFF, 0xB1BFE4FF, 0x0032B5FF, 0x0036C4FF, 0x0039CEFF, + 0x003CD6FF, 0x003EDEFF, 0x3D6DEAFF, 0xFAFBFFFF, 0x0043F1FF, 0x0044F5FF, 0x0046FBFF, 0x0349FFFF, 0x0C50FFFF, + 0xE6EDFFFF, 0xECF1FFFF, 0x1A5AFFFF, 0xF4F7FFFF, 0x7A9FFFFF, 0xF1F5FFFF, 0x4377FEFF, 0xEBF0FEFF, 0xB7CAFCFF, + 0xE7EDFDFF, 0xC7D5FAFF, 0x003EE2FF, 0x003EDCFF, 0x0037C6FF, 0x000000F8, 0x0000003E, 0x00000000, 0x00000000, + 0x0000003E, 0x000000F5, 0x001E6DFF, 0x002FA9FF, 0xF4F6FBFF, 0x889DD6FF, 0x0031AFFF, 0x0035BFFF, 0x0038CAFF, + 0x003BD2FF, 0x003DDAFF, 0x3D6DE8FF, 0xFAFBFFFF, 0x0042ECFF, 0x0044F2FF, 0x0045F6FF, 0x0046FBFF, 0x0046FFFF, + 0xEDF2FFFF, 0xE0E9FFFF, 0x2C66FFFF, 0xFFFFFFFF, 0x2863FFFF, 0xF3F6FFFF, 0x9BB6FCFF, 0xF0F4FEFF, 0x658DF5FF, + 0xD5E0FCFF, 0xDAE3FBFF, 0x003DDEFF, 0x003DDAFF, 0x002688FF, 0x000000F5, 0x0000003E, 0x00000000, 0x00000000, + 0x0000002B, 0x000000C8, 0x000E37FF, 0x0030ADFF, 0xF4F6FBFF, 0x889DD5FF, 0x0030AAFF, 0x0033B7FF, 0x0037C5FF, + 0x003ACFFF, 0x003CD6FF, 0x3264E4FF, 0xF8FAFEFF, 0x1A54EAFF, 0x0042ECFF, 0x0043F1FF, 0x0044F4FF, 0x1052F8FF, + 0xFEFEFFFF, 0xD0DDFFFF, 0x7FA2FEFF, 0xFEFEFFFF, 0x084BFAFF, 0xEBF0FEFF, 0xEAF0FEFF, 0xFDFEFFFF, 0x285FEEFF, + 0xABC0F7FF, 0xE8EEFCFF, 0x003DDBFF, 0x003DDCFF, 0x001143FF, 0x000000C8, 0x0000002B, 0x00000000, 0x00000000, + 0x00000000, 0x0000008C, 0x00010CFF, 0x002DA4FF, 0xF5F7FCFF, 0xC7D1EBFF, 0x002EA7FF, 0x0031B1FF, 0x0437BFFF, + 0x819DE4FF, 0x174CD5FF, 0x144BDBFF, 0xF5F7FEFF, 0x648AEEFF, 0x0040E7FF, 0x0042ECFF, 0x0043EFFF, 0x7599F8FF, + 0xFAFBFFFF, 0x6991F9FF, 0xA2BBFCFF, 0xF6F8FFFF, 0x0044F3FF, 0xD8E2FDFF, 0xFEFEFFFF, 0xFCFDFFFF, 0x0B48E7FF, + 0x8BA7F1FF, 0xF5F7FEFF, 0x003DD8FF, 0x0039CCFF, 0x000210FF, 0x0000008C, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x0000003E, 0x000000F6, 0x001041FF, 0xC1CDEBFF, 0xFCFDFEFF, 0x2048B1FF, 0x0030AAFF, 0x89A0DEFF, + 0xFFFFFFFF, 0x2F5DD5FF, 0x003AD2FF, 0xEBF0FCFF, 0xFAFBFEFF, 0x1F55E5FF, 0x0040E5FF, 0x225AEDFF, 0xF8FAFEFF, + 0xE4EBFDFF, 0x0042EDFF, 0xD9E3FDFF, 0xECF1FEFF, 0x0042EDFF, 0xA7BEF8FF, 0xFFFFFFFF, 0xF1F5FEFF, 0x0240E1FF, + 0x7697ECFF, 0xF9FAFEFF, 0x134BDBFF, 0x00144DFF, 0x000000F6, 0x0000003E, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000003, 0x00000097, 0x000005FF, 0x2D4480FF, 0xF9FAFDFF, 0xF4F6FBFF, 0xD0D8EFFF, 0xFFFFFFFF, + 0xE7ECF9FF, 0x0036C3FF, 0x0038CAFF, 0x3361DAFF, 0xFDFDFFFF, 0xF6F8FEFF, 0xC0D0F8FF, 0xF6F8FEFF, 0xFEFEFFFF, + 0x3064ECFF, 0x0040E7FF, 0xE9EFFDFF, 0xE4EBFDFF, 0x0040E6FF, 0x7D9EF1FF, 0xFFFFFFFF, 0xD8E1FAFF, 0x003EDCFF, + 0x2E5FDDFF, 0xF6F8FEFF, 0x314B93FF, 0x000007FF, 0x00000097, 0x00000003, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000001, 0x0000002B, 0x000000CC, 0x000009FF, 0x5F709EFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xEEF1F9FF, + 0x385EC1FF, 0x0034BAFF, 0x0036C3FF, 0x0038CAFF, 0x547CDFFF, 0xFBFCFEFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x557EEAFF, + 0x003EE1FF, 0x003EE1FF, 0xEDF1FDFF, 0xB9CAF7FF, 0x003EE0FF, 0x3163E4FF, 0xFEFEFFFF, 0x9EB5F0FF, 0x003BD5FF, + 0x0B45DCFF, 0xC3C4C7FF, 0x1B1B22FF, 0x000000CC, 0x0000002B, 0x00000001, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000002, 0x00000039, 0x000000D5, 0x000007FF, 0x192C67FF, 0x5E7CCAFF, 0x3056BBFF, + 0x002EA6FF, 0x0031AFFF, 0x0033B9FF, 0x0035C2FF, 0x0038C8FF, 0x0F45D0FF, 0x4872DEFF, 0x184DDAFF, 0x003CD7FF, + 0x003DD9FF, 0x003DD9FF, 0x6489E8FF, 0x4C77E4FF, 0x003DD8FF, 0x013CD6FF, 0x98B0EEFF, 0x2759DDFF, 0x003BD0FF, + 0x001C6BFF, 0x323235FF, 0x000000D5, 0x00000039, 0x00000002, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0x00000032, 0x000000BA, 0x000003FE, 0x000728FF, 0x002585FF, + 0x0031B1FF, 0x002FACFF, 0x0030ADFF, 0x0032B5FF, 0x0035BEFF, 0x0036C2FF, 0x0038C8FF, 0x0039CBFF, 0x003ACFFF, + 0x003AD1FF, 0x003AD1FF, 0x003AD1FF, 0x003AD1FF, 0x003AD1FF, 0x003BD4FF, 0x003CD9FF, 0x002C9FFF, 0x00092FFF, + 0x000103FE, 0x000000BA, 0x00000032, 0x00000002, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000021, 0x0000007E, 0x000000DF, 0x000004FF, + 0x00092CFF, 0x001F6FFF, 0x0031ADFF, 0x0032B3FF, 0x0032B6FF, 0x0034BAFF, 0x0034BDFF, 0x0036C1FF, 0x0036C4FF, + 0x0037C7FF, 0x0039CCFF, 0x0039CEFF, 0x003AD2FF, 0x0038CDFF, 0x002483FF, 0x000C34FF, 0x000005FF, 0x000000DF, + 0x0000007E, 0x00000021, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000004, 0x00000028, 0x0000007E, + 0x000000CD, 0x000001FB, 0x00010BFF, 0x000828FF, 0x00124BFF, 0x001E72FF, 0x002A98FF, 0x0033B6FF, 0x0033BAFF, + 0x002CA1FF, 0x00217CFF, 0x001654FF, 0x000A2CFF, 0x00010DFF, 0x000001FB, 0x000000CD, 0x0000007E, 0x00000028, + 0x00000004, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x0000000C, 0x0000003C, 0x00000075, 0x000000A3, 0x000000CB, 0x000000EA, 0x000000FE, 0x000000FF, 0x000000FF, + 0x000000FE, 0x000000EA, 0x000000CB, 0x000000A3, 0x00000075, 0x0000003C, 0x0000000C, 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, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, +}; + +u32 D_8780BFB0[] = { + 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, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x0000000C, 0x0000003C, 0x00000075, 0x000000A3, 0x000000CB, 0x000000EA, 0x000000FE, 0x000000FF, 0x000000FF, + 0x000000FE, 0x000000EA, 0x000000CB, 0x000000A3, 0x00000075, 0x0000003C, 0x0000000C, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000004, 0x00000028, 0x0000007E, + 0x000000CD, 0x000100FB, 0x000800FF, 0x001E00FF, 0x013C00FF, 0x035C00FF, 0x067A00FF, 0x089100FF, 0x089100FF, + 0x067F00FF, 0x036100FF, 0x014100FF, 0x002200FF, 0x000A00FF, 0x000100FB, 0x000000CD, 0x0000007E, 0x00000028, + 0x00000004, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000021, 0x0000007E, 0x000000DF, 0x000200FF, + 0x001F00FF, 0x045500FF, 0x088900FF, 0x079000FF, 0x088F00FF, 0x088F00FF, 0x089000FF, 0x089300FF, 0x089300FF, + 0x089600FF, 0x089800FF, 0x089B00FF, 0x089E00FF, 0x099B00FF, 0x046300FF, 0x002600FF, 0x000300FF, 0x000000DF, + 0x0000007E, 0x00000021, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0x00000032, 0x000000BA, 0x000200FE, 0x001A00FF, 0x056000FF, + 0x088600FF, 0x078600FF, 0x078600FF, 0x088A00FF, 0x088D00FF, 0x088E00FF, 0x089300FF, 0x089500FF, 0x089700FF, + 0x089A00FF, 0x089A00FF, 0x089A00FF, 0x089A00FF, 0x089900FF, 0x089A00FF, 0x099E00FF, 0x067400FF, 0x092909FF, + 0x020402FE, 0x000000BA, 0x00000032, 0x00000002, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000002, 0x00000039, 0x000000D5, 0x000300FF, 0x013A00FF, 0x25881FFF, 0x76B872FF, + 0x99CA96FF, 0x46A341FF, 0x078800FF, 0x088C00FF, 0x088F00FF, 0x2EA327FF, 0xA9DAA6FF, 0xBEE4BCFF, 0x7BCA77FF, + 0x10A407FF, 0x09A300FF, 0x09A400FF, 0x09A300FF, 0x7DCC78FF, 0x26A61FFF, 0x089700FF, 0x089A00FF, 0x8DCE89FF, + 0x5F825EFF, 0x000500FF, 0x000000D5, 0x00000039, 0x00000002, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000001, 0x0000002B, 0x000000CC, 0x000300FF, 0x034900FF, 0x22851DFF, 0xE0EEDFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0x78BC74FF, 0x088A00FF, 0x088D00FF, 0x31A32AFF, 0xFAFDFAFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xACE2A9FF, 0x09AC00FF, 0x09AD00FF, 0x18B010FF, 0xFEFFFEFF, 0x5ABF54FF, 0x089A00FF, 0x089500FF, 0xDBF0DAFF, + 0xFBFDFBFF, 0x056500FF, 0x000700FF, 0x000000CC, 0x0000002B, 0x00000001, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000003, 0x00000097, 0x000200FF, 0x044100FF, 0x056D00FF, 0x9AC598FF, 0xFEFEFEFF, 0xD8EBD7FF, + 0xFCFEFCFF, 0x83C380FF, 0x088B00FF, 0x088E00FF, 0xCDE9CBFF, 0xFDFEFDFF, 0x7DCA78FF, 0x89D385FF, 0xDFF4DEFF, + 0xFFFFFFFF, 0x4AC843FF, 0x0AB300FF, 0x54CA4DFF, 0xFFFFFFFF, 0xA4DFA1FF, 0x09A000FF, 0x089800FF, 0xF4FAF4FF, + 0xFBFDFBFF, 0x089600FF, 0x055A00FF, 0x000400FF, 0x00000097, 0x00000003, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x0000003E, 0x000000F6, 0x012600FF, 0x056800FF, 0x32822EFF, 0xFFFFFFFF, 0xDAEBD9FF, 0x1E8A18FF, + 0xBEDEBCFF, 0x73BB6EFF, 0x088B00FF, 0x3DA737FF, 0xFFFFFFFF, 0xB2DEAFFF, 0x099F00FF, 0x09A700FF, 0x0AAF00FF, + 0xEFFAEEFF, 0xBCECB9FF, 0x0ABA00FF, 0x96E192FF, 0xFFFFFFFF, 0xC6ECC4FF, 0x09A400FF, 0x109F08FF, 0xFBFDFBFF, + 0xFAFDFAFF, 0x15940DFF, 0x088F00FF, 0x013400FF, 0x000000F6, 0x0000003E, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x0000008C, 0x000600FF, 0x056300FF, 0x056500FF, 0xB5D2B3FF, 0xF5F9F5FF, 0x3B9536FF, 0x077E00FF, + 0x078300FF, 0x078800FF, 0x088B00FF, 0xB1DCAEFF, 0xF3FAF3FF, 0x24A31DFF, 0x099F00FF, 0x09AA00FF, 0x0AB000FF, + 0xB8EAB5FF, 0xEDFAECFF, 0x0BC100FF, 0xB0E9ADFF, 0xFFFFFFFF, 0xE8F7E7FF, 0x09A500FF, 0x32AC2BFF, 0xFEFFFEFF, + 0xF8FCF8FF, 0x1B9714FF, 0x078A00FF, 0x088500FF, 0x000900FF, 0x0000008C, 0x00000000, 0x00000000, 0x00000000, + 0x0000002B, 0x000000C8, 0x002000FF, 0x056900FF, 0x22761EFF, 0xF7FAF7FF, 0xA2CAA0FF, 0x067900FF, 0x077F00FF, + 0x078400FF, 0x078700FF, 0x0A8D02FF, 0xEFF8EEFF, 0xA8D9A5FF, 0x089700FF, 0x099F00FF, 0x09A900FF, 0x0AB000FF, + 0x66D260FF, 0xF2FBF1FF, 0x0ABE00FF, 0xDFF6DEFF, 0xFFFFFFFF, 0xF1FAF0FF, 0x09A500FF, 0x7ECB7AFF, 0xFBFDFBFF, + 0xF6FBF6FF, 0x65B960FF, 0x078900FF, 0x078C00FF, 0x002A00FF, 0x000000C8, 0x0000002B, 0x00000000, 0x00000000, + 0x0000003E, 0x000000F5, 0x024100FF, 0x056600FF, 0x82B17FFF, 0xFDFEFDFF, 0x20801BFF, 0x067800FF, 0x077E00FF, + 0x078300FF, 0x078700FF, 0x24971DFF, 0xF3FAF3FF, 0x46AE40FF, 0x089700FF, 0x099E00FF, 0x09A500FF, 0x09AD00FF, + 0xA0E29CFF, 0xF5FCF5FF, 0x0AB700FF, 0xE9F8E8FF, 0xF5FCF5FF, 0xF1FAF1FF, 0x0BA402FF, 0xA3DAA0FF, 0xF4FAF4FF, + 0xF4FAF4FF, 0x85C781FF, 0x078900FF, 0x078700FF, 0x045400FF, 0x000000F5, 0x0000003E, 0x00000000, 0x00000000, + 0x0000003E, 0x000000F8, 0x055E00FF, 0x056400FF, 0xE4EEE3FF, 0xE6EFE5FF, 0x097103FF, 0x067700FF, 0x077D00FF, + 0x078200FF, 0x078600FF, 0x38A232FF, 0xF8FCF8FF, 0x219C1AFF, 0x089500FF, 0x089700FF, 0x09A000FF, 0x09A600FF, + 0xA4E1A1FF, 0xF4FCF4FF, 0x0AB000FF, 0xEEF9EDFF, 0xC8ECC6FF, 0xF0F9EFFF, 0x1FA517FF, 0xD5EDD4FF, 0xEAF6E9FF, + 0xF0F8EFFF, 0x94CE91FF, 0x078900FF, 0x078500FF, 0x077800FF, 0x000000F8, 0x0000003E, 0x00000000, 0x00000000, + 0x0000003E, 0x000000F8, 0x055E00FF, 0x056400FF, 0xF1F6F1FF, 0xB3D0B1FF, 0x066D00FF, 0x067600FF, 0x077C00FF, + 0x078000FF, 0x078400FF, 0x43A43DFF, 0xFAFDFAFF, 0x089100FF, 0x089300FF, 0x089800FF, 0x089A00FF, 0x09A000FF, + 0xE5F6E4FF, 0xEBF8EAFF, 0x09AA00FF, 0xF3FBF3FF, 0x75CC70FF, 0xF1FAF1FF, 0x48B342FF, 0xECF7EBFF, 0xB9E0B7FF, + 0xE8F4E7FF, 0xC9E6C7FF, 0x078700FF, 0x078300FF, 0x077800FF, 0x000000F8, 0x0000003E, 0x00000000, 0x00000000, + 0x0000003E, 0x000000F5, 0x024100FF, 0x056600FF, 0xF4F8F4FF, 0x8AB788FF, 0x066A00FF, 0x067200FF, 0x067900FF, + 0x077E00FF, 0x078400FF, 0x42A43DFF, 0xFAFDFAFF, 0x088D00FF, 0x089000FF, 0x089400FF, 0x089700FF, 0x089700FF, + 0xEEF8EDFF, 0xE0F3DFFF, 0x2BAB23FF, 0xFFFFFFFF, 0x2DAA25FF, 0xF3FAF3FF, 0x9ED69BFF, 0xF0F9F0FF, 0x6ABB65FF, + 0xD6ECD5FF, 0xDBEEDAFF, 0x078500FF, 0x078300FF, 0x045100FF, 0x000000F5, 0x0000003E, 0x00000000, 0x00000000, + 0x0000002B, 0x000000C8, 0x002000FF, 0x056900FF, 0xF4F8F4FF, 0x8AB788FF, 0x056600FF, 0x066E00FF, 0x067600FF, + 0x077C00FF, 0x078000FF, 0x389C32FF, 0xF8FCF8FF, 0x21981AFF, 0x088D00FF, 0x089100FF, 0x089300FF, 0x179C10FF, + 0xFEFFFEFF, 0xD1ECD0FF, 0x83CA7FFF, 0xFEFFFEFF, 0x109A08FF, 0xECF7EBFF, 0xEBF6EAFF, 0xFDFEFDFF, 0x2F9E28FF, + 0xAED8ABFF, 0xE9F4E8FF, 0x078300FF, 0x078500FF, 0x002800FF, 0x000000C8, 0x0000002B, 0x00000000, 0x00000000, + 0x00000000, 0x0000008C, 0x000600FF, 0x056300FF, 0xF5F9F5FF, 0xC8DDC7FF, 0x056500FF, 0x066A00FF, 0x0A7404FF, + 0x84BC81FF, 0x1D8917FF, 0x1A8B14FF, 0xF5FAF5FF, 0x69B764FF, 0x088B00FF, 0x088D00FF, 0x088F00FF, 0x79C375FF, + 0xFAFDFAFF, 0x6EBF69FF, 0xA5D8A2FF, 0xF6FBF6FF, 0x089200FF, 0xD9EED8FF, 0xFEFFFEFF, 0xFCFEFCFF, 0x138F0BFF, + 0x8EC88BFF, 0xF5FAF5FF, 0x078100FF, 0x087A00FF, 0x000800FF, 0x0000008C, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x0000003E, 0x000000F6, 0x012600FF, 0xC2DBC1FF, 0xFCFDFCFF, 0x247720FF, 0x056600FF, 0x8CBC89FF, + 0xFFFFFFFF, 0x35922FFF, 0x077D00FF, 0xECF5EBFF, 0xFAFDFAFF, 0x25961FFF, 0x088A00FF, 0x299C22FF, 0xF8FCF8FF, + 0xE5F3E4FF, 0x088E00FF, 0xDAEFD9FF, 0xEDF7ECFF, 0x088D00FF, 0xAAD8A7FF, 0xFFFFFFFF, 0xF1F9F1FF, 0x098802FF, + 0x7ABD76FF, 0xF9FCF9FF, 0x1A8B13FF, 0x012D00FF, 0x000000F6, 0x0000003E, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000003, 0x00000097, 0x000200FF, 0x305F2DFF, 0xF9FCF9FF, 0xF4F8F4FF, 0xD1E2D0FF, 0xFFFFFFFF, + 0xE8F1E7FF, 0x077500FF, 0x077A00FF, 0x399733FF, 0xFDFEFDFF, 0xF6FBF6FF, 0xC2E1C0FF, 0xF6FBF6FF, 0xFEFFFEFF, + 0x36A030FF, 0x088A00FF, 0xEAF5E9FF, 0xE5F3E4FF, 0x088A00FF, 0x81C37DFF, 0xFFFFFFFF, 0xD9ECD8FF, 0x078300FF, + 0x34962EFF, 0xF6FBF6FF, 0x346D31FF, 0x000300FF, 0x00000097, 0x00000003, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000001, 0x0000002B, 0x000000CC, 0x000300FF, 0x60845FFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xEEF5EEFF, + 0x3D8A38FF, 0x067000FF, 0x067500FF, 0x077900FF, 0x59A854FF, 0xFBFDFBFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x5AAE55FF, + 0x078700FF, 0x078700FF, 0xEDF7EDFF, 0xBBDEB9FF, 0x078600FF, 0x379C31FF, 0xFEFFFEFF, 0xA1CF9EFF, 0x078000FF, + 0x12880BFF, 0xC3C6C3FF, 0x1B1E1BFF, 0x000000CC, 0x0000002B, 0x00000001, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000002, 0x00000039, 0x000000D5, 0x000300FF, 0x1A4719FF, 0x62A05EFF, 0x348430FF, + 0x056400FF, 0x066A00FF, 0x066F00FF, 0x067400FF, 0x067800FF, 0x16840FFF, 0x4DA248FF, 0x1E8C18FF, 0x078200FF, + 0x078200FF, 0x078200FF, 0x68B364FF, 0x51A74CFF, 0x078200FF, 0x088101FF, 0x9BCB98FF, 0x2D9427FF, 0x077D00FF, + 0x014000FF, 0x323332FF, 0x000000D5, 0x00000039, 0x00000002, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0x00000032, 0x000000BA, 0x000200FE, 0x001600FF, 0x035100FF, + 0x056B00FF, 0x056800FF, 0x066800FF, 0x066E00FF, 0x067100FF, 0x067500FF, 0x067800FF, 0x077A00FF, 0x077C00FF, + 0x077E00FF, 0x077D00FF, 0x077D00FF, 0x077D00FF, 0x077E00FF, 0x078000FF, 0x078200FF, 0x055F00FF, 0x001B00FF, + 0x000200FE, 0x000000BA, 0x00000032, 0x00000002, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000021, 0x0000007E, 0x000000DF, 0x000100FF, + 0x001900FF, 0x024300FF, 0x056900FF, 0x056B00FF, 0x066C00FF, 0x067000FF, 0x067100FF, 0x067400FF, 0x067600FF, + 0x067700FF, 0x067B00FF, 0x067C00FF, 0x067E00FF, 0x077B00FF, 0x034E00FF, 0x001D00FF, 0x000200FF, 0x000000DF, + 0x0000007E, 0x00000021, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000004, 0x00000028, 0x0000007E, + 0x000000CD, 0x000000FB, 0x000500FF, 0x001600FF, 0x002C00FF, 0x024300FF, 0x055B00FF, 0x066D00FF, 0x066E00FF, + 0x056100FF, 0x034A00FF, 0x013000FF, 0x001900FF, 0x000600FF, 0x000000FB, 0x000000CD, 0x0000007E, 0x00000028, + 0x00000004, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x0000000C, 0x0000003C, 0x00000075, 0x000000A3, 0x000000CB, 0x000000EA, 0x000000FE, 0x000000FF, 0x000000FF, + 0x000000FE, 0x000000EA, 0x000000CB, 0x000000A3, 0x00000075, 0x0000003C, 0x0000000C, 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, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, +}; + +u32 D_8780CE50[] = { + 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, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x0000000C, 0x0000003C, 0x00000075, 0x000000A3, 0x000000CB, 0x000000EA, 0x000000FE, 0x000000FF, 0x000000FF, + 0x000000FE, 0x000000EA, 0x000000CB, 0x000000A3, 0x00000075, 0x0000003C, 0x0000000C, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000004, 0x00000028, 0x0000007E, + 0x000000CD, 0x010000FB, 0x0E0000FF, 0x2F0202FF, 0x5C0808FF, 0x8B0E0EFF, 0xB81414FF, 0xDB1717FF, 0xDD1717FF, + 0xBF1515FF, 0x930E0EFF, 0x630909FF, 0x350202FF, 0x100000FF, 0x010000FB, 0x000000CD, 0x0000007E, 0x00000028, + 0x00000004, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000021, 0x0000007E, 0x000000DF, 0x050000FF, + 0x310303FF, 0x810E0EFF, 0xCE1717FF, 0xD81818FF, 0xD71818FF, 0xD81919FF, 0xDA1818FF, 0xDC1818FF, 0xDE1919FF, + 0xE11919FF, 0xE51919FF, 0xEA1A1AFF, 0xEE1A1AFF, 0xE81B1BFF, 0x951010FF, 0x3B0303FF, 0x070000FF, 0x000000DF, + 0x0000007E, 0x00000021, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0x00000032, 0x000000BA, 0x030000FE, 0x290101FF, 0x8F1010FF, + 0xC81616FF, 0xC91616FF, 0xCA1717FF, 0xCE1717FF, 0xD31818FF, 0xD71818FF, 0xDB1818FF, 0xE01919FF, 0xE21818FF, + 0xE51A1AFF, 0xE51B1BFF, 0xE61C1CFF, 0xE41B1BFF, 0xE51A1AFF, 0xE81919FF, 0xED1A1AFF, 0xAE1313FF, 0x3A0B0BFF, + 0x050202FE, 0x000000BA, 0x00000032, 0x00000002, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000002, 0x00000039, 0x000000D5, 0x060000FF, 0x570707FF, 0xBB3131FF, 0xDB7E7EFF, + 0xE59F9FFF, 0xD55151FF, 0xCB1717FF, 0xD11717FF, 0xD71818FF, 0xE13B3BFF, 0xF5AFAFFF, 0xF8C3C3FF, 0xF28686FF, + 0xE92C2CFF, 0xE82929FF, 0xE82A2AFF, 0xE82828FF, 0xF28A8AFF, 0xE93737FF, 0xE31919FF, 0xE51919FF, 0xF19595FF, + 0x956363FF, 0x0A0000FF, 0x000000D5, 0x00000039, 0x00000002, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000001, 0x0000002B, 0x000000CC, 0x070000FF, 0x6D0C0CFF, 0xB72E2EFF, 0xF5E1E1FF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xE28181FF, 0xCE1717FF, 0xD41818FF, 0xE03E3EFF, 0xFEFAFAFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xF7BABAFF, 0xE93737FF, 0xEA3838FF, 0xEA4242FF, 0xFFFEFEFF, 0xF06D6DFF, 0xE61B1BFF, 0xE11818FF, 0xFADEDEFF, + 0xFFFBFBFF, 0x971111FF, 0x0C0000FF, 0x000000CC, 0x0000002B, 0x00000001, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000003, 0x00000097, 0x050000FF, 0x620B0BFF, 0xA31212FF, 0xDBA0A0FF, 0xFFFEFEFF, 0xF5DADAFF, + 0xFEFCFCFF, 0xE58B8BFF, 0xD01818FF, 0xD61818FF, 0xF8D0D0FF, 0xFFFDFDFF, 0xF28787FF, 0xF49999FF, 0xFCE5E5FF, + 0xFFFFFFFF, 0xF07373FF, 0xEB4242FF, 0xF17979FF, 0xFFFFFFFF, 0xF7B3B3FF, 0xE72323FF, 0xE41919FF, 0xFEF5F5FF, + 0xFEFBFBFF, 0xE21A1AFF, 0x870F0FFF, 0x070000FF, 0x00000097, 0x00000003, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x0000003E, 0x000000F6, 0x390505FF, 0x9D1212FF, 0xAC3C3CFF, 0xFFFFFFFF, 0xF4DCDCFF, 0xC42C2CFF, + 0xEFC2C2FF, 0xE27B7BFF, 0xD21818FF, 0xDF4A4AFF, 0xFFFFFFFF, 0xF6B7B7FF, 0xE72222FF, 0xE82E2EFF, 0xEA3A3AFF, + 0xFEF3F3FF, 0xFACDCDFF, 0xEC4B4BFF, 0xF6B1B1FF, 0xFFFFFFFF, 0xFAD0D0FF, 0xE82929FF, 0xE62424FF, 0xFFFBFBFF, + 0xFEFAFAFF, 0xD72424FF, 0xD91818FF, 0x4E0707FF, 0x000000F6, 0x0000003E, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x0000008C, 0x0B0000FF, 0x951111FF, 0x981111FF, 0xE1B8B8FF, 0xFCF6F6FF, 0xC54646FF, 0xBE1616FF, + 0xC51616FF, 0xCC1616FF, 0xD21818FF, 0xF3B6B6FF, 0xFDF4F4FF, 0xE73232FF, 0xE72323FF, 0xE93131FF, 0xEA3D3DFF, + 0xF9CACAFF, 0xFEF2F2FF, 0xED5656FF, 0xF9C5C5FF, 0xFFFFFFFF, 0xFDECECFF, 0xE82C2CFF, 0xEA4343FF, 0xFFFEFEFF, + 0xFEF9F9FF, 0xD82A2AFF, 0xD11717FF, 0xC71717FF, 0x0F0000FF, 0x0000008C, 0x00000000, 0x00000000, 0x00000000, + 0x0000002B, 0x000000C8, 0x320404FF, 0x9D1212FF, 0xA22D2DFF, 0xFCF8F8FF, 0xE0A7A7FF, 0xB51414FF, 0xBF1616FF, + 0xC61616FF, 0xCB1616FF, 0xD31A1AFF, 0xFCF0F0FF, 0xF3AEAEFF, 0xE41818FF, 0xE72323FF, 0xE83030FF, 0xEA3C3CFF, + 0xF38C8CFF, 0xFEF5F5FF, 0xEC5252FF, 0xFCE8E8FF, 0xFFFFFFFF, 0xFEF3F3FF, 0xE82B2BFF, 0xF18A8AFF, 0xFFFBFBFF, + 0xFEF7F7FF, 0xE56F6FFF, 0xCF1717FF, 0xD31717FF, 0x410606FF, 0x000000C8, 0x0000002B, 0x00000000, 0x00000000, + 0x0000003E, 0x000000F5, 0x630A0AFF, 0x991111FF, 0xCA8888FF, 0xFEFDFDFF, 0xB12C2CFF, 0xB41515FF, 0xBE1616FF, + 0xC51616FF, 0xCC1616FF, 0xD63232FF, 0xFDF4F4FF, 0xE55353FF, 0xE21818FF, 0xE72020FF, 0xE82B2BFF, 0xE93838FF, + 0xF7B5B5FF, 0xFEF8F8FF, 0xEB4747FF, 0xFDEEEEFF, 0xFEF7F7FF, 0xFEF4F4FF, 0xE82A2AFF, 0xF5AAAAFF, 0xFEF5F5FF, + 0xFDF5F5FF, 0xEA8D8DFF, 0xD01717FF, 0xCB1717FF, 0x800D0DFF, 0x000000F5, 0x0000003E, 0x00000000, 0x00000000, + 0x0000003E, 0x000000F8, 0x8D0F0FFF, 0x971111FF, 0xF3E5E5FF, 0xF5E7E7FF, 0xA71515FF, 0xB21414FF, 0xBC1515FF, + 0xC31515FF, 0xCA1717FF, 0xD84444FF, 0xFEF9F9FF, 0xDF3030FF, 0xE01919FF, 0xE51818FF, 0xE72525FF, 0xE82E2EFF, + 0xF7B6B6FF, 0xFEF7F7FF, 0xEA3D3DFF, 0xFEF1F1FF, 0xFAD2D2FF, 0xFEF2F2FF, 0xE83333FF, 0xFAD8D8FF, 0xFCEBEBFF, + 0xFDF1F1FF, 0xEC9B9BFF, 0xCD1717FF, 0xC81616FF, 0xB41414FF, 0x000000F8, 0x0000003E, 0x00000000, 0x00000000, + 0x0000003E, 0x000000F8, 0x8D0F0FFF, 0x971111FF, 0xF9F2F2FF, 0xDFB6B6FF, 0xA31212FF, 0xB01313FF, 0xBA1414FF, + 0xC11616FF, 0xC81717FF, 0xD94E4EFF, 0xFEFAFAFF, 0xD91818FF, 0xDD1919FF, 0xE21919FF, 0xE61C1CFF, 0xE72525FF, + 0xFDE9E9FF, 0xFDEEEEFF, 0xE93131FF, 0xFEF5F5FF, 0xF28888FF, 0xFEF3F3FF, 0xEB5555FF, 0xFDEDEDFF, 0xF5BEBEFF, + 0xFBE9E9FF, 0xF5CCCCFF, 0xCB1717FF, 0xC71616FF, 0xB21414FF, 0x000000F8, 0x0000003E, 0x00000000, 0x00000000, + 0x0000003E, 0x000000F5, 0x630A0AFF, 0x991111FF, 0xFAF5F5FF, 0xCE9090FF, 0x9E1212FF, 0xAC1414FF, 0xB61414FF, + 0xBD1616FF, 0xC51616FF, 0xD84E4EFF, 0xFEFAFAFF, 0xD51818FF, 0xDA1919FF, 0xDF1919FF, 0xE21919FF, 0xE41818FF, + 0xFDEFEFFF, 0xFCE3E3FF, 0xEA4141FF, 0xFFFFFFFF, 0xEA3D3DFF, 0xFEF4F4FF, 0xF3A5A5FF, 0xFDF1F1FF, 0xE77373FF, + 0xF8D9D9FF, 0xF8DDDDFF, 0xC81616FF, 0xC51616FF, 0x7C0D0DFF, 0x000000F5, 0x0000003E, 0x00000000, 0x00000000, + 0x0000002B, 0x000000C8, 0x320404FF, 0x9D1212FF, 0xFAF5F5FF, 0xCE9090FF, 0x991111FF, 0xA61212FF, 0xB21414FF, + 0xBA1515FF, 0xC11515FF, 0xD24444FF, 0xFEF9F9FF, 0xD63030FF, 0xD51818FF, 0xD91818FF, 0xDC1919FF, 0xE22727FF, + 0xFFFEFEFF, 0xFAD4D4FF, 0xF18B8BFF, 0xFFFEFEFF, 0xE21F1FFF, 0xFCEDEDFF, 0xFCECECFF, 0xFFFDFDFF, 0xDB3C3CFF, + 0xF0B3B3FF, 0xFAEAEAFF, 0xC51616FF, 0xC61616FF, 0x3C0505FF, 0x000000C8, 0x0000002B, 0x00000000, 0x00000000, + 0x00000000, 0x0000008C, 0x0B0000FF, 0x951111FF, 0xFBF6F6FF, 0xE8CBCBFF, 0x971111FF, 0x9F1212FF, 0xAD1717FF, + 0xDA8B8BFF, 0xC32B2BFF, 0xC72828FF, 0xFDF6F6FF, 0xE07272FF, 0xD01818FF, 0xD51818FF, 0xD71818FF, 0xEB8383FF, + 0xFEFAFAFF, 0xEC7878FF, 0xF3ABABFF, 0xFEF7F7FF, 0xDB1919FF, 0xF9DCDCFF, 0xFFFEFEFF, 0xFEFCFCFF, 0xD12121FF, + 0xE79595FF, 0xFDF6F6FF, 0xC31616FF, 0xB81616FF, 0x0D0000FF, 0x0000008C, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x0000003E, 0x000000F6, 0x390505FF, 0xE7C5C5FF, 0xFEFCFCFF, 0xA22F2FFF, 0x991111FF, 0xD59191FF, + 0xFFFFFFFF, 0xC44040FF, 0xBD1616FF, 0xFAEDEDFF, 0xFEFAFAFF, 0xD13333FF, 0xD01717FF, 0xD93737FF, 0xFEF9F9FF, + 0xFBE7E7FF, 0xD61818FF, 0xF9DDDDFF, 0xFCEEEEFF, 0xD61818FF, 0xF0AFAFFF, 0xFFFFFFFF, 0xFCF2F2FF, 0xCA1919FF, + 0xE08282FF, 0xFEFAFAFF, 0xC82626FF, 0x450505FF, 0x000000F6, 0x0000003E, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000003, 0x00000097, 0x050000FF, 0x783636FF, 0xFDF9F9FF, 0xFAF5F5FF, 0xECD3D3FF, 0xFFFFFFFF, + 0xF7E9E9FF, 0xB01414FF, 0xB71414FF, 0xCA4444FF, 0xFFFDFDFF, 0xFDF7F7FF, 0xF2C6C6FF, 0xFDF7F7FF, 0xFFFEFEFF, + 0xDA4343FF, 0xD11818FF, 0xFBEBEBFF, 0xFAE7E7FF, 0xD01818FF, 0xE68989FF, 0xFFFFFFFF, 0xF7DCDCFF, 0xC61616FF, + 0xCB4040FF, 0xFDF7F7FF, 0x893B3BFF, 0x060000FF, 0x00000097, 0x00000003, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000001, 0x0000002B, 0x000000CC, 0x070000FF, 0x986565FF, 0xFFFFFFFF, 0xFFFFFFFF, 0xF8EFEFFF, + 0xB34545FF, 0xA91313FF, 0xB11414FF, 0xB61414FF, 0xD36363FF, 0xFEFBFBFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xDB6464FF, + 0xCB1616FF, 0xCB1616FF, 0xFBEFEFFF, 0xF1BFBFFF, 0xCA1616FF, 0xD34444FF, 0xFFFEFEFF, 0xE7A6A6FF, 0xC11616FF, + 0xC82020FF, 0xC7C3C3FF, 0x211B1BFF, 0x000000CC, 0x0000002B, 0x00000001, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000002, 0x00000039, 0x000000D5, 0x060000FF, 0x5E1F1FFF, 0xC06969FF, 0xAE3F3FFF, + 0x961111FF, 0x9F1111FF, 0xA81414FF, 0xAE1313FF, 0xB51414FF, 0xBD2222FF, 0xD05757FF, 0xC72B2BFF, 0xC21515FF, + 0xC41616FF, 0xC41616FF, 0xDB7171FF, 0xD65B5BFF, 0xC31616FF, 0xC11616FF, 0xE5A1A1FF, 0xCB3A3AFF, 0xBC1616FF, + 0x600909FF, 0x343232FF, 0x000000D5, 0x00000039, 0x00000002, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0x00000032, 0x000000BA, 0x030000FE, 0x240101FF, 0x780D0DFF, + 0xA01313FF, 0x9C1212FF, 0x9C1111FF, 0xA31212FF, 0xAC1313FF, 0xAF1313FF, 0xB61414FF, 0xB71414FF, 0xBB1515FF, + 0xBD1515FF, 0xBC1515FF, 0xBC1515FF, 0xBC1515FF, 0xBD1515FF, 0xC01616FF, 0xC41616FF, 0x8F1010FF, 0x2A0101FF, + 0x030000FE, 0x000000BA, 0x00000032, 0x00000002, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000021, 0x0000007E, 0x000000DF, 0x040000FF, + 0x270202FF, 0x650A0AFF, 0x9D1212FF, 0xA11212FF, 0xA41313FF, 0xA71313FF, 0xAB1414FF, 0xAE1313FF, 0xB01313FF, + 0xB41515FF, 0xB71515FF, 0xBA1515FF, 0xBE1515FF, 0xB81515FF, 0x760C0CFF, 0x2E0303FF, 0x050000FF, 0x000000DF, + 0x0000007E, 0x00000021, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000004, 0x00000028, 0x0000007E, + 0x000000CD, 0x010000FB, 0x0A0000FF, 0x230101FF, 0x430505FF, 0x660A0AFF, 0x890E0EFF, 0xA31313FF, 0xA61313FF, + 0x910F0FFF, 0x6F0A0AFF, 0x4B0707FF, 0x280101FF, 0x0B0000FF, 0x010000FB, 0x000000CD, 0x0000007E, 0x00000028, + 0x00000004, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x0000000C, 0x0000003C, 0x00000075, 0x000000A3, 0x000000CB, 0x000000EA, 0x000000FE, 0x000000FF, 0x000000FF, + 0x000000FE, 0x000000EA, 0x000000CB, 0x000000A3, 0x00000075, 0x0000003C, 0x0000000C, 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, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, +}; + +u32 D_8780DCF0[] = { + 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, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x0000000C, 0x0000003C, 0x00000075, 0x000000A3, 0x000000CB, 0x000000EA, 0x000000FE, 0x000000FF, 0x000000FF, + 0x000000FE, 0x000000EA, 0x000000CB, 0x000000A3, 0x00000075, 0x0000003C, 0x0000000C, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000004, 0x00000028, 0x0000007E, + 0x000000CD, 0x010100FB, 0x0E0800FF, 0x2F2102FF, 0x5C4008FF, 0x8B620EFF, 0xB88214FF, 0xDB9917FF, 0xDD9A17FF, + 0xBF8515FF, 0x93670EFF, 0x634509FF, 0x352402FF, 0x100A00FF, 0x010100FB, 0x000000CD, 0x0000007E, 0x00000028, + 0x00000004, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000021, 0x0000007E, 0x000000DF, 0x050200FF, + 0x312103FF, 0x815B0EFF, 0xCE9117FF, 0xD89818FF, 0xD79818FF, 0xD89919FF, 0xDA9918FF, 0xDC9A18FF, 0xDE9C19FF, + 0xE19E19FF, 0xE5A119FF, 0xEAA51AFF, 0xEEA81AFF, 0xE8A41BFF, 0x956810FF, 0x3B2803FF, 0x070400FF, 0x000000DF, + 0x0000007E, 0x00000021, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0x00000032, 0x000000BA, 0x030200FE, 0x291B01FF, 0x8F6510FF, + 0xC88C16FF, 0xC98E16FF, 0xCA8E17FF, 0xCE9117FF, 0xD39518FF, 0xD79818FF, 0xDB9A18FF, 0xE09D19FF, 0xE29F18FF, + 0xE5A21AFF, 0xE5A21BFF, 0xE6A21CFF, 0xE4A21BFF, 0xE5A21AFF, 0xE8A419FF, 0xEDA61AFF, 0xAE7A13FF, 0x3A2B0BFF, + 0x050402FE, 0x000000BA, 0x00000032, 0x00000002, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000002, 0x00000039, 0x000000D5, 0x060300FF, 0x573D07FF, 0xBB8E31FF, 0xDBBC7EFF, + 0xE5CE9FFF, 0xD5A951FF, 0xCB9017FF, 0xD19317FF, 0xD79718FF, 0xE1A93BFF, 0xF5DDAFFF, 0xF8E6C3FF, 0xF2CE86FF, + 0xE9A92CFF, 0xE8A829FF, 0xE8A82AFF, 0xE8A828FF, 0xF2D08AFF, 0xE9AD37FF, 0xE3A019FF, 0xE5A119FF, 0xF1D295FF, + 0x958563FF, 0x0A0600FF, 0x000000D5, 0x00000039, 0x00000002, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000001, 0x0000002B, 0x000000CC, 0x070300FF, 0x6D4D0CFF, 0xB78A2EFF, 0xF5EFE1FF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xE2C181FF, 0xCE9117FF, 0xD49618FF, 0xE0AA3EFF, 0xFEFDFAFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xF7E3BAFF, 0xE9AE37FF, 0xEAAE38FF, 0xEAB342FF, 0xFFFFFEFF, 0xF0C36DFF, 0xE6A31BFF, 0xE19F18FF, 0xFAF1DEFF, + 0xFFFEFBFF, 0x976A11FF, 0x0C0700FF, 0x000000CC, 0x0000002B, 0x00000001, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000003, 0x00000097, 0x050300FF, 0x62450BFF, 0xA37312FF, 0xDBC8A0FF, 0xFFFEFEFF, 0xF5ECDAFF, + 0xFEFEFCFF, 0xE5C78BFF, 0xD09318FF, 0xD69718FF, 0xF8EBD0FF, 0xFFFEFDFF, 0xF2CE87FF, 0xF4D599FF, 0xFCF4E5FF, + 0xFFFFFFFF, 0xF0C673FF, 0xEBB242FF, 0xF1C979FF, 0xFFFFFFFF, 0xF7E0B3FF, 0xE7A623FF, 0xE4A119FF, 0xFEFBF5FF, + 0xFEFDFBFF, 0xE29F1AFF, 0x875F0FFF, 0x070400FF, 0x00000097, 0x00000003, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x0000003E, 0x000000F6, 0x392805FF, 0x9D6F12FF, 0xAC873CFF, 0xFFFFFFFF, 0xF4ECDCFF, 0xC4912CFF, + 0xEFE0C2FF, 0xE2C07BFF, 0xD29418FF, 0xDFAD4AFF, 0xFFFFFFFF, 0xF6E1B7FF, 0xE7A522FF, 0xE8AB2EFF, 0xEAAF3AFF, + 0xFEFAF3FF, 0xFAEBCDFF, 0xECB64BFF, 0xF6DFB1FF, 0xFFFFFFFF, 0xFAECD0FF, 0xE8A929FF, 0xE6A624FF, 0xFFFDFBFF, + 0xFEFDFAFF, 0xD79B24FF, 0xD99818FF, 0x4E3707FF, 0x000000F6, 0x0000003E, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x0000008C, 0x0B0700FF, 0x956811FF, 0x986B11FF, 0xE1D3B8FF, 0xFCFAF6FF, 0xC59B46FF, 0xBE8516FF, + 0xC58B16FF, 0xCC8F16FF, 0xD29418FF, 0xF3DEB6FF, 0xFDFAF4FF, 0xE7AB32FF, 0xE7A523FF, 0xE9AC31FF, 0xEAB03DFF, + 0xF9EACAFF, 0xFEFAF2FF, 0xEDBB56FF, 0xF9E8C5FF, 0xFFFFFFFF, 0xFDF7ECFF, 0xE8A92CFF, 0xEAB343FF, 0xFFFFFEFF, + 0xFEFCF9FF, 0xD89E2AFF, 0xD19417FF, 0xC78C17FF, 0x0F0A00FF, 0x0000008C, 0x00000000, 0x00000000, 0x00000000, + 0x0000002B, 0x000000C8, 0x322204FF, 0x9D6F12FF, 0xA27C2DFF, 0xFCFAF8FF, 0xE0CDA7FF, 0xB58014FF, 0xBF8616FF, + 0xC68B16FF, 0xCB8F16FF, 0xD3951AFF, 0xFCF8F0FF, 0xF3DCAEFF, 0xE4A018FF, 0xE7A523FF, 0xE8AB30FF, 0xEAB03CFF, + 0xF3D08CFF, 0xFEFBF5FF, 0xECB952FF, 0xFCF6E8FF, 0xFFFFFFFF, 0xFEFAF3FF, 0xE8A92BFF, 0xF1CF8AFF, 0xFFFDFBFF, + 0xFEFBF7FF, 0xE5BE6FFF, 0xCF9217FF, 0xD39417FF, 0x412D06FF, 0x000000C8, 0x0000002B, 0x00000000, 0x00000000, + 0x0000003E, 0x000000F5, 0x63460AFF, 0x996C11FF, 0xCAB488FF, 0xFEFEFDFF, 0xB1852CFF, 0xB47F15FF, 0xBE8616FF, + 0xC58B16FF, 0xCC8F16FF, 0xD6A032FF, 0xFDFAF4FF, 0xE5B453FF, 0xE29F18FF, 0xE7A420FF, 0xE8A92BFF, 0xE9AE38FF, + 0xF7E1B5FF, 0xFEFCF8FF, 0xEBB547FF, 0xFDF8EEFF, 0xFEFCF7FF, 0xFEFAF4FF, 0xE8A92AFF, 0xF5DCAAFF, 0xFEFBF5FF, + 0xFDFBF5FF, 0xEACB8DFF, 0xD09217FF, 0xCB8E17FF, 0x805A0DFF, 0x000000F5, 0x0000003E, 0x00000000, 0x00000000, + 0x0000003E, 0x000000F8, 0x8D640FFF, 0x976A11FF, 0xF3EFE5FF, 0xF5F0E7FF, 0xA77715FF, 0xB27E14FF, 0xBC8415FF, + 0xC38915FF, 0xCA8E17FF, 0xD8A744FF, 0xFEFCF9FF, 0xDFA430FF, 0xE09D19FF, 0xE5A018FF, 0xE7A625FF, 0xE8AA2EFF, + 0xF7E1B6FF, 0xFEFCF7FF, 0xEAB03DFF, 0xFEF9F1FF, 0xFAEDD2FF, 0xFEFAF2FF, 0xE8AC33FF, 0xFAEFD8FF, 0xFCF6EBFF, + 0xFDF9F1FF, 0xECD19BFF, 0xCD9117FF, 0xC88D16FF, 0xB47E14FF, 0x000000F8, 0x0000003E, 0x00000000, 0x00000000, + 0x0000003E, 0x000000F8, 0x8D640FFF, 0x976A11FF, 0xF9F7F2FF, 0xDFD2B6FF, 0xA37312FF, 0xB07C13FF, 0xBA8314FF, + 0xC18816FF, 0xC88D17FF, 0xD9AB4EFF, 0xFEFDFAFF, 0xD99818FF, 0xDD9B19FF, 0xE2A019FF, 0xE6A31CFF, 0xE7A625FF, + 0xFDF6E9FF, 0xFDF8EEFF, 0xE9AC31FF, 0xFEFBF5FF, 0xF2CF88FF, 0xFEFAF3FF, 0xEBB955FF, 0xFDF7EDFF, 0xF5E2BEFF, + 0xFBF5E9FF, 0xF5E7CCFF, 0xCB8F17FF, 0xC78C16FF, 0xB27E14FF, 0x000000F8, 0x0000003E, 0x00000000, 0x00000000, + 0x0000003E, 0x000000F5, 0x63460AFF, 0x996C11FF, 0xFAF9F5FF, 0xCEB990FF, 0x9E6F12FF, 0xAC7914FF, 0xB68014FF, + 0xBD8516FF, 0xC58A16FF, 0xD8AB4EFF, 0xFEFDFAFF, 0xD59618FF, 0xDA9A19FF, 0xDF9D19FF, 0xE29F19FF, 0xE4A018FF, + 0xFDF9EFFF, 0xFCF4E3FF, 0xEAB141FF, 0xFFFFFFFF, 0xEAB03DFF, 0xFEFAF4FF, 0xF3D9A5FF, 0xFDF9F1FF, 0xE7C173FF, + 0xF8EDD9FF, 0xF8EFDDFF, 0xC88D16FF, 0xC58A16FF, 0x7C570DFF, 0x000000F5, 0x0000003E, 0x00000000, 0x00000000, + 0x0000002B, 0x000000C8, 0x322204FF, 0x9D6F12FF, 0xFAF9F5FF, 0xCEB990FF, 0x996C11FF, 0xA67412FF, 0xB27D14FF, + 0xBA8315FF, 0xC18815FF, 0xD2A344FF, 0xFEFCF9FF, 0xD69F30FF, 0xD59618FF, 0xD99818FF, 0xDC9B19FF, 0xE2A327FF, + 0xFFFFFEFF, 0xFAEDD4FF, 0xF1CF8BFF, 0xFFFFFEFF, 0xE2A11FFF, 0xFCF7EDFF, 0xFCF7ECFF, 0xFFFEFDFF, 0xDBA63CFF, + 0xF0DBB3FF, 0xFAF5EAFF, 0xC58C16FF, 0xC68B16FF, 0x3C2A05FF, 0x000000C8, 0x0000002B, 0x00000000, 0x00000000, + 0x00000000, 0x0000008C, 0x0B0700FF, 0x956811FF, 0xFBF9F6FF, 0xE8DECBFF, 0x976B11FF, 0x9F7012FF, 0xAD7B17FF, + 0xDAC08BFF, 0xC3902BFF, 0xC79228FF, 0xFDFBF6FF, 0xE0BC72FF, 0xD09318FF, 0xD59618FF, 0xD79718FF, 0xEBC883FF, + 0xFEFDFAFF, 0xECC578FF, 0xF3DBABFF, 0xFEFCF7FF, 0xDB9B19FF, 0xF9EFDCFF, 0xFFFFFEFF, 0xFEFEFCFF, 0xD19721FF, + 0xE7CC95FF, 0xFDFAF6FF, 0xC38916FF, 0xB88216FF, 0x0D0900FF, 0x0000008C, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x0000003E, 0x000000F6, 0x392805FF, 0xE7DCC5FF, 0xFEFDFCFF, 0xA27C2FFF, 0x996B11FF, 0xD5BF91FF, + 0xFFFFFFFF, 0xC49740FF, 0xBD8516FF, 0xFAF6EDFF, 0xFEFDFAFF, 0xD19D33FF, 0xD09217FF, 0xD9A337FF, 0xFEFCF9FF, + 0xFBF4E7FF, 0xD69718FF, 0xF9F0DDFF, 0xFCF7EEFF, 0xD69618FF, 0xF0DAAFFF, 0xFFFFFFFF, 0xFCF9F2FF, 0xCA8F19FF, + 0xE0C182FF, 0xFEFCFAFF, 0xC89226FF, 0x453005FF, 0x000000F6, 0x0000003E, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000003, 0x00000097, 0x050300FF, 0x786236FF, 0xFDFCF9FF, 0xFAF9F5FF, 0xECE4D3FF, 0xFFFFFFFF, + 0xF7F2E9FF, 0xB07C14FF, 0xB78114FF, 0xCA9D44FF, 0xFFFEFDFF, 0xFDFBF7FF, 0xF2E3C6FF, 0xFDFBF7FF, 0xFFFFFEFF, + 0xDAA743FF, 0xD19318FF, 0xFBF6EBFF, 0xFAF4E7FF, 0xD09318FF, 0xE6C789FF, 0xFFFFFFFF, 0xF7EEDCFF, 0xC68B16FF, + 0xCB9D40FF, 0xFDFBF7FF, 0x896F3BFF, 0x060300FF, 0x00000097, 0x00000003, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000001, 0x0000002B, 0x000000CC, 0x070300FF, 0x988765FF, 0xFFFFFFFF, 0xFFFFFFFF, 0xF8F5EFFF, + 0xB38F45FF, 0xA97613FF, 0xB17C14FF, 0xB68014FF, 0xD3AD63FF, 0xFEFDFBFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xDBB464FF, + 0xCB8F16FF, 0xCB8F16FF, 0xFBF7EFFF, 0xF1E0BFFF, 0xCA8E16FF, 0xD3A444FF, 0xFFFFFEFF, 0xE7D2A6FF, 0xC18816FF, + 0xC89020FF, 0xC7C6C3FF, 0x211E1BFF, 0x000000CC, 0x0000002B, 0x00000001, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000002, 0x00000039, 0x000000D5, 0x060300FF, 0x5E4A1FFF, 0xC0A369FF, 0xAE883FFF, + 0x966A11FF, 0x9F6F11FF, 0xA87614FF, 0xAE7B13FF, 0xB57F14FF, 0xBD8922FF, 0xD0A757FF, 0xC7932BFF, 0xC28815FF, + 0xC48A16FF, 0xC48A16FF, 0xDBB871FF, 0xD6AD5BFF, 0xC38916FF, 0xC18816FF, 0xE5CFA1FF, 0xCB9B3AFF, 0xBC8516FF, + 0x604409FF, 0x343332FF, 0x000000D5, 0x00000039, 0x00000002, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0x00000032, 0x000000BA, 0x030200FE, 0x241801FF, 0x78550DFF, + 0xA07113FF, 0x9C6E12FF, 0x9C6E11FF, 0xA37312FF, 0xAC7813FF, 0xAF7B13FF, 0xB68014FF, 0xB78114FF, 0xBB8415FF, + 0xBD8515FF, 0xBC8515FF, 0xBC8515FF, 0xBC8515FF, 0xBD8515FF, 0xC08716FF, 0xC48A16FF, 0x8F6510FF, 0x2A1C01FF, + 0x030200FE, 0x000000BA, 0x00000032, 0x00000002, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000021, 0x0000007E, 0x000000DF, 0x040200FF, + 0x271B02FF, 0x65470AFF, 0x9D6F12FF, 0xA17212FF, 0xA47313FF, 0xA77613FF, 0xAB7814FF, 0xAE7A13FF, 0xB07D13FF, + 0xB47E15FF, 0xB78115FF, 0xBA8415FF, 0xBE8615FF, 0xB88115FF, 0x76520CFF, 0x2E1F03FF, 0x050200FF, 0x000000DF, + 0x0000007E, 0x00000021, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000004, 0x00000028, 0x0000007E, + 0x000000CD, 0x010000FB, 0x0A0600FF, 0x231801FF, 0x432F05FF, 0x66470AFF, 0x895F0EFF, 0xA37213FF, 0xA67513FF, + 0x91660FFF, 0x6F4D0AFF, 0x4B3407FF, 0x281B01FF, 0x0B0700FF, 0x010000FB, 0x000000CD, 0x0000007E, 0x00000028, + 0x00000004, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x0000000C, 0x0000003C, 0x00000075, 0x000000A3, 0x000000CB, 0x000000EA, 0x000000FE, 0x000000FF, 0x000000FF, + 0x000000FE, 0x000000EA, 0x000000CB, 0x000000A3, 0x00000075, 0x0000003C, 0x0000000C, 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, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, +}; + +static Vp D_8780EB90 = { + { + { + 0x280, + 0x1E0, + 0x1FF, + 0, + }, + { + 0x280, + 0x1E0, + 0x1FF, + 0, + }, + }, +}; + +static Gfx D_8780EBA0[] = { + gsDPPipeSync(), + gsDPSetCycleType(G_CYC_1CYCLE), + gsSPClearGeometryMode(G_ZBUFFER | G_LIGHTING), + gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), + gsDPSetRenderMode(G_RM_XLU_SURF, G_RM_XLU_SURF2), + gsDPSetTexturePersp(G_TP_PERSP), + gsSPPerspNormalize(0xFFFF), + gsSPViewport(&D_8780EB90), + gsSPEndDisplayList(), +}; + +static u32 D_8780EBE8[] = { + 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x08011841, 0x310151C1, 0x6A818B41, 0x9BC1AC85, 0xA4859403, + 0x7B016281, 0x41C120C1, 0x08010001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, + 0x00010001, 0x00011881, 0x39414181, 0x51C16A81, 0x7B017AC1, 0x8B419C43, 0xA4859C45, 0x8B818341, 0x6AC15201, + 0x398120C1, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00011001, 0x310149C1, + 0x62416A81, 0x72817B01, 0x7B016A41, 0x7B019403, 0xC5D3C5DB, 0xA44593C3, 0xA4459405, 0x6AC149C1, 0x31411041, + 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x18414141, 0x62416A41, 0x72817281, 0x6A4159C1, + 0x59C16A01, 0x59C17281, 0xAC858B87, 0x6A418341, 0xA445BD4D, 0x9C457B01, 0x62814181, 0x18810001, 0x00010001, + 0x00010001, 0x00010001, 0x00011841, 0x520172C1, 0x6A417241, 0x620161C1, 0x724172C1, 0x6A015101, 0x51417281, + 0x83417AC1, 0x6A419C03, 0xA445ACCB, 0x93C593C3, 0x93C372C1, 0x41811881, 0x00010001, 0x00010001, 0x00010001, + 0x18415201, 0x7B017AC1, 0x6A016A41, 0x61C148C1, 0x61C17B01, 0x728148C1, 0x51417AC1, 0x7AC17AC1, 0x93819C41, + 0x93C17283, 0x5981A449, 0xBD4B93C1, 0x6A814181, 0x18810001, 0x00010001, 0x00010801, 0x4A016241, 0x72416181, + 0x61C17281, 0x7AC15981, 0x40816181, 0x830172C1, 0x40C16201, 0x6A416201, 0x62016201, 0x62017B01, 0x8303A447, + 0xC58FB507, 0x8B8172C1, 0x39411041, 0x00010001, 0x00013101, 0x51C17281, 0x59815141, 0x51417281, 0x8B817281, + 0x59416A41, 0x83417B01, 0x408140C1, 0x51015981, 0x51813841, 0x40C16A41, 0x72417AC3, 0xA445BD4B, 0xB5098B81, + 0x5A012901, 0x00010001, 0x10015201, 0x6A416A41, 0x61C15141, 0x514161C1, 0x61C16A01, 0x7B017AC1, 0x40813881, + 0x38812801, 0x30015141, 0x7AC14941, 0x59C16A41, 0x6A417AC1, 0x9BC3B4C7, 0xBD09A443, 0x7B0149C1, 0x18C10001, + 0x4A016201, 0x72816A41, 0x51415141, 0x620140C1, 0x30015141, 0x61C140C1, 0x30014081, 0x38813001, 0x38413041, + 0x38814081, 0x38415101, 0x72818B41, 0x83438303, 0xA447A443, 0x93C172C1, 0x39410801, 0x83857281, 0x72816201, + 0x51414901, 0x6A017281, 0x62015181, 0x49013001, 0x408140C1, 0x40C15981, 0x408140C1, 0x51415141, 0x40813841, + 0x6A418341, 0x6A4159C1, 0x93C3A445, 0xA4038B81, 0x5A412901, 0x9C457A81, 0x6A416A81, 0x59C14901, 0x51416A01, + 0x7AC17281, 0x49012801, 0x49016A01, 0x61C15981, 0x598161C1, 0x59815981, 0x490148C1, 0x510159C1, 0x6A4172C1, + 0x8B81A443, 0x9C0393C1, 0x6AC141C1, 0x93C37281, 0x6A816AC1, 0x6A813881, 0x51416A41, 0x62016A41, 0x62013881, + 0x40C15981, 0x59816A01, 0x62017A81, 0x6A415981, 0x51415981, 0x51015141, 0x62017AC1, 0x7B018B81, 0x8B818301, + 0x6A815201, 0x8B817281, 0x6A417301, 0x9C879C43, 0x61C161C1, 0x6A416201, 0x62015141, 0x51415981, 0x59816201, + 0x59816A41, 0x6A4161C1, 0x598161C1, 0x59C161C1, 0x62016201, 0x5A015181, 0x59C17281, 0x72816241, 0x94058341, + 0x83439445, 0x9C45BDDB, 0xAD0D7281, 0x7AC18341, 0x6A015981, 0x49015141, 0x59815981, 0x598159C1, 0x59815141, + 0x51015981, 0x6A016A01, 0x51814101, 0x388140C1, 0x51016A01, 0x7A817AC1, 0xACCBA487, 0x8C078BC5, 0x9CC9DEED, + 0xE773A487, 0x6A417AC1, 0x7AC17A81, 0x61C15941, 0x59815141, 0x59C15981, 0x51415981, 0x61C16A41, 0x6A015141, + 0x38413001, 0x30016281, 0x83C59449, 0x8B818341, 0xBD93B54F, 0xCE61BDD9, 0xB597CE63, 0xEFB3DEE5, 0x9C039C03, + 0xD65BCE17, 0xAC878341, 0x83418341, 0x6A417281, 0x8341A483, 0x83015981, 0x48C13041, 0x28013001, 0x83C58C49, + 0xA4CDA4CF, 0xAD538B41, 0xC61BC5D7, 0xF7F5F7F7, 0xEFB3EFB3, 0xF7F5FFFB, 0xFFFBFFFF, 0xFFFFFFFF, 0xF7B7D6A3, + 0xC61BC61F, 0xA489AD0B, 0xB595BD99, 0x8BC361C1, 0x59818C05, 0x8BC59CCF, 0x9CCBAD53, 0xAD53BE1D, 0xAD9B8301, + 0xBDDBCE1B, 0xEFF3FFFD, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xF7F7F7F7, 0xEFB5EF73, + 0xD6E7BDD7, 0xBD95BDD7, 0xBDD7BDD9, 0xBE1FBDDD, 0xBE63BE21, 0xBE1FAD59, 0x9CD17B01, 0xB599CE5D, 0xDF2DF7F5, + 0xFFFDFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFD, 0xFFF9EFF5, 0xE7B1DF6D, + 0xD6E9CEE7, 0xC665BE21, 0xB5DBAD57, 0xA513A4D1, 0x8C0B6B05, 0xAD15BE1F, 0xD6E7E7AF, 0xF7F7FFFD, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFBF7F7, 0xEFB3E76D, 0xD6E9CEA7, 0xC663BE1D, 0xB599AD55, + 0xAD57A4D1, 0x9C8F940B, 0x7B475243, 0x83C7AD57, 0xC665DF2B, 0xEFB3FFFB, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xF7F7EFB3, 0xDF6DD6E9, 0xCEA5C621, 0xB5DBAD97, 0xAD55AD13, 0xA4D19C8D, 0x940B8387, + 0x6A833981, 0x5A419491, 0xB59BCEA7, 0xE76FFFFB, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xF7F7E771, 0xDF2BCEA7, 0xBE21B5DB, 0xAD57AD13, 0xAD13A4CF, 0x9C4D9409, 0x8BC77B03, 0x49C120C1, 0x31017B8B, + 0x9CD3BE1F, 0xD6E9F7F5, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFF9E76F, 0xD6E9C663, + 0xBDDDB599, 0xAD13AD13, 0xA4D19C4B, 0x940993C7, 0x83036241, 0x31010801, 0x10015A87, 0x83CDA515, 0xC621E76F, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFF9DF6D, 0xCEA7BE1F, 0xB599AD55, 0xAD13AD11, + 0xA48D9C09, 0x93C78B43, 0x6A814181, 0x20C10001, 0x000120C1, 0x62C78C0D, 0xAD15CE63, 0xFFF9FFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xF7F7DF2B, 0xCEA5BDDB, 0xAD57AD13, 0xA4D1A4CF, 0x9C4B93C5, 0x8B857AC1, + 0x51C128C1, 0x00010001, 0x00010001, 0x39816AC5, 0x8BCBAD15, 0xE72DFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xEFB3D6E9, 0xBE1FB599, 0xAD55AD13, 0xA4D1A48D, 0x94078BC5, 0x830159C1, 0x30C11001, 0x00010001, + 0x00010001, 0x10414181, 0x62838BC9, 0xBD9BFFF9, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFF9, 0xDF2DC61F, + 0xB597AD13, 0xAD13A4D1, 0xA4CF9C49, 0x93C57B01, 0x624138C1, 0x18810001, 0x00010001, 0x00010001, 0x00011041, + 0x41816243, 0x8BC9CE23, 0xFFFBFFFF, 0xFFFFFFFF, 0xFFFFFFFD, 0xF7F7DF2D, 0xBE1DAD55, 0xAD15A4CF, 0xAD11A4CF, + 0x9C498BC5, 0x83436281, 0x38C11881, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x10413981, 0x5A017B45, + 0xA4D1C61D, 0xD6A5D6A5, 0xCE63C61F, 0xBDDBB555, 0xA4CF9C8D, 0x9C4B9407, 0x93C593C5, 0x8B857B43, 0x5A413101, + 0x18410001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00010801, 0x20814141, 0x5A017B03, 0x8BC59409, + 0x9C4B9C4B, 0x9C499407, 0x93858B83, 0x83418301, 0x83438383, 0x6AC14981, 0x20810801, 0x00010001, 0x00010001, + 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00010801, 0x20415181, 0x6A417AC1, 0x83418B43, 0x8B438301, + 0x82C17A81, 0x72817A81, 0x6A4159C1, 0x38C11801, 0x00010001, 0x00010001, 0x00010001, 0x00010001, +}; + +// Meant to be 32, this is only 30, it uses 2 vertices from the next list +static Vtx D_8780F3E8[] = { + VTX(0, 0, -11, 512, 566, 0x2D, 0x18, 0x94, 0xFF), VTX(0, 50, 0, 512, 0, 0x2D, 0x18, 0x94, 0xFF), + VTX(15, 21, 0, 677, 326, 0x2D, 0x18, 0x94, 0xFF), VTX(15, 21, 0, 677, 326, 0x2D, 0x18, 0x6C, 0xFF), + VTX(0, 50, 0, 512, 0, 0x2D, 0x18, 0x6C, 0xFF), VTX(0, 0, 11, 512, 566, 0x2D, 0x18, 0x6C, 0xFF), + VTX(0, 0, -11, 512, 566, 0xF8, 0x32, 0x94, 0xFF), VTX(-48, 15, 0, 0, 391, 0xF8, 0x32, 0x94, 0xFF), + VTX(-15, 21, 0, 346, 326, 0xF8, 0x32, 0x94, 0xFF), VTX(-15, 21, 0, 346, 326, 0xF8, 0x32, 0x6C, 0xFF), + VTX(-48, 15, 0, 0, 391, 0xF8, 0x32, 0x6C, 0xFF), VTX(0, 0, 11, 512, 566, 0xF8, 0x32, 0x6C, 0xFF), + VTX(0, 0, -11, 512, 566, 0xCE, 0x07, 0x94, 0xFF), VTX(-29, -40, 0, 195, 1023, 0xCE, 0x07, 0x94, 0xFF), + VTX(-25, -8, 0, 244, 657, 0xCE, 0x07, 0x94, 0xFF), VTX(-25, -8, 0, 244, 657, 0xCE, 0x07, 0x6C, 0xFF), + VTX(-29, -40, 0, 195, 1023, 0xCE, 0x07, 0x6C, 0xFF), VTX(0, 0, 11, 512, 566, 0xCE, 0x07, 0x6C, 0xFF), + VTX(0, 0, -11, 512, 566, 0xEA, 0xD2, 0x94, 0xFF), VTX(29, -40, 0, 828, 1023, 0xEA, 0xD2, 0x94, 0xFF), + VTX(0, -26, 0, 512, 861, 0xEA, 0xD2, 0x94, 0xFF), VTX(0, -26, 0, 512, 861, 0xEA, 0xD2, 0x6C, 0xFF), + VTX(29, -40, 0, 828, 1023, 0xEA, 0xD2, 0x6C, 0xFF), VTX(0, 0, 11, 512, 566, 0xEA, 0xD2, 0x6C, 0xFF), + VTX(0, 0, -11, 512, 566, 0x24, 0xDD, 0x94, 0xFF), VTX(48, 15, 0, 1024, 391, 0x24, 0xDD, 0x94, 0xFF), + VTX(25, -8, 0, 779, 657, 0x24, 0xDD, 0x94, 0xFF), VTX(25, -8, 0, 779, 657, 0x24, 0xDD, 0x6C, 0xFF), + VTX(48, 15, 0, 1024, 391, 0x24, 0xDD, 0x6C, 0xFF), VTX(0, 0, 11, 512, 566, 0x24, 0xDD, 0x6C, 0xFF), +}; + +static Vtx D_8780F5C8[] = { + VTX(0, 0, 11, 512, 566, 0x32, 0x07, 0x6C, 0xFF), VTX(29, -40, 0, 828, 1023, 0x32, 0x07, 0x6C, 0xFF), + VTX(25, -8, 0, 779, 657, 0x32, 0x07, 0x6C, 0xFF), VTX(25, -8, 0, 779, 657, 0x32, 0x07, 0x94, 0xFF), + VTX(29, -40, 0, 828, 1023, 0x32, 0x07, 0x94, 0xFF), VTX(0, 0, -11, 512, 566, 0x32, 0x07, 0x94, 0xFF), + VTX(15, 21, 0, 677, 326, 0x08, 0x32, 0x94, 0xFF), VTX(48, 15, 0, 1024, 391, 0x08, 0x32, 0x94, 0xFF), + VTX(0, 0, -11, 512, 566, 0x08, 0x32, 0x94, 0xFF), VTX(0, 0, 11, 512, 566, 0x08, 0x32, 0x6C, 0xFF), + VTX(48, 15, 0, 1024, 391, 0x08, 0x32, 0x6C, 0xFF), VTX(15, 21, 0, 677, 326, 0x08, 0x32, 0x6C, 0xFF), + VTX(0, 0, 11, 512, 566, 0xD3, 0x18, 0x6C, 0xFF), VTX(0, 50, 0, 512, 0, 0xD3, 0x18, 0x6C, 0xFF), + VTX(-15, 21, 0, 346, 326, 0xD3, 0x18, 0x6C, 0xFF), VTX(-15, 21, 0, 346, 326, 0xD3, 0x18, 0x94, 0xFF), + VTX(0, 50, 0, 512, 0, 0xD3, 0x18, 0x94, 0xFF), VTX(0, 0, -11, 512, 566, 0xD3, 0x18, 0x94, 0xFF), + VTX(-25, -8, 0, 244, 657, 0xDC, 0xDD, 0x94, 0xFF), VTX(-48, 15, 0, 0, 391, 0xDC, 0xDD, 0x94, 0xFF), + VTX(0, 0, -11, 512, 566, 0xDC, 0xDD, 0x94, 0xFF), VTX(0, 0, 11, 512, 566, 0xDC, 0xDD, 0x6C, 0xFF), + VTX(-48, 15, 0, 0, 391, 0xDC, 0xDD, 0x6C, 0xFF), VTX(-25, -8, 0, 244, 657, 0xDC, 0xDD, 0x6C, 0xFF), + VTX(0, 0, 11, 512, 566, 0x16, 0xD2, 0x6C, 0xFF), VTX(-29, -40, 0, 195, 1023, 0x16, 0xD2, 0x6C, 0xFF), + VTX(0, -26, 0, 512, 861, 0x16, 0xD2, 0x6C, 0xFF), VTX(0, -26, 0, 512, 861, 0x16, 0xD2, 0x94, 0xFF), + VTX(-29, -40, 0, 195, 1023, 0x16, 0xD2, 0x94, 0xFF), VTX(0, 0, -11, 512, 566, 0x16, 0xD2, 0x94, 0xFF), +}; + +static Gfx D_8780F7A8[] = { + gsDPPipeSync(), + gsDPSetCycleType(G_CYC_2CYCLE), + gsSPClearGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BOTH | G_FOG | G_LIGHTING | G_TEXTURE_GEN | + G_TEXTURE_GEN_LINEAR | G_LOD | G_SHADING_SMOOTH | G_CLIPPING | 0x0040F9FA), + gsSPSetGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_LIGHTING | G_TEXTURE_GEN | G_SHADING_SMOOTH), + gsSPTexture(0x0DAC, 0x0DAC, 0, G_TX_RENDERTILE, G_ON), + gsDPSetPrimColor(0, 0, 255, 255, 255, 255), + gsDPSetCombineMode(G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA2), + gsDPSetRenderMode(G_RM_PASS, G_RM_AA_ZB_OPA_SURF2), + gsDPSetTexturePersp(G_TP_PERSP), + gsSPPerspNormalize(0xFFFF), + gsSPViewport(&D_8780EB90), + gsDPLoadTextureBlock(D_8780EBE8, G_IM_FMT_RGBA, G_IM_SIZ_16b, 32, 32, 0, G_TX_NOMIRROR | G_TX_CLAMP, + G_TX_NOMIRROR | G_TX_CLAMP, 5, 5, 1, 1), + gsSPEndDisplayList(), +}; + +static Gfx D_8780F840[] = { + gsSPVertex(D_8780F3E8, 32, 0), + gsSP2Triangles(0, 1, 2, 0, 3, 4, 5, 0), + gsSP2Triangles(6, 7, 8, 0, 9, 10, 11, 0), + gsSP2Triangles(12, 13, 14, 0, 15, 16, 17, 0), + gsSP2Triangles(18, 19, 20, 0, 21, 22, 23, 0), + gsSP2Triangles(24, 25, 26, 0, 27, 28, 29, 0), + gsSPVertex(D_8780F5C8, 30, 0), + gsSP2Triangles(0, 1, 2, 0, 3, 4, 5, 0), + gsSP2Triangles(6, 7, 8, 0, 9, 10, 11, 0), + gsSP2Triangles(12, 13, 14, 0, 15, 16, 17, 0), + gsSP2Triangles(18, 19, 20, 0, 21, 22, 23, 0), + gsSP2Triangles(24, 25, 26, 0, 27, 28, 29, 0), + gsSPEndDisplayList(), +}; + +static s32 pad_D_8780F8A8[] = { + 0x00000000, + 0x00000000, +}; + +static f32 D_8780F8B0[] = { 0.8f, 0.75f, 0.7f, 0.75f, 0.8f, 0.75f, 0.7f, 0.65f, 0.6f, 0.55f, 0.5f }; + +static f32 D_8780F8DC[] = { 1.0f, 1.1f, 1.0f, 1.57f, 2.14f, 2.71f, 3.29f, 3.86f, 4.43f, 5.0f }; + +static u8 D_8780F904[] = { + 0xFF, 0xFF, 0xFF, 0xE2, 0xC4, 0xA7, 0x8A, 0x6D, 0x4F, 0x32, +}; + +static u32* D_8780F910[2][4] = { + { D_878067F0, D_87807690, D_87808530, D_878093D0 }, + { D_8780B110, D_8780BFB0, D_8780CE50, D_8780DCF0 }, +}; + +static f32 D_8780F930[] = { + 0.9f, + 1.0f, + 1.1f, + 1.0f, +}; + +static f32 D_8780F940[] = { + 0.0f, 3.0f, 6.0f, 9.0f, 12.0f, 15.0f, 12.0f, 9.0f, 6.0f, 3.0f, + 0.0f, -3.0f, -6.0f, -9.0f, -12.0f, -15.0f, -12.0f, -9.0f, -6.0f, -3.0f, +}; + +static s32 D_8780F990[] = { 3, 1, 0 }; +static s32 D_8780F99C[] = { 1, 4, 0 }; +static s32 D_8780F9A8[] = { 4, 0 }; + +static u8 D_8780F9B0[] = { + 6, + 5, + 4, + 3, +}; + +static s32 D_8780FC40; +static u8 D_8780FC44; +static s32 D_8780FC48; +static u8 D_8780FC4C; +static u8 D_8780FC50[4]; +static u8 D_8780FC54[4]; +static u8 D_8780FC58[4]; +static s8 D_8780FC5C; +static u8 D_8780FC5D; +static s32 D_8780FC60; +static s32 D_8780FC64; +static s32 D_8780FC68; +static s32 D_8780FC6C; +static s32 D_8780FC70; +static s32 D_8780FC74; +static s16 D_8780FC78; +static s16 D_8780FC80[4]; +static s16 D_8780FC88[4]; +static s16 D_8780FC90; +u16 D_8780FC92; +u16 D_8780FC94; +u16 D_8780FC96; +u16 D_8780FC98; +static u8 D_8780FC9A; +static u8 D_8780FC9B; +static unk_D_80068BA0* D_8780FC9C; +static u8 D_8780FCA0; +static u8 D_8780FCA1; +static u8 D_8780FCA2; +static u8 D_8780FCA3; +static s16 D_8780FCA4; +static u8 D_8780FCA6; +static u8 D_8780FCA7; +static u8 D_8780FCA8; +static s16 D_8780FCAA; +static u8 D_8780FCAC[4]; +static u8 D_8780FCB0[4]; +static char pad_D_8780FCB4[0x4]; +static u16 D_8780FCB8[16]; + +typedef struct unk_D_8780FCD8 { + /* 0x00 */ s16 unk_00; + /* 0x02 */ s16 unk_02; + /* 0x04 */ f32 unk_04; +} unk_D_8780FCD8; // size = 0x8 + +static unk_D_8780FCD8 D_8780FCD8[4][9]; +static u8 D_8780FDF8; +static u8 D_8780FDFC[4]; +static s8 D_8780FE00; +static u8 D_8780FE01; +static char* D_8780FE08[4]; +static char* D_8780FE18[4]; +static char* D_8780FE28[2]; +static u16 D_8780FE30; +static u16 D_8780FE32; +static u16 D_8780FE34; +static u16 D_8780FE36; + +void func_878029C0(void) { + u8 i; + u8 j; + + D_8780FC40 = 0; + D_8780FC44 = 0; + D_8780FC4C = 0; + D_8780FC5C = 0; + D_8780FC9C = D_80068BA0; + D_8780FC60 = D_8780FC64 = D_8780FC68 = D_8780FC6C = D_8780FC70 = D_8780FC74 = 0; + D_8780FC92 = 0; + D_8780FC94 = 0; + D_8780FC96 = 0; + D_8780FC98 = 0; + D_8780FC48 = 0; + D_8780FCA0 = 2; + D_8780FCA1 = 0; + D_8780FCA3 = 0; + + for (i = 0; i < 4; i++) { + D_8780FC50[i] = 0; + D_8780FDFC[i] = 0; + D_8780FCAC[i] = 0; + D_8780FCB0[i] = 0; + } + + for (i = 0; i < 4; i++) { + for (j = 0; j < 9; j++) { + D_8780FCD8[i][j].unk_04 = 0.0f; + } + } + + D_8780FCA7 = 0; + D_8780FDF8 = 0; + D_8780FE01 = 0; + D_8780FE00 = 0xC; + + D_8780FE08[0] = D_8780FE28[0] = func_8002D7C0(NULL, 0, D_87806330, 0x51); + + D_8780FE08[1] = func_8002D7C0(NULL, 0, D_87806330, 0x52); + + D_8780FE08[2] = D_8780FE18[2] = D_8780FE28[1] = func_8002D7C0(NULL, 0, D_87806330, 0x53); + + D_8780FE18[0] = func_8002D7C0(NULL, 0, D_87806330, 0x54); + D_8780FE18[1] = func_8002D7C0(NULL, 0, D_87806330, 0x55); + + func_8001EBE0(4, 0); + + D_8780FE30 = MAX(func_8001F5B0(0, 0, D_8780FE18[0]), func_8001F5B0(0, 0, D_8780FE18[2])); + D_8780FE32 = MAX(func_8001F5B0(0, 0, D_8780FE08[0]), func_8001F5B0(0, 0, D_8780FE08[1])); + D_8780FE32 = MAX(D_8780FE32, func_8001F5B0(0, 0, D_8780FE08[2])); + D_8780FE34 = MAX(D_8780FE30, func_8001F5B0(0, 0, D_8780FE18[1])); + D_8780FE36 = MAX(func_8001F5B0(0, 0, D_8780FE28[0]), func_8001F5B0(0, 0, D_8780FE28[1])); + + if (D_8780FE32) {} + + func_80028AFC(2); +} + +void func_87802E1C(void) { + u8 i; + + for (i = 0; i < 4; i++) { + D_8780FC54[i] = 0; + D_8780FC58[i] = 0; + } +} + +#ifdef NON_MATCHING +void func_87802E58(void) { + static u32 D_8780FE38; + + u32 v0 = D_800A6CF4.unk_20; + + if (D_8780FCA1 == 0) { + D_8780FCA1 = 1; + } else if (D_8780FE38 < v0) { + D_8780FCA0 = v0 - D_8780FE38; + } else { + D_8780FCA0 = v0 - D_8780FE38; + } + + D_8780FE38 = v0; +} +#else +static u32 D_8780FE38; +#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/2/fragment2_2/func_87802E58.s") +#endif + +void func_87802EB8(s16 arg0) { + switch (arg0) { + case 1: + D_8780FC44 = 1; + break; + + case 2: + D_8780FC92 = 1; + break; + } +} + +void func_87802F00(s32 arg0) { + if ((arg0 >= 0) && (arg0 < 4)) { + D_8780FA40[arg0]++; + D_8780FC50[arg0] = 1; + D_8780FDFC[arg0] = 1; + } +} + +void func_87802F4C(void) { + u8 i; + + for (i = 0; i < 4; i++) { + if (D_8780FA40[i] >= D_8780FA3A) { + D_8780FC4C = 1; + break; + } + } +} + +s32 func_87802FA0(void) { + if ((D_8780FA2A == 1) && (D_8780FA3A >= 5) && (D_8780FA38 == 2) && (D_8780FA30[0] == 0) && (D_8780FA30[1] == 1) && + (D_8780FA30[2] == 1) && (D_8780FA30[3] == 1) && (*D_8780FC58 == 5) && !(D_8780FA28 & 1)) { + return 1; + } + return 0; +} + +void func_8780304C(void) { + u8 i; + s8 var_v0 = 9; + + for (i = 0; i < 4; i++) { + if (D_8780FA40[i] < var_v0) { + var_v0 = D_8780FA40[i]; + } + } + + D_8780FC78 = 0; + + for (i = 0; i < 4; i++) { + if (var_v0 == D_8780FA40[i]) { + D_8780FC80[i] = 1; + D_8780FC88[D_8780FC78] = i; + D_8780FC78++; + } else { + D_8780FC80[i] = 0; + } + } + + D_8780FA48 = D_8780FC88[0]; +} + +s32 func_87803118(void) { + s32 sp1C; + + if (D_8780FE01 != 0) { + if (D_8780FA2A == 0) { + sp1C = 1; + } else { + sp1C = 4; + } + func_8004AF44(4); + D_8780FE01 = 0; + } else if (D_8780FC92 != 0) { + sp1C = 1; + } else if (D_8780FC4C == 0) { + if (D_8780FA2A == 0) { + sp1C = D_8780F990[D_8780FC5C]; + } else { + sp1C = D_8780F99C[D_8780FC5C]; + } + } else { + sp1C = D_8780F9A8[D_8780FC5C]; + } + + return sp1C; +} + +void func_87803200(s32 arg0, s32 arg1, s32 arg2, s32 arg3, u8* arg4, u8* arg5) { + func_8002053C(arg0, arg1, arg2, arg3, arg4, arg5); + func_8780118C(arg0 - 1, arg1 - 1, arg2 + 2, arg3 + 2); +} + +void func_87803280(Mtx* arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5, f32 arg6, f32 arg7, f32 arg8, f32 arg9, + f32 argA) { + MtxF sp20; + + guRotateF(sp20.mf, arg4, arg5, arg6, arg7); + + sp20.xx *= arg1; + sp20.yx *= arg1; + sp20.zx *= arg1; + + sp20.xy *= arg2; + sp20.yy *= arg2; + sp20.zy *= arg2; + + sp20.xz *= arg3; + sp20.yz *= arg3; + sp20.zz *= arg3; + + sp20.xw = arg8; + sp20.yw = arg9; + sp20.zw = argA; + + guMtxF2L(sp20.mf, arg0); +} + +void func_87803368(s16 arg0) { + u8 i; + u8 j; + u8 x; + Mtx spD0; + LookAt* temp_s2; + Mtx* spC8; + Mtx* temp_s3; + + temp_s3 = (Mtx*)func_80005F5C(sizeof(Mtx) * 1); + spC8 = (Mtx*)func_80005F5C(sizeof(Mtx) * 36); + temp_s2 = (LookAt*)func_80005F5C(sizeof(LookAt) * 1); + + if (arg0 == 0) { + for (x = 0; x < 4; x++) { + func_800067E4(&gDisplayListHead, (x * 0x36) + 0x44, 0, 0x16, 0xC0); + } + } else { + func_800067E4(&gDisplayListHead, 0x44, 0, 0xFC, 0xC0); + } + + guLookAtReflect(&spD0, temp_s2, 0.0f, 0.0f, 320.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f); + + gSPLookAtX(gDisplayListHead++, &temp_s2->l[0]); + gSPLookAtY(gDisplayListHead++, &temp_s2->l[1]); + gSPDisplayList(gDisplayListHead++, D_8780F7A8); + + guOrtho(temp_s3, -160.0f, 160.0f, -120.0f, 120.0f, -100.0f, 100.0f, 1.0f); + + gSPMatrix(gDisplayListHead++, (u32)temp_s3 & 0x1FFFFFFF, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION); + + for (i = 0; i < 4; i++) { + for (j = 0; j < D_8780FA40[i]; j++) { + if ((D_8780FA40[i] >= D_8780FA3A) && (D_8780FDFC[i] == 2)) { + D_8780FCD8[i][j].unk_04 += 7.5f; + if (D_8780FCD8[i][j].unk_04 >= 360.0f) { + D_8780FCD8[i][j].unk_04 -= 360.0f; + } + } + + if (((j + 1) == D_8780FA40[i]) && (D_8780FC50[i] == 1)) { + if (arg0 != 0) { + break; + } + + if ((0xB6 - (j * 0x12)) != D_8780FCD8[i][j].unk_02) { + D_8780FCD8[i][j].unk_02 += 6; + D_8780FCD8[i][j].unk_04 += 15.0f; + if (D_8780FCD8[i][j].unk_04 >= 360.0f) { + D_8780FCD8[i][j].unk_04 -= 360.0f; + } + } else { + if (D_8780FDFC[i] == 1) { + D_8780FDFC[i] = 2; + + for (x = 0; x < 4; x++) { + if (D_8780FDFC[x] == 1) { + break; + } + } + + if (x != 4) { + func_8004D858(0x15, 0); + } else { + func_8004D858(0x15, 1); + } + } + + if (D_8780FA40[i] < D_8780FA3A) { + D_8780FCD8[i][j].unk_04 += 7.5f; + if (D_8780FCD8[i][j].unk_04 >= 360.0f) { + D_8780FCD8[i][j].unk_04 -= 360.0f; + } + } + } + } + + func_87803280(spC8, 0.2f, 0.2f, 0.2f, D_8780FCD8[i][j].unk_04, 0.0f, 1.0f, 0.0f, + (D_8780FCD8[i][j].unk_00 + arg0) - 0xA0, 0x78 - D_8780FCD8[i][j].unk_02, 0.0f); + + gSPMatrix(gDisplayListHead++, (u32)spC8++ & 0x1FFFFFFF, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(gDisplayListHead++, D_8780F840); + } + } +} + +void func_878038B8(s32 arg0, u32* arg1, u8 arg2, u8 arg3, s16 arg4, s16 arg5, s16 arg6, s16 arg7, f32 arg8, f32 arg9, + f32 argA, f32 argB, f32 argC, f32 argD, f32 argE) { + u8 i; + s16 sp64 = (arg4 + arg6) / 2; + s16 sp5C = (arg5 + arg7) / 2; + Vtx* spCC; + Mtx* spC8; + Mtx* spC4; + + spCC = func_80005F5C(sizeof(Vtx) * 4); + spC8 = func_80005F5C(sizeof(Mtx) * 1); + spC4 = func_80005F5C(sizeof(Mtx) * 1); + + func_8001E680(&spCC[0], -sp64 + arg4, -sp5C + arg5, 0, 0, 0, 0xFF, 0xFF, 0xFF, 0xFF); + func_8001E680(&spCC[1], -sp64 + arg6, -sp5C + arg5, 0, arg2 << 5, 0, 0xFF, 0xFF, 0xFF, 0xFF); + func_8001E680(&spCC[2], -sp64 + arg4, -sp5C + arg7, 0, 0, arg3 << 5, 0xFF, 0xFF, 0xFF, 0xFF); + func_8001E680(&spCC[3], -sp64 + arg6, -sp5C + arg7, 0, arg2 << 5, arg3 << 5, 0xFF, 0xFF, 0xFF, 0xFF); + + guOrtho(spC8, -sp64, 0x140 - sp64, 0xF0 - sp5C, -sp5C, -2.0f, 2.0f, 1.0f); + + func_87803280(spC4, arg8, arg9, argA, argB, argC, argD, argE, 0.0f, 0.0f, 0.0f); + + gSPDisplayList(gDisplayListHead++, D_8780EBA0); + + gDPLoadTextureBlock(gDisplayListHead++, arg1, G_IM_FMT_RGBA, G_IM_SIZ_32b, arg2, arg3, 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); + + gSPMatrix(gDisplayListHead++, (u32)spC8 & 0x1FFFFFFF, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION); + gSPMatrix(gDisplayListHead++, (u32)spC4 & 0x1FFFFFFF, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPVertex(gDisplayListHead++, (u32)spCC & 0x1FFFFFFF, 4, 0); + + for (i = 0; i <= arg0; i++) { + if (i == 0) { + gDPSetCombineLERP(gDisplayListHead++, 0, 0, 0, TEXEL0, TEXEL0, 0, ENVIRONMENT, 0, 0, 0, 0, TEXEL0, TEXEL0, + 0, ENVIRONMENT, 0); + } else if (i == 1) { + gDPPipeSync(gDisplayListHead++); + gDPSetCombineLERP(gDisplayListHead++, 0, 0, 0, ENVIRONMENT, TEXEL0, 0, ENVIRONMENT, 0, 0, 0, 0, ENVIRONMENT, + TEXEL0, 0, ENVIRONMENT, 0); + gDPSetEnvColor(gDisplayListHead++, 255, 255, 255, 80); + } + + gSP2Triangles(gDisplayListHead++, 0, 2, 3, 0, 0, 3, 1, 0); + } +} + +#ifdef NON_MATCHING +void func_87803EAC(u32* arg0, u16 arg1, UNUSED u16 arg2, u16 arg3, u16 arg4, u8 arg5, u8 arg6) { + s32 sp68 = arg5 * arg6; + Vtx* temp_fp = func_80005F5C(sizeof(Vtx) * sp68); + u8 i; + u8 j; + + for (i = 0; i < arg6; i++) { + for (j = 0; j < arg5; j++) { + func_8001E680(&temp_fp[(arg5 * i) + j], D_8780FCB8[j] - arg3, D_8780FCB8[10 + j] - arg4, 0, + D_8780FCB8[i] * 32, D_8780FCB8[10 + j] * 32, 0xFF, 0xFF, 0xFF, 0xFF); + } + } + + gSPVertex(gDisplayListHead++, temp_fp, sp68, 0); + + for (i = 0; i < arg6 - 1; i++) { + for (j = 0; j < arg5 - 1; j++) { + gDPLoadTextureTile(gDisplayListHead++, arg0, G_IM_FMT_RGBA, G_IM_SIZ_32b, arg1, 0, D_8780FCB8[j], + D_8780FCB8[10 + i], D_8780FCB8[j + 1], D_8780FCB8[10 + i + 1], 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); + + gSP2Triangles(gDisplayListHead++, ((arg5 * i) + j), ((arg5 * (i + 1)) + j), (((arg5 * (i + 1)) + j)) + 1, 0, + ((arg5 * i) + j), (((arg5 * (i + 1)) + j)) + 1, (((arg5 * i) + j)) + 1, 0); + } + } +} +#else +#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/2/fragment2_2/func_87803EAC.s") +#endif + +#ifdef NON_MATCHING +typedef struct Vtx4 { + /* 0x00 */ Vtx vtx1; + /* 0x10 */ Vtx vtx2; + /* 0x20 */ Vtx vtx3; + /* 0x30 */ Vtx vtx4; +} Vtx4; // size = 0x40 + +void func_87804320(u8 arg0, s8 arg1, s8 arg2, s8 arg3, s8 arg4) { + u8 i; + Mtx* temp_v0; + f32 var_fv1; + u8 var_s4; + s8 temp_s2; + + temp_v0 = func_80005F5C(sizeof(Mtx) * 1); + temp_s2 = arg1 + arg2 + arg3 + arg4; + + gSPDisplayList(gDisplayListHead++, D_8780EBA0); + + if (temp_s2 == -4) { + var_fv1 = D_8780F8DC[arg0]; + + gDPSetCombineLERP(gDisplayListHead++, 0, 0, 0, TEXEL0, TEXEL0, 0, ENVIRONMENT, 0, 0, 0, 0, TEXEL0, TEXEL0, 0, + ENVIRONMENT, 0); + gDPSetEnvColor(gDisplayListHead++, 255, 255, 255, D_8780F904[arg0]); + } else { + var_fv1 = D_8780F8B0[arg0]; + + gDPSetCombineMode(gDisplayListHead++, G_CC_DECALRGBA, G_CC_DECALRGBA); + } + + if (var_fv1 <= 0.0f) { + return; + } + + guOrtho(temp_v0, -320.0f / (2.0f * var_fv1), 320.0f / (2.0f * var_fv1), 240.0f / (2.0f * var_fv1), + -240.0f / (2.0f * var_fv1), -2.0f, 2.0f, 1.0f); + + gSPMatrix(gDisplayListHead++, (u32)temp_v0 & 0x1FFFFFFF, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION); + gSPMatrix(gDisplayListHead++, (u32)&D_8006F010 & 0x1FFFFFFF, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + + if (temp_s2 == -4) { + D_8780FCB8[0] = 0; + D_8780FCB8[1] = 0x1D; + D_8780FCB8[2] = 0x3A; + D_8780FCB8[3] = 0x57; + D_8780FCB8[4] = 0x74; + D_8780FCB8[5] = 0x91; + D_8780FCB8[6] = 0xAE; + D_8780FCB8[7] = 0xCB; + D_8780FCB8[8] = 0xE8; + + D_8780FCB8[10 + 0] = 0; + D_8780FCB8[10 + 1] = 0x1F; + D_8780FCB8[10 + 2] = 0x3D; + + func_87803EAC(&D_30200C0, 0xE8, 0x5C, 0x74, 0x2E, 9, 3); + + D_8780FCB8[10 + 0] = 0x3D; + D_8780FCB8[10 + 1] = 0x5C; + + func_87803EAC(&D_30200C0, 0xE8, 0x5C, 0x74, 0x2E, 9, 2); + } else if (temp_s2 == 0) { + if ((arg0 == 0xA) && (D_87806338 != 2)) { + func_8004B1CC(0x1B); + } + D_8780FCB8[0] = 0; + D_8780FCB8[1] = 0x1E; + D_8780FCB8[2] = 0x3C; + D_8780FCB8[3] = 0x5A; + D_8780FCB8[4] = 0x78; + D_8780FCB8[5] = 0x96; + D_8780FCB8[6] = 0xB4; + + D_8780FCB8[10 + 0] = 0; + D_8780FCB8[10 + 1] = 0x1A; + D_8780FCB8[10 + 2] = 0x34; + + func_87803EAC(&D_3016E80, 0xB4, 0x34, 0x5A, 0x1A, 7, 3); + } else { + Vtx4* spAC; + u16 spA4[4]; + s8 spA0[4]; + + if ((arg0 == 0xA) && (D_87806338 != 2)) { + func_8004B1CC(0x1A); + } + + D_8780FCB8[0] = 0; + D_8780FCB8[1] = 0x22; + D_8780FCB8[2] = 0x44; + D_8780FCB8[3] = 0x66; + D_8780FCB8[4] = 0x88; + + D_8780FCB8[10 + 0] = 0; + D_8780FCB8[10 + 1] = 0x1A; + D_8780FCB8[10 + 2] = 0x34; + + func_87803EAC(&D_3010000, 0x88, 0x34, 0x23, 0x1A, 5, 3); + + spAC = func_80005F5C(sizeof(Vtx) * 4 * temp_s2); + + spA0[0] = arg1; + spA0[1] = arg2; + spA0[2] = arg3; + spA0[3] = arg4; + + switch (temp_s2) { + case 1: + spA4[0] = -0x1A; + break; + case 2: + spA4[0] = -0x35; + break; + case 3: + spA4[0] = -0x50; + break; + case 4: + spA4[0] = -0x6B; + break; + } + + for (i = 0, var_s4 = 0; i < 4; i++) { + if (spA0[i] == 1) { + func_8001E680(&spAC[var_s4].vtx1, -0x63, spA4[var_s4], 0, 0, 0, 0xFF, 0xFF, 0xFF, 0xFF); + func_8001E680(&spAC[var_s4].vtx2, -0x1B, spA4[var_s4], 0, 0x480, 0, 0xFF, 0xFF, 0xFF, 0xFF); + func_8001E680(&spAC[var_s4].vtx3, -0x63, spA4[var_s4] + 0x34, 0, 0, 0x340, 0xFF, 0xFF, 0xFF, 0xFF); + func_8001E680(&spAC[var_s4].vtx4, -0x1B, spA4[var_s4] + 0x34, 0, 0x480, 0x340, 0xFF, 0xFF, 0xFF, 0xFF); + + gSPVertex(gDisplayListHead++, &spAC[var_s4].vtx1, 4, 0); + gDPLoadTextureBlock(gDisplayListHead++, D_8780F910[D_8780FA30[i]][i], G_IM_FMT_RGBA, G_IM_SIZ_32b, 36, + 26, 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); + gSP2Triangles(gDisplayListHead++, 0, 2, 3, 0, 0, 3, 1, 0); + + if (var_s4 != 3) { + spA4[var_s4 + 1] = spA4[var_s4] + 0x36; + var_s4++; + } + } + } + } +} +#else +#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/2/fragment2_2/func_87804320.s") +#endif + +void func_87804AD0(s16 arg0) { + s32 var_a0; + u8 i; + + gDPSetEnvColor(gDisplayListHead++, 255, 255, 255, 255); + + for (i = 0; i < 4; i++) { + var_a0 = 0; + if (D_8780FC74 != 0) { + if (D_8780FC80[i] == 0) { + gDPSetEnvColor(gDisplayListHead++, 255, 255, 255, 75); + } else { + gDPSetEnvColor(gDisplayListHead++, 255, 255, 255, 255); + + if ((D_8780FA48 == i) && ((D_8780FC40 == 4) || (((D_8780FC40 == 5) || (D_8780FC40 == 6)) && + ((D_8780FCA8 >= 0x28) || ((D_8780FCA8 % 10) < 5))))) { + var_a0 = 1; + } + } + + D_8780FCAC[i] = 0; + D_8780FCB0[i] = 0; + } else { + if (D_8780FDFC[i] == 2) { + D_8780FCAC[i]++; + if (D_8780FCAC[i] == 4u) { + D_8780FCAC[i] = 0; + } + + if (D_8780FA40[i] >= D_8780FA3A) { + D_8780FCB0[i]++; + if (D_8780FCB0[i] == 0x14) { + D_8780FCB0[i] = 0; + } + } + } + } + func_878038B8(var_a0, D_8780F910[D_8780FA30[i]][i], 0x24, 0x1A, ((i * 0x36) + arg0) + 0x3E, 0xBF, + ((i * 0x36) + arg0) + 0x62, 0xD9, D_8780F930[D_8780FCAC[i]], D_8780F930[D_8780FCAC[i]], + D_8780F930[D_8780FCAC[i]], D_8780F940[D_8780FCB0[i]], 0.0f, 0.0f, 1.0f); + } + + func_8001F3F4(); + func_8001EBE0(2, -2); + func_8001F324(0xFF, 0xFF, 0xFF, 0xFF); + + for (i = 0; i < 4; i++) { + if (D_8780FC74 != 0) { + if (D_8780FC80[i] == 0) { + func_8001F324(0xFF, 0xFF, 0xFF, 0x4B); + } else { + func_8001F324(0xFF, 0xFF, 0xFF, 0xFF); + } + } + + if (D_8780FDFC[i] == 1) { + func_8001F1E8((i * 0x36) + arg0 + 0x4C, 0xD8, "%d", D_8780FA40[i] - 1); + } else { + func_8001F1E8((i * 0x36) + arg0 + 0x4C, 0xD8, "%d", D_8780FA40[i]); + } + } + + func_8001EBE0(4, 0); + func_8001F470(); + func_8001F324(0xF0, 0xF0, 0xF0, 0xFF); + func_8001F36C(0x8C, 0x8C, 0x8C, 0xFF); + func_8002D600(1, D_8780FA3A); + + { + char sp8C[0x60]; + char* var_s0_3; + + var_s0_3 = func_8002D7C0(sp8C, 0x60, D_87806330, 0x13); + + if ((D_8780FA30[0] + D_8780FA30[1] + D_8780FA30[2] + D_8780FA30[3]) != 0) { + sprintf(sp8C, "%s - %s", var_s0_3, func_8002D7C0(NULL, 0, D_87806330, D_8780F9B0[D_8780FA38])); + var_s0_3 = sp8C; + } + + func_8001F1E8((arg0 - (func_878013D4(NULL, var_s0_3) / 2)) + 0xA0, 0x10, var_s0_3); + func_8001F4C4(); + func_8001F444(); + } +} + +s32 func_87804FD4(void) { + static s32 D_8780FE3C; + static s32 D_8780FE40; + static s32 D_8780FE44; + + u8 sp70[] = { + 0, 0, 30, 0, 0, 250, + }; + u8 sp68[] = { + 0x35, 0x34, 0x00, 0x7A, 0x78, 0x00, + }; + u8 sp67; + u8 sp66; + u8 temp_t0; + u8 i; + char* sp60; + char* sp5C; + s32 tmp; + UNUSED u8 pad; + UNUSED u8 pad2; + u8 sp55; + u8 sp44; + + sp67 = 0; + sp66 = 0; + if (D_8780FC9C->unk_04 >= 0x32) { + sp67 = 1; + } else if (D_8780FC9C->unk_04 < -0x31) { + sp66 = 1; + } + + func_87802E58(); + + switch (D_8780FC40) { + case 0: + if (D_8780FC44 != 0) { + D_8780FC44 = 0; + D_8780FCA2 = 0xB; + D_8780FC60 = 1; + D_8780FC40 = 1; + D_8780FC94 = 0; + D_8780FE44 = 0xB4; + if (D_8780FA2A != 0) { + if ((D_8780FC50[0] + D_8780FC50[1] + D_8780FC50[2] + D_8780FC50[3]) != 0) { + for (i = 0; i < 4; i++) { + if (D_8780FC50[i] != 0) { + D_8780FC58[i]++; + if (D_8780FC54[i] < D_8780FC58[i]) { + D_8780FC54[i] = D_8780FC58[i]; + } + } else { + D_8780FC58[i] = 0; + } + } + } + } + } else if (D_8780FC92 == 0) { + if (D_8780FC94 != 0) { + if ((D_8780FC9C->unk_08 & 0x800) || ((sp67 == 1) && (D_8780FC9A == 0))) { + func_8004AF44(2); + D_8780FC5C--; + if (D_8780FC5C < 0) { + D_8780FC5C = D_8780FC5D - 1; + } + } else if ((D_8780FC9C->unk_08 & 0x400) || ((sp66 == 1) && (D_8780FC9B == 0))) { + func_8004AF44(2); + D_8780FC5C++; + if (D_8780FC5C >= D_8780FC5D) { + D_8780FC5C = 0; + } + } else if (D_8780FC9C->unk_08 & 0x8000) { + if (D_8780FC5C == 0) { + func_8004AF44(0); + D_8780FC94 = 0; + } else if (D_8780FC5C == 1) { + func_8004AF44(3); + D_8780FC92 = 1; + D_8780FE01 = 1; + } + } else if (D_8780FC9C->unk_08 & 0x1000) { + func_8004AF44(0); + D_8780FC94 = 0; + D_8780FC5C = 0; + } + } else if ((func_87802974() == -2) && (D_8780FC9C->unk_08 & 0x1000)) { + func_8004AF44(1); + D_8780FC94 = 1; + D_8780FC5D = 2; + } + } + break; + + case 1: + if (D_8780FE44 > 0) { + D_8780FE44 -= D_8780FCA0; + } + + if ((D_8780FE44 <= 0) && (D_8780FC9C->unk_08 & 0x8000)) { + D_8780FC98 = 1; + if (D_8780FA2A == 0) { + func_80048B90(4); + D_8780FC40 = 3; + D_8780FC70 = 1; + D_8780FC5D = 3; + } else { + func_8004D858(0x12, 0); + D_8780FC40 = 2; + D_8780FC64 = 1; + D_8780FCAA = 0x190; + func_87802F4C(); + if (D_8780FC4C != 0) { + D_8780FC5D = 2; + } else { + D_8780FC5D = 3; + } + func_8780304C(); + } + } + break; + + case 2: + if (D_8780FCAA == 0) { + if (D_8780FC4C == 1) { + if (D_8780FC68 == 0) { + for (i = 0; i < 4; i++) { + if (D_8780FDFC[i] == 1) { + break; + } + } + + if (i == 4) { + D_8780FC68 = 1; + D_8780FCA4 = 0xF0; + D_8780FCA6 = 0xA; + } + } + } + + if ((D_8780FC4C == 0) || ((D_8780FC4C == 1) && (D_8780FCA6 == 0) && (func_800484C0(2) == 0))) { + for (i = 0; i < 4; i++) { + if (D_8780FDFC[i] == 1) { + break; + } + } + + if (i == 4) { + if (D_8780FC6C == 0) { + if (D_8780FC9C->unk_08 & 0x8000) { + func_80048B90(4); + if (func_87802FA0() != 0) { + func_8004B1CC(0x13); + D_8780FC6C = 1; + D_8780FE44 = 0xB4; + } else { + D_8780FC40 = 3; + D_8780FC70 = 1; + } + } + } else { + D_8780FE44 -= D_8780FCA0; + if (D_8780FE44 <= 0) { + if (D_8780FC9C->unk_08 & 0x8000) { + func_80048B90(4); + D_8780FC40 = 3; + D_8780FC70 = 1; + D_8780FC6C = 0; + } + } else if ((D_8780FE44 < 0xAB) && (D_8780FCA7 == 0)) { + D_8780FA28 |= 1; + func_800280D4(D_8780FA28 & 0xFF); + func_80026684(0x14, 0); + func_800284B4(2); + D_8780FCA7 = 1; + } + } + } + } + } + break; + + case 3: + if ((D_8780FC9C->unk_08 & 0x800) || ((sp67 == 1) && (D_8780FC9A == 0))) { + func_80048B90(1); + D_8780FC5C--; + if (D_8780FC5C < 0) { + D_8780FC5C = D_8780FC5D - 1; + } + } else if ((D_8780FC9C->unk_08 & 0x400) || ((sp66 == 1) && (D_8780FC9B == 0))) { + func_80048B90(1); + D_8780FC5C++; + if (D_8780FC5C >= D_8780FC5D) { + D_8780FC5C = 0; + } + } else if (D_8780FC9C->unk_08 & 0x8000) { + func_80048B90(2); + if (D_8780FA2A == 0) { + D_8780FC40 = 6; + } else if (D_8780FC4C != 0) { + D_8780FC40 = 6; + } else if (D_8780FC5C == 0) { + D_8780FC70 = 0; + D_8780FC74 = 1; + if (D_8780FC78 == 1) { + D_8780FC40 = 5; + D_8780FCA8 = 0x2F; + } else { + D_8780FC40 = 4; + D_8780FE3C = 0x60 - func_878001E8(0x20); + D_8780FC90 = 0; + } + } else { + D_8780FC40 = 6; + } + } + break; + + case 4: + D_8780FE3C--; + if (D_8780FE3C >= 0x1F) { + D_8780FE40 = 1; + } else { + D_8780FE40 = 3; + } + + if (!(D_8780FC48 & D_8780FE40)) { + D_8780FC90++; + func_80048B90(1); + if (D_8780FC90 >= D_8780FC78) { + D_8780FC90 = 0; + } + D_8780FA48 = D_8780FC88[D_8780FC90]; + } + + if (D_8780FE3C <= 0) { + D_8780FC40 = 5; + D_8780FCA8 = 0x2A; + } + break; + + case 5: + D_8780FCA8--; + if (D_8780FCA8 == 0x29) { + func_80048B90(0x11); + } else if (D_8780FCA8 <= 0) { + D_8780FC40 = 6; + } + break; + + case 6: + D_8780FC96 = 1; + break; + } + + if (D_8780FC94 != 0) { + func_87803200(((0x140 - D_8780FE30) / 2) - 0xA, 0x61, D_8780FE30 + 0x14, 0x30, &sp70[0], &sp70[3]); + func_8001F3F4(); + func_8001EBE0(4, 0); + + for (i = 0; i < D_8780FC5D; i++) { + if (D_8780FC5C == i) { + func_8001F324(0xFF, 0xFF, 0, 0xFF); + } else { + func_8001F324(0xFF, 0xFF, 0xFF, 0xFF); + } + + if (i == 1) { + temp_t0 = (i + 1) & 0xFF; + } else { + temp_t0 = i; + } + + func_8001F1E8((0x140 - D_8780FE30) / 2, (i * 0x12) + 0x68, "%s", D_8780FE18[temp_t0]); + } + + func_8001F444(); + } else { + if (D_8780FC60 != 0) { + if (D_8780FCA2 > 0) { + D_8780FCA2--; + } + func_87804320(D_8780FCA2, D_8780FC50[0], D_8780FC50[1], D_8780FC50[2], D_8780FC50[3]); + } + + if ((D_8780FC40 != 0) && (D_8780FC40 != 1)) { + func_8001F504(0, 0, 0x140, 0xF0, 0, 0, 0, 0xB4); + } + + if (D_8780FC64 != 0) { + D_8780FCAA -= 0x14; + if (D_8780FCAA <= 0) { + D_8780FCAA = 0; + if (D_8780FDF8 == 0) { + D_8780FDF8 = 1; + func_8004D858(0x13, 0); + + for (i = 0; i < 4; i++) { + if (D_8780FC50[i] != 0) { + D_8780FCD8[i][D_8780FA40[i] - 1].unk_00 = (i * 0x36) + 0x4F; + D_8780FCD8[i][D_8780FA40[i] - 1].unk_02 = -0x58; + D_8780FCD8[i][D_8780FA40[i] - 1].unk_04 = + 360.0f - + ((((s32)((0xC8 - D_8780FA40[i] * 0x12) - D_8780FCD8[i][D_8780FA40[i] - 1].unk_02) / 6) % + 24) * + 15.0f); + } + } + } + + if (D_8780FE00 >= 0) { + if (D_8780FE00 == 0) { + if ((D_8780FC50[0] + D_8780FC50[1] + D_8780FC50[2] + D_8780FC50[3]) != 0) { + func_8004D858(0x14, 0); + } + } + D_8780FE00--; + } + } + + func_87804AD0(D_8780FCAA); + func_87803368(D_8780FCAA); + } + + if (D_8780FC68 != 0) { + switch (D_8780FCA3) { + case 0: + D_8780FCA4 -= D_8780FCA0; + if (D_8780FCA4 < 0xB4) { + func_8004B1CC(0x2C); + D_8780FCA3 = 1; + } + break; + + case 1: + D_8780FCA4 -= D_8780FCA0; + if (D_8780FCA4 < 0) { + D_8780FCA3 = 2; + } + break; + + case 2: + if (D_8780FCA6 > 0) { + D_8780FCA6--; + } + func_87804320(D_8780FCA6, -1, -1, -1, -1); + break; + } + } + + if (D_8780FC6C != 0) { + sp60 = func_8002D7C0(0, 0, D_87806330, 0x57); + sp5C = func_8002D7C0(0, 0, D_87806330, 0x58); + sp44 = func_8002D80C(sp60); + tmp = func_8002D80C(sp5C); + tmp = sp44 + tmp; + temp_t0 = tmp * 0x10; + temp_t0 += tmp * 2; + temp_t0 -= 2; + sp55 = (0xF0 - temp_t0) >> 1; + func_87803200(0x1E, sp55 - 7, 0x104, temp_t0 + 0xE, &sp68[0], &sp68[3]); + func_8001F3F4(); + func_8001F470(); + func_8001F324(0xFF, 0xFD, 0xD4, 0xFF); + func_8001F36C(0xBA, 0xB7, 0, 0xFF); + func_8001EBE0(4, 0); + func_8001F3B4(0x12); + func_8001F1E8(0x28, sp55, sp60); + sp55 = (sp55 + (sp44 * 0x12)); + func_8001F1E8(0x28, sp55 & 0xFF, sp5C); + func_8001F4C4(); + func_8001F444(); + } + + if (D_8780FC70 != 0) { + if (D_8780FC4C == 0) { + if (D_8780FA2A == 0) { + func_87803200(((0x140 - D_8780FE32) / 2) - 0xA, 0x58, D_8780FE32 + 0x14, 0x42, &sp70[0], &sp70[3]); + } else { + func_87803200(((0x140 - D_8780FE34) / 2) - 0xA, 0x58, D_8780FE34 + 0x14, 0x42, &sp70[0], &sp70[3]); + } + } else { + func_87803200(((0x140 - D_8780FE36) / 2) - 0xA, 0x61, D_8780FE36 + 0x14, 0x30, &sp70[0], &sp70[3]); + } + func_8001F3F4(); + func_8001EBE0(4, 0); + + for (i = 0; i < D_8780FC5D; i++) { + if (D_8780FC5C == i) { + func_8001F324(0xFF, 0xFF, 0, 0xFF); + } else { + func_8001F324(0xFF, 0xFF, 0xFF, 0xFF); + } + + if (D_8780FC4C == 0) { + if (D_8780FA2A == 0) { + func_8001F1E8((0x140 - D_8780FE32) / 2, (i * 0x12) + 0x5F, "%s", D_8780FE08[i]); + } else { + func_8001F1E8((0x140 - D_8780FE34) / 2, (i * 0x12) + 0x5F, "%s", D_8780FE18[i]); + } + } else { + func_8001F1E8((0x140 - D_8780FE36) / 2, (i * 0x12) + 0x68, "%s", D_8780FE28[i]); + } + } + + func_8001F444(); + } + + if (D_8780FC74 != 0) { + func_8001F3F4(); + func_8001F470(); + func_8001EBE0(0x10, 0); + func_8001F324(0xE6, 0xD2, 0xFF, 0xFF); + func_8001F36C(0x82, 0x50, 0xD2, 0xFF); + func_8001F1E8(0xA0 - (func_878013D4(NULL, func_8002D7C0(0, 0, D_87806330, 0x56)) / 2), 0x6C, + func_8002D7C0(0, 0, D_87806330, 0x56)); + func_8001F4C4(); + func_8001F444(); + } + } + + D_8780FC9A = sp67; + D_8780FC9B = sp66; + D_8780FC48++; + + return 0; +} diff --git a/yamls/us/rom.yaml b/yamls/us/rom.yaml index d1974488..d573fc08 100644 --- a/yamls/us/rom.yaml +++ b/yamls/us/rom.yaml @@ -534,10 +534,17 @@ subsegments: - [0x107FA0, textbin, fragments/2/fragment2_header] - [0x107FC0, c, fragments/2/fragment2] - - [0x10E2D0, data, fragments/2/fragment2_data] - - [0x117850, rodata, fragments/2/fragment2_rodata] - - - {vram: 0x8780FA20, type: bss, name: unk_frag2_bss} + - [0x10A300, c, fragments/2/fragment2_1] + - [0x10A960, c, fragments/2/fragment2_2] + - [0x10E2D0, .data, fragments/2/fragment2] + - [0x10E330, .data, fragments/2/fragment2_1] + - [0x10E490, .data, fragments/2/fragment2_2] + - [0x117970, .rodata, fragments/2/fragment2_1] + - [0x117980, .rodata, fragments/2/fragment2_2] + + - {vram: 0x8780FA20, type: .bss, name: fragments/2/fragment2} + - {vram: 0x8780FAC0, type: .bss, name: fragments/2/fragment2_1} + - {vram: 0x8780FC40, type: .bss, name: fragments/2/fragment2_2} - name: fragment2_relocs type: code