From 4a85ee2663a68221525bb4aa51e0eb7e4075d8d0 Mon Sep 17 00:00:00 2001 From: Alejandro Asenjo Nitti <96613413+sonicdcer@users.noreply.github.com> Date: Tue, 6 Feb 2024 12:14:05 -0300 Subject: [PATCH] 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 --- .vscode/settings.json | 3 +- include/assets.h | 1 - include/sf64level.h | 1 + linker_scripts/us/undefined_syms.ld | 5 + src/main/fox_play.c | 2 +- .../ovl_ending/{sf_ending_1.c => fox_end1.c} | 4 +- src/overlays/ovl_ending/fox_end2.c | 1052 +++++++++++++++++ src/overlays/ovl_ending/fox_end2_data.c | 327 +++++ src/overlays/ovl_ending/sf_ending_2.c | 221 ---- src/overlays/ovl_menu/fox_option.c | 2 + yamls/us/overlays.yaml | 16 +- 11 files changed, 1400 insertions(+), 234 deletions(-) rename src/overlays/ovl_ending/{sf_ending_1.c => fox_end1.c} (99%) create mode 100644 src/overlays/ovl_ending/fox_end2.c create mode 100644 src/overlays/ovl_ending/fox_end2_data.c delete mode 100644 src/overlays/ovl_ending/sf_ending_2.c 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 similarity index 99% rename from src/overlays/ovl_ending/sf_ending_1.c rename to 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