summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlejandro Asenjo Nitti <96613413+sonicdcer@users.noreply.github.com>2024-02-06 12:14:05 -0300
committerGitHub <noreply@github.com>2024-02-06 12:14:05 -0300
commit4a85ee2663a68221525bb4aa51e0eb7e4075d8d0 (patch)
tree7677357e45627d8edf1a1ff82be8c53d1a38dc71
parent092b8fc16951d76c5bf2616504519f0bb239ae07 (diff)
fox_end2 decompiled (#116)
* func_ending_8018CE20 * progress * func_ending_8018D638 * func_ending_8018D814 * func_ending_8018DA0C * func_ending_8018DCB4 * func_ending_8018E1B8 * func_ending_8018E7B8 * func_ending_8018F2A8 * func_ending_8018F64C * func_ending_8018FC60 * func_ending_80190274 * func_ending_80190648 * func_ending_80190778 * func_ending_80190CF0 * func_ending_80191234 * func_ending_80191294 * func_ending_80191710 * func_ending_80191C7C * func_ending_80192164 * func_ending_80192290 * func_ending_8019237C * func_ending_801926D4 * . * everything matches * MISSION ACCOMPLISHED * review * ultratype * LEVEL_UNK_M1
-rw-r--r--.vscode/settings.json3
-rw-r--r--include/assets.h1
-rw-r--r--include/sf64level.h1
-rw-r--r--linker_scripts/us/undefined_syms.ld5
-rw-r--r--src/main/fox_play.c2
-rw-r--r--src/overlays/ovl_ending/fox_end1.c (renamed from src/overlays/ovl_ending/sf_ending_1.c)4
-rw-r--r--src/overlays/ovl_ending/fox_end2.c1052
-rw-r--r--src/overlays/ovl_ending/fox_end2_data.c327
-rw-r--r--src/overlays/ovl_ending/sf_ending_2.c221
-rw-r--r--src/overlays/ovl_menu/fox_option.c2
-rw-r--r--yamls/us/overlays.yaml16
11 files changed, 1400 insertions, 234 deletions
diff --git a/.vscode/settings.json b/.vscode/settings.json
index 910a3c8f..0ef8ac66 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -51,7 +51,8 @@
"sf64level.h": "c",
"prevent_bss_reordering2.h": "c",
"ast_aq.h": "c",
- "ast_8e1f80.h": "c"
+ "ast_8e1f80.h": "c",
+ "fox_end2.inc" : "c"
},
"C_Cpp_Runner.msvcBatchPath": ""
} \ No newline at end of file
diff --git a/include/assets.h b/include/assets.h
index 96486184..bc25d37e 100644
--- a/include/assets.h
+++ b/include/assets.h
@@ -987,7 +987,6 @@ extern u16 D_70123F8[];
extern u16 D_70123F8[];
// ast_9EB5E0, ast_CA9DE0, ast_D43400, ast_D68480, ast_D91F10
-extern u8 D_8000000[];
extern u16 D_8000680[];
extern u8 D_80006A0[];
extern u16 D_80017A0[];
diff --git a/include/sf64level.h b/include/sf64level.h
index 69078b02..f89a303d 100644
--- a/include/sf64level.h
+++ b/include/sf64level.h
@@ -64,6 +64,7 @@ typedef enum {
} OverlaySetups;
typedef enum LevelId {
+ /* -1 */ LEVEL_UNK_M1 = -1,
/* 0 */ LEVEL_CORNERIA,
/* 1 */ LEVEL_METEO,
/* 2 */ LEVEL_SECTOR_X,
diff --git a/linker_scripts/us/undefined_syms.ld b/linker_scripts/us/undefined_syms.ld
index 53c24330..cae4a456 100644
--- a/linker_scripts/us/undefined_syms.ld
+++ b/linker_scripts/us/undefined_syms.ld
@@ -906,3 +906,8 @@ D_C038860 = 0x0C038860;
D_C038954 = 0x0C038954;
D_fake_i6_80196D00 = 0x80196D00;
+
+// fox_end2
+D_3016CC0 = 0x03016CC0;
+D_50054B0 = 0x050054B0;
+D_7016540 = 0x07016540;
diff --git a/src/main/fox_play.c b/src/main/fox_play.c
index 8ea0cf39..d3d4bb74 100644
--- a/src/main/fox_play.c
+++ b/src/main/fox_play.c
@@ -7,7 +7,7 @@ f32 D_800D2F58 = 0.0f;
f32 D_800D2F5C = 0.0f;
f32 D_800D2F60 = 0.0f;
f32 D_800D2F64 = 0.0f;
-u8 D_800D2F68 = 0;
+u8 D_800D2F68 = false;
u8 D_800D2F6C[20] = {
PLANET_CORNERIA, PLANET_METEO, PLANET_SECTOR_X, PLANET_AREA_6, PLANET_AREA_6,
PLANET_SECTOR_Y, SAVE_SLOT_VENOM_1, SAVE_SLOT_SOLAR, PLANET_ZONESS, SAVE_SLOT_VENOM_1,
diff --git a/src/overlays/ovl_ending/sf_ending_1.c b/src/overlays/ovl_ending/fox_end1.c
index 48799f4c..bf59b9dc 100644
--- a/src/overlays/ovl_ending/sf_ending_1.c
+++ b/src/overlays/ovl_ending/fox_end1.c
@@ -187,7 +187,7 @@ void func_ending_80187860(s32 arg0, s32 arg1) {
#else
Animation* D_ending_80192820[4] = { &D_60246F8, &D_60338DC, &D_6036278, &D_603531C };
void func_ending_80187860(s32, s32);
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_1/func_ending_80187860.s")
+#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/fox_end1/func_ending_80187860.s")
#endif
void func_ending_80187D3C(s32 arg0) {
@@ -407,7 +407,7 @@ void func_ending_8018845C(void) {
}
#else
void func_ending_8018845C(void);
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_1/func_ending_8018845C.s")
+#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/fox_end1/func_ending_8018845C.s")
#endif
s32 func_ending_80188634(void) {
diff --git a/src/overlays/ovl_ending/fox_end2.c b/src/overlays/ovl_ending/fox_end2.c
new file mode 100644
index 00000000..849d60d8
--- /dev/null
+++ b/src/overlays/ovl_ending/fox_end2.c
@@ -0,0 +1,1052 @@
+#include "global.h"
+#include "fox_end2_data.c"
+
+void func_ending_8018CE20(u32 arg0) {
+ u8 alpha;
+ s32 i;
+ s32 xPos;
+
+ for (i = 0; i < ARRAY_COUNT(D_ending_80192E74); i++) {
+ if (D_ending_80192E74[i].unk_00 != NULL) {
+ if ((D_ending_80192E74[i].unk_04 <= arg0) &&
+ ((D_ending_80192E74[i].unk_04 + D_ending_80192E74[i].unk_08) > arg0)) {
+ alpha = 255;
+
+ if ((D_ending_80192E74[i].unk_04 + D_ending_80192E74[i].unk_12) > arg0) {
+ alpha = (arg0 - D_ending_80192E74[i].unk_04) * 255 / D_ending_80192E74[i].unk_12;
+ }
+
+ if ((D_ending_80192E74[i].unk_04 + D_ending_80192E74[i].unk_08 - D_ending_80192E74[i].unk_13) < arg0) {
+ alpha = (D_ending_80192E74[i].unk_04 + D_ending_80192E74[i].unk_08 - arg0) * 255 /
+ D_ending_80192E74[i].unk_13;
+ }
+
+ if ((D_ending_80192E74[i].unk_11 == 0) || (D_800D2F68 == true)) {
+ if (D_ending_80192E74[i].unk_10 == 1) {
+ xPos = (320 - Graphics_GetLargeTextWidth(D_ending_80192E74[i].unk_00)) / 2;
+ RCP_SetupDL(&gMasterDisp, 0x53);
+ gDPSetTextureFilter(gMasterDisp++, G_TF_POINT);
+ gDPSetPrimColor(gMasterDisp++, 0, 0, 255, 255, 255, alpha);
+ Graphics_DisplayLargeText(xPos, D_ending_80192E74[i].unk_0E, 1.0f, 1.0f,
+ D_ending_80192E74[i].unk_00);
+
+ } else if (D_ending_80192E74[i].unk_10 == 2) {
+ RCP_SetupDL(&gMasterDisp, 0x53);
+ gDPSetTextureFilter(gMasterDisp++, G_TF_POINT);
+ gDPSetPrimColor(gMasterDisp++, 0, 0, 255, 255, 255, alpha);
+ TextureRect_8bIA(&gMasterDisp, D_ending_80192E74[i].unk_00, 192, 5, 64.0f, 105.0f, 1.0f, 1.0f);
+ TextureRect_8bIA(&gMasterDisp, D_ending_80192E74[i].unk_00 + 960 * 1, 192, 5, 64.0f, 110.0f,
+ 1.0f, 1.0f);
+ TextureRect_8bIA(&gMasterDisp, D_ending_80192E74[i].unk_00 + 960 * 2, 192, 5, 64.0f, 115.0f,
+ 1.0f, 1.0f);
+ TextureRect_8bIA(&gMasterDisp, D_ending_80192E74[i].unk_00 + 960 * 3, 192, 5, 64.0f, 120.0f,
+ 1.0f, 1.0f);
+ TextureRect_8bIA(&gMasterDisp, D_ending_80192E74[i].unk_00 + 960 * 4, 192, 5, 64.0f, 125.0f,
+ 1.0f, 1.0f);
+ TextureRect_8bIA(&gMasterDisp, D_ending_80192E74[i].unk_00 + 960 * 5, 192, 5, 64.0f, 130.0f,
+ 1.0f, 1.0f);
+ } else {
+ xPos = (320 - Graphics_GetSmallTextWidth(D_ending_80192E74[i].unk_00)) / 2;
+ RCP_SetupDL(&gMasterDisp, 0x53);
+ gDPSetTextureFilter(gMasterDisp++, G_TF_POINT);
+ gDPSetPrimColor(gMasterDisp++, 0, 0, 255, 155, 155, alpha);
+ Graphics_DisplaySmallText(xPos, D_ending_80192E74[i].unk_0E, 1.0f, 1.0f,
+ D_ending_80192E74[i].unk_00);
+ }
+ }
+ }
+ }
+ }
+}
+
+void func_ending_8018D250(u32 arg0, AssetInfo* asset) {
+ gOverlayStage = asset->unk_08;
+ D_80137E78 = asset->unk_70;
+ D_80178410 = asset->unk_14;
+}
+
+void func_ending_8018D28C(s32 arg0, AssetInfo* asset) {
+ D_8017842C += asset->unk_18.x;
+ D_80178430 += asset->unk_18.y;
+}
+
+void func_ending_8018D2C8(u32 arg0, AssetInfo* asset) {
+ u8 alpha = 255;
+
+ if ((asset->unk_0C + asset->fogNear) > arg0) {
+ alpha = (arg0 - asset->unk_0C) * 255 / asset->fogNear;
+ }
+
+ if ((asset->unk_0C + asset->unk_10 - asset->fogFar) < arg0) {
+ alpha = (asset->unk_0C + asset->unk_10 - arg0 - 1) * 255 / asset->fogFar;
+ }
+
+ D_80178348 = asset->primRed;
+ D_80178350 = asset->primGreen;
+ D_80178354 = asset->primBlue;
+
+ D_80178340 = D_80178358 = alpha;
+ D_8017835C = 0;
+}
+
+void func_ending_8018D398(u32 arg0, AssetInfo* asset) {
+ u8 alpha = 255;
+
+ if ((asset->unk_0C + asset->fogNear) > arg0) {
+ alpha = (arg0 - asset->unk_0C) * 255 / asset->fogNear;
+ }
+
+ if ((asset->unk_0C + asset->unk_10 - asset->fogFar) < arg0) {
+ alpha = (asset->unk_0C + asset->unk_10 - arg0) * 255 / asset->fogFar;
+ }
+
+ D_80178348 = D_80178350 = D_80178354 = D_80178340 = D_80178358 = D_8017835C = 0;
+
+ Graphics_FillRectangle(&gMasterDisp, 8, 8, SCREEN_WIDTH - 8, SCREEN_HEIGHT - 8, asset->primRed, asset->primGreen,
+ asset->primBlue, alpha);
+}
+
+void func_ending_8018D4BC(s32 arg0, AssetInfo* asset) {
+ Vec3f src;
+ Vec3f dest;
+
+ Matrix_RotateY(gCalcMatrix, M_DTOR * D_ending_801985F0.y, 0);
+ Matrix_RotateX(gCalcMatrix, M_DTOR * D_ending_801985F0.x, 1);
+ Matrix_RotateZ(gCalcMatrix, M_DTOR * D_ending_801985F0.z, 1);
+
+ src.x = asset->unk_18.x;
+ src.y = asset->unk_18.y;
+ src.z = asset->unk_18.z;
+
+ Matrix_MultVec3fNoTranslate(gCalcMatrix, &src, &dest);
+
+ Lights_SetOneLight(&gMasterDisp, dest.x, dest.y, dest.z, asset->unk_24.x, asset->unk_24.y, asset->unk_24.z,
+ asset->unk_30.x, asset->unk_30.y, asset->unk_30.z);
+}
+
+void func_ending_8018D638(u32 arg0, AssetInfo* asset) {
+ u8 alpha = 0;
+ s32 i;
+
+ if ((asset->unk_0C + asset->fogFar) > arg0) {
+ alpha = (asset->unk_0C + asset->fogFar - arg0) * 255 / asset->fogFar;
+ }
+
+ D_80178348 = asset->primRed;
+ D_80178350 = asset->primGreen;
+ D_80178354 = asset->primBlue;
+
+ D_80178340 = D_80178358 = alpha;
+ D_8017835C = 0;
+
+ RCP_SetupDL(&gMasterDisp, 0x53);
+
+ gDPSetPrimColor(gMasterDisp++, 0, 0, 255, 255, 255, 255);
+
+ if (gExpertMode != 0) {
+ for (i = 0; i < 240; i += 4) {
+ if (!D_800D2F68) {
+ TextureRect_16bRGBA(&gMasterDisp, D_8025080 + 316 * i, 316, 4, 0.0f, i, 1.0f, 1.0f);
+ } else {
+ TextureRect_16bRGBA(&gMasterDisp, D_8000000 + 316 * i, 316, 4, 0.0f, i, 1.0f, 1.0f);
+ }
+ }
+ } else {
+ D_ending_80192E70 = 7200;
+ }
+}
+
+void func_ending_8018D814(u32 arg0, AssetInfo* asset) {
+ u8 alpha = 255;
+
+ if ((asset->unk_0C + asset->fogNear) > arg0) {
+ alpha = (arg0 - asset->unk_0C) * 255 / asset->fogNear;
+ }
+
+ if ((asset->unk_0C + asset->unk_10 - asset->fogFar) < arg0) {
+ alpha = (asset->unk_0C + asset->unk_10 - arg0) * 255 / asset->fogFar;
+ }
+
+ RCP_SetupDL(&gMasterDisp, asset->unk_08);
+
+ gDPSetPrimColor(gMasterDisp++, 0, 0, asset->primRed, asset->primGreen, asset->primBlue, alpha);
+
+ TextureRect_8bIA(&gMasterDisp, D_5007240, 16, 15, asset->unk_18.x, asset->unk_18.y, 1.0f, 1.0f);
+ TextureRect_8bIA(&gMasterDisp, D_5007420, 16, 15, asset->unk_18.x + 16.0f * 1, asset->unk_18.y, 1.0f, 1.0f);
+ TextureRect_8bIA(&gMasterDisp, D_5007420, 16, 15, asset->unk_18.x + 16.0f * 2, asset->unk_18.y, 1.0f, 1.0f);
+ TextureRect_8bIA(&gMasterDisp, D_5007330, 16, 15, asset->unk_18.x + 16.0f * 3, asset->unk_18.y, 1.0f, 1.0f);
+}
+
+void func_ending_8018DA0C(u32 arg0, AssetInfo* asset) {
+ u8 alpha = 255;
+
+ if ((asset->unk_0C + asset->fogNear) > arg0) {
+ alpha = (arg0 - asset->unk_0C) * 255 / asset->fogNear;
+ }
+
+ RCP_SetupDL(&gMasterDisp, asset->unk_08);
+ gDPSetPrimColor(gMasterDisp++, 0, 0, asset->primRed, asset->primGreen, asset->primBlue, alpha);
+
+ Graphics_DisplaySmallText((s16) asset->unk_18.x, (s16) asset->unk_18.y, asset->unk_30.x, asset->unk_30.y,
+ "TOTAL HITS");
+ Graphics_DisplayLargeNumber((s16) (asset->unk_18.x + 5), (s16) (asset->unk_18.y + 13), gTotalHits);
+
+ if ((func_ending_8018DCB4() == true) && (alpha == 255)) {
+ alpha = (arg0 - (asset->unk_0C + asset->fogNear)) % 10;
+
+ switch (alpha) {
+ case 0:
+ case 1:
+ case 2:
+ case 3:
+ alpha = 83 * alpha;
+ break;
+ case 4:
+ case 5:
+ case 6:
+ case 7:
+ case 8:
+ case 9:
+ alpha = 42 * (10 - alpha);
+ break;
+ }
+ gDPSetPrimColor(gMasterDisp++, 0, 0, asset->primRed, asset->primGreen, asset->primBlue, alpha);
+ Graphics_DisplaySmallText((s16) (asset->unk_18.x + 7), (s16) (asset->unk_18.y + 31), asset->unk_30.x,
+ asset->unk_30.y, "RANK IN!!");
+ }
+}
+
+bool func_ending_8018DCB4(void) {
+ s32 i;
+ s32 j;
+ s32 k;
+ s32 m;
+ s32 temp;
+ s32 temp2 = 0;
+ s32 temp3 = 0;
+ s32 temp4[10];
+ s32 unk_5E[10][7];
+ s32 unk40[10];
+
+ for (i = 0; i < gCurrentPlanet + 1; i++) {
+ temp2 += ((D_80177B50[i] & 0x00FF0000) >> 16) & 1;
+ temp2 += ((D_80177B50[i] & 0x0000FF00) >> 8) & 1;
+ temp2 += (D_80177B50[i] & 0x000000FF) & 1;
+ }
+
+ for (i = 0; i < 10; i += 1) {
+ temp4[i] = 0;
+ unk40[i] = gSaveFile.save.data.unk_40[i];
+
+ for (j = 0; j < 7; j += 1) {
+ temp4[i] += gSaveFile.save.data.unk_5E[i][j].unk_0 + (gSaveFile.save.data.unk_5E[i][j].unk_C * 256);
+ unk_5E[i][0] += gSaveFile.save.data.unk_5E[i][j].unk_D & 1;
+ unk_5E[i][1] += gSaveFile.save.data.unk_5E[i][j].unk_F & 1;
+ unk_5E[i][2] += gSaveFile.save.data.unk_5E[i][j].unk_E & 1;
+ }
+ }
+
+ temp = -1;
+
+ for (i = 0; i < 10; i++) {
+ if (temp4[i] <= gTotalHits) {
+ if (temp4[i] == gTotalHits) {
+ for (j = i; j < 10; j++) {
+ if (temp4[j] != gTotalHits) {
+ temp = j;
+ break;
+ }
+
+ if (unk40[j] <= gLifeCount[gPlayerNum]) {
+ if (unk40[j] == gLifeCount[gPlayerNum]) {
+ for (k = j; k < 10; k++) {
+ if ((unk40[k] != gLifeCount[gPlayerNum]) || (temp4[k] != gTotalHits)) {
+ temp = k;
+ break;
+ }
+
+ temp3 = 0;
+
+ for (m = 0; m < 3; m++) {
+ temp3 += unk_5E[k][m];
+ }
+
+ if (temp2 > temp3) {
+ temp = k;
+ break;
+ }
+ }
+ } else {
+ temp = j;
+ }
+ break;
+ }
+ }
+ } else {
+ temp = i;
+ }
+ break;
+ }
+ }
+
+ if (temp == -1) {
+ return false;
+ } else {
+ return true;
+ }
+}
+
+void func_ending_8018E1B8(u32 arg0, AssetInfo* asset) {
+ f32 temp;
+
+ if ((asset->unk_18.z + (arg0 - asset->unk_0C) * asset->unk_3C.z) < D_ending_801985D0.z) {
+ RCP_SetupDL(&gMasterDisp, 0x43);
+ } else {
+ RCP_SetupDL(&gMasterDisp, 0x3F);
+ }
+
+ gSPFogPosition(gMasterDisp++, asset->fogNear, asset->fogFar);
+ gDPSetFogColor(gMasterDisp++, asset->fogRed, asset->fogGreen, asset->fogBlue, 0);
+ gDPSetEnvColor(gMasterDisp++, asset->envRed, asset->envGreen, asset->envBlue, asset->envAlpha);
+ gDPSetPrimColor(gMasterDisp++, 0, 0, asset->primRed, asset->primGreen, asset->primBlue, asset->primAlpha);
+
+ Matrix_Translate(gGfxMatrix, asset->unk_18.x + (arg0 - asset->unk_0C) * asset->unk_3C.x,
+ asset->unk_18.y + (arg0 - asset->unk_0C) * asset->unk_3C.y,
+ asset->unk_18.z + (arg0 - asset->unk_0C) * asset->unk_3C.z, 1);
+
+ Matrix_Scale(gGfxMatrix, asset->unk_30.x + (arg0 % 3) * 0.01f, asset->unk_30.y + (arg0 % 3) * 0.01f,
+ asset->unk_30.z + (arg0 % 3) * 0.01f, 1);
+
+ temp = __sinf(arg0 * 0.1f + asset->unk_70);
+
+ switch (asset->unk_71) {
+ case 1:
+ Matrix_RotateY(gGfxMatrix,
+ M_DTOR * (-D_ending_801985F0.y + asset->unk_24.y + temp * asset->unk_54.y +
+ (arg0 - asset->unk_0C) * asset->unk_48.y),
+ 1);
+ Matrix_RotateX(gGfxMatrix,
+ M_DTOR * (-D_ending_801985F0.x + asset->unk_24.x + temp * asset->unk_54.x +
+ (arg0 - asset->unk_0C) * asset->unk_48.x),
+ 1);
+ Matrix_RotateZ(gGfxMatrix,
+ M_DTOR * (D_ending_801985F0.z + asset->unk_24.z + temp * asset->unk_54.z +
+ (arg0 - asset->unk_0C) * asset->unk_48.z),
+ 1);
+ break;
+
+ default:
+ Matrix_RotateY(
+ gGfxMatrix,
+ M_DTOR * (asset->unk_24.y + temp * asset->unk_54.y + (arg0 - asset->unk_0C) * asset->unk_48.y), 1);
+ Matrix_RotateX(
+ gGfxMatrix,
+ M_DTOR * (asset->unk_24.x + temp * asset->unk_54.x + (arg0 - asset->unk_0C) * asset->unk_48.x), 1);
+ Matrix_RotateZ(
+ gGfxMatrix,
+ M_DTOR * (asset->unk_24.z + temp * asset->unk_54.z + (arg0 - asset->unk_0C) * asset->unk_48.z), 1);
+ break;
+ }
+
+ Matrix_SetGfxMtx(&gMasterDisp);
+ gSPDisplayList(gMasterDisp++, D_7010970);
+}
+
+void func_ending_8018E7B8(u32 arg0, AssetInfo* asset) {
+ f32 temp;
+
+ if ((asset->unk_18.z + (arg0 - asset->unk_0C) * asset->unk_3C.z) < D_ending_801985D0.z) {
+ RCP_SetupDL(&gMasterDisp, 0x43);
+ } else {
+ RCP_SetupDL(&gMasterDisp, 0x3F);
+ }
+
+ gSPFogPosition(gMasterDisp++, asset->fogNear, asset->fogFar);
+ gDPSetFogColor(gMasterDisp++, asset->fogRed, asset->fogGreen, asset->fogBlue, 0);
+ gDPSetEnvColor(gMasterDisp++, asset->envRed, asset->envGreen, asset->envBlue, asset->envAlpha);
+ gDPSetPrimColor(gMasterDisp++, 0, 0, asset->primRed, asset->primGreen, asset->primBlue, asset->primAlpha);
+
+ Matrix_Translate(gGfxMatrix, asset->unk_18.x + (arg0 - asset->unk_0C) * asset->unk_3C.x,
+ asset->unk_18.y + (arg0 - asset->unk_0C) * asset->unk_3C.y,
+ asset->unk_18.z + (arg0 - asset->unk_0C) * asset->unk_3C.z, 1);
+
+ temp = __sinf(arg0 * 0.1f + asset->unk_70);
+
+ switch (asset->unk_71) {
+ case 1:
+ Matrix_RotateY(gGfxMatrix,
+ M_DTOR * (-D_ending_801985F0.y + asset->unk_24.y + temp * asset->unk_54.y +
+ (arg0 - asset->unk_0C) * asset->unk_48.y),
+ 1);
+ Matrix_RotateX(gGfxMatrix,
+ M_DTOR * (-D_ending_801985F0.x + asset->unk_24.x + temp * asset->unk_54.x +
+ (arg0 - asset->unk_0C) * asset->unk_48.x),
+ 1);
+ Matrix_RotateZ(gGfxMatrix,
+ M_DTOR * (D_ending_801985F0.z + asset->unk_24.z + temp * asset->unk_54.z +
+ (arg0 - asset->unk_0C) * asset->unk_48.z),
+ 1);
+ break;
+
+ default:
+ Matrix_RotateY(
+ gGfxMatrix,
+ M_DTOR * (asset->unk_24.y + temp * asset->unk_54.y + (arg0 - asset->unk_0C) * asset->unk_48.y), 1);
+ Matrix_RotateX(
+ gGfxMatrix,
+ M_DTOR * (asset->unk_24.x + temp * asset->unk_54.x + (arg0 - asset->unk_0C) * asset->unk_48.x), 1);
+ Matrix_RotateZ(
+ gGfxMatrix,
+ M_DTOR * (asset->unk_24.z + temp * asset->unk_54.z + (arg0 - asset->unk_0C) * asset->unk_48.z), 1);
+ break;
+ }
+
+ Matrix_Scale(gGfxMatrix, asset->unk_30.x + (arg0 % 3) * 0.5f, asset->unk_30.y + (arg0 % 3) * 0.5f,
+ asset->unk_30.z + (arg0 % 3) * 0.5f, 1);
+
+ Matrix_SetGfxMtx(&gMasterDisp);
+
+ gSPDisplayList(gMasterDisp++, D_7010970);
+}
+
+void func_ending_8018EDB8(u32 arg0, AssetInfo* asset) {
+ f32 temp;
+
+ D_80178410 = 0;
+
+ RCP_SetupDL(&gMasterDisp, asset->unk_08);
+
+ gSPFogPosition(gMasterDisp++, asset->fogNear, asset->fogFar);
+ gDPSetFogColor(gMasterDisp++, asset->fogRed, asset->fogGreen, asset->fogBlue, 0);
+ gDPSetPrimColor(gMasterDisp++, 0, 0, asset->primRed, asset->primGreen, asset->primBlue, asset->primAlpha);
+
+ Matrix_Translate(gGfxMatrix, asset->unk_18.x + (arg0 - asset->unk_0C) * asset->unk_3C.x,
+ asset->unk_18.y + (arg0 - asset->unk_0C) * asset->unk_3C.y,
+ asset->unk_18.z + (arg0 - asset->unk_0C) * asset->unk_3C.z, 1);
+
+ Matrix_Scale(gGfxMatrix, asset->unk_30.x, asset->unk_30.y, asset->unk_30.z, 1);
+
+ temp = __sinf(arg0 * 0.1f + asset->unk_70);
+
+ Matrix_RotateY(gGfxMatrix,
+ M_DTOR * (asset->unk_24.y + temp * asset->unk_54.y + (arg0 - asset->unk_0C) * asset->unk_48.y), 1);
+ Matrix_RotateX(gGfxMatrix,
+ M_DTOR * (asset->unk_24.x + temp * asset->unk_54.x + (arg0 - asset->unk_0C) * asset->unk_48.x), 1);
+ Matrix_RotateZ(gGfxMatrix,
+ M_DTOR * (asset->unk_24.z + temp * asset->unk_54.z + (arg0 - asset->unk_0C) * asset->unk_48.z), 1);
+
+ Matrix_SetGfxMtx(&gMasterDisp);
+
+ gDPLoadTextureBlock(gMasterDisp++, D_700EA38, G_IM_FMT_RGBA, G_IM_SIZ_16b, 32, 32, 0, G_TX_WRAP | G_TX_NOMIRROR,
+ G_TX_WRAP | G_TX_NOMIRROR, 5, 5, G_TX_NOLOD, G_TX_NOLOD);
+
+ gDPTileSync(gMasterDisp++);
+ gDPSetTile(gMasterDisp++, G_IM_FMT_RGBA, G_IM_SIZ_16b, (((32 * G_IM_SIZ_16b_LINE_BYTES) + 7) >> 3), 0, 0, 0,
+ G_TX_WRAP, 5, 0, G_TX_WRAP, 5, 0);
+ gDPSetTileSize(gMasterDisp++, 0, arg0 * 14, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC);
+
+ gSPDisplayList(gMasterDisp++, D_700E9E0);
+}
+
+void func_ending_8018F2A8(u32 arg0, AssetInfo* asset) {
+ f32 temp;
+
+ RCP_SetupDL(&gMasterDisp, asset->unk_08);
+
+ gSPFogPosition(gMasterDisp++, asset->fogNear, asset->fogFar);
+ gDPSetFogColor(gMasterDisp++, asset->fogRed, asset->fogGreen, asset->fogBlue, 0);
+ gDPSetPrimColor(gMasterDisp++, 0, 0, asset->primRed, asset->primGreen, asset->primBlue, asset->primAlpha);
+
+ Matrix_Translate(gGfxMatrix, asset->unk_18.x + (arg0 - asset->unk_0C) * asset->unk_3C.x,
+ asset->unk_18.y + (arg0 - asset->unk_0C) * asset->unk_3C.y,
+ asset->unk_18.z + (arg0 - asset->unk_0C) * asset->unk_3C.z, 1);
+
+ Matrix_Scale(gGfxMatrix, asset->unk_30.x, asset->unk_30.y, asset->unk_30.z, 1);
+
+ temp = __sinf(arg0 * 0.1f + asset->unk_70);
+
+ Matrix_RotateY(gGfxMatrix,
+ M_DTOR * (asset->unk_24.y + temp * asset->unk_54.y + (arg0 - asset->unk_0C) * asset->unk_48.y), 1);
+ Matrix_RotateX(gGfxMatrix,
+ M_DTOR * (asset->unk_24.x + temp * asset->unk_54.x + (arg0 - asset->unk_0C) * asset->unk_48.x), 1);
+ Matrix_RotateZ(gGfxMatrix,
+ M_DTOR * (asset->unk_24.z + temp * asset->unk_54.z + (arg0 - asset->unk_0C) * asset->unk_48.z), 1);
+
+ Matrix_SetGfxMtx(&gMasterDisp);
+
+ gCurrentLevel = LEVEL_UNK_M1;
+
+ func_800515C4();
+}
+
+void func_ending_8018F64C(u32 arg0, AssetInfo* asset) {
+ f32 temp;
+
+ if (D_800D3180[8] == 0) {
+ return;
+ }
+
+ RCP_SetupDL(&gMasterDisp, asset->unk_08);
+
+ gSPFogPosition(gMasterDisp++, asset->fogNear, asset->fogFar);
+ gDPSetFogColor(gMasterDisp++, asset->fogRed, asset->fogGreen, asset->fogBlue, 0);
+ gDPSetEnvColor(gMasterDisp++, asset->envRed, asset->envGreen, asset->envBlue, asset->envAlpha);
+ gDPSetPrimColor(gMasterDisp++, 0, 0, asset->primRed, asset->primGreen, asset->primBlue, asset->primAlpha);
+
+ Matrix_Translate(gGfxMatrix, asset->unk_18.x + (arg0 - asset->unk_0C) * asset->unk_3C.x,
+ asset->unk_18.y + (arg0 - asset->unk_0C) * asset->unk_3C.y,
+ asset->unk_18.z + (arg0 - asset->unk_0C) * asset->unk_3C.z, 1);
+
+ Matrix_Scale(gGfxMatrix, asset->unk_30.x, asset->unk_30.y, asset->unk_30.z, 1);
+
+ temp = __sinf(arg0 * 0.1f + asset->unk_70);
+
+ switch (asset->unk_71) {
+ case 1:
+ Matrix_RotateY(gGfxMatrix,
+ M_DTOR * (-D_ending_801985F0.y + asset->unk_24.y + temp * asset->unk_54.y +
+ (arg0 - asset->unk_0C) * asset->unk_48.y),
+ 1);
+ Matrix_RotateX(gGfxMatrix,
+ M_DTOR * (-D_ending_801985F0.x + asset->unk_24.x + temp * asset->unk_54.x +
+ (arg0 - asset->unk_0C) * asset->unk_48.x),
+ 1);
+ Matrix_RotateZ(gGfxMatrix,
+ M_DTOR * (D_ending_801985F0.z + asset->unk_24.z + temp * asset->unk_54.z +
+ (arg0 - asset->unk_0C) * asset->unk_48.z),
+ 1);
+ break;
+
+ default:
+ Matrix_RotateY(
+ gGfxMatrix,
+ M_DTOR * (asset->unk_24.y + temp * asset->unk_54.y + (arg0 - asset->unk_0C) * asset->unk_48.y), 1);
+ Matrix_RotateX(
+ gGfxMatrix,
+ M_DTOR * (asset->unk_24.x + temp * asset->unk_54.x + (arg0 - asset->unk_0C) * asset->unk_48.x), 1);
+ Matrix_RotateZ(
+ gGfxMatrix,
+ M_DTOR * (asset->unk_24.z + temp * asset->unk_54.z + (arg0 - asset->unk_0C) * asset->unk_48.z), 1);
+ break;
+ }
+
+ Matrix_SetGfxMtx(&gMasterDisp);
+ gSPDisplayList(gMasterDisp++, D_D009A40);
+
+ RCP_SetupDL(&gMasterDisp, 0x43);
+ Matrix_Translate(gGfxMatrix, 0.0f, 0.0f, -60.0f, 1);
+
+ Matrix_Scale(gGfxMatrix, 0.8f + (arg0 % 3) * 0.01f, 0.3f + (arg0 % 3) * 0.01f, 0.8f + (arg0 % 3) * 0.01f, 1);
+ Matrix_SetGfxMtx(&gMasterDisp);
+
+ gSPDisplayList(gMasterDisp++, D_7010970);
+}
+
+void func_ending_8018FC60(u32 arg0, AssetInfo* asset) {
+ f32 temp;
+
+ if (D_800D3180[16] == 0) {
+ return;
+ }
+
+ RCP_SetupDL(&gMasterDisp, asset->unk_08);
+
+ gSPFogPosition(gMasterDisp++, asset->fogNear, asset->fogFar);
+ gDPSetFogColor(gMasterDisp++, asset->fogRed, asset->fogGreen, asset->fogBlue, 0);
+ gDPSetEnvColor(gMasterDisp++, asset->envRed, asset->envGreen, asset->envBlue, asset->envAlpha);
+ gDPSetPrimColor(gMasterDisp++, 0, 0, asset->primRed, asset->primGreen, asset->primBlue, asset->primAlpha);
+
+ Matrix_Translate(gGfxMatrix, asset->unk_18.x + (arg0 - asset->unk_0C) * asset->unk_3C.x,
+ asset->unk_18.y + (arg0 - asset->unk_0C) * asset->unk_3C.y,
+ asset->unk_18.z + (arg0 - asset->unk_0C) * asset->unk_3C.z, 1);
+
+ Matrix_Scale(gGfxMatrix, asset->unk_30.x, asset->unk_30.y, asset->unk_30.z, 1);
+
+ temp = __sinf(arg0 * 0.1f + asset->unk_70);
+
+ switch (asset->unk_71) {
+ case 1:
+ Matrix_RotateY(gGfxMatrix,
+ M_DTOR * (-D_ending_801985F0.y + asset->unk_24.y + temp * asset->unk_54.y +
+ (arg0 - asset->unk_0C) * asset->unk_48.y),
+ 1);
+ Matrix_RotateX(gGfxMatrix,
+ M_DTOR * (-D_ending_801985F0.x + asset->unk_24.x + temp * asset->unk_54.x +
+ (arg0 - asset->unk_0C) * asset->unk_48.x),
+ 1);
+ Matrix_RotateZ(gGfxMatrix,
+ M_DTOR * (D_ending_801985F0.z + asset->unk_24.z + temp * asset->unk_54.z +
+ (arg0 - asset->unk_0C) * asset->unk_48.z),
+ 1);
+ break;
+
+ default:
+ Matrix_RotateY(
+ gGfxMatrix,
+ M_DTOR * (asset->unk_24.y + temp * asset->unk_54.y + (arg0 - asset->unk_0C) * asset->unk_48.y), 1);
+ Matrix_RotateX(
+ gGfxMatrix,
+ M_DTOR * (asset->unk_24.x + temp * asset->unk_54.x + (arg0 - asset->unk_0C) * asset->unk_48.x), 1);
+ Matrix_RotateZ(
+ gGfxMatrix,
+ M_DTOR * (asset->unk_24.z + temp * asset->unk_54.z + (arg0 - asset->unk_0C) * asset->unk_48.z), 1);
+ break;
+ }
+
+ Matrix_SetGfxMtx(&gMasterDisp);
+ gSPDisplayList(gMasterDisp++, D_D00B880);
+
+ RCP_SetupDL(&gMasterDisp, 0x43);
+ Matrix_Translate(gGfxMatrix, 0.0f, 0.0f, -50.0f, 1);
+
+ Matrix_Scale(gGfxMatrix, 0.5f + (arg0 % 3) * 0.01f, 0.3f + (arg0 % 3) * 0.01f, 0.5f + (arg0 % 3) * 0.01f, 1);
+ Matrix_SetGfxMtx(&gMasterDisp);
+
+ gSPDisplayList(gMasterDisp++, D_7010970);
+}
+
+void func_ending_80190274(u32 arg0, AssetInfo* asset) {
+ f32 temp;
+
+ RCP_SetupDL(&gMasterDisp, asset->unk_08);
+
+ gSPFogPosition(gMasterDisp++, asset->fogNear, asset->fogFar);
+ gDPSetFogColor(gMasterDisp++, asset->fogRed, asset->fogGreen, asset->fogBlue, 0);
+ gDPSetPrimColor(gMasterDisp++, 0, 0, asset->primRed, asset->primGreen, asset->primBlue, asset->primAlpha);
+
+ Matrix_Translate(gGfxMatrix, D_ending_801985D0.x + asset->unk_18.x + (arg0 - asset->unk_0C) * asset->unk_3C.x,
+ D_ending_801985D0.y + asset->unk_18.y + (arg0 - asset->unk_0C) * asset->unk_3C.y,
+ D_ending_801985D0.z + asset->unk_18.z + (arg0 - asset->unk_0C) * asset->unk_3C.z, 1);
+
+ Matrix_Scale(gGfxMatrix, asset->unk_30.x, asset->unk_30.y, asset->unk_30.z, 1);
+
+ temp = __sinf(arg0 * 0.1f + asset->unk_70);
+
+ Matrix_RotateY(gGfxMatrix,
+ M_DTOR * (asset->unk_24.y + temp * asset->unk_54.y + (arg0 - asset->unk_0C) * asset->unk_48.y), 1);
+ Matrix_RotateX(gGfxMatrix,
+ M_DTOR * (asset->unk_24.x + temp * asset->unk_54.x + (arg0 - asset->unk_0C) * asset->unk_48.x), 1);
+ Matrix_RotateZ(gGfxMatrix,
+ M_DTOR * (asset->unk_24.z + temp * asset->unk_54.z + (arg0 - asset->unk_0C) * asset->unk_48.z), 1);
+
+ Matrix_SetGfxMtx(&gMasterDisp);
+
+ gSPDisplayList(gMasterDisp++, D_7004240);
+}
+
+void func_ending_80190648(s32 arg0, AssetInfo* asset) {
+ RCP_SetupDL(&gMasterDisp, asset->unk_08);
+
+ Matrix_RotateY(gGfxMatrix, M_DTOR * D_ending_801985F0.y, 0);
+ Matrix_RotateX(gGfxMatrix, M_DTOR * D_ending_801985F0.x, 1);
+ Matrix_RotateZ(gGfxMatrix, M_DTOR * D_ending_801985F0.z, 1);
+
+ Matrix_Translate(gGfxMatrix, asset->unk_18.x, asset->unk_18.y, asset->unk_18.z, 1);
+ Matrix_Scale(gGfxMatrix, asset->unk_30.x, asset->unk_30.y, asset->unk_30.z, 1);
+
+ Matrix_SetGfxMtx(&gMasterDisp);
+ gSPDisplayList(gMasterDisp++, D_7002120);
+}
+
+void func_ending_80190778(u32 arg0, AssetInfo* asset) {
+ f32 temp;
+
+ RCP_SetupDL(&gMasterDisp, asset->unk_08);
+
+ gSPFogPosition(gMasterDisp++, asset->fogNear, asset->fogFar);
+ gDPSetFogColor(gMasterDisp++, asset->fogRed, asset->fogGreen, asset->fogBlue, 0);
+ gDPSetEnvColor(gMasterDisp++, asset->envRed, asset->envGreen, asset->envBlue, asset->envAlpha);
+ gDPSetPrimColor(gMasterDisp++, 0, 0, asset->primRed, asset->primGreen, asset->primBlue, asset->primAlpha);
+
+ Matrix_Translate(gGfxMatrix, asset->unk_18.x + (arg0 - asset->unk_0C) * asset->unk_3C.x,
+ asset->unk_18.y - 6.0f + (arg0 - asset->unk_0C) * asset->unk_3C.y,
+ asset->unk_18.z + (arg0 - asset->unk_0C) * asset->unk_3C.z, 1);
+
+ Matrix_Scale(gGfxMatrix, asset->unk_30.x, asset->unk_30.y, asset->unk_30.z, 1);
+
+ temp = __sinf(arg0 * 0.2f + asset->unk_70);
+
+ switch (asset->unk_71) {
+ case 1:
+ Matrix_RotateY(gGfxMatrix,
+ M_DTOR * (-D_ending_801985F0.y + asset->unk_24.y + temp * asset->unk_54.y +
+ (arg0 - asset->unk_0C) * asset->unk_48.y),
+ 1);
+ Matrix_RotateX(gGfxMatrix,
+ M_DTOR * (-D_ending_801985F0.x + asset->unk_24.x + temp * asset->unk_54.x +
+ (arg0 - asset->unk_0C) * asset->unk_48.x),
+ 1);
+ Matrix_RotateZ(gGfxMatrix,
+ M_DTOR * (D_ending_801985F0.z + asset->unk_24.z + temp * asset->unk_54.z +
+ (arg0 - asset->unk_0C) * asset->unk_48.z),
+ 1);
+ break;
+
+ default:
+ Matrix_RotateY(
+ gGfxMatrix,
+ M_DTOR * (asset->unk_24.y + temp * asset->unk_54.y + (arg0 - asset->unk_0C) * asset->unk_48.y), 1);
+ Matrix_RotateX(
+ gGfxMatrix,
+ M_DTOR * (asset->unk_24.x + temp * asset->unk_54.x + (arg0 - asset->unk_0C) * asset->unk_48.x), 1);
+ Matrix_RotateZ(
+ gGfxMatrix,
+ M_DTOR * (asset->unk_24.z + temp * asset->unk_54.z + (arg0 - asset->unk_0C) * asset->unk_48.z), 1);
+ break;
+ }
+
+ Matrix_Translate(gGfxMatrix, 0.0f, 480.0f, 0.0f, 1);
+
+ Matrix_SetGfxMtx(&gMasterDisp);
+
+ gSPDisplayList(gMasterDisp++, D_3005AB0);
+}
+
+void func_ending_80190CF0(u32 arg0, AssetInfo* asset) {
+ u8 alpha = 255;
+ f32 temp;
+
+ if (D_800D2F68 == true) {
+ return;
+ }
+
+ if (arg0 == asset->unk_0C) {
+ Audio_PlaySfx(0x1940306EU, D_800C5D28, 4U, &D_800C5D34, &D_800C5D34, &D_800C5D3C);
+ }
+
+ RCP_SetupDL(&gMasterDisp, asset->unk_08);
+
+ gDPSetFogColor(gMasterDisp++, asset->fogRed, asset->fogGreen, asset->fogBlue, 0);
+ gDPSetEnvColor(gMasterDisp++, asset->envRed, asset->envGreen, asset->envBlue, asset->envAlpha);
+
+ if ((asset->unk_0C + asset->fogNear) > arg0) {
+ alpha = (arg0 - asset->unk_0C) * 255 / asset->fogNear;
+ }
+
+ gDPSetPrimColor(gMasterDisp++, 0, 0, asset->primRed, asset->primGreen, asset->primBlue, alpha);
+
+ Matrix_Translate(gGfxMatrix, asset->unk_18.x + (arg0 - asset->unk_0C) * asset->unk_3C.x,
+ asset->unk_18.y + (arg0 - asset->unk_0C) * asset->unk_3C.y,
+ asset->unk_18.z + (arg0 - asset->unk_0C) * asset->unk_3C.z, 1);
+
+ Matrix_Scale(gGfxMatrix, asset->unk_30.x, asset->unk_30.y, asset->unk_30.z, 1);
+
+ temp = __sinf(arg0 * 0.2f + asset->unk_70);
+
+ switch (asset->unk_71) {
+ case 1:
+ Matrix_RotateY(gGfxMatrix,
+ M_DTOR * (-D_ending_801985F0.y + asset->unk_24.y + temp * asset->unk_54.y +
+ (arg0 - asset->unk_0C) * asset->unk_48.y),
+ 1);
+ Matrix_RotateX(gGfxMatrix,
+ M_DTOR * (-D_ending_801985F0.x + asset->unk_24.x + temp * asset->unk_54.x +
+ (arg0 - asset->unk_0C) * asset->unk_48.x),
+ 1);
+ Matrix_RotateZ(gGfxMatrix,
+ M_DTOR * (D_ending_801985F0.z + asset->unk_24.z + temp * asset->unk_54.z +
+ (arg0 - asset->unk_0C) * asset->unk_48.z),
+ 1);
+ break;
+
+ default:
+ Matrix_RotateY(
+ gGfxMatrix,
+ M_DTOR * (asset->unk_24.y + temp * asset->unk_54.y + (arg0 - asset->unk_0C) * asset->unk_48.y), 1);
+ Matrix_RotateX(
+ gGfxMatrix,
+ M_DTOR * (asset->unk_24.x + temp * asset->unk_54.x + (arg0 - asset->unk_0C) * asset->unk_48.x), 1);
+ Matrix_RotateZ(
+ gGfxMatrix,
+ M_DTOR * (asset->unk_24.z + temp * asset->unk_54.z + (arg0 - asset->unk_0C) * asset->unk_48.z), 1);
+ break;
+ }
+
+ Matrix_SetGfxMtx(&gMasterDisp);
+ gSPDisplayList(gMasterDisp++, D_7000000);
+}
+
+void func_ending_80191234(s32 arg0, s32 arg1) {
+ D_80161A34 = 8;
+ gGameState = GSTATE_MENU;
+ D_Timer_8017783C = 2;
+ gOptionMenuStatus = OPTION_WAIT;
+ gDrawMode = DRAWMODE_0;
+ gBgColor = 0;
+ D_80178410 = 0;
+ gControllerLock = 10;
+}
+
+void func_ending_80191294(u32 arg0, AssetInfo* asset) {
+ f32 temp;
+
+ RCP_SetupDL(&gMasterDisp, asset->unk_08);
+
+ gSPFogPosition(gMasterDisp++, asset->fogNear, asset->fogFar);
+ gDPSetFogColor(gMasterDisp++, asset->fogRed, asset->fogGreen, asset->fogBlue, 0);
+ gDPSetEnvColor(gMasterDisp++, asset->envRed, asset->envGreen, asset->envBlue, asset->envAlpha);
+ gDPSetPrimColor(gMasterDisp++, 0, 0, asset->primRed, asset->primGreen, asset->primBlue, asset->primAlpha);
+
+ Matrix_Translate(gGfxMatrix, asset->unk_18.x + (arg0 - asset->unk_0C) * asset->unk_3C.x,
+ asset->unk_18.y + (arg0 - asset->unk_0C) * asset->unk_3C.y,
+ asset->unk_18.z + (arg0 - asset->unk_0C) * asset->unk_3C.z, 1);
+
+ Matrix_Scale(gGfxMatrix, asset->unk_30.x, asset->unk_30.y, asset->unk_30.z, 1);
+
+ temp = __sinf(arg0 * 0.1f + asset->unk_70);
+
+ Matrix_RotateY(gGfxMatrix,
+ M_DTOR * (asset->unk_24.y + temp * asset->unk_54.y + (arg0 - asset->unk_0C) * asset->unk_48.y), 1);
+ Matrix_RotateX(gGfxMatrix,
+ M_DTOR * (asset->unk_24.x + temp * asset->unk_54.x + (arg0 - asset->unk_0C) * asset->unk_48.x), 1);
+ Matrix_RotateZ(gGfxMatrix,
+ M_DTOR * (asset->unk_24.z + temp * asset->unk_54.z + (arg0 - asset->unk_0C) * asset->unk_48.z), 1);
+
+ Matrix_SetGfxMtx(&gMasterDisp);
+
+ D_ending_80198590.unk_28 = 0.0f;
+ D_ending_80198590.unk_10 = D_ending_80198590.unk_28;
+ D_ending_80198590.unk_14 = 0.0f;
+ D_ending_80198590.unk_0C = D_ending_80198590.unk_10;
+ D_ending_80198590.unk_08 = D_ending_80198590.unk_0C;
+ D_ending_80198590.unk_04 = D_ending_80198590.unk_08;
+ D_ending_80198590.unk_24 = D_ending_80198590.unk_04;
+ D_ending_80198590.unk_20 = D_ending_80198590.unk_24;
+ D_ending_80198590.unk_1C = D_ending_80198590.unk_20;
+ D_ending_80198590.unk_18 = D_ending_80198590.unk_1C;
+
+ if ((arg0 > 520) && (arg0 < 720)) {
+ D_ending_80198590.unk_2C = 1;
+ } else {
+ D_ending_80198590.unk_2C = 0;
+ }
+
+ D_ending_80198590.unk_38 = 0.0f;
+ D_ending_80198590.unk_30 = +D_ending_801985F0.x;
+ D_ending_80198590.unk_34 = -D_ending_801985F0.y;
+
+ func_80053658(&D_ending_80198590);
+}
+
+void func_ending_80191700(u32 arg0, AssetInfo* asset) {
+}
+
+void func_ending_80191710(u32 arg0, AssetInfo* asset) {
+ f32 temp;
+
+ RCP_SetupDL(&gMasterDisp, asset->unk_08);
+
+ gSPFogPosition(gMasterDisp++, asset->fogNear, asset->fogFar);
+ gDPSetFogColor(gMasterDisp++, asset->fogRed, asset->fogGreen, asset->fogBlue, 0);
+ gDPSetEnvColor(gMasterDisp++, asset->envRed, asset->envGreen, asset->envBlue, asset->envAlpha);
+ gDPSetPrimColor(gMasterDisp++, 0, 0, asset->primRed, asset->primGreen, asset->primBlue, asset->primAlpha);
+
+ Matrix_Translate(gGfxMatrix, asset->unk_18.x + (arg0 - asset->unk_0C) * asset->unk_3C.x,
+ asset->unk_18.y + (arg0 - asset->unk_0C) * asset->unk_3C.y,
+ asset->unk_18.z + (arg0 - asset->unk_0C) * asset->unk_3C.z, 1);
+
+ Matrix_Scale(gGfxMatrix, asset->unk_30.x, asset->unk_30.y, asset->unk_30.z, 1);
+
+ temp = __sinf(arg0 * 0.1f + asset->unk_70);
+
+ switch (asset->unk_71) {
+ case 1:
+ Matrix_RotateY(gGfxMatrix,
+ M_DTOR * (-D_ending_801985F0.y + asset->unk_24.y + temp * asset->unk_54.y +
+ (arg0 - asset->unk_0C) * asset->unk_48.y),
+ 1);
+ Matrix_RotateX(gGfxMatrix,
+ M_DTOR * (-D_ending_801985F0.x + asset->unk_24.x + temp * asset->unk_54.x +
+ (arg0 - asset->unk_0C) * asset->unk_48.x),
+ 1);
+ Matrix_RotateZ(gGfxMatrix,
+ M_DTOR * (D_ending_801985F0.z + asset->unk_24.z + temp * asset->unk_54.z +
+ (arg0 - asset->unk_0C) * asset->unk_48.z),
+ 1);
+ break;
+
+ default:
+ Matrix_RotateY(
+ gGfxMatrix,
+ M_DTOR * (asset->unk_24.y + temp * asset->unk_54.y + (arg0 - asset->unk_0C) * asset->unk_48.y), 1);
+ Matrix_RotateX(
+ gGfxMatrix,
+ M_DTOR * (asset->unk_24.x + temp * asset->unk_54.x + (arg0 - asset->unk_0C) * asset->unk_48.x), 1);
+ Matrix_RotateZ(
+ gGfxMatrix,
+ M_DTOR * (asset->unk_24.z + temp * asset->unk_54.z + (arg0 - asset->unk_0C) * asset->unk_48.z), 1);
+ break;
+ }
+
+ Matrix_SetGfxMtx(&gMasterDisp);
+
+ gSPDisplayList(gMasterDisp++, asset->unk_00);
+}
+
+void func_ending_80191C58(u32 arg0, AssetInfo* asset) {
+ ((void (*)(u32, AssetInfo*)) asset->unk_04)(arg0, asset);
+}
+
+void func_ending_80191C7C(u32 arg0, AssetInfo* asset) {
+ f32 temp;
+
+ RCP_SetupDL(&gMasterDisp, asset->unk_08);
+
+ gSPFogPosition(gMasterDisp++, asset->fogNear, asset->fogFar);
+ gDPSetFogColor(gMasterDisp++, asset->fogRed, asset->fogGreen, asset->fogBlue, 0);
+ gDPSetEnvColor(gMasterDisp++, asset->envRed, asset->envGreen, asset->envBlue, asset->envAlpha);
+ gDPSetPrimColor(gMasterDisp++, 0, 0, asset->primRed, asset->primGreen, asset->primBlue, asset->primAlpha);
+
+ Matrix_Translate(gGfxMatrix, asset->unk_18.x + (arg0 - asset->unk_0C) * asset->unk_3C.x,
+ asset->unk_18.y + (arg0 - asset->unk_0C) * asset->unk_3C.y,
+ asset->unk_18.z + (arg0 - asset->unk_0C) * asset->unk_3C.z, 1);
+
+ Matrix_Scale(gGfxMatrix, asset->unk_30.x, asset->unk_30.y, asset->unk_30.z, 1);
+
+ temp = __sinf(arg0 * 0.1f + asset->unk_70);
+
+ Matrix_RotateY(gGfxMatrix,
+ M_DTOR * (asset->unk_24.y + temp * asset->unk_54.y + (arg0 - asset->unk_0C) * asset->unk_48.y), 1);
+ Matrix_RotateX(gGfxMatrix,
+ M_DTOR * (asset->unk_24.x + temp * asset->unk_54.x + (arg0 - asset->unk_0C) * asset->unk_48.x), 1);
+ Matrix_RotateZ(gGfxMatrix,
+ M_DTOR * (asset->unk_24.z + temp * asset->unk_54.z + (arg0 - asset->unk_0C) * asset->unk_48.z), 1);
+
+ Matrix_SetGfxMtx(&gMasterDisp);
+
+ Animation_GetFrameData(asset->unk_00,
+ (u32) ((arg0 + asset->unk_70) * asset->unk_14) % Animation_GetFrameCount(asset->unk_00),
+ D_ending_80198600);
+ Animation_DrawSkeleton(0, asset->unk_04, D_ending_80198600, NULL, NULL, NULL, &gIdentityMatrix);
+}
+
+void func_ending_80192164(u32 arg0) {
+ s32 i;
+
+ for (i = 0; i < 94; i++) {
+ if ((D_ending_801934B4[i].unk_0C <= arg0) &&
+ ((D_ending_801934B4[i].unk_0C + D_ending_801934B4[i].unk_10) > arg0)) {
+ Matrix_Push(&gGfxMatrix);
+ if ((D_ending_801934B4[i].unk_00 == NULL) && (D_ending_801934B4[i].unk_04 == NULL)) {
+ func_ending_80191700(arg0, &D_ending_801934B4[i]);
+ } else if ((D_ending_801934B4[i].unk_00 != NULL) && (D_ending_801934B4[i].unk_04 == NULL)) {
+ func_ending_80191710(arg0, &D_ending_801934B4[i]);
+ } else if ((D_ending_801934B4[i].unk_00 == NULL) && (D_ending_801934B4[i].unk_04 != NULL)) {
+ func_ending_80191C58(arg0, &D_ending_801934B4[i]);
+ } else if ((D_ending_801934B4[i].unk_00 != NULL) && (D_ending_801934B4[i].unk_04 != NULL)) {
+ func_ending_80191C7C(arg0, &D_ending_801934B4[i]);
+ }
+ Matrix_Pop(&gGfxMatrix);
+ }
+ }
+}
+
+void func_ending_80192290(u32 arg0, UnkEnd54* unkEnd54) {
+ s32 i;
+
+ for (i = 0; i < (arg0 - unkEnd54->unk_00); i++) {
+ D_ending_801985E0.x += unkEnd54->unk_18.x - (unkEnd54->unk_24.x * i);
+ D_ending_801985E0.y += unkEnd54->unk_18.y - (unkEnd54->unk_24.y * i);
+ D_ending_801985E0.z += unkEnd54->unk_18.z - (unkEnd54->unk_24.z * i);
+ D_ending_801985D0.x += unkEnd54->unk_3C.x - (unkEnd54->unk_48.x * i);
+ D_ending_801985D0.y += unkEnd54->unk_3C.y - (unkEnd54->unk_48.y * i);
+ D_ending_801985D0.z += unkEnd54->unk_3C.z - (unkEnd54->unk_48.z * i);
+ }
+}
+
+void func_ending_8019237C(u32 arg0, UnkEnd54* unkEnd54) {
+ s32 i;
+ s32 j;
+
+ for (i = 0; i < arg0 - unkEnd54->unk_00; i++) {
+ if (i < unkEnd54->unk_04 * 1 / 4) {
+ j = i;
+ } else if (i < (unkEnd54->unk_04 * 2) / 4) {
+ j = (unkEnd54->unk_04 * 2) / 4 - i;
+ } else if (i < (unkEnd54->unk_04 * 3) / 4) {
+ j = -(i - (unkEnd54->unk_04 * 2) / 4);
+ } else if (i < (unkEnd54->unk_04 * 4) / 4) {
+ j = -((unkEnd54->unk_04 * 2) / 4 - (i - (unkEnd54->unk_04 * 2) / 4));
+ }
+
+ D_ending_801985E0.x += unkEnd54->unk_18.x - (unkEnd54->unk_24.x * j);
+ D_ending_801985E0.y += unkEnd54->unk_18.y - (unkEnd54->unk_24.y * j);
+ D_ending_801985E0.z += unkEnd54->unk_18.z - (unkEnd54->unk_24.z * j);
+ D_ending_801985D0.x += unkEnd54->unk_3C.x - (unkEnd54->unk_48.x * j);
+ D_ending_801985D0.y += unkEnd54->unk_3C.y - (unkEnd54->unk_48.y * j);
+ D_ending_801985D0.z += unkEnd54->unk_3C.z - (unkEnd54->unk_48.z * j);
+ }
+}
+
+void func_ending_801924EC(u32 arg0) {
+ s32 i;
+ UnkEnd54* unkEnd54 = D_ending_80195F4C;
+
+ for (i = 0; i < ARRAY_COUNT(D_ending_80195F4C); i++, unkEnd54++) {
+ if ((unkEnd54->unk_00 <= arg0) && ((unkEnd54->unk_00 + unkEnd54->unk_04) > arg0)) {
+ D_ending_801985E0.x = D_ending_801985E0.y = D_ending_801985E0.z = D_ending_801985D0.x =
+ D_ending_801985D0.y = D_ending_801985D0.z = 0.0f;
+
+ switch (unkEnd54->unk_08) {
+ case 1:
+ func_ending_8019237C(arg0, unkEnd54);
+ break;
+
+ default:
+ func_ending_80192290(arg0, unkEnd54);
+ break;
+ }
+
+ D_ending_801985E0.x += unkEnd54->unk_0C.x;
+ D_ending_801985E0.y += unkEnd54->unk_0C.y;
+ D_ending_801985E0.z += unkEnd54->unk_0C.z;
+ D_ending_801985D0.x += unkEnd54->unk_30.x;
+ D_ending_801985D0.y += unkEnd54->unk_30.y;
+ D_ending_801985D0.z += unkEnd54->unk_30.z;
+
+ Matrix_LookAt(gGfxMatrix, D_ending_801985D0.x, D_ending_801985D0.y, D_ending_801985D0.z,
+ D_ending_801985E0.x, D_ending_801985E0.y, D_ending_801985E0.z, 0.0f, 1.0f, 0.0f, 1);
+
+ func_800B6F50(D_ending_801985D0.x, D_ending_801985D0.y, D_ending_801985D0.z, D_ending_801985E0.x,
+ D_ending_801985E0.y, D_ending_801985E0.z);
+
+ Matrix_GetYRPAngles(gGfxMatrix, &D_ending_801985F0);
+ break;
+ }
+ }
+}
+
+void func_ending_801926D4(void) {
+ gControllerLock = 10000;
+
+ Matrix_Push(&gGfxMatrix);
+
+ func_ending_801924EC(D_ending_80192E70);
+ func_ending_80192164(D_ending_80192E70);
+
+ Matrix_Pop(&gGfxMatrix);
+
+ D_ending_80192E70++;
+
+ if ((0 <= D_ending_80192E70) && (D_ending_80192E70 < 100)) {
+ D_ending_80192E70 = 100;
+ if (D_80177824 == 0) {
+ D_ending_80198590 = gPlayer[0].wings;
+ } else {
+ D_ending_80198590.rightState = D_ending_80198590.leftState = 2;
+ }
+ func_8001D444(0, 0x2A, 0, 0xFF);
+ }
+
+ if ((2790 <= D_ending_80192E70) && (D_ending_80192E70 < 3000)) {
+ D_ending_80192E70 = 3099;
+ }
+
+ if ((4891 <= D_ending_80192E70) && (D_ending_80192E70 < 4999)) {
+ D_ending_80192E70 = 4999;
+ }
+
+ if ((5000 <= D_ending_80192E70) && (D_ending_80192E70 < 5096)) {
+ D_ending_80192E70 = 5096;
+ }
+}
diff --git a/src/overlays/ovl_ending/fox_end2_data.c b/src/overlays/ovl_ending/fox_end2_data.c
new file mode 100644
index 00000000..0c66d636
--- /dev/null
+++ b/src/overlays/ovl_ending/fox_end2_data.c
@@ -0,0 +1,327 @@
+#ifndef FOX_END2_DATA
+#define FOX_END2_DATA
+
+#include "global.h"
+
+typedef struct {
+ /* 0x00 */ u8* unk_00;
+ /* 0x04 */ u32 unk_04;
+ /* 0x08 */ u32 unk_08;
+ /* 0x0C */ u16 unk_0C;
+ /* 0x0E */ u16 unk_0E;
+ /* 0x10 */ u8 unk_10;
+ /* 0x11 */ u8 unk_11;
+ /* 0x12 */ u8 unk_12;
+ /* 0x13 */ u8 unk_13;
+} Credit; // size = 0x14
+
+typedef struct {
+ /* 0x00 */ u32 unk_00;
+ /* 0x04 */ u32 unk_04;
+ /* 0x08 */ u8 unk_08;
+ /* 0x0C */ Vec3f unk_0C;
+ /* 0x18 */ Vec3f unk_18;
+ /* 0x24 */ Vec3f unk_24;
+ /* 0x30 */ Vec3f unk_30;
+ /* 0x3C */ Vec3f unk_3C;
+ /* 0x48 */ Vec3f unk_48;
+} UnkEnd54; // size = 0x54
+
+typedef struct AssetInfo {
+ /* 0x00 */ void* unk_00;
+ /* 0x04 */ void* unk_04;
+ /* 0x08 */ s16 unk_08;
+ /* 0x0C */ u32 unk_0C;
+ /* 0x10 */ u32 unk_10;
+ /* 0x14 */ f32 unk_14;
+ /* 0x18 */ Vec3f unk_18;
+ /* 0x24 */ Vec3f unk_24;
+ /* 0x30 */ Vec3f unk_30;
+ /* 0x3C */ Vec3f unk_3C;
+ /* 0x48 */ Vec3f unk_48;
+ /* 0x54 */ Vec3f unk_54;
+ /* 0x60 */ u8 fogRed;
+ /* 0x61 */ u8 fogGreen;
+ /* 0x62 */ u8 fogBlue;
+ /* 0x64 */ s16 fogNear;
+ /* 0x66 */ s16 fogFar;
+ /* 0x68 */ u8 envRed;
+ /* 0x69 */ u8 envGreen;
+ /* 0x6A */ u8 envBlue;
+ /* 0x6B */ u8 envAlpha;
+ /* 0x6C */ u8 primRed;
+ /* 0x6D */ u8 primGreen;
+ /* 0x6E */ u8 primBlue;
+ /* 0x6F */ u8 primAlpha;
+ /* 0x70 */ u8 unk_70;
+ /* 0x71 */ u8 unk_71;
+} AssetInfo; // size = 0x72
+
+void func_ending_8018D250(u32 arg0, AssetInfo* asset);
+void func_ending_8018D28C(s32 arg0, AssetInfo* asset);
+void func_ending_8018D2C8(u32 arg0, AssetInfo* asset);
+void func_ending_8018D398(u32 arg0, AssetInfo* asset);
+void func_ending_8018D4BC(s32 arg0, AssetInfo* asset);
+void func_ending_8018D638(u32 arg0, AssetInfo* asset);
+void func_ending_8018D814(u32 arg0, AssetInfo* asset);
+void func_ending_8018DA0C(u32 arg0, AssetInfo* asset);
+bool func_ending_8018DCB4(void);
+void func_ending_8018E1B8(u32 arg0, AssetInfo* asset);
+void func_ending_8018E7B8(u32 arg0, AssetInfo* asset);
+void func_ending_8018EDB8(u32 arg0, AssetInfo* asset);
+void func_ending_8018F2A8(u32 arg0, AssetInfo* asset);
+void func_ending_8018F64C(u32 arg0, AssetInfo* asset);
+void func_ending_8018FC60(u32 arg0, AssetInfo* asset);
+void func_ending_80190274(u32 arg0, AssetInfo* asset);
+void func_ending_80190648(s32 arg0, AssetInfo* asset);
+void func_ending_80190778(u32 arg0, AssetInfo* asset);
+void func_ending_80190CF0(u32 arg0, AssetInfo* asset);
+void func_ending_80191234(s32 arg0, s32 arg1);
+void func_ending_80191294(u32 arg0, AssetInfo* asset);
+
+WingInfo D_ending_80198590;
+Vec3f D_ending_801985D0;
+Vec3f D_ending_801985E0;
+Vec3f D_ending_801985F0;
+Vec3f D_ending_80198600[300];
+
+extern Gfx D_3003CE0[];
+extern Gfx D_3016CC0[];
+extern u8 D_50054B0[];
+extern u8 D_5007240[];
+extern u8 D_5007330[];
+extern u8 D_5007420[];
+extern Animation D_602F8E0;
+extern Limb* D_602FBAC[];
+extern Animation D_60305C0;
+extern Limb* D_603088C[];
+extern Animation D_6031120;
+extern Limb* D_60313AC[];
+extern Animation D_6031DB8;
+extern Limb* D_6032084[];
+extern Gfx D_7002120[];
+extern Gfx D_7004240[];
+extern Gfx D_700E9E0[];
+extern u16 D_700EA38[];
+extern Gfx D_7010970[];
+extern Gfx D_7016540[];
+extern u16 D_8000000[];
+extern u16 D_8025080[];
+
+// clang-format off
+
+u32 D_ending_80192E70 = 0;
+
+Credit D_ending_80192E74[] = {
+ "PRODUCER", 100, 200, 0, 60, 0, 0, 25, 20,
+ "SHIGERU MIYAMOTO", 100, 200, 0, 80, 1, 0, 25, 20,
+
+ "DIRECTOR", 430, 180, 0, 60, 0, 0, 25, 20,
+ "TAKAO SHIMIZU", 430, 180, 0, 80, 1, 0, 25, 20,
+
+ "ART DIRECTOR", 630, 180, 0, 60, 0, 0, 25, 20,
+ "TAKAYA IMAMURA", 630, 180, 0, 80, 1, 0, 25, 20,
+
+ "CHIEF PROGRAMMER", 830, 180, 0, 60, 0, 0, 25, 20,
+ "KAZUAKI MORITA", 830, 180, 0, 80, 1, 0, 25, 20,
+
+ "SOUND COMPOSERS", 1030, 180, 0, 60, 0, 0, 25, 20,
+ "KOJI KONDO", 1030, 180, 0, 80, 1, 0, 25, 20,
+ "HAJIME WAKAI", 1030, 180, 0, 110, 1, 0, 25, 20,
+
+ "SOUND EFFECTS PROGRAMMER", 1250, 180, 0, 60, 0, 0, 25, 20,
+ "YOJI INAGAKI", 1250, 180, 0, 80, 1, 0, 25, 20,
+
+ "GRAPHIC DESIGNERS", 1490, 180, 0, 60, 0, 0, 25, 20,
+ "YOSHIKI HARUHANA", 1490, 180, 0, 80, 1, 0, 25, 20,
+ "SATORU TAKIZAWA", 1490, 180, 0, 110, 1, 0, 25, 20,
+ "MASANORI SATO", 1490, 180, 0, 140, 1, 0, 25, 20,
+
+ "COURSE DESIGNERS", 2000, 180, 0, 60, 0, 0, 25, 20,
+ "YASUHISA YAMAMURA", 2000, 180, 0, 80, 1, 0, 25, 20,
+ "TAKUJI HOTTA", 2000, 180, 0, 110, 1, 0, 25, 20,
+ "COURSE DESIGNERS", 2370, 180, 0, 60, 0, 0, 25, 20,
+ "DAISUKE TSUJIMURA", 2370, 180, 0, 80, 1, 0, 25, 20,
+ "YASUYUKI OYAGI", 2370, 180, 0, 110, 1, 0, 25, 20,
+
+ "PROGRAMMERS", 2820, 180, 0, 60, 0, 0, 25, 20,
+ "YUICHI YAMAMOTO", 2820, 180, 0, 80, 1, 0, 25, 20,
+ "NOBUO OKAJIMA", 2820, 180, 0, 110, 1, 0, 25, 20,
+
+ "PROGRAMMERS", 3200, 180, 0, 60, 0, 0, 25, 20,
+ "SHIGEKI YOSHIDA", 3200, 180, 0, 80, 1, 0, 25, 20,
+ "TAKAMITSU KUZUHARA", 3200, 180, 0, 110, 1, 0, 25, 20,
+
+ "PROGRAMMERS", 3500, 180, 0, 60, 0, 0, 25, 20,
+ "NOBUHIRO SUMIYOSHI", 3500, 180, 0, 80, 1, 0, 25, 20,
+ "MAKOTO SASAKI", 3500, 180, 0, 110, 1, 0, 25, 20,
+ "MASUMI TARUKADO", 3500, 180, 0, 140, 1, 0, 25, 20,
+
+ "SCRIPT WRITER", 4100, 180, 0, 60, 0, 0, 25, 20,
+ "MITSUHIRO TAKANO", 4100, 180, 0, 80, 1, 0, 25, 20,
+
+ "CHARACTER VOICES", 4400, 180, 0, 60, 0, 0, 25, 20,
+ "MIKE WEST", 4400, 180, 0, 80, 1, 0, 25, 20,
+ "RICK MAY", 4400, 180, 0, 110, 1, 0, 25, 20,
+ "LYSSA BROWNE", 4400, 180, 0, 140, 1, 0, 25, 20,
+ "JOCK BLANEY", 4400, 180, 0, 170, 1, 0, 25, 20,
+
+ "CHARACTER VOICES", 4700, 180, 0, 60, 0, 0, 25, 20,
+ "DAVID WHITE", 4700, 180, 0, 80, 1, 0, 25, 20,
+ "J. GREEN", 4700, 180, 0, 110, 1, 0, 25, 20,
+ "BILL JOHNS", 4700, 180, 0, 140, 1, 0, 25, 20,
+
+ "TECHNICAL SUPPORTERS", 5050, 120, 0, 60, 0, 0, 16, 13,
+ "KENJI MATSUTANI", 5050, 120, 0, 80, 1, 0, 16, 13,
+ "ATSUSHI NISHIWAKI", 5050, 120, 0, 110, 1, 0, 16, 13,
+ "HIDEAKI SHIMIZU", 5050, 120, 0, 140, 1, 0, 16, 13,
+
+ "TECHNICAL SUPPORTERS", 5280, 120, 0, 60, 0, 0, 16, 13,
+ "YASUSHI IDA", 5280, 120, 0, 80, 1, 0, 16, 13,
+ "HIROHITO YOSHIMOTO", 5280, 120, 0, 110, 1, 0, 16, 13,
+ "YOSHINORI TANIMOTO", 5280, 120, 0, 140, 1, 0, 16, 13,
+
+ "TECHNICAL SUPPORTERS", 5510, 120, 0, 60, 0, 0, 16, 13,
+ "TAKAO SAWANO", 5510, 120, 0, 80, 1, 0, 16, 13,
+ "HIRONOBU KAKUI", 5510, 120, 0, 110, 1, 0, 16, 13,
+ "KENJI NISHIZAWA", 5510, 120, 0, 140, 1, 0, 16, 13,
+
+ "TECHNICAL SUPPORTERS", 5740, 120, 0, 60, 0, 0, 16, 13,
+ "TAKUYA KURIBAYASHI", 5740, 120, 0, 80, 1, 0, 16, 13,
+ "TSUYOSHI TAKAHASHI", 5740, 120, 0, 110, 1, 0, 16, 13,
+ "SHIN HASEGAWA", 5740, 120, 0, 140, 1, 0, 16, 13,
+
+ "SUPERVISORS", 5970, 120, 0, 60, 0, 0, 16, 13,
+ "TAKASHI TEZUKA", 5970, 120, 0, 80, 1, 0, 16, 13,
+ "TOSHIHIKO NAKAGO", 5970, 120, 0, 110, 1, 0, 16, 13,
+ "PROGRESS MANAGERS", 6200, 120, 0, 60, 0, 0, 16, 13,
+ "KIMIYOSHI FUKUI", 6200, 120, 0, 80, 1, 0, 16, 13,
+ "KEIZO KATO", 6200, 120, 0, 110, 1, 0, 16, 13,
+
+ "SPECIAL THANKS TO", 6430, 120, 0, 60, 0, 0, 16, 13,
+ "BENIMARU ITOH", 6430, 120, 0, 80, 1, 0, 16, 13,
+ "SUPER MARIO CLUB", 6430, 120, 0, 110, 1, 0, 16, 13,
+ "TRI-FILM", 6430, 120, 0, 140, 1, 0, 16, 13,
+ "EAR FORCE", 6430, 120, 0, 170, 1, 0, 16, 13,
+
+ "ENGLISH VERSION STAFF", 6900, 200, 0, 60, 0, 0, 25, 20,
+ "JIM WORNELL", 6900, 200, 0, 80, 1, 0, 25, 20,
+ "KENJI OKUBO", 6900, 200, 0, 110, 1, 0, 25, 20,
+ "GREG RICHARDSON", 6900, 200, 0, 140, 1, 0, 25, 20,
+ "KAYOMI MCDONALD", 6900, 200, 0, 170, 1, 0, 25, 20,
+ "EXECUTIVE PRODUCER", 7400, 200, 0, 100, 0, 0, 25, 20,
+ "HIROSHI YAMAUCHI", 7400, 200, 0, 120, 1, 0, 25, 20,
+
+ "NINTENDO", 7800, 200, 0, 120, 1, 0, 25, 20,
+ D_50054B0, 8200, 380, 0, 110, 2, 1, 25, 20,
+};
+
+AssetInfo D_ending_801934B4[] = {
+ { NULL, func_ending_8018D250, 0, 0, 3000, 1000.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0, 0, 0, 995, 1000, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0 },
+ { NULL, func_ending_8018D4BC, 0, 100, 2800, 0.0f, 59.0f, 58.0f, 13.0f, 100.0f, 60.0f, 50.0f, 40.0f, 40.0f, 40.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0, 0, 0, 995, 1000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+ { NULL, func_ending_8018D28C, 36, 690, 30, 1.0f, 0.7f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0, 0, 0, 995, 1000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+ { NULL, func_ending_8018D28C, 36, 800, 119, 1.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0, 0, 0, 995, 1000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+ { NULL, func_ending_8018D28C, 36, 920, 200, 1.0f, -1.2f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0, 0, 0, 995, 1000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+ { NULL, func_ending_80190648, 36, 100, 1710, 1.0f, 0.0f, 0.0f, -10000.0f, 0.0f, 0.0f, 0.0f, 40.0f, 40.0f, 40.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0, 0, 0, 995, 1000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+ { NULL, func_ending_8018F2A8, 29, 520, 800, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0, 0, 0, 995, 1000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+ { NULL, func_ending_8018F64C, 29, 100, 820, 1.0f, -900.0f, 600.0f, -1200.0f, 0.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.2f, 0, 0, 0, 995, 1000, 0, 0, 255, 0, 255, 255, 255, 255, 4, 0 },
+ { NULL, func_ending_8018F64C, 29, 920, 960, 1.0f, -900.0f, 600.0f, -1200.0f, 0.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f, 0.0f, 0.0f, 6.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.2f, 0, 0, 0, 995, 1000, 0, 0, 255, 0, 255, 255, 255, 255, 4, 0 },
+ { &D_3015C28, D_3016610, 29, 100, 1780, 1.0f, -1000.0f, 500.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.2f, 0, 0, 0, 995, 1000, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0 },
+ { D_3016CC0, NULL, 29, 920, 150, 1.0f, -1000.0f, 506.8f, -16.0f, 5.0f, -40.0f, 0.0f, 0.012f, 0.012f, 0.012f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.2f, 0, 0, 0, 995, 1000, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0 },
+ { D_3016CC0, NULL, 29, 1070, 19, 1.0f, -1000.0f, 506.8f, -16.0f, 5.0f, -40.0f, 0.0f, 0.012f, 0.012f, 0.012f, 0.0f, 0.0f, 0.0f, 0.0f, 2.0f, 0.0f, 0.0f, 0.0f, 0.2f, 0, 0, 0, 995, 1000, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0 },
+ { D_3016CC0, NULL, 29, 1089, 1, 1.0f, -1000.0f, 506.8f, -16.0f, 5.0f, -1.0f, 0.0f, 0.012f, 0.012f, 0.012f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.2f, 0, 0, 0, 995, 1000, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0 },
+ { D_3016CC0, NULL, 29, 1090, 30, 1.0f, -1000.0f, 506.8f, -16.0f, 5.0f, 0.0f, 0.0f, 0.012f, 0.012f, 0.012f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.2f, 0, 0, 0, 995, 1000, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0 },
+ { D_30194E0, NULL, 45, 100, 1020, 1.0f, -1000.0f, 516.9f, -25.9f, 0.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.2f, 0, 0, 0, 995, 1000, 0, 0, 0, 0, 255, 255, 255, 140, 7, 0 },
+ { NULL, func_ending_8018E1B8, 67, 100, 1780, 1.0f, -1000.0f, 500.0f, -64.0f, 0.0f, 0.0f, 0.0f, 0.5f, 0.3f, 0.5f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 240, 176, 64, 996, 1000, 0, 0, 255, 0, 255, 255, 255, 255, 0, 0 },
+ { &D_3015C28, D_3016610, 29, 100, 1780, 1.0f, -1000.0f, -500.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.2f, 0, 0, 0, 995, 1000, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0 },
+ { NULL, func_ending_80190778, 29, 1120, 200, 1.0f, -1000.0f, -493.2f, -16.0f, 0.0f, 0.0f, 0.0f, 0.012f, 0.012f, 0.012f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 5.0f, 0, 0, 0, 995, 1000, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0 },
+ { D_30194E0, NULL, 45, 1120, 200, 1.0f, -1000.0f, -483.1f, -25.9f, 0.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.2f, 0, 0, 0, 995, 1000, 0, 0, 0, 0, 255, 255, 255, 140, 7, 0 },
+ { NULL, func_ending_8018E1B8, 67, 100, 1780, 1.0f, -1000.0f, -500.0f, -57.0f, 0.0f, 0.0f, 0.0f, 0.5f, 0.3f, 0.5f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 240, 176, 64, 996, 1000, 0, 0, 255, 0, 255, 255, 255, 255, 0, 0 },
+ { NULL, func_ending_8018FC60, 29, 100, 420, 1.0f, 1000.0f, 560.0f, -440.0f, 0.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.2f, 0, 0, 0, 995, 1000, 0, 0, 255, 0, 255, 255, 255, 255, 4, 0 },
+ { NULL, func_ending_8018FC60, 29, 520, 130, 1.0f, 1000.0f, 560.0f, -440.0f, 0.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f, 0.0f, 0.0f, 4.0f, 0.0f, 0.0f, 1.8f, 0.0f, 0.0f, 0.2f, 0, 0, 0, 995, 1000, 0, 0, 255, 0, 255, 255, 255, 255, 4, 0 },
+ { NULL, func_ending_8018FC60, 29, 650, 1230, 1.0f, 800.0f, -300.0f, 350.0f, 0.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.2f, 0, 0, 0, 995, 1000, 0, 0, 255, 0, 255, 255, 255, 255, 4, 0 },
+ { NULL, func_ending_80191294, 29, 100, 1780, 1.0f, 1000.0f, 500.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.2f, 0, 0, 0, 995, 1000, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0 },
+ { NULL, func_ending_8018E1B8, 67, 100, 1780, 1.0f, 1000.0f, 500.0f, -57.0f, 0.0f, 0.0f, 0.0f, 0.5f, 0.3f, 0.5f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 240, 176, 64, 996, 1000, 0, 0, 255, 0, 255, 255, 255, 255, 0, 0 },
+ { &D_3015C28, D_3016610, 29, 100, 1780, 1.0f, 1000.0f, -500.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.2f, 0, 0, 0, 995, 1000, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0 },
+ { D_3003CE0, NULL, 29, 850, 20, 1.0f, 1000.0f, -493.2f, -16.0f, 5.0f, 0.0f, 0.0f, 0.012f, 0.012f, 0.012f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.2f, 0, 0, 0, 995, 1000, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0 },
+ { D_3003CE0, NULL, 29, 870, 1, 1.0f, 1000.0f, -493.2f, -16.0f, 7.0f, 0.0f, 0.0f, 0.012f, 0.012f, 0.012f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.2f, 0, 0, 0, 995, 1000, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0 },
+ { D_3003CE0, NULL, 29, 871, 1, 1.0f, 1000.0f, -493.2f, -16.0f, 10.0f, 0.0f, 0.0f, 0.012f, 0.012f, 0.012f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.2f, 0, 0, 0, 995, 1000, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0 },
+ { D_3003CE0, NULL, 29, 872, 1, 1.0f, 1000.0f, -493.2f, -16.0f, 14.0f, 0.0f, 0.0f, 0.012f, 0.012f, 0.012f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.2f, 0, 0, 0, 995, 1000, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0 },
+ { D_3003CE0, NULL, 29, 873, 1, 1.0f, 1000.0f, -493.2f, -16.0f, 16.0f, 0.0f, 0.0f, 0.012f, 0.012f, 0.012f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.2f, 0, 0, 0, 995, 1000, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0 },
+ { D_3003CE0, NULL, 29, 874, 1, 1.0f, 1000.0f, -493.2f, -16.0f, 14.0f, 0.0f, 0.0f, 0.012f, 0.012f, 0.012f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.2f, 0, 0, 0, 995, 1000, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0 },
+ { D_3003CE0, NULL, 29, 875, 1, 1.0f, 1000.0f, -493.2f, -16.0f, 11.0f, 0.0f, 0.0f, 0.012f, 0.012f, 0.012f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.2f, 0, 0, 0, 995, 1000, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0 },
+ { D_3003CE0, NULL, 29, 876, 1, 1.0f, 1000.0f, -493.2f, -16.0f, 7.0f, 0.0f, 0.0f, 0.012f, 0.012f, 0.012f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.2f, 0, 0, 0, 995, 1000, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0 },
+ { D_3003CE0, NULL, 29, 877, 1, 1.0f, 1000.0f, -493.2f, -16.0f, 7.0f, 0.0f, 0.0f, 0.012f, 0.012f, 0.012f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.2f, 0, 0, 0, 995, 1000, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0 },
+ { D_3003CE0, NULL, 29, 878, 1, 1.0f, 1000.0f, -493.2f, -16.0f, 10.0f, 0.0f, 0.0f, 0.012f, 0.012f, 0.012f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.2f, 0, 0, 0, 995, 1000, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0 },
+ { D_3003CE0, NULL, 29, 879, 1, 1.0f, 1000.0f, -493.2f, -16.0f, 14.0f, 0.0f, 0.0f, 0.012f, 0.012f, 0.012f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.2f, 0, 0, 0, 995, 1000, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0 },
+ { D_3003CE0, NULL, 29, 880, 1, 1.0f, 1000.0f, -493.2f, -16.0f, 16.0f, 0.0f, 0.0f, 0.012f, 0.012f, 0.012f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.2f, 0, 0, 0, 995, 1000, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0 },
+ { D_3003CE0, NULL, 29, 881, 1, 1.0f, 1000.0f, -493.2f, -16.0f, 14.0f, 0.0f, 0.0f, 0.012f, 0.012f, 0.012f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.2f, 0, 0, 0, 995, 1000, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0 },
+ { D_3003CE0, NULL, 29, 882, 1, 1.0f, 1000.0f, -493.2f, -16.0f, 10.0f, 0.0f, 0.0f, 0.012f, 0.012f, 0.012f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.2f, 0, 0, 0, 995, 1000, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0 },
+ { D_3003CE0, NULL, 29, 883, 1, 1.0f, 1000.0f, -493.2f, -16.0f, 7.0f, 0.0f, 0.0f, 0.012f, 0.012f, 0.012f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.2f, 0, 0, 0, 995, 1000, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0 },
+ { D_3003CE0, NULL, 29, 884, 36, 1.0f, 1000.0f, -493.2f, -16.0f, 5.0f, 0.0f, 0.0f, 0.012f, 0.012f, 0.012f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.2f, 0, 0, 0, 995, 1000, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0 },
+ { D_30194E0, NULL, 45, 850, 70, 1.0f, 999.0f, -483.1f, -25.9f, 0.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.2f, 0, 0, 0, 995, 1000, 0, 0, 0, 0, 255, 255, 255, 140, 11, 0 },
+ { NULL, func_ending_8018E1B8, 67, 100, 1780, 1.0f, 1000.0f, -500.0f, -34.0f, 0.0f, 0.0f, 0.0f, 0.5f, 0.3f, 0.5f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 240, 176, 64, 996, 1000, 0, 0, 255, 0, 255, 255, 255, 255, 0, 0 },
+ { NULL, func_ending_8018F2A8, 29, 100, 420, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0, 0, 0, 995, 1000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+ { NULL, func_ending_8018F2A8, 29, 1320, 470, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0, 0, 0, 995, 1000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+ { NULL, func_ending_80190274, 36, 1810, 1090, 1.0f, -200.0f, 0.0f, -10000.0f, 0.0f, 0.0f, 0.0f, 150.0f, 150.0f, 150.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0, 0, 0, 995, 1000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+ { NULL, func_ending_8018F2A8, 29, 1920, 980, 1.0f, 0.0f, 1000.0f, -700.0f, 0.0f, 180.0f, 0.0f, 1.0f, 1.0f, 1.0f, 0.0f, 0.0f, -10.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0, 0, 0, 995, 1000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+ { NULL, func_ending_8018D2C8, 36, 100, 11, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+ { NULL, func_ending_8018D2C8, 36, 1770, 30, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0, 0, 0, 10, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+ { NULL, func_ending_8018D2C8, 36, 2780, 30, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0, 0, 0, 10, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+ { NULL, func_ending_8018D2C8, 36, 510, 20, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0, 0, 0, 10, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+ { NULL, func_ending_8018D2C8, 36, 710, 20, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0, 0, 0, 10, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+ { NULL, func_ending_8018D2C8, 36, 910, 20, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0, 0, 0, 10, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+ { NULL, func_ending_8018D2C8, 36, 1110, 20, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0, 0, 0, 10, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+ { NULL, func_ending_8018D2C8, 36, 1310, 20, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0, 0, 0, 10, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+ { NULL, func_ending_8018D250, 4, 3000, 2000, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0, 0, 0, 995, 1000, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0 },
+ { NULL, func_ending_8018D4BC, 0, 3100, 1800, 0.0f, 0.0f, 13.0f, -32.0f, 200.0f, 70.0f, 10.0f, 10.0f, 6.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0, 0, 0, 995, 1000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+ { D_7016540, NULL, 17, 3100, 1800, 1.0f, 0.0f, -2700.0f, -6900.0f, 0.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0, 0, 0, 995, 1000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+ { NULL, func_ending_8018F2A8, 23, 3800, 950, 1.0f, 8000.0f, -5500.0f, -10000.0f, -10.0f, -90.0f, 0.0f, 3.0f, 3.0f, 3.0f, -22.0f, 12.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0, 0, 0, 995, 1000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+ { NULL, func_ending_8018E7B8, 67, 3800, 950, 1.0f, 12330.0f, -6500.0f, -9200.0f, 0.0f, 0.0f, -10.0f, 35.0f, 10.0f, 20.0f, -22.0f, 12.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 240, 176, 64, 996, 1000, 255, 255, 0, 0, 255, 255, 255, 164, 0, 0 },
+ { NULL, func_ending_8018E7B8, 67, 3800, 950, 1.0f, 15600.0f, -6710.0f, -9960.0f, 0.0f, 0.0f, -10.0f, 35.0f, 10.0f, 20.0f, -22.0f, 12.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 240, 176, 64, 996, 1000, 255, 255, 0, 0, 255, 255, 255, 164, 0, 0 },
+ { NULL, func_ending_8018D4BC, 0, 3100, 1800, 0.0f, 0.0f, 32.0f, -32.0f, 200.0f, 70.0f, 10.0f, 10.0f, 6.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0, 0, 0, 995, 1000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+ { NULL, func_ending_8018EDB8, 20, 3100, 1800, 1.0f, 0.0f, -470.0f, -3500.0f, 0.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0, 0, 0, 996, 1000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+ { &D_602F8E0, D_602FBAC, 12, 3100, 1800, 5.0f, -300.0f, -300.0f, -1300.0f, 5.0f, -90.0f, -90.0f, 0.6f, 0.1f, 6.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0, 0, 0, 995, 1000, 0, 0, 0, 0, 0, 0, 0, 200, 10, 0 },
+ { &D_602F8E0, D_602FBAC, 23, 3100, 1800, 5.0f, -300.0f, -300.0f, -1300.0f, 5.0f, -90.0f, 0.0f, 0.6f, 0.6f, 0.6f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0, 0, 0, 995, 1000, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0 },
+ { &D_60305C0, D_603088C, 12, 3100, 1800, 5.0f, -100.0f, -300.0f, -1300.0f, 10.0f, -90.0f, -90.0f, 0.6f, 0.1f, 6.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0, 0, 0, 995, 1000, 0, 0, 0, 0, 0, 0, 0, 200, 0, 0 },
+ { &D_60305C0, D_603088C, 23, 3100, 1800, 5.0f, -100.0f, -300.0f, -1300.0f, 10.0f, -90.0f, 0.0f, 0.6f, 0.6f, 0.6f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0, 0, 0, 995, 1000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+ { &D_6031DB8, D_6032084, 12, 3100, 1800, 6.0f, 100.0f, -300.0f, -1300.0f, -10.0f, -90.0f, -90.0f, 0.6f, 0.1f, 6.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0, 0, 0, 995, 1000, 0, 0, 0, 0, 0, 0, 0, 200, 0, 0 },
+ { &D_6031DB8, D_6032084, 23, 3100, 1800, 6.0f, 100.0f, -300.0f, -1300.0f, -10.0f, -90.0f, 0.0f, 0.6f, 0.6f, 0.6f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0, 0, 0, 995, 1000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+ { &D_6031120, D_60313AC, 12, 3100, 1800, 7.0f, 300.0f, -300.0f, -1300.0f, -15.0f, -90.0f, -90.0f, 0.6f, 0.1f, 6.0f, 0.1f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.1f, 0.0f, 0.0f, 0, 0, 0, 995, 1000, 0, 0, 0, 0, 0, 0, 0, 200, 0, 0 },
+ { &D_6031120, D_60313AC, 23, 3100, 1800, 7.0f, 300.0f, -300.0f, -1300.0f, -15.0f, -90.0f, 0.0f, 0.6f, 0.6f, 0.6f, 0.1f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.1f, 0.0f, 0.0f, 0, 0, 0, 995, 1000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+ { NULL, func_ending_8018D250, 5, 5000, 2000, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0, 0, 0, 995, 1000, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0 },
+ { NULL, func_ending_8018D4BC, 0, 5100, 1800, 0.0f, 0.0f, 32.0f, -32.0f, 200.0f, 70.0f, 10.0f, 10.0f, 6.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0, 0, 0, 995, 1000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+ { D_7016540, NULL, 17, 5100, 310, 1.0f, 0.0f, -2800.0f, -6900.0f, 0.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f, 0.0f, -4.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0, 0, 0, 995, 1000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+ { D_7016540, NULL, 17, 5410, 1490, 1.0f, 0.0f, -4040.0f, -6900.0f, 0.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0, 0, 0, 995, 1000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+ { NULL, func_ending_80190CF0, 62, 6520, 380, 1.0f, 0.0f, 0.0f, -7000.0f, 0.0f, 0.0f, 0.0f, 12.0f, 12.0f, 12.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0, 0, 0, 200, 0, 0, 0, 0, 0, 255, 255, 255, 0, 0, 0 },
+ { &D_3015AF4, D_3016610, 29, 5100, 1800, 1.0f, 100.0f, 100.0f, -230.0f, 0.0f, 180.0f, 0.0f, 0.5f, 0.5f, 0.5f, 0.0f, 0.0f, -7.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 3.0f, 240, 176, 64, 996, 1000, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0 },
+ { D_7010970, NULL, 38, 5100, 1800, 1.0f, 100.0f, 95.0f, -200.0f, 0.0f, 0.0f, 0.0f, 0.4f, 0.3f, 0.4f, 0.0f, 0.0f, -7.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 3.0f, 240, 176, 64, 996, 1000, 255, 0, 0, 0, 255, 255, 255, 255, 0, 0 },
+ { &D_3015AF4, D_3016610, 29, 5100, 1800, 1.0f, 100.0f, -100.0f, -230.0f, 0.0f, 180.0f, 0.0f, 0.5f, 0.5f, 0.5f, 0.0f, 0.0f, -7.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 3.0f, 240, 176, 64, 996, 1000, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0 },
+ { D_7010970, NULL, 38, 5100, 1800, 1.0f, 100.0f, -105.0f, -200.0f, 0.0f, 0.0f, 0.0f, 0.4f, 0.3f, 0.4f, 0.0f, 0.0f, -7.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 3.0f, 240, 176, 64, 996, 1000, 255, 0, 0, 0, 255, 255, 255, 255, 5, 0 },
+ { &D_3015AF4, D_3016610, 29, 5100, 1800, 1.0f, -100.0f, 100.0f, -230.0f, 0.0f, 180.0f, 0.0f, 0.5f, 0.5f, 0.5f, 0.0f, 0.0f, -7.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 3.0f, 240, 176, 64, 996, 1000, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0 },
+ { D_7010970, NULL, 38, 5100, 1800, 1.0f, -100.0f, 95.0f, -200.0f, 0.0f, 0.0f, 0.0f, 0.4f, 0.3f, 0.4f, 0.0f, 0.0f, -7.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 3.0f, 240, 176, 64, 996, 1000, 255, 0, 0, 0, 255, 255, 255, 255, 7, 0 },
+ { &D_3015AF4, D_3016610, 29, 5100, 1800, 1.0f, -100.0f, -100.0f, -230.0f, 0.0f, 180.0f, 0.0f, 0.5f, 0.5f, 0.5f, 0.0f, 0.0f, -7.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 3.0f, 240, 176, 64, 996, 1000, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0 },
+ { D_7010970, NULL, 38, 5100, 1800, 1.0f, -100.0f, -105.0f, -200.0f, 0.0f, 0.0f, 0.0f, 0.4f, 0.3f, 0.4f, 0.0f, 0.0f, -7.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 3.0f, 240, 176, 64, 996, 1000, 255, 0, 0, 0, 255, 255, 255, 255, 11, 0 },
+ { NULL, func_ending_8018F2A8, 29, 5100, 1800, 1.0f, 0.0f, 0.0f, -220.0f, 0.0f, 180.0f, 0.0f, 0.1f, 0.1f, 0.1f, 0.0f, 0.0f, -7.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 240, 176, 64, 996, 1000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+ { NULL, func_ending_8018DA0C, 76, 6520, 380, 1.0f, 224.0f, 164.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0, 0, 0, 20, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0 },
+ { NULL, func_ending_8018D638, 36, 6900, 300, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+ { NULL, func_ending_8018D398, 36, 3000, 370, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0, 0, 0, 0, 250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+ { NULL, func_ending_8018D814, 76, 6122, 200, 1.0f, 128.0f, 100.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0, 0, 0, 20, 20, 0, 0, 0, 0, 255, 255, 255, 0, 0, 0 },
+ { NULL, func_ending_8018D2C8, 36, 4880, 240, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0, 0, 0, 10, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+ { NULL, func_ending_8018D2C8, 36, 6800, 100, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+ { NULL, func_ending_8018D2C8, 36, 7100, 100, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+ { NULL, func_ending_80191234, 0, 7200, 100, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
+};
+
+UnkEnd54 D_ending_80195F4C[] = {
+ 100, 420, 1, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 12000.0f, 0.0f, 0.0f, -40.0f, -0.2f, 0.0f, 0.0f, 520, 200, 0, 1000.0f, 506.8f, -16.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f,
+ 0.0f, 1022.0f, 503.0f, 300.0f, 0.0f, 0.0f, -3.0f, 0.0f, 0.0f, -0.015f, 720, 200, 0, 1000.0f, -490.0f, -10.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1015.0f, -497.0f, -297.0f, 0.0f, 0.0f, 3.0f, 0.0f, 0.0f, 0.015f, 920,
+ 200, 0, -1000.0f, 510.0f, -10.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, -1320.0f, 503.0f, 320.0f, 3.0f, 0.0f, -3.0f, 0.015f, 0.0f, -0.015f, 1120, 200, 0, -1000.0f, -481.0f, -16.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f,
+ -1000.0f, -497.5f, 320.0f, 0.0f, 0.0f, -3.0f, 0.0f, 0.0f, -0.015f, 1320, 470, 0, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, -1500.0f, -221.0f, 0.0f, 0.0f, -22.0f, 0.0f, 0.0f, 0.0f, 1790, 20,
+ 0, 0.0f, 0.0f, -5000.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, -5050.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1810, 100, 0, 0.0f, 0.0f, -5000.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, -5050.0f,
+ 0.0f, 0.0f, 100.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0, 10000, 0, 0.0f, 0.0f, -12800.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f,
+};
+
+// clang-format on
+
+#endif
diff --git a/src/overlays/ovl_ending/sf_ending_2.c b/src/overlays/ovl_ending/sf_ending_2.c
deleted file mode 100644
index 1be17430..00000000
--- a/src/overlays/ovl_ending/sf_ending_2.c
+++ /dev/null
@@ -1,221 +0,0 @@
-#include "common.h"
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/func_ending_8018CE20.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/func_ending_8018D250.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/func_ending_8018D28C.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/func_ending_8018D2C8.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/func_ending_8018D398.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/func_ending_8018D4BC.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/func_ending_8018D638.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/func_ending_8018D814.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/D_ending_80196640.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/D_ending_8019664C.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/D_ending_80196660.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/D_ending_8019666C.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/D_ending_8019667C.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/D_ending_8019668C.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/D_ending_8019669C.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/D_ending_801966B0.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/D_ending_801966C0.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/D_ending_801966D0.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/D_ending_801966DC.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/D_ending_801966EC.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/D_ending_80196708.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/D_ending_80196718.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/D_ending_8019672C.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/D_ending_80196740.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/D_ending_80196750.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/D_ending_80196760.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/D_ending_80196774.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/D_ending_80196788.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/D_ending_80196798.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/D_ending_801967AC.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/D_ending_801967C0.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/D_ending_801967D0.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/D_ending_801967DC.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/D_ending_801967EC.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/D_ending_801967FC.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/D_ending_80196808.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/D_ending_80196818.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/D_ending_8019682C.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/D_ending_80196838.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/D_ending_8019684C.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/D_ending_8019685C.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/D_ending_8019686C.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/D_ending_8019687C.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/D_ending_80196890.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/D_ending_801968A4.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/D_ending_801968B0.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/D_ending_801968BC.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/D_ending_801968CC.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/D_ending_801968D8.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/D_ending_801968EC.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/D_ending_801968F8.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/D_ending_80196904.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/D_ending_80196910.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/D_ending_80196928.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/D_ending_80196938.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/D_ending_8019694C.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/D_ending_8019695C.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/D_ending_80196974.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/D_ending_80196980.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/D_ending_80196994.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/D_ending_801969A8.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/D_ending_801969C0.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/D_ending_801969D0.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/D_ending_801969E0.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/D_ending_801969F0.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/D_ending_80196A08.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/D_ending_80196A1C.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/D_ending_80196A30.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/D_ending_80196A40.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/D_ending_80196A4C.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/D_ending_80196A5C.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/D_ending_80196A70.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/D_ending_80196A84.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/D_ending_80196A94.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/D_ending_80196AA0.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/D_ending_80196AB4.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/D_ending_80196AC4.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/D_ending_80196AD8.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/D_ending_80196AE4.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/D_ending_80196AF0.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/D_ending_80196B08.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/D_ending_80196B14.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/D_ending_80196B20.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/D_ending_80196B30.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/D_ending_80196B40.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/D_ending_80196B54.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/D_ending_80196B68.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/func_ending_8018DA0C.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/func_ending_8018DCB4.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/func_ending_8018E1B8.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/func_ending_8018E7B8.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/func_ending_8018EDB8.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/func_ending_8018F2A8.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/func_ending_8018F64C.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/func_ending_8018FC60.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/func_ending_80190274.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/func_ending_80190648.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/func_ending_80190778.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/func_ending_80190CF0.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/func_ending_80191234.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/func_ending_80191294.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/func_ending_80191700.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/func_ending_80191710.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/func_ending_80191C58.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/func_ending_80191C7C.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/func_ending_80192164.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/func_ending_80192290.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/func_ending_8019237C.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/func_ending_801924EC.s")
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_ending/sf_ending_2/func_ending_801926D4.s")
diff --git a/src/overlays/ovl_menu/fox_option.c b/src/overlays/ovl_menu/fox_option.c
index 36771cf6..348bf719 100644
--- a/src/overlays/ovl_menu/fox_option.c
+++ b/src/overlays/ovl_menu/fox_option.c
@@ -462,6 +462,8 @@ extern s32 D_menu_801B931C;
extern bool D_menu_801B9320; // MusicPlaying status in the expert sound options
#endif
+extern u8 D_8000000[];
+
void Option_Setup(void) {
bool enableExpertModes;
bool var_v0_2;
diff --git a/yamls/us/overlays.yaml b/yamls/us/overlays.yaml
index 2d502900..8f4007bd 100644
--- a/yamls/us/overlays.yaml
+++ b/yamls/us/overlays.yaml
@@ -194,14 +194,14 @@
exclusive_ram_id: overlay
symbol_name_format: ending_$VRAM
subsegments:
- - [0xEF0260, c, sf_ending_1]
- - [0xEF5B60, c, sf_ending_2]
- - [0xEFB560, .data, sf_ending_1]
- - [0xEFBBB0, data, sf_ending_2]
- - [0xEFEF80, .rodata, sf_ending_1]
- - [0xEFF380, .rodata, sf_ending_2]
- - { start: 0xEFFA40, type: .bss, vram: 0x80196D00, name: sf_ending_1 }
- - { type: bss, vram: 0x80198590, name: sf_ending_2 }
+ - [0xEF0260, c, fox_end1]
+ - [0xEF5B60, c, fox_end2]
+ - [0xEFB560, .data, fox_end1]
+ - [0xEFBBB0, .data, fox_end2]
+ - [0xEFEF80, .rodata, fox_end1]
+ - [0xEFF380, .rodata, fox_end2]
+ - { start: 0xEFFA40, type: .bss, vram: 0x80196D00, name: fox_end1 }
+ - { type: .bss, vram: 0x80198590, name: fox_end2 }
- name: ovl_unused
type: code