From 8232374e68f9bd4b0931c6cdc04326cfdd9296b0 Mon Sep 17 00:00:00 2001 From: Bl00D4NGEL Date: Fri, 27 Feb 2026 22:00:38 +0100 Subject: [PATCH 01/13] match: func_803464A0 --- include/uv_font.h | 1 + src/app/code_CD9D0.c | 23 ++++++++++++++++++++++- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/include/uv_font.h b/include/uv_font.h index a5dec59a..279ed20f 100644 --- a/include/uv_font.h +++ b/include/uv_font.h @@ -26,5 +26,6 @@ s32 func_802196B0(s16*); s32 func_80219874(s32, s32, s16*, s32, s32); void uvFont_80219ACC(s32, s32, char*); void uvFont_80219EA8(void); +s32 func_80219828(void); #endif // UV_FONT_H diff --git a/src/app/code_CD9D0.c b/src/app/code_CD9D0.c index 596a48ee..faf97a72 100644 --- a/src/app/code_CD9D0.c +++ b/src/app/code_CD9D0.c @@ -1,3 +1,24 @@ #include "common.h" +#include +#include +#include -#pragma GLOBAL_ASM("asm/nonmatchings/app/code_CD9D0/func_803464A0.s") +void func_803464A0(char* arg0, ...) { + s32 var_s2; + char* var_s0; + va_list args; + + var_s2 = 0x96; + uvGfxClearScreen(0U, 0U, 0U, 0xFFU); + uvFontSet(5); + uvFont_80219550(1.0, 1.0); + uvFont_8021956C(0xFFU, 0xFFU, 0xFFU, 0xFFU); + uvFont_80219ACC(0xA0 - (uvFontWidth(arg0) / 2), 0xC8, arg0); + uvFontSet(3); + uvFont_80219550(1.0, 1.0); + va_start(args, arg0); + while ((var_s0 = va_arg(args, char*))) { + uvFont_80219ACC(0xA0 - (uvFontWidth(var_s0) / 2), var_s2, var_s0); + var_s2 = (var_s2 - func_80219828()) - 3; + } +} From 93749b9feabddeae900c43312fcfb1a716dbe82d Mon Sep 17 00:00:00 2001 From: Bl00D4NGEL Date: Fri, 27 Feb 2026 23:02:53 +0100 Subject: [PATCH 02/13] rename app/level_objects to app/task, rename app/code_CB7C0 to app/target --- config/us/pilotwings64.us.yaml | 12 ++-- config/us/sym/symbol_addrs_app.txt | 3 + src/app/code_B2900.c | 2 +- src/app/code_CB7C0.c | 34 --------- src/app/code_CB7C0.h | 20 ------ src/app/targets.c | 105 ++++++++++++++++++++++++++++ src/app/targets.h | 27 +++++++ src/app/{level_objects.c => task.c} | 2 +- 8 files changed, 143 insertions(+), 62 deletions(-) delete mode 100644 src/app/code_CB7C0.c delete mode 100644 src/app/code_CB7C0.h create mode 100644 src/app/targets.c create mode 100644 src/app/targets.h rename src/app/{level_objects.c => task.c} (99%) diff --git a/config/us/pilotwings64.us.yaml b/config/us/pilotwings64.us.yaml index a21c9a20..e924c364 100644 --- a/config/us/pilotwings64.us.yaml +++ b/config/us/pilotwings64.us.yaml @@ -447,8 +447,8 @@ segments: - [0xC8990, c, app/code_C8990] - [0xC9440, c, app/text_data] - [0xC9B60, c, app/code_C9B60] - - [0xCB7C0, c, app/code_CB7C0] - - [0xCBEE0, c, app/level_objects] + - [0xCB7C0, c, app/targets] + - [0xCBEE0, c, app/task] - [0xCD9D0, c, app/code_CD9D0] - [0xCDB20, c, app/thermals] - [0xCE4F0, c, app/total_results] @@ -518,8 +518,8 @@ segments: - [0xD7B40, .data, app/snow] - [0xD7B80, .data, app/spath] - [0xD7BC0, .data, app/code_C9B60] - - [0xD7BD0, .data, app/code_CB7C0] - - [0xD7CC0, .data, app/level_objects] + - [0xD7BD0, .data, app/targets] + - [0xD7CC0, .data, app/task] - [0xD7D20, .data, app/thermals] - [0xD7D30, data] - [0xD7E10, .data, app/total_results] @@ -607,8 +607,8 @@ segments: - [0xDDDA0, .rodata, app/spath] - [0xDDEA0, .rodata, app/code_C8990] - [0xDDF40, .rodata, app/code_C9B60] - - [0xDDFB0, .rodata, app/code_CB7C0] - - [0xDE020, .rodata, app/level_objects] + - [0xDDFB0, .rodata, app/targets] + - [0xDE020, .rodata, app/task] - [0xDE210, .rodata, app/thermals] - [0xDE250, .rodata, app/total_results] - [0xDE3E0, .rodata, app/toys] diff --git a/config/us/sym/symbol_addrs_app.txt b/config/us/sym/symbol_addrs_app.txt index b1c4f3b1..1513166b 100644 --- a/config/us/sym/symbol_addrs_app.txt +++ b/config/us/sym/symbol_addrs_app.txt @@ -334,3 +334,6 @@ sTextName = 0x80377F10; // size:0x6E0 sTextData = 0x803785F0; // size:0x6DC sTextDataCount = 0x80378CCC; sTextNameCount = 0x80378CD0; + +sMissileTargets = 0x80378CF0; +sMissileTargetCount = 0x80378CF4; \ No newline at end of file diff --git a/src/app/code_B2900.c b/src/app/code_B2900.c index a6061590..3e88a8ac 100644 --- a/src/app/code_B2900.c +++ b/src/app/code_B2900.c @@ -7,7 +7,7 @@ #include "code_915B0.h" #include "code_94E60.h" #include "code_B2900.h" -#include "code_CB7C0.h" +#include "targets.h" #include "rings.h" s32 D_8034FBD0 = 0; diff --git a/src/app/code_CB7C0.c b/src/app/code_CB7C0.c deleted file mode 100644 index c2e0453c..00000000 --- a/src/app/code_CB7C0.c +++ /dev/null @@ -1,34 +0,0 @@ -#include "common.h" -#include "code_CB7C0.h" - -f32 D_803506A0[] = { - 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 5.0f, 0.05f, 0.0f, 0.0f, 0.975f, 5.5f, 0.06f, 0.04f, 0.03f, 0.88f, 6.0f, - 0.0f, 0.0f, 0.0f, 0.0f, 17.0f, 0.0f, 0.0f, 0.0f, 0.0f, 18.0f, 0.0f, 0.0f, 0.01f, 0.15f, 18.5f, 0.0f, 0.01f, 0.03f, 0.25f, 19.0f, - 0.0f, 0.0f, 0.0f, 0.65f, 19.5f, 0.0f, 0.0f, 0.0f, 0.96f, 20.0f, 0.0f, 0.0f, 0.0f, 0.99f, 24.0f, 0.0f, 0.0f, 0.0f, 1.0f, -}; -s32 D_8035078C = 0; - -extern u8 D_80378CF4; - -#pragma GLOBAL_ASM("asm/nonmatchings/app/code_CB7C0/func_80344290.s") - -#pragma GLOBAL_ASM("asm/nonmatchings/app/code_CB7C0/func_803442F8.s") - -#pragma GLOBAL_ASM("asm/nonmatchings/app/code_CB7C0/func_8034450C.s") - -#pragma GLOBAL_ASM("asm/nonmatchings/app/code_CB7C0/func_8034467C.s") - -#pragma GLOBAL_ASM("asm/nonmatchings/app/code_CB7C0/func_8034473C.s") - -u8 func_803448F4(void) { - u8 ret; - s32 i; - - ret = 0; - for (i = 0; i < D_80378CF4; i++) { - ret += D_80378CF8[i].unk46; - } - return ret; -} - -#pragma GLOBAL_ASM("asm/nonmatchings/app/code_CB7C0/func_80344948.s") diff --git a/src/app/code_CB7C0.h b/src/app/code_CB7C0.h deleted file mode 100644 index ff570c94..00000000 --- a/src/app/code_CB7C0.h +++ /dev/null @@ -1,20 +0,0 @@ -#ifndef APP_CODE_CB7C0_H -#define APP_CODE_CB7C0_H - -#include - -typedef struct { - u8 pad0[0x46]; - u8 unk46; - u8 pad47[0x4C - 0x47]; -} Unk80378CF8; - -extern Unk80378CF8 D_80378CF8[]; - -void func_80344290(void); -void func_803442F8(void); -void func_8034450C(Unk80345464_Arg0*); -void func_8034467C(void); -u8 func_803448F4(void); - -#endif // APP_CODE_CB7C0_H diff --git a/src/app/targets.c b/src/app/targets.c new file mode 100644 index 00000000..e28ac4be --- /dev/null +++ b/src/app/targets.c @@ -0,0 +1,105 @@ +#include "common.h" +#include "targets.h" +#include "code_9A960.h" +#include "hud.h" +#include + +typedef struct { + Vec3F position; + Vec3F angle; + u8 targetType; + u8 unk19; + s32 pad1C; +} MissileTarget; // size = 0x20 + + +f32 D_803506A0[] = { + 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 5.0f, 0.05f, 0.0f, 0.0f, 0.975f, 5.5f, 0.06f, 0.04f, 0.03f, 0.88f, 6.0f, + 0.0f, 0.0f, 0.0f, 0.0f, 17.0f, 0.0f, 0.0f, 0.0f, 0.0f, 18.0f, 0.0f, 0.0f, 0.01f, 0.15f, 18.5f, 0.0f, 0.01f, 0.03f, 0.25f, 19.0f, + 0.0f, 0.0f, 0.0f, 0.65f, 19.5f, 0.0f, 0.0f, 0.0f, 0.96f, 20.0f, 0.0f, 0.0f, 0.0f, 0.99f, 24.0f, 0.0f, 0.0f, 0.0f, 1.0f, +}; +s32 D_8035078C = 0; + +extern MissileTarget* sMissileTargets; +extern u8 sMissileTargetCount; + +void func_80344290(void) { + s32 i; + + for (i = 0; i < ARRAY_COUNT(D_80378CF8); i++) { + D_80378CF8[i].unk0 = 0xFFFF; + D_80378CF8[i].unk46 = 0; + D_80378CF8[i].unk47 = 0; + D_80378CF8[i].unk48 = 0xFF; + } +} + +void func_803442F8(void) { + Unk80378CF8* var_s1; + s32 i; + MissileTarget* missileTarget; + + if (D_80362690->unkA0 == 0) { + return; + } + sMissileTargetCount = levelDataGetTARG((void**)&sMissileTargets); + if (sMissileTargetCount > ARRAY_COUNT(D_80378CF8)) { + _uvDebugPrintf("targets : too many missile targets defined in level [%d]\n", sMissileTargetCount); + sMissileTargetCount = 0; + return; + } + + if (sMissileTargetCount == 0) { + return; + } + + uvLevelAppend(0x12); + for (i = 0; i < sMissileTargetCount; i++) { + var_s1 = &D_80378CF8[i]; + missileTarget = &sMissileTargets[i]; + if (var_s1->unk46 == 0) { + if (var_s1->unk47 == 0) { + var_s1->unk44 = missileTarget->targetType; + var_s1->unk45 = missileTarget->unk19; + func_80313640(missileTarget->position.x, missileTarget->position.y, missileTarget->position.z, missileTarget->angle.x * 0.0174533f, missileTarget->angle.y * 0.0174533f, missileTarget->angle.z * 0.0174533f, &var_s1->unk4); + var_s1->unk47 = 1; + } + var_s1->unk0 = uvDobjAllocIdx(); + var_s1->unk48 = hud_8031A6C8(missileTarget->position.x, missileTarget->position.y, missileTarget->position.z); + switch (missileTarget->targetType) { + case 0: + uvDobjModel(var_s1->unk0, 0xF9); + break; + case 1: + uvDobjModel(var_s1->unk0, 0xF8); + break; + case 2: + uvDobjModel(var_s1->unk0, 0xF7); + break; + default: + _uvDebugPrintf("targets : unknwwon target type [%d]\n", missileTarget->targetType); + break; + } + uvDobjPosm(var_s1->unk0, 0, &var_s1->unk4); + } + } +} + +#pragma GLOBAL_ASM("asm/nonmatchings/app/targets/func_8034450C.s") + +#pragma GLOBAL_ASM("asm/nonmatchings/app/targets/func_8034467C.s") + +#pragma GLOBAL_ASM("asm/nonmatchings/app/targets/func_8034473C.s") + +u8 func_803448F4(void) { + u8 ret; + s32 i; + + ret = 0; + for (i = 0; i < sMissileTargetCount; i++) { + ret += D_80378CF8[i].unk46; + } + return ret; +} + +#pragma GLOBAL_ASM("asm/nonmatchings/app/targets/func_80344948.s") diff --git a/src/app/targets.h b/src/app/targets.h new file mode 100644 index 00000000..b118ef5a --- /dev/null +++ b/src/app/targets.h @@ -0,0 +1,27 @@ +#ifndef APP_TARGETS_G +#define APP_TARGETS_G + +#include +#include + +typedef struct { + u16 unk0; // alloc index? + u8 pad2[0x4-0x2]; + Mtx4F unk4; + u8 unk44; + u8 unk45; + u8 unk46; + u8 unk47; + u8 unk48; + u8 pad49[0x4C - 0x49]; +} Unk80378CF8; // size = 0x4C + +extern Unk80378CF8 D_80378CF8[40]; + +void func_80344290(void); +void func_803442F8(void); +void func_8034450C(Unk80345464_Arg0*); +void func_8034467C(void); +u8 func_803448F4(void); + +#endif // APP_TARGETS_G diff --git a/src/app/level_objects.c b/src/app/task.c similarity index 99% rename from src/app/level_objects.c rename to src/app/task.c index ce0a316e..a3f5ba6f 100644 --- a/src/app/level_objects.c +++ b/src/app/task.c @@ -26,7 +26,7 @@ #include "code_B2900.h" #include "code_B6FE0.h" #include "code_BB820.h" -#include "code_CB7C0.h" +#include "targets.h" #include "code_D2D50.h" #include "code_D3810.h" #include "code_D4290.h" From fb0f3d4c0a38d6e2afc21296bba658fba8dea9dd Mon Sep 17 00:00:00 2001 From: Bl00D4NGEL Date: Fri, 27 Feb 2026 23:44:09 +0100 Subject: [PATCH 03/13] match the rest of targets.c --- include/uv_fx.h | 1 + src/app/targets.c | 115 ++++++++++++++++++++++++++++++++++++++++++++-- src/app/targets.h | 3 +- 3 files changed, 114 insertions(+), 5 deletions(-) diff --git a/include/uv_fx.h b/include/uv_fx.h index 1d7ac156..d740be3d 100644 --- a/include/uv_fx.h +++ b/include/uv_fx.h @@ -102,5 +102,6 @@ void func_8021A038(UnkModelTrail* arg0); s32 func_8021A334(f32 arg0, f32 arg1, f32 arg2, f32 arg3, u16 arg4); void func_8021BE28(u16 fxId, Mtx4F* arg1); s32 func_8021EFF0(s32 type); +void uvFxProps(s32 fxId, ...); #endif // UV_FX_H diff --git a/src/app/targets.c b/src/app/targets.c index e28ac4be..011719cb 100644 --- a/src/app/targets.c +++ b/src/app/targets.c @@ -1,8 +1,13 @@ #include "common.h" #include "targets.h" #include "code_9A960.h" +#include "code_B2900.h" #include "hud.h" +#include "snd.h" +#include "text_data.h" #include +#include +#include typedef struct { Vec3F position; @@ -85,11 +90,101 @@ void func_803442F8(void) { } } -#pragma GLOBAL_ASM("asm/nonmatchings/app/targets/func_8034450C.s") +void func_8034450C(Mtx4F* arg0) { + Mtx4F sp50; + Unk80378CF8* var_s0; + s32 i; + s32 var_s4; + + var_s4 = 1; + if ((D_80362690->unkA0 == 0) || ((s32) sMissileTargetCount <= 0)) { + return; + } + + *D_803506A0 += 3.1415923f * D_8034F854; + if (*D_803506A0 > 6.2831855f) { + *D_803506A0 -= 6.2831855f; + } + + for (i = 0; i < sMissileTargetCount; i++) { + var_s0 = &D_80378CF8[i]; + if ((var_s0->unk44 == 0) && (var_s0->unk46 == 0) && (var_s0->unk0 != 0xFFFF)) { + if (var_s4 != 0) { + var_s4 = 0; + uvMat4SetIdentity(&sp50); + uvMat4Copy(&sp50, &var_s0->unk4); + uvMat4RotateAxis(&sp50, *D_803506A0, 'z'); + } + sp50.m[3][0] = var_s0->unk4.m[3][0]; + sp50.m[3][1] = var_s0->unk4.m[3][1]; + sp50.m[3][2] = var_s0->unk4.m[3][2]; + uvDobjPosm(var_s0->unk0, 0, &sp50); + } + } +} -#pragma GLOBAL_ASM("asm/nonmatchings/app/targets/func_8034467C.s") +void func_8034467C(void) { + s32 i; -#pragma GLOBAL_ASM("asm/nonmatchings/app/targets/func_8034473C.s") + for (i = 0; i < sMissileTargetCount; i++) { + if (D_80378CF8[i].unk0 != 0xFFFF) { + uvDobjModel(D_80378CF8[i].unk0, 0xFFFF); + D_80378CF8[i].unk0 = 0xFFFF; + } + if (D_80378CF8[i].unk48 != 0xFF) { + hud_8031A8E0(D_80378CF8[i].unk48); + D_80378CF8[i].unk48 = 0xFF; + } + } +} + +f32 func_8034473C(s32 arg0, s32 arg1) { + Unk80378CF8* var_s0; + s32 i; + s32 sp4C; + s32 sp48; + + for (i = 0; i < sMissileTargetCount; i++) { + var_s0 = &D_80378CF8[i]; + if (arg0 != var_s0->unk0) { + continue; + } + + if (arg1 != 0 && var_s0->unk44 != 0) { + return 1.0f; + } + + if (arg1 != 0) { + func_8033F7F8(0x38U); + hudText_8031D8E0(0x1AD, 1.5f, 8.0f); + } else { + hudText_8031D8E0(0x18A, 1.5f, 8.0f); + } + + func_8032C080((s32) &sp48); + if (sp48 >= 2) { + textFmtIntAt(textGetDataByIdx(0x29), sp48 - 1, 2, 0); + hudWarningText(0x29, 1.5f, 8.0f); + } + + var_s0->unk46 = 1; + sp4C = func_8021EFF0(8); + if (sp4C != 0xFF) { + uvModelGet(sp4C, 8); + uvFxProps(sp4C, 0xA, var_s0->unk4.m[3][0], var_s0->unk4.m[3][1], var_s0->unk4.m[3][2], 0); + } + + uvDobjModel(var_s0->unk0, 0xFFFF); + var_s0->unk0 = 0xFFFF; + if (var_s0->unk48 != 0xFF) { + hud_8031A8E0(var_s0->unk48); + var_s0->unk48 = 0xFF; + } + return 0.0f; + } + + return 1.0f; +} u8 func_803448F4(void) { u8 ret; @@ -102,4 +197,16 @@ u8 func_803448F4(void) { return ret; } -#pragma GLOBAL_ASM("asm/nonmatchings/app/targets/func_80344948.s") +s16 func_80344948(void) { + s32 i; + s16 var_v1; + + var_v1 = 0; + for (i = 0; i < sMissileTargetCount; i++) { + if (D_80378CF8[i].unk46 != 0) { + var_v1 += D_80378CF8[i].unk45; + } + } + + return var_v1; +} diff --git a/src/app/targets.h b/src/app/targets.h index b118ef5a..e21e21f4 100644 --- a/src/app/targets.h +++ b/src/app/targets.h @@ -3,6 +3,7 @@ #include #include +#include typedef struct { u16 unk0; // alloc index? @@ -20,7 +21,7 @@ extern Unk80378CF8 D_80378CF8[40]; void func_80344290(void); void func_803442F8(void); -void func_8034450C(Unk80345464_Arg0*); +void func_8034450C(Mtx4F*); void func_8034467C(void); u8 func_803448F4(void); From e6102a854e7a05440f263bb8785921264cbb5cb8 Mon Sep 17 00:00:00 2001 From: Bl00D4NGEL Date: Sat, 28 Feb 2026 01:18:49 +0100 Subject: [PATCH 04/13] match: app/code_C9B60 func_80342630..func_80343294 --- include/uv_dobj.h | 2 + src/app/cannonball.c | 4 +- src/app/code_9A960.h | 1 + src/app/code_A6000.h | 19 ++-- src/app/code_A64C0.h | 8 ++ src/app/code_C9B60.c | 238 ++++++++++++++++++++++++++++++++++++++++- src/app/code_C9B60.h | 6 ++ src/app/code_D2D50.c | 6 +- src/app/code_D3810.c | 6 +- src/app/code_D4290.c | 2 +- src/app/snd.h | 3 + src/app/spath.c | 1 + src/app/spath.h | 11 ++ src/app/targets.c | 12 +-- src/app/targets.h | 8 +- src/app/user_paths.c | 4 +- src/app/user_paths.h | 12 +-- src/app/wind_objects.c | 34 +++--- src/kernel/code_8170.c | 18 ++-- src/kernel/code_8170.h | 6 +- src/kernel/graphics.c | 4 +- 21 files changed, 332 insertions(+), 73 deletions(-) create mode 100644 src/app/code_A64C0.h create mode 100644 src/app/code_C9B60.h create mode 100644 src/app/spath.h diff --git a/include/uv_dobj.h b/include/uv_dobj.h index 87397b35..87bcc5e1 100644 --- a/include/uv_dobj.h +++ b/include/uv_dobj.h @@ -6,6 +6,8 @@ #include #include +#define WORLD_MODEL_ID 0xFFFF // used to indicate a model that's not bound to a level? + // size: 0x40 typedef struct { u16 unk0; diff --git a/src/app/cannonball.c b/src/app/cannonball.c index 47a78d27..912308de 100644 --- a/src/app/cannonball.c +++ b/src/app/cannonball.c @@ -148,8 +148,8 @@ void cannon_802D5C5C(Unk802D5C5C_Arg0* arg0) { // cannonEndTarget is invoked at the end of a cannonball target void cannonEndTarget(Unk802D5B50_Arg2* arg0) { - uvDobjModel(arg0->unk0, 0xFFFF); - uvDobjModel(arg0->unk54, 0xFFFF); + uvDobjModel(arg0->unk0, WORLD_MODEL_ID); + uvDobjModel(arg0->unk54, WORLD_MODEL_ID); arg0->unk10 = 0xFFFF; arg0->unk0 = 0xFFFF; arg0->unk54 = 0xFFFF; diff --git a/src/app/code_9A960.h b/src/app/code_9A960.h index 9dafaf9c..6ff8bfe2 100644 --- a/src/app/code_9A960.h +++ b/src/app/code_9A960.h @@ -19,5 +19,6 @@ void func_803134D0(f32, f32, f32, f32*, f32*, f32*); void func_80313E18(Vec3F*, Mtx4F*); void func_80314154(void); void func_803141E4(void); +void func_803136C4(f32*, Mtx4F*); #endif // APP_CODE_9A960_H diff --git a/src/app/code_A6000.h b/src/app/code_A6000.h index 0a222995..70df407a 100644 --- a/src/app/code_A6000.h +++ b/src/app/code_A6000.h @@ -6,7 +6,13 @@ #include #include -// size: 0x354 +typedef struct { + Vec4F unk0; + u8 pad10[0x190-0x10]; + Vec3F unk190; + u8 pad[0x2DC-0x19C]; +} Unk8037DCA0_Unk4C; // size = 0x2DC + typedef struct { s32 unk0; s16 unk4; @@ -29,21 +35,20 @@ typedef struct { u8 pad41[0x44-0x41]; f32 unk44; f32 unk48; - u8 pad4C[0x1DC-0x4C]; - Vec3F unk1DC; - u8 pad1E8[0x350-0x1E8]; + Unk8037DCA0_Unk4C unk4C; + u8 pad328[0x350-0x328]; u8 allocated; u8 pad351; u16 unk352; -} Unk8037DCA0; +} Unk8037DCA0; // size = 0x354 // arrays of floats or vectors -// size: 0x2E8 typedef struct { f32 pad0[186]; -} Unk8037F098; +} Unk8037F098; // size = 0x2E8 void func_8031EE48(u16, Unk8037F098*, f32, f32, f32); void uvPathPoseLine(Unk8037F098*, Unk8037DCA0*, f32); +void func_8031EF60(Unk8037DCA0*, s32); #endif // APP_CODE_A6000_H diff --git a/src/app/code_A64C0.h b/src/app/code_A64C0.h new file mode 100644 index 00000000..0dff434d --- /dev/null +++ b/src/app/code_A64C0.h @@ -0,0 +1,8 @@ +#ifndef APP_CODE_A64C0 +#define APP_CODE_A64C0 + +#include + +void func_8031EF90(s32); + +#endif // APP_CODE_A64C0 diff --git a/src/app/code_C9B60.c b/src/app/code_C9B60.c index dee1734a..afd70993 100644 --- a/src/app/code_C9B60.c +++ b/src/app/code_C9B60.c @@ -1,16 +1,246 @@ #include "common.h" +#include "code_C9B60.h" +#include "code_99D40.h" +#include "code_9A960.h" +#include "code_A6000.h" +#include "code_A64C0.h" +#include "code_D2B10.h" +#include "menu.h" +#include "snd.h" +#include "spath.h" +#include "user_paths.h" +#include +#include +#include +#include +#include +typedef struct { + s32 unk0; + s32 unk4; + s32 unk8; + s32 unkC; + s32 unk10; + s32 unk14; + s32 unk18; + s32 unk1C; + s32 unk20; + s32 unk24; + s32 unk28; + Mtx4F unk2C; + Mtx4F unk6C; + Mtx4F unkAC; + Mtx4F unkEC; + Mtx4F unk12C; + Mtx4F unk16C; + u8 pad1AC[0x1EC - 0x1AC]; + Mtx4F unk1EC; + f32 unk22C; + u8 pad230[0x23C - 0x230]; + f32 unk23C; + Unk8037DCA0* unk240[6]; + u16 unk258[6]; + u8 pad264; + s8 unk265; + s8 unk266; +} Unk80378CE0; // size = 0x268 + +// .data u8 D_80350690 = 1; s32 D_80350694 = 1; s32 D_80350698[] = { 0x188, 0x4E }; -#pragma GLOBAL_ASM("asm/nonmatchings/app/code_C9B60/func_80342630.s") +// .bss +extern f32 D_8034F850; +extern f32 D_8034F854; +extern Unk80378CE0* D_80378CE0; +extern f32 D_80378CE4; + +// forward decls +static void func_803427FC(void); +static void func_80343294(void); +/* static */ s32 func_80343550(void); +/* static */ void introSceneRunner(void); +/* static */ void func_80344258(s32); +/* static */ void func_803433A4(void); + +s32 func_80342630(void) { + f32 var_fs0; + f32 var_fs1; + s32 var_s1; + + var_fs0 = 3.1415927f; + var_fs1 = 0.0f; + D_80378CE4 = 0 /*.0f*/; + func_803427FC(); + + do { + uvMat4SetIdentity(&D_80378CE0->unk1EC); + var_fs0 += D_80378CE0->unk23C * D_8034F854; + uvMat4RotateAxis(&D_80378CE0->unk1EC, var_fs0, 0x7A); + if (var_fs0 < -6.2831855f) { + var_fs0 += 6.2831855f; + } + var_s1 = func_80343550(); + uvGfxBegin(); + introSceneRunner(); + uvGfxEnd(); + if (D_80378CE0->unk28 >= 7) { + if (D_80378CE4 == 0.0f) { + D_80378CE4 = D_8034F850 + 20.0f; + } + if (D_80378CE4 <= D_8034F850) { + var_fs1 = 1.0f; + } + } + } while (var_s1 == 0 && var_fs1 == 0.0f); + + D_80350694 += 1; + func_80343294(); + if (var_fs1 != 0.0f) { + var_s1 = 8; + } + + return var_s1; +} + +static void func_803427FC(void) { + Mtx4F sp58; + Unk802D3658_Arg0* sp54; + s32 var_v0; + + D_80378CE0 = (Unk80378CE0*)_uvMemAllocAlign8(sizeof(Unk80378CE0)); + uvMemSet(D_80378CE0, 0U, 0x268U); + uvSprtProps(1, 3, 1, 2, 0x21, 0x96, 9, 9, 0xA, 0, 0xB, 1, 0); + uvSprtProps(3, 3, 1, 2, 0x11B, 0xD5, 9, 0xA, 0); + uvSprtProps(4, 3, 1, 2, 0x21, 0x1E, 9, 0x1E, 0); + sp54 = D_80362690->unk0[D_80362690->unk9C].unkC.unk70; + func_80204BD4(sp54->unk22C, 1, 1.0f); + func_80204A8C(sp54->unk22C, 1); + uvChanEnv(sp54->unk22C, 0x17); + func_80204C94(sp54->unk22C, -0.7009346f, 0.7009346f, -0.5f, 0.5f, 1.0f, 4000.0f); + func_80204AB0(sp54->unk22C, 1, func_8034B6F8); + D_80378CE0->unk14 = func_80340668(0x43); + D_80378CE0->unk18 = func_80340668(0x44); + D_80378CE0->unk1C = func_80340668(0x45); + D_80378CE0->unk20 = func_80340668(0x46); + D_80378CE0->unk24 = func_80340668(0x47); + uvMat4SetIdentity(&sp54->unk108); + spath_update(&sp54->unk108, D_80378CE0->unk14, 0, 1.0f); + spath_update(&D_80378CE0->unk2C, D_80378CE0->unk18, 0, 1.0f); + spath_update(&D_80378CE0->unk6C, D_80378CE0->unk18, 0, 1.0f); + spath_update(&D_80378CE0->unkAC, D_80378CE0->unk18, 0, 1.0f); + spath_update(&D_80378CE0->unkEC, D_80378CE0->unk18, 0, 1.0f); + D_80378CE0->unk0 = uvDobjAllocIdx(); + uvDobjModel(D_80378CE0->unk0, 0x28); + uvMat4SetIdentity(&sp58); + uvDobjPosm(D_80378CE0->unk0, 0, &sp58); + D_80378CE0->unk4 = uvDobjAllocIdx(); + uvDobjModel(D_80378CE0->unk4, 0x157); + uvDobjPosm(D_80378CE0->unk4, 0, &D_80378CE0->unk2C); + uvDobjState(D_80378CE0->unk4, 2); + D_80378CE0->unk8 = uvDobjAllocIdx(); + uvDobjModel(D_80378CE0->unk8, 0xCD); + uvDobjPosm(D_80378CE0->unk8, 0, &D_80378CE0->unk6C); + uvDobjState(D_80378CE0->unk8, 2); + D_80378CE0->unkC = uvDobjAllocIdx(); + uvDobjModel(D_80378CE0->unkC, 0x158); + uvDobjPosm(D_80378CE0->unkC, 0, &D_80378CE0->unkAC); + uvDobjState(D_80378CE0->unkC, 2); + D_80378CE0->unk10 = uvDobjAllocIdx(); + uvDobjModel(D_80378CE0->unk10, 0x159); + uvDobjPosm(D_80378CE0->unk10, 0, &D_80378CE0->unkEC); + uvDobjState(D_80378CE0->unk10, 2); + menuCreateItems(0x66, 0x3C, 6, 1.0f, 1.0f, D_80350698, 2); + func_80312F5C(0, 0xFF, 0xFF, 0); + func_80312F5C(1, 0xFF, 0xFF, 0xFF); + func_80312F5C(2, 0xFF, 0xFF, 0); + D_80378CE0->unk265 = D_80350690; + D_80378CE0->unk266 = D_80350690; + uvaSeqSetTempo(110.0f); + if (D_80350690 != 0) { + D_80378CE0->unk23C = -0.5236f; + var_v0 = 0; + D_80378CE0->unk22C = 0.0f; + D_80378CE0->unk28 = 1; + } else { + D_80378CE0->unk23C = -0.17453f; + D_80378CE0->unk22C = 16.65f; + D_80378CE0->unk28 = 7; + func_80344258(1); + var_v0 = 1; + } + if (var_v0 != D_803505B0) { + func_8033F748(var_v0 & 0xFFFF); + func_8033F964(0); + func_8033FA88(0.75f); + func_8033FCD0(0xFFU); + } +} + +/* static */ void func_80342D2C(void) { + s32 allocIdx; + s32 pad[5]; + f32 sp2FC; + s32 i; + + D_80378CE0->unk240[0] = userPath_8034A4F8(0x48); + D_80378CE0->unk240[1] = userPath_8034A4F8(0x49); + D_80378CE0->unk240[2] = userPath_8034A4F8(0x4A); + D_80378CE0->unk240[3] = userPath_8034A4F8(0x4B); + D_80378CE0->unk240[4] = userPath_8034A4F8(0x4C); + D_80378CE0->unk240[5] = userPath_8034A4F8(0x4D); + func_8031EF60(D_80378CE0->unk240[0], 0x127); + func_8031EF60(D_80378CE0->unk240[1], 0x12B); + func_8031EF60(D_80378CE0->unk240[2], 0x12D); + func_8031EF60(D_80378CE0->unk240[3], 0x12F); + func_8031EF60(D_80378CE0->unk240[4], 0x131); + func_8031EF60(D_80378CE0->unk240[5], 0x133); + uvMat4SetIdentity(&D_80378CE0->unk16C); + uvMat4RotateAxis(&D_80378CE0->unk16C, -1.4835305f, 0x78); + uvMat4RotateAxis(&D_80378CE0->unk16C, 3.141594f, 0x79); + +#define placeInUserPath(idx, modelId) \ + allocIdx = uvDobjAllocIdx(); \ + D_80378CE0->unk258[(idx)] = allocIdx; \ + D_80378CE0->unk240[(idx)]->unk352 = allocIdx; \ + uvDobjModel(D_80378CE0->unk258[(idx)], (modelId)); \ + userPath_8034A950(D_80378CE0->unk240[(idx)]->unk4C, &sp2FC); \ + func_803136C4(&sp2FC, &D_80378CE0->unk12C); \ + uvDobjPosm(D_80378CE0->unk258[(idx)], 0, &D_80378CE0->unk12C); \ + uvDobjState(D_80378CE0->unk258[(idx)], 2); -#pragma GLOBAL_ASM("asm/nonmatchings/app/code_C9B60/func_803427FC.s") + placeInUserPath(0, 0x127); + placeInUserPath(1, 0x12B); + placeInUserPath(2, 0x12D); + placeInUserPath(3, 0x12F); + placeInUserPath(4, 0x131); + placeInUserPath(5, 0x133); -#pragma GLOBAL_ASM("asm/nonmatchings/app/code_C9B60/func_80342D2C.s") + for (i = 0; i < ARRAY_COUNT(D_80378CE0->unk240); i++) { + userPath_8034A8B0(D_80378CE0->unk240[i], 0, 0.0f); + } + func_8031EF90(2); +} -#pragma GLOBAL_ASM("asm/nonmatchings/app/code_C9B60/func_80343294.s") +static void func_80343294(void) { + func_803433A4(); + uvDobjModel(D_80378CE0->unk0, WORLD_MODEL_ID); + uvDobjModel(D_80378CE0->unk4, WORLD_MODEL_ID); + uvDobjModel(D_80378CE0->unk8, WORLD_MODEL_ID); + uvDobjModel(D_80378CE0->unkC, WORLD_MODEL_ID); + uvDobjModel(D_80378CE0->unk10, WORLD_MODEL_ID); + spath_free(D_80378CE0->unk14); + spath_free(D_80378CE0->unk18); + spath_free(D_80378CE0->unk1C); + spath_free(D_80378CE0->unk20); + spath_free(D_80378CE0->unk24); + uvSprtProps(1, 3, 0, 0); + uvSprtProps(2, 3, 0, 0); + uvSprtProps(3, 3, 0, 0); + uvSprtProps(4, 3, 0, 0); + menuSetProps(); +} #pragma GLOBAL_ASM("asm/nonmatchings/app/code_C9B60/func_803433A4.s") diff --git a/src/app/code_C9B60.h b/src/app/code_C9B60.h new file mode 100644 index 00000000..28294fcc --- /dev/null +++ b/src/app/code_C9B60.h @@ -0,0 +1,6 @@ +#ifndef APP_CODE_C9B60_H +#define APP_CODE_C9B60_H + +s32 func_80342630(void); + +#endif // APP_CODE_C9B60_H diff --git a/src/app/code_D2D50.c b/src/app/code_D2D50.c index aa606f2a..864191ec 100644 --- a/src/app/code_D2D50.c +++ b/src/app/code_D2D50.c @@ -186,7 +186,7 @@ void func_8034BEDC(void) { D_803509C0 = uvDobjAllocIdx(); if (D_803509C0 == 0xFFFF) { if (D_803509C4 != 0xFFFF) { - uvDobjModel(D_803509C4, 0xFFFF); + uvDobjModel(D_803509C4, WORLD_MODEL_ID); D_803509C4 = 0xFFFF; } } else { @@ -209,10 +209,10 @@ void func_8034C0BC(void) { return; } - uvDobjModel(D_803509C0, 0xFFFF); + uvDobjModel(D_803509C0, WORLD_MODEL_ID); D_803509C0 = 0xFFFF; if (D_803509C4 != 0xFFFF) { - uvDobjModel(D_803509C4, 0xFFFF); + uvDobjModel(D_803509C4, WORLD_MODEL_ID); D_803509C4 = 0xFFFF; } func_803212DC(D_803509CC); diff --git a/src/app/code_D3810.c b/src/app/code_D3810.c index dd7d44e7..8b80e6be 100644 --- a/src/app/code_D3810.c +++ b/src/app/code_D3810.c @@ -189,7 +189,7 @@ void func_8034C964(void) { D_8037F450[i].unk0 = uvDobjAllocIdx(); if (D_8037F450[i].unk0 == 0xFFFF) { if (D_8037F450[i].unk4 != 0xFFFF) { - uvDobjModel(D_8037F450[i].unk4, 0xFFFF); + uvDobjModel(D_8037F450[i].unk4, WORLD_MODEL_ID); D_8037F450[i].unk4 = 0xFFFF; } } else { @@ -236,10 +236,10 @@ void func_8034CB80(void) { for (i = 0; i < ARRAY_COUNT(D_8037F450); i++) { if (D_8037F450[i].unk0 != 0xFFFF) { - uvDobjModel(D_8037F450[i].unk0, 0xFFFF); + uvDobjModel(D_8037F450[i].unk0, WORLD_MODEL_ID); D_8037F450[i].unk0 = 0xFFFF; if (D_8037F450[i].unk4 != 0xFFFF) { - uvDobjModel(D_8037F450[i].unk4, 0xFFFF); + uvDobjModel(D_8037F450[i].unk4, WORLD_MODEL_ID); D_8037F450[i].unk4 = 0xFFFF; } } diff --git a/src/app/code_D4290.c b/src/app/code_D4290.c index ef796a5d..c7d85865 100644 --- a/src/app/code_D4290.c +++ b/src/app/code_D4290.c @@ -203,7 +203,7 @@ void func_8034D4AC(void) { for (i = 0; i < D_8037F514; i++) { var_s0 = &D_8037F518[i]; if (var_s0->unk0 != 0xFFFF) { - uvDobjModel(var_s0->unk0, 0xFFFF); + uvDobjModel(var_s0->unk0, WORLD_MODEL_ID); } var_s0->unk0 = 0xFFFF; } diff --git a/src/app/snd.h b/src/app/snd.h index 3a21d448..936e8fac 100644 --- a/src/app/snd.h +++ b/src/app/snd.h @@ -3,6 +3,8 @@ #include +extern u16 D_803505B0; + void func_8033F6F8(s32, s32); void func_8033F748(s32); void func_8033F758(u8, f32, f32, f32); @@ -10,5 +12,6 @@ void func_8033F7F8(u8); void func_8033F964(s32); void func_8033FB14(void); void func_8033FCD0(u16); +void func_8033FA88(f32); #endif // APP_SND_H diff --git a/src/app/spath.c b/src/app/spath.c index dcc49b42..8ca27d62 100644 --- a/src/app/spath.c +++ b/src/app/spath.c @@ -1,4 +1,5 @@ #include "common.h" +#include "spath.h" f32 D_80350650[] = { 2.0f, -2.0f, 1.0f, 1.0f, -3.0f, 3.0f, -2.0f, -1.0f, 0.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f }; diff --git a/src/app/spath.h b/src/app/spath.h new file mode 100644 index 00000000..45086c5d --- /dev/null +++ b/src/app/spath.h @@ -0,0 +1,11 @@ +#ifndef APP_SPATH_H +#define APP_SPATH_H + +#include +#include + +s32 func_80340668(s32); +void spath_update(Mtx4F*, s32, f32, f32); +void spath_free(s32); + +#endif // APP_SPATH_H diff --git a/src/app/targets.c b/src/app/targets.c index 011719cb..c3baaf88 100644 --- a/src/app/targets.c +++ b/src/app/targets.c @@ -17,7 +17,6 @@ typedef struct { s32 pad1C; } MissileTarget; // size = 0x20 - f32 D_803506A0[] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 5.0f, 0.05f, 0.0f, 0.0f, 0.975f, 5.5f, 0.06f, 0.04f, 0.03f, 0.88f, 6.0f, 0.0f, 0.0f, 0.0f, 0.0f, 17.0f, 0.0f, 0.0f, 0.0f, 0.0f, 18.0f, 0.0f, 0.0f, 0.01f, 0.15f, 18.5f, 0.0f, 0.01f, 0.03f, 0.25f, 19.0f, @@ -66,7 +65,8 @@ void func_803442F8(void) { if (var_s1->unk47 == 0) { var_s1->unk44 = missileTarget->targetType; var_s1->unk45 = missileTarget->unk19; - func_80313640(missileTarget->position.x, missileTarget->position.y, missileTarget->position.z, missileTarget->angle.x * 0.0174533f, missileTarget->angle.y * 0.0174533f, missileTarget->angle.z * 0.0174533f, &var_s1->unk4); + func_80313640(missileTarget->position.x, missileTarget->position.y, missileTarget->position.z, missileTarget->angle.x * 0.0174533f, + missileTarget->angle.y * 0.0174533f, missileTarget->angle.z * 0.0174533f, &var_s1->unk4); var_s1->unk47 = 1; } var_s1->unk0 = uvDobjAllocIdx(); @@ -97,7 +97,7 @@ void func_8034450C(Mtx4F* arg0) { s32 var_s4; var_s4 = 1; - if ((D_80362690->unkA0 == 0) || ((s32) sMissileTargetCount <= 0)) { + if ((D_80362690->unkA0 == 0) || ((s32)sMissileTargetCount <= 0)) { return; } @@ -107,7 +107,7 @@ void func_8034450C(Mtx4F* arg0) { } for (i = 0; i < sMissileTargetCount; i++) { - var_s0 = &D_80378CF8[i]; + var_s0 = &D_80378CF8[i]; if ((var_s0->unk44 == 0) && (var_s0->unk46 == 0) && (var_s0->unk0 != 0xFFFF)) { if (var_s4 != 0) { var_s4 = 0; @@ -128,7 +128,7 @@ void func_8034467C(void) { for (i = 0; i < sMissileTargetCount; i++) { if (D_80378CF8[i].unk0 != 0xFFFF) { - uvDobjModel(D_80378CF8[i].unk0, 0xFFFF); + uvDobjModel(D_80378CF8[i].unk0, WORLD_MODEL_ID); D_80378CF8[i].unk0 = 0xFFFF; } if (D_80378CF8[i].unk48 != 0xFF) { @@ -161,7 +161,7 @@ f32 func_8034473C(s32 arg0, s32 arg1) { hudText_8031D8E0(0x18A, 1.5f, 8.0f); } - func_8032C080((s32) &sp48); + func_8032C080((s32)&sp48); if (sp48 >= 2) { textFmtIntAt(textGetDataByIdx(0x29), sp48 - 1, 2, 0); hudWarningText(0x29, 1.5f, 8.0f); diff --git a/src/app/targets.h b/src/app/targets.h index e21e21f4..e19ac174 100644 --- a/src/app/targets.h +++ b/src/app/targets.h @@ -1,5 +1,5 @@ -#ifndef APP_TARGETS_G -#define APP_TARGETS_G +#ifndef APP_TARGETS_H +#define APP_TARGETS_H #include #include @@ -24,5 +24,7 @@ void func_803442F8(void); void func_8034450C(Mtx4F*); void func_8034467C(void); u8 func_803448F4(void); +f32 func_8034473C(s32, s32); +s16 func_80344948(void); -#endif // APP_TARGETS_G +#endif // APP_TARGETS_H diff --git a/src/app/user_paths.c b/src/app/user_paths.c index 4546c9aa..8cb3f954 100644 --- a/src/app/user_paths.c +++ b/src/app/user_paths.c @@ -104,7 +104,7 @@ Unk8037DCA0* userPath_8034A4F8(s32 arg0) { temp_s0->unk1C[i].unkC = var_a1[i].unkC - var_s3; if (i == 0) { for (j = 0; j < 3; j++) { - temp_s0->unk1DC.f[j] = var_a1[i].unk0.f[j]; + temp_s0->unk4C.unk190.f[j] = var_a1[i].unk0.f[j]; } } @@ -143,7 +143,7 @@ void userPath_8034A8B0(Unk8037DCA0* arg0, u8 arg1, f32 arg2) { func_8031EE48(arg0->unk352, &D_8037F098, 1.0f, 1.0f, 1.0f); } -void userPath_8034A950(Unk8034A950 arg0, f32* arg183) { +void userPath_8034A950(Unk8037DCA0_Unk4C arg0, f32* arg183) { arg183[0] = arg0.unk190.f[0]; arg183[1] = arg0.unk190.f[1]; arg183[2] = arg0.unk190.f[2]; diff --git a/src/app/user_paths.h b/src/app/user_paths.h index a3ab542d..c98d855c 100644 --- a/src/app/user_paths.h +++ b/src/app/user_paths.h @@ -5,21 +5,11 @@ #include #include "code_A6000.h" -// size: 0x2DC -// it's possible unk190 is part of a different struct, will have to adjust func_8034A950 if so -typedef struct { - Vec4F unk0; - u8 pad10[0x190-0x10]; - Vec3F unk190; - u8 pad[0x2DC-0x19C]; -} Unk8034A950; - - void userPathInit(void); Unk8037DCA0* userPath_8034A4F8(s32 arg0); void userPathFree(s32 path); void userPath_8034A8B0(Unk8037DCA0* arg0, u8 arg1, f32 arg2); // arg0 is the actual struct and not a pointer to it -void userPath_8034A950(Unk8034A950 arg0, f32* arg183); +void userPath_8034A950(Unk8037DCA0_Unk4C arg0, f32* arg183); #endif // APP_USER_PATHS_H diff --git a/src/app/wind_objects.c b/src/app/wind_objects.c index 3b37a488..44b3c2b3 100644 --- a/src/app/wind_objects.c +++ b/src/app/wind_objects.c @@ -9,11 +9,11 @@ #include #define WIND_OBJECT_COUNT 0x10 -#define INITIAL_MODEL_ID 0xFFFF +#define INITIAL_OBJECT_ID 0xFFFF // size: 0xCC typedef struct { - u16 modelId; + u16 objId; u16 pad2; Mtx4F unk4; Mtx4F unk44; @@ -38,7 +38,7 @@ void windObjectsInit(void) { s32 i; // clang-format off: needs to be on one line to match - for (i = 0; i < WIND_OBJECT_COUNT; i++) { sWindObjects[i].modelId = INITIAL_MODEL_ID; } + for (i = 0; i < WIND_OBJECT_COUNT; i++) { sWindObjects[i].objId = INITIAL_OBJECT_ID; } // clang-format on } @@ -58,30 +58,30 @@ void func_8034E0B4(void) { for (i = 0; i < sWindObjectsInLevel; i++) { windObject = &sWindObjects[i]; windObjectData = &sWindObjectsData[i]; - windObject->modelId = uvDobjAllocIdx(); + windObject->objId = uvDobjAllocIdx(); switch (windObjectData->unkC) { case 0: - uvDobjModel(windObject->modelId, 0x40); + uvDobjModel(windObject->objId, 0x40); uvModelGetPosm(0x40, 1, &windObject->unk44); uvModelGetPosm(0x40, 2, &windObject->unk84); windObject->unkC8 = 0.0f; windObject->unkC4 = 0.0f; break; case 1: - uvDobjModel(windObject->modelId, 0x53); + uvDobjModel(windObject->objId, 0x53); uvModelGetPosm(0x53, 1, &windObject->unk44); uvModelGetPosm(0x53, 2, &windObject->unk84); windObject->unkC4 = 0.0f; break; case 2: - uvDobjModel(windObject->modelId, 0x40); + uvDobjModel(windObject->objId, 0x40); break; } uvMat4SetIdentity(&windObject->unk4); windObject->unk4.m[3][0] = windObjectData->pos.f[0]; windObject->unk4.m[3][1] = windObjectData->pos.f[1]; windObject->unk4.m[3][2] = windObjectData->pos.f[2]; - uvDobjPosm(windObject->modelId, 0, &sWindObjects[i].unk4); + uvDobjPosm(windObject->objId, 0, &sWindObjects[i].unk4); } } @@ -138,10 +138,10 @@ void func_8034E274(void) { windObject->unkC8 = func_80313AF4((1.0471975f * var_fs0) + -0.1745329f, windObject->unkC8, 3.0f); uvMat4Copy(&spA0, &windObject->unk44); uvMat4RotateAxis(&spA0, windObject->unkC4, 'z'); - uvDobjPosm(windObject->modelId, 1, &spA0); + uvDobjPosm(windObject->objId, 1, &spA0); uvMat4Copy(&spA0, &windObject->unk84); uvMat4RotateAxis(&spA0, windObject->unkC8, 'x'); - uvDobjPosm(windObject->modelId, 2, &spA0); + uvDobjPosm(windObject->objId, 2, &spA0); break; case 1: // clang-format off:ifs needs to be on one line to match @@ -157,9 +157,9 @@ void func_8034E274(void) { windObject->unkC4 = func_80313AF4(temp_fa0, windObject->unkC4, 0.3f); uvMat4Copy(&spA0, &windObject->unk44); uvMat4RotateAxis(&spA0, windObject->unkC4, 'z'); - uvDobjPosm(windObject->modelId, 1, &spA0); + uvDobjPosm(windObject->objId, 1, &spA0); uvMat4RotateAxis(&windObject->unk84, 3.0f * temp_fv0_2 * D_8034F854, 'y'); - uvDobjPosm(windObject->modelId, 2, &windObject->unk84); + uvDobjPosm(windObject->objId, 2, &windObject->unk84); break; } } @@ -171,18 +171,18 @@ void func_8034E628(void) { for (i = 0; i < sWindObjectsInLevel; i++) { windObject = &sWindObjects[i]; - if (windObject->modelId != INITIAL_MODEL_ID) { - uvDobjModel(windObject->modelId, INITIAL_MODEL_ID); - windObject->modelId = INITIAL_MODEL_ID; + if (windObject->objId != INITIAL_OBJECT_ID) { + uvDobjModel(windObject->objId, WORLD_MODEL_ID); + windObject->objId = INITIAL_OBJECT_ID; } } } -s32 func_8034E6AC(s32 modelId) { +s32 func_8034E6AC(s32 objId) { s32 i; for (i = 0; i < sWindObjectsInLevel; i++) { - if (sWindObjects[i].modelId != INITIAL_MODEL_ID && modelId == sWindObjects[i].modelId) { + if (sWindObjects[i].objId != INITIAL_OBJECT_ID && objId == sWindObjects[i].objId) { return 1; } } diff --git a/src/kernel/code_8170.c b/src/kernel/code_8170.c index 8e064af9..ea1b9eaa 100644 --- a/src/kernel/code_8170.c +++ b/src/kernel/code_8170.c @@ -1318,7 +1318,7 @@ s32 uvTerraGetSeg(s32 terraId, f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5, return var_s3; } -void uvTerraGetColor(s32 terraId, u32 surfaceId, u8* arg2, u8* arg3, u8* arg4) { +void uvTerraGetColor(s32 terraId, s32 surfaceId, u8* arg2, u8* arg3, u8* arg4) { ParsedUVCT* temp_a0; ParsedUVTR* temp_v0; ParsedUVTX* temp_v0_3; @@ -1337,7 +1337,7 @@ void uvTerraGetColor(s32 terraId, u32 surfaceId, u8* arg2, u8* arg3, u8* arg4) { _uvDebugPrintf("uvTerraGetColor: terra %d not defined for level\n", terraId); return; } - temp_v1 = &temp_v0->unk28[(surfaceId >> 22) & 0x3FF]; + temp_v1 = &temp_v0->unk28[((u32)surfaceId >> 22) & 0x3FF]; if (temp_v1 == NULL) { _uvDebugPrintf("uvTerraGetColor: bad surfce id [0x%x]\n", surfaceId); return; @@ -1347,7 +1347,7 @@ void uvTerraGetColor(s32 terraId, u32 surfaceId, u8* arg2, u8* arg3, u8* arg4) { _uvDebugPrintf("uvTerraGetColor: bad surfce id [0x%x]\n", surfaceId); return; } - temp_v0_2 = &temp_a0->unk8[(surfaceId >> 12) & 0x3FF]; + temp_v0_2 = &temp_a0->unk8[((u32)surfaceId >> 12) & 0x3FF]; temp_v1_2 = &temp_v0_2->unkC[surfaceId & 0xFFF]; if ((temp_v0_2->unk0 & 0xFFF) != 0xFFF) { temp_v0_3 = gGfxUnkPtrs->textures[temp_v0_2->unk0 & 0xFFF]; @@ -1364,7 +1364,7 @@ void uvTerraGetColor(s32 terraId, u32 surfaceId, u8* arg2, u8* arg3, u8* arg4) { *arg4 = (vtx[temp_v1_2->unk0].v.cn[2] + vtx[temp_v1_2->unk2].v.cn[2] + vtx[temp_v1_2->unk4].v.cn[2]) / 3; } -s32 uvTerraGetState(s32 terraId, u32 surfaceId) { +s32 uvTerraGetState(s32 terraId, s32 surfaceId) { ParsedUVCT* temp_a2; ParsedUVTR* temp_v0; s32 temp_t9; @@ -1380,7 +1380,7 @@ s32 uvTerraGetState(s32 terraId, u32 surfaceId) { _uvDebugPrintf("uvTerraGetState: terra %d not defined for level\n", terraId); return 0xFFF; } - temp_t9 = (surfaceId >> 22) & 0x3FF; + temp_t9 = ((u32)surfaceId >> 22) & 0x3FF; if ((temp_t9) >= (temp_v0->unk18 * temp_v0->unk19)) { _uvDebugPrintf("uvTerraGetState: bad surface id [0x%x]\n", surfaceId); return 0xFFF; @@ -1395,11 +1395,11 @@ s32 uvTerraGetState(s32 terraId, u32 surfaceId) { _uvDebugPrintf("uvTerraGetState: bad surface id [0x%x]\n", surfaceId); return 0xFFF; } - temp_v1 = &temp_a2->unk8[(surfaceId >> 12) & 0x3FF]; + temp_v1 = &temp_a2->unk8[((u32)surfaceId >> 12) & 0x3FF]; return temp_v1->unk0; } -void uvTerraGetPlane(s32 terraId, u32 surfaceId, f32 px, f32 py, f32* arg4, Vec3F* arg5) { +void uvTerraGetPlane(s32 terraId, s32 surfaceId, f32 px, f32 py, f32* arg4, Vec3F* arg5) { ParsedUVCT* temp_v0; uvUnkTileStruct* sp70; ParsedUVTR* temp_a0; @@ -1424,9 +1424,9 @@ void uvTerraGetPlane(s32 terraId, u32 surfaceId, f32 px, f32 py, f32* arg4, Vec3 _uvDebugPrintf("uvTerraGetPlane : terra [%d] not in level\n", terraId); return; } - sp70 = &temp_a0->unk28[(surfaceId >> 22) & 0x3FF]; + sp70 = &temp_a0->unk28[((u32)surfaceId >> 22) & 0x3FF]; temp_v0 = sp70->unk40; - temp_v1 = &temp_v0->unk8[(surfaceId >> 12) & 0x3FF]; + temp_v1 = &temp_v0->unk8[((u32)surfaceId >> 12) & 0x3FF]; temp_s2 = &temp_v1->unkC[surfaceId & 0xFFF]; sp64 = temp_v0->vtx; diff --git a/src/kernel/code_8170.h b/src/kernel/code_8170.h index d7bd27a9..de29a93b 100644 --- a/src/kernel/code_8170.h +++ b/src/kernel/code_8170.h @@ -8,11 +8,11 @@ #define HIT_COUNT 32 ParsedUVTR* uvTerraGetBox(s32 terraId); -void uvTerraGetColor(s32 terraId, u32 surfaceId, u8* arg2, u8* arg3, u8* arg4); -void uvTerraGetPlane(s32 terraId, u32 surfaceId, f32 px, f32 py, f32* arg4, Vec3F* arg5); +void uvTerraGetColor(s32 terraId, s32 surfaceId, u8* arg2, u8* arg3, u8* arg4); +void uvTerraGetPlane(s32 terraId, s32 surfaceId, f32 px, f32 py, f32* arg4, Vec3F* arg5); u32 uvTerraGetPt(s32 terraId, f32 arg1, f32 arg2, s32** arg3); s32 uvTerraGetSeg(s32 terraId, f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5, f32 arg6, s32** arg7, f32** arg8); -s32 uvTerraGetState(s32 terraId, u32 surfaceId); +s32 uvTerraGetState(s32 terraId, s32 surfaceId); s32 func_80212480(f32, f32, Vtx*, u16, u16, u16, f32); s32 func_80212FF4(ParsedUVTR*, f32, f32, f32, f32*, f32*, f32*, u16*, u16*, u8); diff --git a/src/kernel/graphics.c b/src/kernel/graphics.c index 2bbe2ba3..87c2ed97 100644 --- a/src/kernel/graphics.c +++ b/src/kernel/graphics.c @@ -1018,7 +1018,7 @@ void uvGfxStatePop(void) { } void uvGfxSetFlags(s32 flags) { - s32 newState; + u32 newState; uvGfxState_t sp20; newState = flags | gGfxStateStackData; @@ -1030,7 +1030,7 @@ void uvGfxSetFlags(s32 flags) { } void uvGfxClearFlags(s32 flags) { - s32 newState; + u32 newState; uvGfxState_t sp20; newState = ~flags & gGfxStateStackData; From 2038df43d5f683525dfdc7d68a264c54b5464efc Mon Sep 17 00:00:00 2001 From: Bl00D4NGEL Date: Sat, 28 Feb 2026 02:17:43 +0100 Subject: [PATCH 05/13] match: rest of app/code_C9B60 --- config/us/pilotwings64.us.yaml | 3 +- src/app/code_66160.h | 1 + src/app/code_A6000.h | 1 + src/app/code_A64C0.h | 3 + src/app/code_C9B60.c | 330 ++++++++++++++++++++++++++++++--- src/app/code_C9B60.h | 1 + 6 files changed, 315 insertions(+), 24 deletions(-) diff --git a/config/us/pilotwings64.us.yaml b/config/us/pilotwings64.us.yaml index 7ff1ab12..d40b2a36 100644 --- a/config/us/pilotwings64.us.yaml +++ b/config/us/pilotwings64.us.yaml @@ -630,7 +630,8 @@ segments: - { type: .bss, vram: 0x803718F0, name: app/results } - { type: bss, vram: 0x80371960, name: app_bss_80371960 } - { type: .bss, vram: 0x80377F10, name: app/text_data } - - { type: bss, vram: 0x80378CE0, name: app_bss_80378CE0 } + - { type: .bss, vram: 0x80378CE0, name: app/code_C9B60 } + - { type: bss, vram: 0x80378CF0, name: app_bss_80378CE0 } - { type: .bss, vram: 0x8037AB50, name: app/thermals } - { type: .bss, vram: 0x8037ACE0, name: app/total_results } - { type: bss, vram: 0x8037AD70, name: app_bss_8037ACD8 } diff --git a/src/app/code_66160.h b/src/app/code_66160.h index a49c3895..782e5438 100644 --- a/src/app/code_66160.h +++ b/src/app/code_66160.h @@ -10,5 +10,6 @@ void screenDrawBox(s32 arg0, s32 arg1, s32 arg2, s32 arg3, u8 arg4, u8 arg5, u8 void screenDrawBox2(s32, s32, s32, s32, s32, s32, s32, s32); void screenDrawBoxSetup(void); void db_getstart(Mtx4F*, Vec3F*, u8*, f32*); +void func_802DFA18(void); #endif // APP_CODE_66160_H diff --git a/src/app/code_A6000.h b/src/app/code_A6000.h index 70df407a..479118d1 100644 --- a/src/app/code_A6000.h +++ b/src/app/code_A6000.h @@ -50,5 +50,6 @@ typedef struct { void func_8031EE48(u16, Unk8037F098*, f32, f32, f32); void uvPathPoseLine(Unk8037F098*, Unk8037DCA0*, f32); void func_8031EF60(Unk8037DCA0*, s32); +void func_8031EF68(Unk8037DCA0*); #endif // APP_CODE_A6000_H diff --git a/src/app/code_A64C0.h b/src/app/code_A64C0.h index 0dff434d..9b9c093e 100644 --- a/src/app/code_A64C0.h +++ b/src/app/code_A64C0.h @@ -2,7 +2,10 @@ #define APP_CODE_A64C0 #include +#include void func_8031EF90(s32); +void func_8031FE18(s32); +void func_8031FA0C(s32, s32, s32, u16, Mtx4F*, Mtx4F*); #endif // APP_CODE_A64C0 diff --git a/src/app/code_C9B60.c b/src/app/code_C9B60.c index afd70993..4eac0086 100644 --- a/src/app/code_C9B60.c +++ b/src/app/code_C9B60.c @@ -1,10 +1,12 @@ #include "common.h" -#include "code_C9B60.h" +#include "code_66160.h" #include "code_99D40.h" #include "code_9A960.h" #include "code_A6000.h" #include "code_A64C0.h" +#include "code_C9B60.h" #include "code_D2B10.h" +#include "demo.h" #include "menu.h" #include "snd.h" #include "spath.h" @@ -14,6 +16,8 @@ #include #include #include +#include +#include typedef struct { s32 unk0; @@ -33,16 +37,18 @@ typedef struct { Mtx4F unkEC; Mtx4F unk12C; Mtx4F unk16C; - u8 pad1AC[0x1EC - 0x1AC]; + Mtx4F unk1AC; Mtx4F unk1EC; f32 unk22C; - u8 pad230[0x23C - 0x230]; + f32 unk230; + f32 unk234; + f32 unk238; f32 unk23C; Unk8037DCA0* unk240[6]; u16 unk258[6]; - u8 pad264; - s8 unk265; - s8 unk266; + u8 unk264; + u8 unk265; + u8 unk266; } Unk80378CE0; // size = 0x268 // .data @@ -51,18 +57,19 @@ s32 D_80350694 = 1; s32 D_80350698[] = { 0x188, 0x4E }; // .bss -extern f32 D_8034F850; -extern f32 D_8034F854; -extern Unk80378CE0* D_80378CE0; -extern f32 D_80378CE4; +Unk80378CE0* D_80378CE0; +f32 D_80378CE4; // forward decls static void func_803427FC(void); static void func_80343294(void); -/* static */ s32 func_80343550(void); -/* static */ void introSceneRunner(void); -/* static */ void func_80344258(s32); -/* static */ void func_803433A4(void); +static s32 func_80343550(void); +static void introSceneRunner(void); +static void func_803433A4(void); +static void func_80343B5C(void); +static void func_80343C44(void); +static void func_80343E84(void); +static void func_8034411C(void); s32 func_80342630(void) { f32 var_fs0; @@ -242,20 +249,297 @@ static void func_80343294(void) { menuSetProps(); } -#pragma GLOBAL_ASM("asm/nonmatchings/app/code_C9B60/func_803433A4.s") +static void func_803433A4(void) { + Unk8037DCA0* temp_a0; + + temp_a0 = D_80378CE0->unk240[0]; + if (temp_a0 != NULL) { + func_8031EF68(temp_a0); + uvDobjModel(D_80378CE0->unk258[0], WORLD_MODEL_ID); + userPathFree(0); + func_8031EF68(D_80378CE0->unk240[1]); + uvDobjModel(D_80378CE0->unk258[1], WORLD_MODEL_ID); + userPathFree(1); + func_8031EF68(D_80378CE0->unk240[2]); + uvDobjModel(D_80378CE0->unk258[2], WORLD_MODEL_ID); + userPathFree(2); + func_8031EF68(D_80378CE0->unk240[3]); + uvDobjModel(D_80378CE0->unk258[3], WORLD_MODEL_ID); + userPathFree(3); + func_8031EF68(D_80378CE0->unk240[4]); + uvDobjModel(D_80378CE0->unk258[4], WORLD_MODEL_ID); + userPathFree(4); + func_8031EF68(D_80378CE0->unk240[5]); + uvDobjModel(D_80378CE0->unk258[5], WORLD_MODEL_ID); + userPathFree(5); + D_80378CE0->unk240[0] = NULL; + D_80378CE0->unk240[1] = NULL; + D_80378CE0->unk240[2] = NULL; + D_80378CE0->unk240[3] = NULL; + D_80378CE0->unk240[4] = NULL; + D_80378CE0->unk240[5] = NULL; + func_8031FE18(2); + } +} + +void func_803434E8(void) { + uvClkReset(4); + while (uvClkGetSec(4) < 1.0) { } +} + +static s32 func_80343550(void) { + s32 temp_v0; + s32 sp18; + + sp18 = 0; + func_80313D74(); + if (D_80350694 != 0 && D_80378CE0->unk28 < 7) { + demo_80323020(); + if (demoButtonPress(D_80362690->unk9C, 0xD000) != 0) { + if (demoButtonPress(D_80362690->unk9C, 0x9000) != 0) { + func_8033F7F8(0x6EU); + } else if (demoButtonPress(D_80362690->unk9C, 0x4000) != 0) { + func_8033F7F8(1U); + } + if (D_80378CE0->unk264 != 0) { + sp18 = 10; + } else { + D_80378CE0->unk264 = 1; + D_80378CE0->unk23C = -0.17453f; + D_80378CE0->unk22C = 16.65f; + D_80378CE0->unk28 = 7; + func_803433A4(); + if (D_803505B0 != 1) { + func_8033F964(1); + func_8033F748(1); + func_8033F964(0); + } + D_80378CE0->unk265 = 0; + D_80378CE0->unk266 = 0; + } + } + } + + switch (D_80378CE0->unk28) { + case 1: + if (D_80378CE0->unk22C > 4.65f) { + D_80378CE0->unk28 = 2; + } + break; + case 2: + func_80342D2C(); + D_80378CE0->unk234 = D_80378CE0->unk22C; + D_80378CE0->unk28 = 3; + D_80378CE0->unk23C = -0.17453f; + break; + case 3: + if (D_80378CE0->unk22C > 9.65f) { + D_80378CE0->unk28 = 4; + break; + } + break; + case 4: + func_803433A4(); + D_80378CE0->unk238 = D_80378CE0->unk22C; + D_80378CE0->unk28 = 5; + break; + case 5: + if (D_80378CE0->unk22C > 14.65f) { + D_80378CE0->unk28 = 6; + break; + } + break; + case 6: + D_80378CE0->unk28 = 7; + D_80378CE0->unk230 = D_80378CE0->unk22C; + break; + case 8: + if (uvClkGetSec(4) >= 1.0) { + sp18 = 10; + } + break; + } + if (D_80378CE0->unk28 > 0) { + func_80343B5C(); + } + if (D_80378CE0->unk28 == 3) { + func_80343C44(); + } + if (D_80378CE0->unk28 >= 5) { + func_80343E84(); + } + if (D_80378CE0->unk28 >= 7) { + func_8034411C(); + } + if (D_80378CE0->unk22C >= 16.65f && D_80378CE0->unk28 != 8) { + func_80312FF8(5); + temp_v0 = menu_8030B50C(); + if (temp_v0 == -3) { + D_80378CE0->unk22C = 16.65f; + D_80378CE4 = 0.0f; + } + switch (temp_v0) { + case 0: + uvClkReset(4); + D_80378CE0->unk28 = 8; + break; + case 1: + sp18 = 7; + break; + case -1: + break; + } + } + D_80378CE0->unk22C += D_8034F854; + return sp18; +} + +static void introSceneRunner(void) { + Unk802D3658_Arg0* temp = D_80362690->unk0[D_80362690->unk9C].unkC.unk70; + s32 sp30; + + func_80204FC4(temp->unk22C); + if (D_80378CE0->unk28 < 7) { + return; + } + + uvSprtDraw(1); + uvSprtDraw(3); + if ((D_80378CE0->unk22C - D_80378CE0->unk230) <= 2.0f) { + sp30 = (s32)(((D_80378CE0->unk22C - D_80378CE0->unk230) * 80.0f) + 0.5f) * (1.0f / 2.0f); + if (sp30 < 0) { + sp30 = 0; + } + if (sp30 > 0x50) { + sp30 = 0x50; + } + } else { + sp30 = 0x50; + } + + screenDrawBoxSetup(); + screenDrawBox(30, 18, 285, 34, 0, 0, 0, sp30); + screenDrawBox(97, 76, 202, 118, 0, 0, 0, sp30); + func_802DFA18(); + if (D_80378CE0->unk22C >= 16.65f) { + menuInit(); + } + + uvFont_80219EA8(); + uvSprtDraw(4); +} + +static void func_80343B5C(void) { + f32 f0; + Unk802D3658_Arg0* sp20; + + sp20 = D_80362690->unk0[D_80362690->unk9C].unkC.unk70; + f0 = ((1.0 - ((4.65f - D_80378CE0->unk22C) / 4.65f)) * 100.0); + spath_update(&sp20->unk108, D_80378CE0->unk14, f0, 1.0f); + uvMat4Copy(&D_80378CE0->unk1AC, &sp20->unk108); + uvMat4Mul(&sp20->unk108, &sp20->unk108, &D_80378CE0->unk1EC); + func_80204B34(sp20->unk22C, &sp20->unk108); +} -#pragma GLOBAL_ASM("asm/nonmatchings/app/code_C9B60/func_803434E8.s") +static void func_80343C44(void) { + s32 i; + Mtx4F spCC; + Mtx4F sp8C; + Unk802D3658_Arg0* temp = D_80362690->unk0[D_80362690->unk9C].unkC.unk70; + f32 f0; + f32 var_fs0; -#pragma GLOBAL_ASM("asm/nonmatchings/app/code_C9B60/func_80343550.s") + f0 = D_80378CE0->unk22C - D_80378CE0->unk234; + var_fs0 = (f0) / 5.0f; + for (i = 0; i < 6; i++) { + if (var_fs0 < 0.6f) { + var_fs0 *= 1.25; + } else { + var_fs0 = ((var_fs0 - 0.6f) * 0.625f) + 0.75f; + } + userPath_8034A8B0(D_80378CE0->unk240[i], 1U, var_fs0); + uvDobjGetPosm(D_80378CE0->unk240[i]->unk352, 0, &spCC); + uvMat4Copy(&sp8C, &D_80378CE0->unk1AC); + sp8C.m[3][0] = 0.0f; + sp8C.m[3][1] = 0.0f; + sp8C.m[3][2] = 0.0f; + uvMat4MulBA(&spCC, &sp8C, &spCC); + spCC.m[3][0] += D_80378CE0->unk1AC.m[3][0] - 15.0f; + spCC.m[3][1] += D_80378CE0->unk1AC.m[3][1]; + spCC.m[3][2] += D_80378CE0->unk1AC.m[3][2]; + uvMat4Mul(&spCC, &D_80378CE0->unk16C, &spCC); + uvMat4Mul(&spCC, &spCC, &D_80378CE0->unk1EC); + uvDobjPosm(D_80378CE0->unk240[i]->unk352, 0, &spCC); + func_8031FA0C(2, i, i, D_80378CE0->unk240[i]->unk352, &spCC, &temp->unk108); + } +} -#pragma GLOBAL_ASM("asm/nonmatchings/app/code_C9B60/introSceneRunner.s") +static void func_80343E84(void) { + f32 sp2C; + f32 temp_fs0; -#pragma GLOBAL_ASM("asm/nonmatchings/app/code_C9B60/func_80343B5C.s") + temp_fs0 = D_80378CE0->unk22C - D_80378CE0->unk238; + if (temp_fs0 >= 0.0f) { + sp2C = ((temp_fs0 - 0.0f) * 100.0f) / 1.5f; + spath_update(&D_80378CE0->unk2C, D_80378CE0->unk18, sp2C, 1.0f); + uvMat4Mul(&D_80378CE0->unk2C, &D_80378CE0->unk2C, &D_80378CE0->unk1EC); + uvDobjPosm(D_80378CE0->unk4, 0, &D_80378CE0->unk2C); + } + if (temp_fs0 >= (0.5f * 3)) { + sp2C = ((temp_fs0 - (0.5f * 3)) * 100.0f) / 2 /*.0f*/; + spath_update(&D_80378CE0->unk6C, D_80378CE0->unk1C, sp2C, 1.0f); + uvMat4Mul(&D_80378CE0->unk6C, &D_80378CE0->unk6C, &D_80378CE0->unk1EC); + uvDobjPosm(D_80378CE0->unk8, 0, &D_80378CE0->unk6C); + } + if (temp_fs0 >= 3.5f) { + sp2C = ((temp_fs0 - 3.5f) * 100.0f) / 0.5f; + spath_update(&D_80378CE0->unkAC, D_80378CE0->unk20, sp2C, 1.0f); + uvMat4Mul(&D_80378CE0->unkAC, &D_80378CE0->unkAC, &D_80378CE0->unk1EC); + uvDobjPosm(D_80378CE0->unkC, 0, &D_80378CE0->unkAC); + if ((D_80378CE0->unk265 != 0) && (sp2C > 40.0f)) { + func_8033F7F8(0x3DU); + D_80378CE0->unk265 = 0; + } + } + if (temp_fs0 >= 4.0f) { + sp2C = ((temp_fs0 - 4.0f) * 100.0f) / 0.5f; + spath_update(&D_80378CE0->unkEC, D_80378CE0->unk24, sp2C, 1.0f); + uvMat4Mul(&D_80378CE0->unkEC, &D_80378CE0->unkEC, &D_80378CE0->unk1EC); + uvDobjPosm(D_80378CE0->unk10, 0, &D_80378CE0->unkEC); + if ((D_80378CE0->unk266 != 0) && (sp2C > 47.0f)) { + func_8033F7F8(0x3DU); + D_80378CE0->unk266 = 0; + } + } +} -#pragma GLOBAL_ASM("asm/nonmatchings/app/code_C9B60/func_80343C44.s") +static void func_8034411C(void) { + f32 temp_fv0; + s32 var_s0; -#pragma GLOBAL_ASM("asm/nonmatchings/app/code_C9B60/func_80343E84.s") + temp_fv0 = D_80378CE0->unk22C - D_80378CE0->unk230; + if (temp_fv0 <= 2.0f) { + var_s0 = (s32)((s32)((temp_fv0 * 255.0f) + 0.5f) * (1.0f / 2.0f)); + if (var_s0 < 0) { + var_s0 = 0; + } + if (var_s0 > 0xFF) { + var_s0 = 0xFF; + } + } else { + var_s0 = 0xFF; + } + uvSprtProps(1, 7, 0xFF, 0xFF, 0xFF, var_s0, 0); + uvSprtProps(2, 7, 0xFF, 0xFF, 0xFF, var_s0, 0); + uvSprtProps(3, 7, 0xFF, 0xFF, 0xFF, var_s0, 0); + uvSprtProps(4, 7, 0xFF, 0xFF, 0xFF, var_s0, 0); +} -#pragma GLOBAL_ASM("asm/nonmatchings/app/code_C9B60/func_8034411C.s") +void func_80344258(u8 arg0) { + if (arg0) { + D_80350690 = 1; + } else { + D_80350690 = 0; + } +} -#pragma GLOBAL_ASM("asm/nonmatchings/app/code_C9B60/func_80344258.s") diff --git a/src/app/code_C9B60.h b/src/app/code_C9B60.h index 28294fcc..859b09b4 100644 --- a/src/app/code_C9B60.h +++ b/src/app/code_C9B60.h @@ -2,5 +2,6 @@ #define APP_CODE_C9B60_H s32 func_80342630(void); +void func_80344258(u8 arg0); #endif // APP_CODE_C9B60_H From bfda0e0853aecd65af47e63209d2e5270b286de0 Mon Sep 17 00:00:00 2001 From: Bl00D4NGEL Date: Sat, 28 Feb 2026 02:26:47 +0100 Subject: [PATCH 06/13] misc splat fixes --- config/us/pilotwings64.us.yaml | 7 ++++--- config/us/sym/symbol_addrs_app.txt | 2 +- src/app/code_C9B60.c | 10 +++++----- src/app/targets.c | 5 +++-- 4 files changed, 13 insertions(+), 11 deletions(-) diff --git a/config/us/pilotwings64.us.yaml b/config/us/pilotwings64.us.yaml index d40b2a36..431d010f 100644 --- a/config/us/pilotwings64.us.yaml +++ b/config/us/pilotwings64.us.yaml @@ -626,15 +626,16 @@ segments: - { type: .bss, vram: 0x803624E0, name: app/file_menu } - { type: bss, vram: 0x80362500, name: app_bss_80362500 } - { type: .bss, vram: 0x80369F10, name: app/menu } - - { type: bss, vram: 0x80369F30, name: app_bss_80369F10 } + - { type: bss, vram: 0x80369F30, name: app_bss_80369F30 } - { type: .bss, vram: 0x803718F0, name: app/results } - { type: bss, vram: 0x80371960, name: app_bss_80371960 } - { type: .bss, vram: 0x80377F10, name: app/text_data } - { type: .bss, vram: 0x80378CE0, name: app/code_C9B60 } - - { type: bss, vram: 0x80378CF0, name: app_bss_80378CE0 } + - { type: .bss, vram: 0x80378CF0, name: app/targets } + - { type: bss, vram: 0x803798E0, name: app_bss_803798E0 } - { type: .bss, vram: 0x8037AB50, name: app/thermals } - { type: .bss, vram: 0x8037ACE0, name: app/total_results } - - { type: bss, vram: 0x8037AD70, name: app_bss_8037ACD8 } + - { type: bss, vram: 0x8037AD70, name: app_bss_8037AD70 } - { type: .bss, vram: 0x8037DC60, name: app/test_menu } - { type: .bss, vram: 0x8037DCA0, name: app/user_paths } - { type: bss, vram: 0x8037F380, name: app_bss_8037F380 } diff --git a/config/us/sym/symbol_addrs_app.txt b/config/us/sym/symbol_addrs_app.txt index 828e2055..6f80b492 100644 --- a/config/us/sym/symbol_addrs_app.txt +++ b/config/us/sym/symbol_addrs_app.txt @@ -347,4 +347,4 @@ sTextDataCount = 0x80378CCC; sTextNameCount = 0x80378CD0; sMissileTargets = 0x80378CF0; -sMissileTargetCount = 0x80378CF4; \ No newline at end of file +sMissileTargetCount = 0x80378CF4; diff --git a/src/app/code_C9B60.c b/src/app/code_C9B60.c index 4eac0086..08efa556 100644 --- a/src/app/code_C9B60.c +++ b/src/app/code_C9B60.c @@ -185,7 +185,7 @@ static void func_803427FC(void) { } } -/* static */ void func_80342D2C(void) { +static void func_80342D2C(void) { s32 allocIdx; s32 pad[5]; f32 sp2FC; @@ -295,10 +295,10 @@ static s32 func_80343550(void) { func_80313D74(); if (D_80350694 != 0 && D_80378CE0->unk28 < 7) { demo_80323020(); - if (demoButtonPress(D_80362690->unk9C, 0xD000) != 0) { - if (demoButtonPress(D_80362690->unk9C, 0x9000) != 0) { + if (demoButtonPress(D_80362690->unk9C, A_BUTTON | B_BUTTON | START_BUTTON) != 0) { + if (demoButtonPress(D_80362690->unk9C, A_BUTTON | START_BUTTON) != 0) { func_8033F7F8(0x6EU); - } else if (demoButtonPress(D_80362690->unk9C, 0x4000) != 0) { + } else if (demoButtonPress(D_80362690->unk9C, B_BUTTON) != 0) { func_8033F7F8(1U); } if (D_80378CE0->unk264 != 0) { @@ -451,7 +451,7 @@ static void func_80343C44(void) { f0 = D_80378CE0->unk22C - D_80378CE0->unk234; var_fs0 = (f0) / 5.0f; - for (i = 0; i < 6; i++) { + for (i = 0; i < ARRAY_COUNT(D_80378CE0->unk240); i++) { if (var_fs0 < 0.6f) { var_fs0 *= 1.25; } else { diff --git a/src/app/targets.c b/src/app/targets.c index c3baaf88..575bb109 100644 --- a/src/app/targets.c +++ b/src/app/targets.c @@ -24,8 +24,9 @@ f32 D_803506A0[] = { }; s32 D_8035078C = 0; -extern MissileTarget* sMissileTargets; -extern u8 sMissileTargetCount; +MissileTarget* sMissileTargets; +u8 sMissileTargetCount; +Unk80378CF8 D_80378CF8[40]; void func_80344290(void) { s32 i; From b3eb058c79824707d86e6e01875652956483adc2 Mon Sep 17 00:00:00 2001 From: Bl00D4NGEL Date: Sun, 1 Mar 2026 17:26:06 +0100 Subject: [PATCH 07/13] misc changes --- src/app/code_9A960.h | 1 - src/app/code_A6000.c | 10 +++++----- src/app/code_C9B60.c | 11 +++++------ src/app/targets.c | 2 +- src/app/user_paths.c | 16 ++++++++-------- src/app/user_paths.h | 2 +- 6 files changed, 20 insertions(+), 22 deletions(-) diff --git a/src/app/code_9A960.h b/src/app/code_9A960.h index 80a4a1fa..514c76a8 100644 --- a/src/app/code_9A960.h +++ b/src/app/code_9A960.h @@ -25,6 +25,5 @@ void func_803134D0(f32, f32, f32, f32*, f32*, f32*); void func_80313E18(Vec3F*, Mtx4F*); void func_80314154(void); void func_803141E4(void); -void func_803136C4(f32*, Mtx4F*); #endif // APP_CODE_9A960_H diff --git a/src/app/code_A6000.c b/src/app/code_A6000.c index 113df413..03de7a0b 100644 --- a/src/app/code_A6000.c +++ b/src/app/code_A6000.c @@ -123,12 +123,12 @@ void func_8031EE48(s32 arg0, Unk8037F098* arg1, f32 arg2, f32 arg3, f32 arg4) { } } -void func_8031EF60(Unk8031EF60_A0* arg0, s32 arg1) { - arg0->unk3C = arg1; +void func_8031EF60(Unk8037DCA0* arg0, s32 arg1) { + arg0->modelId = arg1; } -void func_8031EF68(Unk8031EF60_A0* arg0) { - if (arg0->unk3C != 0xFFFF) { - arg0->unk3C = 0xFFFF; +void func_8031EF68(Unk8037DCA0* arg0) { + if (arg0->modelId != 0xFFFF) { + arg0->modelId = 0xFFFF; } } diff --git a/src/app/code_C9B60.c b/src/app/code_C9B60.c index 08efa556..d6a124f0 100644 --- a/src/app/code_C9B60.c +++ b/src/app/code_C9B60.c @@ -186,9 +186,8 @@ static void func_803427FC(void) { } static void func_80342D2C(void) { + Unk803136C4_Arg0 sp2FC; s32 allocIdx; - s32 pad[5]; - f32 sp2FC; s32 i; D_80378CE0->unk240[0] = userPath_8034A4F8(0x48); @@ -297,9 +296,9 @@ static s32 func_80343550(void) { demo_80323020(); if (demoButtonPress(D_80362690->unk9C, A_BUTTON | B_BUTTON | START_BUTTON) != 0) { if (demoButtonPress(D_80362690->unk9C, A_BUTTON | START_BUTTON) != 0) { - func_8033F7F8(0x6EU); + snd_play_sfx(0x6EU); } else if (demoButtonPress(D_80362690->unk9C, B_BUTTON) != 0) { - func_8033F7F8(1U); + snd_play_sfx(1U); } if (D_80378CE0->unk264 != 0) { sp18 = 10; @@ -497,7 +496,7 @@ static void func_80343E84(void) { uvMat4Mul(&D_80378CE0->unkAC, &D_80378CE0->unkAC, &D_80378CE0->unk1EC); uvDobjPosm(D_80378CE0->unkC, 0, &D_80378CE0->unkAC); if ((D_80378CE0->unk265 != 0) && (sp2C > 40.0f)) { - func_8033F7F8(0x3DU); + snd_play_sfx(0x3DU); D_80378CE0->unk265 = 0; } } @@ -507,7 +506,7 @@ static void func_80343E84(void) { uvMat4Mul(&D_80378CE0->unkEC, &D_80378CE0->unkEC, &D_80378CE0->unk1EC); uvDobjPosm(D_80378CE0->unk10, 0, &D_80378CE0->unkEC); if ((D_80378CE0->unk266 != 0) && (sp2C > 47.0f)) { - func_8033F7F8(0x3DU); + snd_play_sfx(0x3DU); D_80378CE0->unk266 = 0; } } diff --git a/src/app/targets.c b/src/app/targets.c index 575bb109..9772948c 100644 --- a/src/app/targets.c +++ b/src/app/targets.c @@ -156,7 +156,7 @@ f32 func_8034473C(s32 arg0, s32 arg1) { } if (arg1 != 0) { - func_8033F7F8(0x38U); + snd_play_sfx(0x38U); hudText_8031D8E0(0x1AD, 1.5f, 8.0f); } else { hudText_8031D8E0(0x18A, 1.5f, 8.0f); diff --git a/src/app/user_paths.c b/src/app/user_paths.c index ed5319df..4e0d7fcc 100644 --- a/src/app/user_paths.c +++ b/src/app/user_paths.c @@ -143,12 +143,12 @@ void userPath_8034A8B0(Unk8037DCA0* arg0, u8 arg1, f32 arg2) { func_8031EE48(arg0->unk352, &D_8037F098, 1.0f, 1.0f, 1.0f); } -void userPath_8034A950(Unk8037DCA0_Unk4C arg0, f32* arg183) { - arg183[0] = arg0.unk190.f[0]; - arg183[1] = arg0.unk190.f[1]; - arg183[2] = arg0.unk190.f[2]; - arg183[3] = arg0.unk0.f[0]; - arg183[4] = arg0.unk0.f[1]; - arg183[5] = arg0.unk0.f[2]; - arg183[6] = arg0.unk0.f[3]; +void userPath_8034A950(Unk8037DCA0_Unk4C arg0, Unk803136C4_Arg0* arg183) { + arg183->unk0.f[0] = arg0.unk190.f[0]; + arg183->unk0.f[1] = arg0.unk190.f[1]; + arg183->unk0.f[2] = arg0.unk190.f[2]; + arg183->unkC.f[0] = arg0.unk0.f[0]; + arg183->unkC.f[1] = arg0.unk0.f[1]; + arg183->unkC.f[2] = arg0.unk0.f[2]; + arg183->unkC.f[3] = arg0.unk0.f[3]; } diff --git a/src/app/user_paths.h b/src/app/user_paths.h index c98d855c..173a9492 100644 --- a/src/app/user_paths.h +++ b/src/app/user_paths.h @@ -10,6 +10,6 @@ Unk8037DCA0* userPath_8034A4F8(s32 arg0); void userPathFree(s32 path); void userPath_8034A8B0(Unk8037DCA0* arg0, u8 arg1, f32 arg2); // arg0 is the actual struct and not a pointer to it -void userPath_8034A950(Unk8037DCA0_Unk4C arg0, f32* arg183); +void userPath_8034A950(Unk8037DCA0_Unk4C arg0, Unk803136C4_Arg0* arg183); #endif // APP_USER_PATHS_H From 87119a8d6d7b476c17c3370c73f5feaa572192a5 Mon Sep 17 00:00:00 2001 From: Bl00D4NGEL Date: Sun, 1 Mar 2026 17:35:41 +0100 Subject: [PATCH 08/13] fix build --- src/app/code_C9B60.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/code_C9B60.c b/src/app/code_C9B60.c index d6a124f0..41788da5 100644 --- a/src/app/code_C9B60.c +++ b/src/app/code_C9B60.c @@ -178,7 +178,7 @@ static void func_803427FC(void) { var_v0 = 1; } if (var_v0 != D_803505B0) { - func_8033F748(var_v0 & 0xFFFF); + func_8033F748(var_v0); func_8033F964(0); func_8033FA88(0.75f); func_8033FCD0(0xFFU); From 5e199d38aba9643c90bfceede1fe0a2847c46cdb Mon Sep 17 00:00:00 2001 From: Bl00D4NGEL Date: Sun, 1 Mar 2026 18:20:55 +0100 Subject: [PATCH 09/13] misc documentation --- src/app/code_61A60.c | 2 +- src/app/code_66160.c | 2 +- src/app/code_94E60.c | 6 +++++- src/app/code_A6000.c | 6 +++--- src/app/code_B2900.h | 2 +- src/app/code_C9B60.c | 6 +++--- src/app/code_D2D50.c | 2 +- src/app/code_D3810.c | 4 ++-- src/app/file_menu.c | 9 ++++++--- src/app/targets.c | 13 +++++++------ src/app/task.c | 6 +++--- 11 files changed, 33 insertions(+), 25 deletions(-) diff --git a/src/app/code_61A60.c b/src/app/code_61A60.c index d5bf4056..0dbab554 100644 --- a/src/app/code_61A60.c +++ b/src/app/code_61A60.c @@ -21,7 +21,7 @@ f32 D_8034EA4C[] = { 10.74f, }; -f32 D_8034EA58 = -0.0174533f; +f32 D_8034EA58 = -0.0174533f; // almost DEG_TO_RAD(1) f32 D_8034EA5C = 0.1f; f32 padD_8034EA60 = 0.0f; diff --git a/src/app/code_66160.c b/src/app/code_66160.c index 8321a551..d68e98e0 100644 --- a/src/app/code_66160.c +++ b/src/app/code_66160.c @@ -118,7 +118,7 @@ void db_getstart(Mtx4F* arg0, Vec3F* arg1, u8* arg2, f32* arg3) { ang.x = first->angle.x; ang.y = first->angle.y; ang.z = first->angle.z; - func_80313640(pos.x, pos.y, pos.z, ang.x * 0.0174533f, ang.y * 0.0174533f, ang.z * 0.0174533f, arg0); // DEG_TO_RAD(1) + func_80313640(pos.x, pos.y, pos.z, ang.x * 0.0174533f, ang.y * 0.0174533f, ang.z * 0.0174533f, arg0); // almost DEG_TO_RAD(1) arg1->x = first->unk1C.x; arg1->y = first->unk1C.y; arg1->z = first->unk1C.z; diff --git a/src/app/code_94E60.c b/src/app/code_94E60.c index d97dd73a..6777f259 100644 --- a/src/app/code_94E60.c +++ b/src/app/code_94E60.c @@ -1,4 +1,5 @@ #include "common.h" +#include s8 D_8034F7A0 = 0; s8 D_8034F7A4 = 0; @@ -9,7 +10,10 @@ s8 D_8034F7B4[4] = { 0 }; // might be u8 u8 D_8034F7B8 = 0; u8 D_8034F7BC = 0; u8 D_8034F7C0[4] = { 1, 0, 0, 0 }; -f32 D_8034F7C4[6] = { -68.08f, -302.14f, 10.74f, -0.0174533f, 0.1f, 0.0f }; +Vec3F D_8034F7C4[2] = { + { -68.08f, -302.14f, 10.74f }, // position + { -0.0174533f, 0.1f, 0.0f } // rotation, almost -DEG_TO_RAD(1) +}; f32 D_8034F7DC = 0.0f; f32 D_8034F7E0 = 1.6f; diff --git a/src/app/code_A6000.c b/src/app/code_A6000.c index 03de7a0b..108f8431 100644 --- a/src/app/code_A6000.c +++ b/src/app/code_A6000.c @@ -25,7 +25,7 @@ void uvPathPoseLine(Unk8037F098* arg0, Unk8037DCA0* arg1, f32 arg2) { s32 pad1; s32 pad2; - if (arg1->modelId == 0xFFFF) { + if (arg1->modelId == WORLD_MODEL_ID) { _uvDebugPrintf("uvPathPoseLine: Path has an invalid Model ID!\n"); return; } @@ -128,7 +128,7 @@ void func_8031EF60(Unk8037DCA0* arg0, s32 arg1) { } void func_8031EF68(Unk8037DCA0* arg0) { - if (arg0->modelId != 0xFFFF) { - arg0->modelId = 0xFFFF; + if (arg0->modelId != WORLD_MODEL_ID) { + arg0->modelId = WORLD_MODEL_ID; } } diff --git a/src/app/code_B2900.h b/src/app/code_B2900.h index 4e9efb53..fa6f2e96 100644 --- a/src/app/code_B2900.h +++ b/src/app/code_B2900.h @@ -7,7 +7,7 @@ extern u16 D_8034FBD4[][3]; void func_8032B3D0(void*); -s32 func_8032C080(s32); +s32 func_8032C080(s32*); void func_8032B560(s32, u8, u8, u8); s32 func_8032BD20(Unk80364210*, s32, s32); s32* func_8032BE10(void); diff --git a/src/app/code_C9B60.c b/src/app/code_C9B60.c index 41788da5..56a9e3dd 100644 --- a/src/app/code_C9B60.c +++ b/src/app/code_C9B60.c @@ -84,7 +84,7 @@ s32 func_80342630(void) { do { uvMat4SetIdentity(&D_80378CE0->unk1EC); var_fs0 += D_80378CE0->unk23C * D_8034F854; - uvMat4RotateAxis(&D_80378CE0->unk1EC, var_fs0, 0x7A); + uvMat4RotateAxis(&D_80378CE0->unk1EC, var_fs0, 'z'); if (var_fs0 < -6.2831855f) { var_fs0 += 6.2831855f; } @@ -203,8 +203,8 @@ static void func_80342D2C(void) { func_8031EF60(D_80378CE0->unk240[4], 0x131); func_8031EF60(D_80378CE0->unk240[5], 0x133); uvMat4SetIdentity(&D_80378CE0->unk16C); - uvMat4RotateAxis(&D_80378CE0->unk16C, -1.4835305f, 0x78); - uvMat4RotateAxis(&D_80378CE0->unk16C, 3.141594f, 0x79); + uvMat4RotateAxis(&D_80378CE0->unk16C, -1.4835305f, 'x'); + uvMat4RotateAxis(&D_80378CE0->unk16C, 3.141594f, 'y'); #define placeInUserPath(idx, modelId) \ allocIdx = uvDobjAllocIdx(); \ diff --git a/src/app/code_D2D50.c b/src/app/code_D2D50.c index 864191ec..f6eec10e 100644 --- a/src/app/code_D2D50.c +++ b/src/app/code_D2D50.c @@ -46,7 +46,7 @@ static void func_8034B82C(void) { f32 sp24; uvMat4SetIdentity(&sp70); - uvMat4RotateAxis(&sp70, D_803509D0 * 0.01745329f, 'z'); + uvMat4RotateAxis(&sp70, D_803509D0 * 0.01745329f, 'z'); // almost DEG_TO_RAD(1) uvMat4Mul(&spB0, &D_8037F380, &sp70); if (D_803509C4 != 0xFFFF) { uvMat4Mul(&D_8037F400, &spB0, &D_8037F3C0); diff --git a/src/app/code_D3810.c b/src/app/code_D3810.c index 8b80e6be..7705291d 100644 --- a/src/app/code_D3810.c +++ b/src/app/code_D3810.c @@ -35,13 +35,13 @@ static void func_8034C2E0(s32 arg0) { uvMat4SetIdentity(&sp30); uvMat4LocalTranslate(&sp30, D_8037F450[arg0].unk8.x, D_8037F450[arg0].unk8.y, D_8037F450[arg0].unk8.z); uvMat4LocalTranslate(&sp30, 0.0f, 0.0f, D_8037F450[arg0].unk20); - uvMat4RotateAxis(&sp30, D_8037F450[arg0].unk1C * 0.01745329f, 'z'); + uvMat4RotateAxis(&sp30, D_8037F450[arg0].unk1C * 0.01745329f, 'z'); // almost DEG_TO_RAD(1) uvMat4LocalTranslate(&sp30, D_8037F450[arg0].unk14, 0.0f, 0.0f); uvDobjPosm(D_8037F450[arg0].unk0, 0, &sp30); if (D_8037F450[arg0].unk4 != 0xFFFF) { uvMat4SetIdentity(&sp30); uvMat4LocalTranslate(&sp30, D_8037F450[arg0].unk8.x, D_8037F450[arg0].unk8.y, D_8037F450[arg0].unk8.z); - uvMat4RotateAxis(&sp30, D_8037F450[arg0].unk1C * 0.01745329f, 'z'); + uvMat4RotateAxis(&sp30, D_8037F450[arg0].unk1C * 0.01745329f, 'z'); // almost DEG_TO_RAD(1) uvMat4LocalTranslate(&sp30, D_8037F450[arg0].unk14, 0.0f, 0.0f); uvDobjPosm(D_8037F450[arg0].unk4, 0, &sp30); } diff --git a/src/app/file_menu.c b/src/app/file_menu.c index 89207081..c8e2c2a5 100644 --- a/src/app/file_menu.c +++ b/src/app/file_menu.c @@ -29,7 +29,10 @@ static s32 sFileMenuConfirm[] = { }; static s32 sFileMenuCurMenu = 0; static s32 sFileMenu_8034F0F8 = 0; -static f32 sFileMenu_8034F0FC[6] = { -68.080002f, -302.140015f, 10.740000f, -0.0174533f, 0.1f, 0.0f }; +static Vec3F sFileMenu_8034F0FC[2] = { + { -68.08f, -302.14f, 10.74f }, // position + { -0.0174533f, 0.1f, 0.0f } // rotation, almost -DEG_TO_RAD(1) +}; static u8 sFileMenu_803624E0[3]; static u8 sFileMenu_803624E3; @@ -272,8 +275,8 @@ void fileMenu_802E94E0(void) { uvChanEnv(unk70->unk22C, 2); func_80204AB0(unk70->unk22C, 0, 0); func_80204AB0(unk70->unk22C, 1, 0); - func_80313640(sFileMenu_8034F0FC[0], sFileMenu_8034F0FC[1], sFileMenu_8034F0FC[2], sFileMenu_8034F0FC[3], sFileMenu_8034F0FC[4], sFileMenu_8034F0FC[5], - &unk70->unk108); + func_80313640(sFileMenu_8034F0FC[0].x, sFileMenu_8034F0FC[0].y, sFileMenu_8034F0FC[0].z, sFileMenu_8034F0FC[1].x, sFileMenu_8034F0FC[1].y, + sFileMenu_8034F0FC[1].z, &unk70->unk108); func_80204B34(unk70->unk22C, &unk70->unk108); func_80312F5C(0, 0xD2, 0xD2, 0); func_80312F5C(1, 0xD2, 0xD2, 0xD2); diff --git a/src/app/targets.c b/src/app/targets.c index 9772948c..b759ac2e 100644 --- a/src/app/targets.c +++ b/src/app/targets.c @@ -10,8 +10,8 @@ #include typedef struct { - Vec3F position; - Vec3F angle; + Vec3F pos; + Vec3F rot; u8 targetType; u8 unk19; s32 pad1C; @@ -66,12 +66,13 @@ void func_803442F8(void) { if (var_s1->unk47 == 0) { var_s1->unk44 = missileTarget->targetType; var_s1->unk45 = missileTarget->unk19; - func_80313640(missileTarget->position.x, missileTarget->position.y, missileTarget->position.z, missileTarget->angle.x * 0.0174533f, - missileTarget->angle.y * 0.0174533f, missileTarget->angle.z * 0.0174533f, &var_s1->unk4); + // multiplies with almost DEG_TO_RAD(1) + func_80313640(missileTarget->pos.x, missileTarget->pos.y, missileTarget->pos.z, missileTarget->rot.x * 0.0174533f, + missileTarget->rot.y * 0.0174533f, missileTarget->rot.z * 0.0174533f, &var_s1->unk4); var_s1->unk47 = 1; } var_s1->unk0 = uvDobjAllocIdx(); - var_s1->unk48 = hud_8031A6C8(missileTarget->position.x, missileTarget->position.y, missileTarget->position.z); + var_s1->unk48 = hud_8031A6C8(missileTarget->pos.x, missileTarget->pos.y, missileTarget->pos.z); switch (missileTarget->targetType) { case 0: uvDobjModel(var_s1->unk0, 0xF9); @@ -162,7 +163,7 @@ f32 func_8034473C(s32 arg0, s32 arg1) { hudText_8031D8E0(0x18A, 1.5f, 8.0f); } - func_8032C080((s32)&sp48); + func_8032C080(&sp48); if (sp48 >= 2) { textFmtIntAt(textGetDataByIdx(0x29), sp48 - 1, 2, 0); hudWarningText(0x29, 1.5f, 8.0f); diff --git a/src/app/task.c b/src/app/task.c index 1e7e4c94..e0253849 100644 --- a/src/app/task.c +++ b/src/app/task.c @@ -385,7 +385,7 @@ s32 level_80345464(Mtx4F* arg0, s32 arg1) { func_802EDDEC(arg0); break; } - if ((D_80362690->unkA0 != 0) && (levelGet_80346364() == 3) && (func_8032C080(0) != 0)) { + if ((D_80362690->unkA0 != 0) && (levelGet_80346364() == 3) && (func_8032C080(NULL) != 0)) { D_803507A0 = 1; level_803453AC(); D_80362690->unkA0 = 0; @@ -418,8 +418,8 @@ s32 level_803456D8(Mtx4F* arg0) { sp78.y = arg0->m[3][1] - temp_s0->unk8_Y; sp78.z = arg0->m[3][2] - temp_s0->unkC_Z; if (uvVec3Len(&sp78) <= temp_s0->unk14) { - sp6C.x = uvCosF((temp_s0->unk10 + 90.0f) * 0.01745329f); - sp6C.y = uvSinF((temp_s0->unk10 + 90.0f) * 0.01745329f); + sp6C.x = uvCosF((temp_s0->unk10 + 90.0f) * 0.01745329f); // almost DEG_TO_RAD(1) + sp6C.y = uvSinF((temp_s0->unk10 + 90.0f) * 0.01745329f); // almost DEG_TO_RAD(1) sp6C.z = 0.0f; temp_fv0 = uvVec3Dot(&sp6C, &sp78); if (temp_fv0 > 0.0f) { From b0dca55386f77dc2e4a13b9c849a829098734675 Mon Sep 17 00:00:00 2001 From: Bl00D4NGEL Date: Sun, 1 Mar 2026 18:24:39 +0100 Subject: [PATCH 10/13] refac: replace Unk8037DCA0_Unk4C with Unk8037F098 --- src/app/code_A6000.h | 22 +++++++--------------- src/app/user_paths.c | 18 +++++++++--------- src/app/user_paths.h | 2 +- 3 files changed, 17 insertions(+), 25 deletions(-) diff --git a/src/app/code_A6000.h b/src/app/code_A6000.h index ace073e9..5b7814df 100644 --- a/src/app/code_A6000.h +++ b/src/app/code_A6000.h @@ -7,11 +7,12 @@ #include typedef struct { - Vec4F unk0; - u8 pad10[0x190-0x10]; - Vec3F unk190; - u8 pad[0x2DC-0x19C]; -} Unk8037DCA0_Unk4C; // size = 0x2DC + Vec4F unk0[25]; + Vec3F unk190[25]; + u8 unk2BC[25]; + u8 pad2D5[3]; + s32 unk2D8; +} Unk8037F098; // size = 0x2DC typedef struct { s32 unk0; @@ -35,22 +36,13 @@ typedef struct { u8 pad41[0x44-0x41]; f32 unk44; f32 unk48; - Unk8037DCA0_Unk4C unk4C; + Unk8037F098 unk4C; u8 pad328[0x350-0x328]; u8 allocated; u8 pad351; u16 unk352; } Unk8037DCA0; // size = 0x354 -typedef struct { - Vec4F unk0[25]; - Vec3F unk190[25]; - u8 unk2BC[25]; - u8 pad2D5[3]; - s32 unk2D8; - u8 pad2DC[0xC]; -} Unk8037F098; // size = 0x2E8 - void uvPathPoseLine(Unk8037F098*, Unk8037DCA0*, f32); void func_8031EF60(Unk8037DCA0*, s32); void func_8031EF68(Unk8037DCA0*); diff --git a/src/app/user_paths.c b/src/app/user_paths.c index 4e0d7fcc..8d214adc 100644 --- a/src/app/user_paths.c +++ b/src/app/user_paths.c @@ -104,7 +104,7 @@ Unk8037DCA0* userPath_8034A4F8(s32 arg0) { temp_s0->unk1C[i].unkC = var_a1[i].unkC - var_s3; if (i == 0) { for (j = 0; j < 3; j++) { - temp_s0->unk4C.unk190.f[j] = var_a1[i].unk0.f[j]; + temp_s0->unk4C.unk190[0].f[j] = var_a1[i].unk0.f[j]; } } @@ -143,12 +143,12 @@ void userPath_8034A8B0(Unk8037DCA0* arg0, u8 arg1, f32 arg2) { func_8031EE48(arg0->unk352, &D_8037F098, 1.0f, 1.0f, 1.0f); } -void userPath_8034A950(Unk8037DCA0_Unk4C arg0, Unk803136C4_Arg0* arg183) { - arg183->unk0.f[0] = arg0.unk190.f[0]; - arg183->unk0.f[1] = arg0.unk190.f[1]; - arg183->unk0.f[2] = arg0.unk190.f[2]; - arg183->unkC.f[0] = arg0.unk0.f[0]; - arg183->unkC.f[1] = arg0.unk0.f[1]; - arg183->unkC.f[2] = arg0.unk0.f[2]; - arg183->unkC.f[3] = arg0.unk0.f[3]; +void userPath_8034A950(Unk8037F098 arg0, Unk803136C4_Arg0* arg183) { + arg183->unk0.f[0] = arg0.unk190[0].f[0]; + arg183->unk0.f[1] = arg0.unk190[0].f[1]; + arg183->unk0.f[2] = arg0.unk190[0].f[2]; + arg183->unkC.f[0] = arg0.unk0[0].f[0]; + arg183->unkC.f[1] = arg0.unk0[0].f[1]; + arg183->unkC.f[2] = arg0.unk0[0].f[2]; + arg183->unkC.f[3] = arg0.unk0[0].f[3]; } diff --git a/src/app/user_paths.h b/src/app/user_paths.h index 173a9492..9115c087 100644 --- a/src/app/user_paths.h +++ b/src/app/user_paths.h @@ -10,6 +10,6 @@ Unk8037DCA0* userPath_8034A4F8(s32 arg0); void userPathFree(s32 path); void userPath_8034A8B0(Unk8037DCA0* arg0, u8 arg1, f32 arg2); // arg0 is the actual struct and not a pointer to it -void userPath_8034A950(Unk8037DCA0_Unk4C arg0, Unk803136C4_Arg0* arg183); +void userPath_8034A950(Unk8037F098 arg0, Unk803136C4_Arg0* arg183); #endif // APP_USER_PATHS_H From 1ec6f7228b8948c8eac8c792e95675c402ad382a Mon Sep 17 00:00:00 2001 From: Bl00D4NGEL Date: Sun, 1 Mar 2026 20:44:55 +0100 Subject: [PATCH 11/13] refac: add model enum, combine Unk802D5C5C_Arg0 into Unk802D5B50_Arg2 --- include/uv_dobj.h | 202 ++++++++++++++++++++++++++++++++++++++++- include/uv_graphics.h | 2 +- src/app/cannonball.c | 44 ++++----- src/app/cannonball.h | 62 ++++++++++--- src/app/code_5A6A0.h | 67 -------------- src/app/code_60020.h | 7 +- src/app/code_A6000.c | 6 +- src/app/code_C9B60.c | 54 +++++------ src/app/code_D2D50.c | 10 +- src/app/code_D3810.c | 10 +- src/app/code_D4290.c | 8 +- src/app/targets.c | 10 +- src/app/thermals.c | 4 +- src/app/wind_objects.c | 8 +- 14 files changed, 330 insertions(+), 164 deletions(-) diff --git a/include/uv_dobj.h b/include/uv_dobj.h index 87bcc5e1..d7692684 100644 --- a/include/uv_dobj.h +++ b/include/uv_dobj.h @@ -6,9 +6,203 @@ #include #include -#define WORLD_MODEL_ID 0xFFFF // used to indicate a model that's not bound to a level? -// size: 0x40 + +enum Models { + MODEL_HOLIDAY_ISLAND_FULL_MAP = 0x000, // Holiday Island Full Map (0xe5138) + MODEL_WHITE_SAIL_BOAT = 0x001, // White Sail Boat with Red logo + MODEL_BLUE_CUBOID = 0x002, // Blue Cuboid + MODEL_YELLOW_SPEED_BOAT = 0x003, // Yellow Speed Boat + MODEL_BUILDINGS_NEAR_CARNIVAL = 0x004, // Brown+Green Building near carnival + MODEL_BUILDINGS_NEAR_BEACH = 0x005, // Tiki Hut / Hay roof building near beach + MODEL_CIRCUS_TENTS = 0x006, // Yellow/Blue Circus Tent + MODEL_BUILDING_WITH_FERRIS_WHEEL = 0x007, // Long building near ferris wheel + MODEL_SMALL_BUILDING_SIDE = 0x008, // Small side of building + MODEL_MERRY_GO_ROUND = 0x009, // Merry-go-round + MODEL_CASTLE = 0x00A, // Castle on peak of map + MODEL_ENTRY_FLAG_BUILDING = 0x00B, // Three Entry flag building + MODEL_FERRIS_WHEEL = 0x00C, // Ferris wheel + MODEL_WATER_WHEEL = 0x00D, // Water wheel + MODEL_BRIDGE_BRICK = 0x00E, // Bridge brick + MODEL_BRIDGE_BRICK_LONG_WHITE = 0x00F, // Bridge brick, long white + MODEL_OLD_BUILDING_IN_TOWN = 0x010, // Old building in small town + MODEL_BUILDING_11 = 0x011, // Another building + MODEL_BUILDING_12 = 0x012, // And another building + MODEL_BUILDING_NEAR_AIRPORT = 0x013, // Big white building near airport + MODEL_HOUSE_WITH_SMOKE_STACK = 0x014, // Small house with smoke stack + MODEL_LIGHTHOUSE = 0x015, // Lighthouse building + MODEL_CASTLE_YARD = 0x016, // Castle "yard" + MODEL_AIRPORT_ATC = 0x017, // Aiport ATC building + MODEL_PALM_TREE = 0x018, // Palm tree + MODEL_FIVE_PALM_TREES = 0x019, // 5 palm trees + MODEL_RED_SAILBOAT = 0x01A, // Red sailboat + MODEL_YELLOW_WHITE_PLANE = 0x01B, // Yellow white plane + MODEL_BEACH_UMBRELLAS_AND_TOWELS = 0x01C, // Beach umbrealls and towels + MODEL_BARN = 0x01D, // Barn-looking building + MODEL_SMALL_WHITE_SHACK = 0x01E, // Small white building/shack + MODEL_YELLOW_N64_FLAG = 0x01F, // Yellow N64 flag + MODEL_TIKI_HUT = 0x020, // Tiki hut + MODEL_STREET_LAMP_POST = 0x021, // Street lamp post + MODEL_TREE = 0x022, // Tree + MODEL_SMALLER_TREE = 0x023, // Smaller tree + MODEL_TALL_TREE = 0x024, // Tall tree + MODEL_ENTRANCE_ARCH_BUILDING = 0x025, // Entrance arch building with N64 logo flags + MODEL_DOUBLE_WATER_FOUNTAIN = 0x026, // Double water fountain + MODEL_BIG_WHITE_RED_PLANE = 0x027, // Big white/red plane + MODEL_LOW_POLY_INTRO_CRESCENT_ISLAND = 0x028, // Low poly intro crescent island (0xff040) -> also "full poly" when in game? LOD? + MODEL_YACHT_BOATS = 0x029, // Red/White/Blue yacht/boat + MODEL_WHITE_YELLOW_SAILBOAT = 0x02A, // White/Yellow sailboat + MODEL_ROCK_ARCH = 0x02B, // Rock arch + MODEL_ROCK_POST = 0x02C, // Another rock post + MODEL_TALL_ROCK = 0x02D, // Tall rock + MODEL_SMALL_ROCK = 0x02E, // Small rock + MODEL_BIG_ROCK = 0x02F, // Big rock + MODEL_SMALL_ROCK2 = 0x030, // Small rock + + MODEL_40 = 0x040, + MODEL_PLANTER_BOX = 0x041, // Planter box thing? + + MODEL_AIRCRAFT_HANGAR = 0x048, // Aircraft hangar + + MODEL_LITTLE_STATES_FULL_MAP = 0x051, // Little States Full map (0x1114fc) + MODEL_BIG_CRUISE_SHIP = 0x052, // Big Cruise Ship + MODEL_WIND_TURBINE = 0x053, // Wind Turbine + + MODEL_SPACE_SHUTTLE = 0x056, // Space Shuttle + MODEL_BIG_RED_SQUARE = 0x057, // Big red square? + MODEL_NESSIES_HEAD = 0x058, // Nessie's head + + MODEL_VERY_TALL_BUILDING = 0x064, // Very tall building + MODEL_BUILDING_WITH_7_FLAGS_IN_FRONT = 0x065, // Building with 7 flags in front + MODEL_STATUE_OF_LIBERTY = 0x066, // Statue of Liberty (0x12c238) + + MODEL_LARGE_AIRPLAN_HANGER = 0x077, // Large Airplan Hanger (0x1004) + + MODEL_RED_BARN_AND_SILO = 0x07F, // Red barn and silo + + MODEL_ANOTHER_BUILDING_NEAR_WHITEHOUSE = 0x081, // another building near whitehouse + MODEL_WASHINGTON_MONUMENT = 0x082, // Washington Monument + MODEL_SPACE_SHUTTLE_LAUNCH_DOCK = 0x083, // Space Shuttle launch dock + MODEL_GAS_STATION = 0x084, // Gas Station (?) + MODEL_US_WHITE_HOUSE = 0x085, // US White House (0x13ab4c) + MODEL_ANOTHER_IRREGULARLY_SHAPED_DC_BUILDING = 0x086, // Another irregularly shaped DC building + + MODEL_EVER_FROST_ISLAND_FULL_MAP = 0x0A5, // Ever-Frost Island Full map (0x149084) + + MODEL_BUILDING_WITH_PIPES = 0x0BF, // Building with pipes (0x16182c) + + MODEL_HG_WIND_SOCK = 0x0C7, // HG "Wind Sock" + MODEL_YELLOW_3D_ARROW_POINTING = 0x0C8, // Yellow 3d Arrow pointing + MODEL_RED_3D_ARROW_POINTING_DOWN = 0x0C9, // Red 3D Arrow pointing down. + MODEL_YELLOW_CUBE = 0x0CA, // Yellow Cube + MODEL_RED_CUBE = 0x0CB, // Red Cube + MODEL_BLUE_CUBE = 0x0CC, // Blue Cube + MODEL_PILOTWINGS_3D_LOGO = 0x0CD, // "Pilotwings" 3D Logo (0x166184) + MODEL_GREEN_3D_ARROW_THING = 0x0CE, // Green 3D Arrow thing + MODEL_CANON_ON_A_TALL_RED_PEDESTAL = 0x0CF, // Canon on a tall red pedestal + + MODEL_GREEN_BALL_OR_JUMBLE_HOPPER_GOAL = 0x0D1, // Green Ball or Jumble Hopper goal + + MODEL_MECCA_HAWK = 0x0D3, // Mecca Hawk + MODEL_LANDING_PAD_EMPTY_NO_TARGET = 0x0D4, // Yellow-stripe-bordered landing pad (empty, no target) + MODEL_D5 = 0x0D5, + MODEL_D6 = 0x0D6, + MODEL_D7 = 0x0D7, + MODEL_D8 = 0x0D8, + MODEL_FIRST_RING_YELLOW = 0x0D9, // First ring (Yellow) + + MODEL_YELLOW_RING = 0x0E1, // Yellow Ring + MODEL_RED_RING = 0x0E2, // Red Ring + + MODEL_BONUS_STAR = 0x0F2, // Bonus star + + MODEL_ORANGE_BALL = 0x0F4, // Orange ball + + MODEL_F7 = 0x0F7, + MODEL_F8 = 0x0F8, + MODEL_F9 = 0x0F9, + + MODEL_GIANT_TRANSPARENT_MECCA_HAWK = 0x0FD, // Giant transparent Mecca Hawk + MODEL_GIANT_RED_THING = 0x0FE, // Giant red... thing? + MODEL_BIG_ROCK_BOULDER = 0x0FF, // Big Rock/Boulder + MODEL_GIANT_ICEBERG = 0x100, // Giant Iceberg? + MODEL_HG_THERMAL_CYLINDER = 0x101, // HG thermal cylinder + MODEL_RP_HG_LANDING_PAD = 0x102, // RP/HG landing pad + MODEL_LANDING_PAD_WITH_RED_TARGET = 0x103, // Landing Pad with Red Target + + MODEL_105 = 0x105, + + MODEL_LOW_RES_GOOSE_HG = 0x10B, // Low Res Goose HG Model + + MODEL_BREAKS_NO_CLIP = 0x112, // ???? Breaks NoClip + + MODEL_LARK_RP = 0x11E, // Lark RP Model + MODEL_ROUND_SHADOW = 0x11F, // Round Shadow? + MODEL_SHADOW_COLUMN_RP = 0x120, // Shadow (Column? RP?) + MODEL_MULTI_COLORED_CUBE = 0x121, // Multi-colored cube + + MODEL_LARK_GYRO = 0x127, // Lark Gyro Model + + MODEL_GOOSE_GYRO = 0x12B, // Goose Gyro Model + MODEL_HAWK_GYRO = 0x12D, // Hawk Gyro Model + + MODEL_KIWI_GYRO = 0x12F, // Kiwi Gyro odel + + MODEL_IBIS_GYRO = 0x131, // Ibis Gyro Model + + MODEL_ROBYN_GYRO = 0x133, // Robyn Gyro Model + + MODEL_135 = 0x135, + MODEL_136 = 0x136, + MODEL_137 = 0x137, + MODEL_138 = 0x138, + MODEL_139 = 0x139, + MODEL_13A = 0x13A, + + MODEL_BIRDMAN_ROBIN = 0x142, // Birdman Robin model + MODEL_SKYDIVING_LARK = 0x143, // Skydiving Lark Model + MODEL_PARACHUTE_LARK = 0x144, // Parachute Lark model + MODEL_SKYDIVING_PINK_GIRL = 0x145, // Skydiving pink girl model + MODEL_SKYDIVING_ISIS = 0x146, // Skydiving Isis model + MODEL_SKYDIVING_ROBIN = 0x147, // Skydiving Robin model + MODEL_SKYDIVING_SHADOW_OF_PLAYER = 0x148, // Skydiving "shadow" of player + MODEL_SKYDIVING_GOOSE = 0x149, // Skydiving Goose model + MODEL_PARACHUTE_GOOSE = 0x14A, // Parachute Goose model + MODEL_SKYDIVING_HAWK_ = 0x14B, // Skydiving Hawk model + MODEL_PARACHUTE_HAWK = 0x14C, // Parachute Hawk Model + MODEL_PARACHUTE_PINK_GIRL = 0x14D, // Parachute pink girl model + MODEL_PARACHUTE_ISIS = 0x14E, // Parachute Isis model + MODEL_PARACUTE_ROBIN = 0x14F, // Paracute Robin model + MODEL_JUMBLE_HOPPER_LARK = 0x150, // Jumble Hopper Lark + MODEL_ROUND_SHADOW2 = 0x151, // Round shadow + + MODEL_JUMBLE_HOPPER_KIWI = 0x154, // Jumble Hopper Kiwi + MODEL_JUMBLE_HOPPER_IBIS = 0x155, // Jumble Hopper Ibis + MODEL_JUMBLE_HOPPER_ROBYN = 0x156, // Jumble Hopper Robyn + MODEL_PILOTWINGS_SWOOSH_FEATHER_THING = 0x157, // Pilotwings Swoosh/feather thing + MODEL_3D_6_IN_INTRO_PW64_LOGO = 0x158, // 3D "6" in intro PW64 logo + MODEL_3D_4_IN_INTRO_PW64_LOGO = 0x159, // 3D "4" in intro PW64 logo + MODEL_LARK_BODY_CHARACTER_SELECT = 0x15A, // Lark body model (character select) + MODEL_GOOSE_BODY = 0x15B, // Goose body model + MODEL_HAWK_BODY = 0x15C, // Hawk body model + MODEL_KIWI_BODY = 0x15D, // Kiwi body model + MODEL_IBIS_BODY = 0x15E, // Ibis body model + MODEL_ROBIN_BODY = 0x15F, // Robin body model + MODEL_SKY_CLOUD_DOME_SKYBOX_FOR_INTRO_LEVEL_SELECT = 0x160, // Low-poly Sky+Cloud Dome "skybox" for Intro / Level Select + MODEL_SUNNY_SKYBOX = 0x161, // "Sunny" Skybox + MODEL_CLOUDY_SKYBOX_SUNNY_PART_2 = 0x162, // "Cloudy" Skybox (Sunny Part 2?) + MODEL_DARK_CLOUDS_SKYBOX = 0x163, // "Dark clouds" Skybox + MODEL_EVENING_SKYBOX = 0x164, // "Evening" Skybox + MODEL_STARRY_NIGHT_SKYBOX = 0x165, // "Starry Night" Skybox + MODEL_OCEAN_CUT_OUT_WITH_OUTLINE_OF_CRESCENT_ISLAND = 0x166, // Ocean "cut-out" with outline of Crescent Island(?) + MODEL_DARK_GLOOMY_CLOUDS_SKYBOX = 0x167, // "Dark gloomy clouds" skybox + MODEL_OCEAN_CUT_OUT_WITH_OUTLINE_OF_LITTLE_STATES = 0x168, // Ocean "cut-out" with outline of Little States + MODEL_OCEAN_CUT_OUT_WITH_OUTLINE_OF_EVER_FROST_ISLAND = 0x169, // Ocean "cut-out" with outline of Ever-Frost Island + MODEL_CIRCULAR_SKY_OCEAN_SKYBOX_WITH_CLOUDS_EMPTY_OCEAN_IN_INTRO = 0x16A, // Giant circular sky+ocean skybox with high-resh skybox/clouds AND empty ocean (used in Intro) + + MODEL_WORLD = 0xFFFF // used to indicate a model that's not bound to a level? +}; + typedef struct { u16 unk0; u16 unk2[1]; // unknown size, might take up everything till unk34 @@ -16,7 +210,7 @@ typedef struct { u8 unk34; f32 unk38; s32 unk3C; -} Unk80263780; +} Unk80263780; // size = 0x40 typedef struct Unk80371120 { Unk8022B0A0 unk0[1]; @@ -24,7 +218,7 @@ typedef struct Unk80371120 { u8 unk190[1]; u8 pad191[0x1B]; s32 unk1AC; -} Unk80371120; // size: 0x1B0 +} Unk80371120; // size = 0x1B0 extern Unk80263780 D_80263780[100]; extern Mtx4F D_80265080[300]; diff --git a/include/uv_graphics.h b/include/uv_graphics.h index 89f664c3..66257fbe 100644 --- a/include/uv_graphics.h +++ b/include/uv_graphics.h @@ -290,7 +290,7 @@ typedef struct ParsedUVAN_Unk0 { struct ParsedUVAN_Unk0* unk0; u16 unk4; u8 pad6[0x2]; - s32 unk8; + u32 unk8; Unk8037DCA0_UnkC* unkC; } ParsedUVAN_Unk0; diff --git a/src/app/cannonball.c b/src/app/cannonball.c index 6458749e..2c574e17 100644 --- a/src/app/cannonball.c +++ b/src/app/cannonball.c @@ -43,7 +43,7 @@ extern u8 D_80359A84; extern s32 D_80359A88[]; // forward declarations -s32 cannonEndShot(Unk802D5C5C_Arg0*); +s32 cannonEndShot(Unk802D5B50_Arg2*); void cannon_802D5A90(void) { D_80359A30.unk0 = 8; @@ -71,12 +71,12 @@ void cannonLoadLevel(u8 arg0, u8 pilot, Unk802D5B50_Arg2* arg2, Unk802D3658_Arg0 cannonLoadPilot(pilot, arg2); arg2->unk0 = uvDobjAllocIdx(); arg2->unk2 = 2; - uvDobjModel(arg2->unk0, arg2->unk220); + uvDobjModel(arg2->unk0, arg2->modelId); uvDobjPosm(arg2->unk0, 0, &arg2->unk14); uvDobjState(arg2->unk0, arg2->unk2); arg2->unk54 = uvDobjAllocIdx(); arg2->unk56 = 2; - uvDobjModel(arg2->unk54, 0x105); + uvDobjModel(arg2->unk54, MODEL_105); uvDobjPosm(arg2->unk54, 0, &arg2->unk58); uvDobjState(arg2->unk54, arg2->unk56); arg2->unkB0 = arg3; @@ -90,7 +90,7 @@ void cannonLoadLevel(u8 arg0, u8 pilot, Unk802D5B50_Arg2* arg2, Unk802D3658_Arg0 } // cannon_802D5C5C is invoked when loading and exiting cannonball level -void cannon_802D5C5C(Unk802D5C5C_Arg0* arg0) { +void cannon_802D5C5C(Unk802D5B50_Arg2* arg0) { f32 sp54; f32 sp50; f32 sp4C; @@ -139,7 +139,7 @@ void cannon_802D5C5C(Unk802D5C5C_Arg0* arg0) { arg0->unkB0->unk4C = 1; arg0->unkB0->unk50 = 0.0f; arg0->unkB0->unk228 = 0.0f; - uvModelGetProps(arg0->unk220, 1, &arg0->unkB0->unk8, 0); + uvModelGetProps(arg0->modelId, 1, &arg0->unkB0->unk8, 0); func_802D45C4(arg0->unkB0, arg0->unkB8); D_8034E9F0 = 4.712389f; // DEG_TO_RAD(270) D_8034E9F4 = 0; @@ -148,8 +148,8 @@ void cannon_802D5C5C(Unk802D5C5C_Arg0* arg0) { // cannonEndTarget is invoked at the end of a cannonball target void cannonEndTarget(Unk802D5B50_Arg2* arg0) { - uvDobjModel(arg0->unk0, WORLD_MODEL_ID); - uvDobjModel(arg0->unk54, WORLD_MODEL_ID); + uvDobjModel(arg0->unk0, MODEL_WORLD); + uvDobjModel(arg0->unk54, MODEL_WORLD); arg0->unk10 = 0xFFFF; arg0->unk0 = 0xFFFF; arg0->unk54 = 0xFFFF; @@ -157,7 +157,7 @@ void cannonEndTarget(Unk802D5B50_Arg2* arg0) { } // cannonMovementFrame called every frame while aiming cannon and while in flight -void cannonMovementFrame(Unk802D5C5C_Arg0* arg0, u8 arg1) { +void cannonMovementFrame(Unk802D5B50_Arg2* arg0, u8 arg1) { f32 stickX; f32 stickY; s32 spE4; @@ -360,7 +360,7 @@ void cannonMovementFrame(Unk802D5C5C_Arg0* arg0, u8 arg1) { #endif // cannonAimingFrame called every frame while inside cannon // controls the rate of rotation and Z-button presses -void cannonAimingFrame(Unk802D5C5C_Arg0* arg0) { +void cannonAimingFrame(Unk802D5B50_Arg2* arg0) { Mtx4F sp38; f32 sp34; @@ -459,7 +459,7 @@ void cannonAimingFrame(Unk802D5C5C_Arg0* arg0) { #endif // cannonShoot called when firing the cannon -void cannonShoot(Unk802D5C5C_Arg0* arg0) { +void cannonShoot(Unk802D5B50_Arg2* arg0) { Mtx4F sp50; uvMat4Copy(&sp50, &arg0->unk58); @@ -485,7 +485,7 @@ void cannonShoot(Unk802D5C5C_Arg0* arg0) { #pragma GLOBAL_ASM("asm/nonmatchings/app/cannonball/cannonPilotLand.s") #else // Matches but has bss/data issues -void cannonPilotLand(Unk802D5C5C_Arg0* arg0) { +void cannonPilotLand(Unk802D5B50_Arg2* arg0) { static Vec4F D_80359AB0; static Vec4F D_80359AC0; static f32 D_8034E9FC = 0.0f; @@ -570,7 +570,7 @@ void cannonLoadPilot(u8 pilot, Unk802D5B50_Arg2* arg1) { arg1->unk278 = 0.96f; arg1->unk280 = 0.8f; arg1->unk27C = 5.88f; - arg1->unk220 = 0x135; + arg1->modelId = MODEL_135; arg1->unk292 = 1; arg1->unk285 = 0xA; arg1->unk286 = 0xB; @@ -610,7 +610,7 @@ void cannonLoadPilot(u8 pilot, Unk802D5B50_Arg2* arg1) { arg1->unk278 = 0.8f; arg1->unk280 = 1.0f; arg1->unk27C = 9.8f; - arg1->unk220 = 0x136; + arg1->modelId = MODEL_136; arg1->unk292 = 6; arg1->unk285 = 2; arg1->unk286 = 3; @@ -650,7 +650,7 @@ void cannonLoadPilot(u8 pilot, Unk802D5B50_Arg2* arg1) { arg1->unk278 = 0.64f; arg1->unk280 = 1.2f; arg1->unk27C = 13.72f; - arg1->unk220 = 0x137; + arg1->modelId = MODEL_137; arg1->unk292 = 6; arg1->unk285 = 1; arg1->unk286 = 2; @@ -690,7 +690,7 @@ void cannonLoadPilot(u8 pilot, Unk802D5B50_Arg2* arg1) { arg1->unk278 = 0.96f; arg1->unk280 = 0.8f; arg1->unk27C = 5.88f; - arg1->unk220 = 0x138; + arg1->modelId = MODEL_138; arg1->unk292 = 8; arg1->unk285 = 1; arg1->unk286 = 2; @@ -730,7 +730,7 @@ void cannonLoadPilot(u8 pilot, Unk802D5B50_Arg2* arg1) { arg1->unk278 = 0.8f; arg1->unk280 = 1.0f; arg1->unk27C = 9.8f; - arg1->unk220 = 0x139; + arg1->modelId = MODEL_139; arg1->unk292 = 6; arg1->unk285 = 2; arg1->unk286 = 3; @@ -770,7 +770,7 @@ void cannonLoadPilot(u8 pilot, Unk802D5B50_Arg2* arg1) { arg1->unk278 = 0.64f; arg1->unk280 = 1.2f; arg1->unk27C = 13.72f; - arg1->unk220 = 0x13A; + arg1->modelId = MODEL_13A; arg1->unk292 = 6; arg1->unk285 = 2; arg1->unk286 = 3; @@ -808,7 +808,7 @@ extern s32 D_80359A98[]; extern s32 D_80359AA8; extern s32 D_80359AAC; extern void func_802E0CF0(void); -s32 cannonLoad802D77D8(Unk80362690* arg0, Unk802D3658_Arg0* arg1) { +s32 cannonLoad802D77D8(Unk80362690* arg0, Unk802D5B50_Arg2* arg1) { s32 i; Mtx4F sp3C; Unk80362690_Unk0_UnkC* temp_s1_2; @@ -842,7 +842,7 @@ s32 cannonLoad802D77D8(Unk80362690* arg0, Unk802D3658_Arg0* arg1) { } temp_s1_2->unk6C = (s32)arg1; cannonLoadLevel(arg0->unk9C, temp_s1_2->pad0, arg1, (Unk802D3658_Arg0*)temp_s1_2->unk70); - cannon_802D5C5C((Unk802D5C5C_Arg0*)arg1); + cannon_802D5C5C(arg1); arg1->unkC = 0; arg1->unkE = 0; D_80359A88[0] = 0; @@ -852,7 +852,7 @@ s32 cannonLoad802D77D8(Unk80362690* arg0, Unk802D3658_Arg0* arg1) { uvMat4Copy(&sp3C, (Mtx4F*)&arg1->unk14); uvMat4RotateAxis(&sp3C, 1.5707961f, 'x'); func_802EDD9C(temp_s1_2, &sp3C); - func_802D4DE8((Unk802D3658_Arg0*)temp_s1_2->unk70, 0U); + func_802D4DE8(temp_s1_2->unk70, 0U); func_8032B508(temp_s1_2->unk74); func_80313E0C(0.0f); func_802E66F4(1.0f); @@ -871,7 +871,7 @@ s32 cannonLoad802D77D8(Unk80362690* arg0, Unk802D3658_Arg0* arg1) { #pragma GLOBAL_ASM("asm/nonmatchings/app/cannonball/cannonFrame802D7B7C.s") // cannonLandedFrame called every frame after landing from cannon shot -s32 cannonLandedFrame(Unk802D5C5C_Arg0* arg0) { +s32 cannonLandedFrame(Unk802D5B50_Arg2* arg0) { s32* temp_v1; Unk80362690_Unk0_UnkC* temp_s0; u8 sp27; @@ -951,7 +951,7 @@ s32 cannonLandedFrame(Unk802D5C5C_Arg0* arg0) { // cannonEndAllTgts called once after all four cannon targets are complete #pragma GLOBAL_ASM("asm/nonmatchings/app/cannonball/cannonEndAllTgts.s") -void cannon_802D8A40(u8 arg0, Unk802D5C5C_Arg0* arg1) { +void cannon_802D8A40(u8 arg0, Unk802D5B50_Arg2* arg1) { Unk80362690_Unk0_UnkC* unkC; unkC = &D_80362690->unk0[D_80362690->unk9C].unkC; if (unkC->veh == 3) { diff --git a/src/app/cannonball.h b/src/app/cannonball.h index 9cd38b3d..454eb1d2 100644 --- a/src/app/cannonball.h +++ b/src/app/cannonball.h @@ -11,20 +11,56 @@ typedef struct { u8 unk2; u8 pad3; u16 unk4; - u8 pad6[0xA]; + u16 pad6; + f32 unk8; + u16 unkC; + u16 unkE; u16 unk10; - u8 pad12[2]; + u16 pad12; Mtx4F unk14; u16 unk54; u8 unk56; u8 pad57; Mtx4F unk58; - u8 pad98[0xA4-0x98]; + f32 unk98; + union { + f32 zxAxis[2]; + struct { + f32 zAxis; // rotation intended here + f32 xAxis; + }; + }; f32 unkA4; u8 padA8[8]; Unk802D3658_Arg0* unkB0; - u8 padB4[0x16C]; - u16 unk220; + u8 unkB4; + u8 padB5[3]; + f32 unkB8; + f32 unkBC; + f32 unkC0; + u8 unkC4; + u8 padC5[3]; + f32 unkC8; + f32 unkCC; + f32 unkD0; + u8 unkD4; + u8 unkD5; + u8 padD6[0x11C - 0xD6]; + u8 unk11C; + s8 unk11D; + f32 unk120; + u8 pad124[0x12C - 0x124]; + f32 unk12C; + f32 unk130; + f32 unk134; + u8 pad138[0x1B8 - 0x138]; + Vec3F unk1B8; + f32 unk1C4; + f32 unk1C8; + f32 unk1CC; + f32 unk1D0; + u8 pad1D4[0x220 - 0x1D4]; + u16 modelId; u8 pad222[2]; f32 unk224; f32 unk228; @@ -65,7 +101,9 @@ typedef struct { u8 unk291; u8 unk292; u8 unk293; - u8 pad294[0x2BC - 0x294]; + u8 pad294[0x2B4 - 0x294]; + u8 unk2B4; + u8 pad2B5[0x2BC-0x2B5]; } Unk802D5B50_Arg2; extern u16 D_80359AAA; @@ -73,14 +111,14 @@ extern u16 D_80359AAE; void cannon_802D5A90(void); void cannonLoadLevel(u8, u8 pilot, Unk802D5B50_Arg2*, Unk802D3658_Arg0*); -void cannon_802D5C5C(Unk802D5C5C_Arg0*); +void cannon_802D5C5C(Unk802D5B50_Arg2*); void cannonEndTarget(Unk802D5B50_Arg2*); -void cannonMovementFrame(Unk802D5C5C_Arg0*, u8); -void cannonAimingFrame(Unk802D5C5C_Arg0*); -void cannonShoot(Unk802D5C5C_Arg0*); -void cannonPilotLand(Unk802D5C5C_Arg0*); +void cannonMovementFrame(Unk802D5B50_Arg2*, u8); +void cannonAimingFrame(Unk802D5B50_Arg2*); +void cannonShoot(Unk802D5B50_Arg2*); +void cannonPilotLand(Unk802D5B50_Arg2*); void cannonLoadPilot(u8 pilot, Unk802D5B50_Arg2*); -void cannon_802D8A40(u8 arg0, Unk802D5C5C_Arg0* arg1); +void cannon_802D8A40(u8 arg0, Unk802D5B50_Arg2* arg1); s32 cannonLoad802D77D8(Unk80362690* arg0, Unk802D3658_Arg0* arg1); s32 cannonFrame802D7B7C(Unk80362690* arg0); diff --git a/src/app/code_5A6A0.h b/src/app/code_5A6A0.h index 8ca0d5cf..fd622fee 100644 --- a/src/app/code_5A6A0.h +++ b/src/app/code_5A6A0.h @@ -29,73 +29,6 @@ typedef struct { s32 pad50; } Unk803599D0; -typedef struct { - u16 unk0; - u8 unk2; - u8 pad3; - u16 unk4; - u16 pad6; - f32 unk8; - u16 unkC; - u16 unkE; - u16 unk10; - u16 pad12; - Mtx4F unk14; - u16 unk54; - u8 unk56; - u8 pad57; - Mtx4F unk58; - f32 unk98; - union { - f32 zxAxis[2]; - struct { - f32 zAxis; // rotation intended here - f32 xAxis; - }; - }; - f32 unkA4; - u8 padA8[0xB0 - 0xA8]; - Unk802D3658_Arg0* unkB0; - u8 unkB4; - u8 padB5[3]; - f32 unkB8; - f32 unkBC; - f32 unkC0; - u8 unkC4; - u8 padC5[3]; - f32 unkC8; - f32 unkCC; - f32 unkD0; - u8 unkD4; - u8 unkD5; - u8 padD6[0x11C - 0xD6]; - u8 unk11C; - s8 unk11D; - f32 unk120; - u8 pad124[0x12C - 0x124]; - f32 unk12C; - f32 unk130; - f32 unk134; - u8 pad138[0x1B8 - 0x138]; - Vec3F unk1B8; - f32 unk1C4; - f32 unk1C8; - f32 unk1CC; - f32 unk1D0; - u8 pad1D4[0x220 - 0x1D4]; - u16 unk220; - u8 pad222[0x4A]; - f32 unk26C; - f32 unk270; - f32 unk274; - u8 pad278[0x280 - 0x278]; - f32 unk280; - u8 pad284[0x293 - 0x284]; - u8 unk293; - u8 pad294[0x2B4 - 0x294]; - u8 unk2B4; -} Unk802D5C5C_Arg0; - void func_802D45C4(Unk802D3658_Arg0*, f32); s32 func_802D472C(Unk802D3658_Arg0*, Mtx4F*); s32 func_802D4A30(Unk802D3658_Arg0*, Mtx4F*); diff --git a/src/app/code_60020.h b/src/app/code_60020.h index 49f7d967..8e511a5c 100644 --- a/src/app/code_60020.h +++ b/src/app/code_60020.h @@ -3,11 +3,12 @@ #include #include "code_5A6A0.h" +#include "cannonball.h" -void func_802D8AF0(Unk802D5C5C_Arg0*); -void func_802D9220(Unk802D5C5C_Arg0*); +void func_802D8AF0(Unk802D5B50_Arg2*); +void func_802D9220(Unk802D5B50_Arg2*); void func_802D9430(void*); void func_802D94EC(void*); -void func_802D95D8(Unk802D5C5C_Arg0*); +void func_802D95D8(Unk802D5B50_Arg2*); #endif // CODE_60020_H diff --git a/src/app/code_A6000.c b/src/app/code_A6000.c index 108f8431..d8947abf 100644 --- a/src/app/code_A6000.c +++ b/src/app/code_A6000.c @@ -25,7 +25,7 @@ void uvPathPoseLine(Unk8037F098* arg0, Unk8037DCA0* arg1, f32 arg2) { s32 pad1; s32 pad2; - if (arg1->modelId == WORLD_MODEL_ID) { + if (arg1->modelId == MODEL_WORLD) { _uvDebugPrintf("uvPathPoseLine: Path has an invalid Model ID!\n"); return; } @@ -128,7 +128,7 @@ void func_8031EF60(Unk8037DCA0* arg0, s32 arg1) { } void func_8031EF68(Unk8037DCA0* arg0) { - if (arg0->modelId != WORLD_MODEL_ID) { - arg0->modelId = WORLD_MODEL_ID; + if (arg0->modelId != MODEL_WORLD) { + arg0->modelId = MODEL_WORLD; } } diff --git a/src/app/code_C9B60.c b/src/app/code_C9B60.c index 56a9e3dd..f55530ec 100644 --- a/src/app/code_C9B60.c +++ b/src/app/code_C9B60.c @@ -45,7 +45,7 @@ typedef struct { f32 unk238; f32 unk23C; Unk8037DCA0* unk240[6]; - u16 unk258[6]; + u16 modelIds[6]; u8 unk264; u8 unk265; u8 unk266; @@ -139,23 +139,23 @@ static void func_803427FC(void) { spath_update(&D_80378CE0->unkAC, D_80378CE0->unk18, 0, 1.0f); spath_update(&D_80378CE0->unkEC, D_80378CE0->unk18, 0, 1.0f); D_80378CE0->unk0 = uvDobjAllocIdx(); - uvDobjModel(D_80378CE0->unk0, 0x28); + uvDobjModel(D_80378CE0->unk0, MODEL_LOW_POLY_INTRO_CRESCENT_ISLAND); uvMat4SetIdentity(&sp58); uvDobjPosm(D_80378CE0->unk0, 0, &sp58); D_80378CE0->unk4 = uvDobjAllocIdx(); - uvDobjModel(D_80378CE0->unk4, 0x157); + uvDobjModel(D_80378CE0->unk4, MODEL_PILOTWINGS_SWOOSH_FEATHER_THING); uvDobjPosm(D_80378CE0->unk4, 0, &D_80378CE0->unk2C); uvDobjState(D_80378CE0->unk4, 2); D_80378CE0->unk8 = uvDobjAllocIdx(); - uvDobjModel(D_80378CE0->unk8, 0xCD); + uvDobjModel(D_80378CE0->unk8, MODEL_PILOTWINGS_3D_LOGO); uvDobjPosm(D_80378CE0->unk8, 0, &D_80378CE0->unk6C); uvDobjState(D_80378CE0->unk8, 2); D_80378CE0->unkC = uvDobjAllocIdx(); - uvDobjModel(D_80378CE0->unkC, 0x158); + uvDobjModel(D_80378CE0->unkC, MODEL_3D_6_IN_INTRO_PW64_LOGO); uvDobjPosm(D_80378CE0->unkC, 0, &D_80378CE0->unkAC); uvDobjState(D_80378CE0->unkC, 2); D_80378CE0->unk10 = uvDobjAllocIdx(); - uvDobjModel(D_80378CE0->unk10, 0x159); + uvDobjModel(D_80378CE0->unk10, MODEL_3D_4_IN_INTRO_PW64_LOGO); uvDobjPosm(D_80378CE0->unk10, 0, &D_80378CE0->unkEC); uvDobjState(D_80378CE0->unk10, 2); menuCreateItems(0x66, 0x3C, 6, 1.0f, 1.0f, D_80350698, 2); @@ -208,20 +208,20 @@ static void func_80342D2C(void) { #define placeInUserPath(idx, modelId) \ allocIdx = uvDobjAllocIdx(); \ - D_80378CE0->unk258[(idx)] = allocIdx; \ + D_80378CE0->modelIds[(idx)] = allocIdx; \ D_80378CE0->unk240[(idx)]->unk352 = allocIdx; \ - uvDobjModel(D_80378CE0->unk258[(idx)], (modelId)); \ + uvDobjModel(D_80378CE0->modelIds[(idx)], (modelId)); \ userPath_8034A950(D_80378CE0->unk240[(idx)]->unk4C, &sp2FC); \ func_803136C4(&sp2FC, &D_80378CE0->unk12C); \ - uvDobjPosm(D_80378CE0->unk258[(idx)], 0, &D_80378CE0->unk12C); \ - uvDobjState(D_80378CE0->unk258[(idx)], 2); + uvDobjPosm(D_80378CE0->modelIds[(idx)], 0, &D_80378CE0->unk12C); \ + uvDobjState(D_80378CE0->modelIds[(idx)], 2); - placeInUserPath(0, 0x127); - placeInUserPath(1, 0x12B); - placeInUserPath(2, 0x12D); - placeInUserPath(3, 0x12F); - placeInUserPath(4, 0x131); - placeInUserPath(5, 0x133); + placeInUserPath(0, MODEL_LARK_GYRO); + placeInUserPath(1, MODEL_GOOSE_GYRO); + placeInUserPath(2, MODEL_HAWK_GYRO); + placeInUserPath(3, MODEL_KIWI_GYRO); + placeInUserPath(4, MODEL_IBIS_GYRO); + placeInUserPath(5, MODEL_ROBYN_GYRO); for (i = 0; i < ARRAY_COUNT(D_80378CE0->unk240); i++) { userPath_8034A8B0(D_80378CE0->unk240[i], 0, 0.0f); @@ -231,11 +231,11 @@ static void func_80342D2C(void) { static void func_80343294(void) { func_803433A4(); - uvDobjModel(D_80378CE0->unk0, WORLD_MODEL_ID); - uvDobjModel(D_80378CE0->unk4, WORLD_MODEL_ID); - uvDobjModel(D_80378CE0->unk8, WORLD_MODEL_ID); - uvDobjModel(D_80378CE0->unkC, WORLD_MODEL_ID); - uvDobjModel(D_80378CE0->unk10, WORLD_MODEL_ID); + uvDobjModel(D_80378CE0->unk0, MODEL_WORLD); + uvDobjModel(D_80378CE0->unk4, MODEL_WORLD); + uvDobjModel(D_80378CE0->unk8, MODEL_WORLD); + uvDobjModel(D_80378CE0->unkC, MODEL_WORLD); + uvDobjModel(D_80378CE0->unk10, MODEL_WORLD); spath_free(D_80378CE0->unk14); spath_free(D_80378CE0->unk18); spath_free(D_80378CE0->unk1C); @@ -254,22 +254,22 @@ static void func_803433A4(void) { temp_a0 = D_80378CE0->unk240[0]; if (temp_a0 != NULL) { func_8031EF68(temp_a0); - uvDobjModel(D_80378CE0->unk258[0], WORLD_MODEL_ID); + uvDobjModel(D_80378CE0->modelIds[0], MODEL_WORLD); userPathFree(0); func_8031EF68(D_80378CE0->unk240[1]); - uvDobjModel(D_80378CE0->unk258[1], WORLD_MODEL_ID); + uvDobjModel(D_80378CE0->modelIds[1], MODEL_WORLD); userPathFree(1); func_8031EF68(D_80378CE0->unk240[2]); - uvDobjModel(D_80378CE0->unk258[2], WORLD_MODEL_ID); + uvDobjModel(D_80378CE0->modelIds[2], MODEL_WORLD); userPathFree(2); func_8031EF68(D_80378CE0->unk240[3]); - uvDobjModel(D_80378CE0->unk258[3], WORLD_MODEL_ID); + uvDobjModel(D_80378CE0->modelIds[3], MODEL_WORLD); userPathFree(3); func_8031EF68(D_80378CE0->unk240[4]); - uvDobjModel(D_80378CE0->unk258[4], WORLD_MODEL_ID); + uvDobjModel(D_80378CE0->modelIds[4], MODEL_WORLD); userPathFree(4); func_8031EF68(D_80378CE0->unk240[5]); - uvDobjModel(D_80378CE0->unk258[5], WORLD_MODEL_ID); + uvDobjModel(D_80378CE0->modelIds[5], MODEL_WORLD); userPathFree(5); D_80378CE0->unk240[0] = NULL; D_80378CE0->unk240[1] = NULL; diff --git a/src/app/code_D2D50.c b/src/app/code_D2D50.c index f6eec10e..3fad771f 100644 --- a/src/app/code_D2D50.c +++ b/src/app/code_D2D50.c @@ -180,17 +180,17 @@ void func_8034BEDC(void) { D_803509C4 = uvDobjAllocIdx(); if (D_803509C4 != 0xFFFF) { - uvDobjModel(D_803509C4, 0xD8); + uvDobjModel(D_803509C4, MODEL_D8); uvDobjState(D_803509C4, 0); } D_803509C0 = uvDobjAllocIdx(); if (D_803509C0 == 0xFFFF) { if (D_803509C4 != 0xFFFF) { - uvDobjModel(D_803509C4, WORLD_MODEL_ID); + uvDobjModel(D_803509C4, MODEL_WORLD); D_803509C4 = 0xFFFF; } } else { - uvDobjModel(D_803509C0, 0xD7); + uvDobjModel(D_803509C0, MODEL_D7); uvDobjState(D_803509C0, 0); D_803509CC = func_80321210(func_8034BDCC, func_8034BC68, sp30, 450.0f, 0.0f, 4); D_803509D0 = 0.0f; @@ -209,10 +209,10 @@ void func_8034C0BC(void) { return; } - uvDobjModel(D_803509C0, WORLD_MODEL_ID); + uvDobjModel(D_803509C0, MODEL_WORLD); D_803509C0 = 0xFFFF; if (D_803509C4 != 0xFFFF) { - uvDobjModel(D_803509C4, WORLD_MODEL_ID); + uvDobjModel(D_803509C4, MODEL_WORLD); D_803509C4 = 0xFFFF; } func_803212DC(D_803509CC); diff --git a/src/app/code_D3810.c b/src/app/code_D3810.c index 7705291d..bf61da45 100644 --- a/src/app/code_D3810.c +++ b/src/app/code_D3810.c @@ -183,17 +183,17 @@ void func_8034C964(void) { for (i = 0; i < ARRAY_COUNT(D_8037F450); i++) { D_8037F450[i].unk4 = uvDobjAllocIdx(); if (D_8037F450[i].unk4 != 0xFFFF) { - uvDobjModel(D_8037F450[i].unk4, 0xD8); + uvDobjModel(D_8037F450[i].unk4, MODEL_D8); uvDobjState(D_8037F450[i].unk4, 0); } D_8037F450[i].unk0 = uvDobjAllocIdx(); if (D_8037F450[i].unk0 == 0xFFFF) { if (D_8037F450[i].unk4 != 0xFFFF) { - uvDobjModel(D_8037F450[i].unk4, WORLD_MODEL_ID); + uvDobjModel(D_8037F450[i].unk4, MODEL_WORLD); D_8037F450[i].unk4 = 0xFFFF; } } else { - uvDobjModel(D_8037F450[i].unk0, 0xD7); + uvDobjModel(D_8037F450[i].unk0, MODEL_D7); uvDobjState(D_8037F450[i].unk0, 0); switch (i) { case 0: @@ -236,10 +236,10 @@ void func_8034CB80(void) { for (i = 0; i < ARRAY_COUNT(D_8037F450); i++) { if (D_8037F450[i].unk0 != 0xFFFF) { - uvDobjModel(D_8037F450[i].unk0, WORLD_MODEL_ID); + uvDobjModel(D_8037F450[i].unk0, MODEL_WORLD); D_8037F450[i].unk0 = 0xFFFF; if (D_8037F450[i].unk4 != 0xFFFF) { - uvDobjModel(D_8037F450[i].unk4, WORLD_MODEL_ID); + uvDobjModel(D_8037F450[i].unk4, MODEL_WORLD); D_8037F450[i].unk4 = 0xFFFF; } } diff --git a/src/app/code_D4290.c b/src/app/code_D4290.c index c7d85865..9aab42c4 100644 --- a/src/app/code_D4290.c +++ b/src/app/code_D4290.c @@ -98,7 +98,7 @@ void wind_render(void) { var_s1->unk4.m[3][1] = temp_s0->unk0.f[1]; var_s1->unk4.m[3][2] = temp_s0->unk0.f[2]; var_s1->unk0 = uvDobjAllocIdx(); - uvDobjModel(var_s1->unk0, 0xD5U); + uvDobjModel(var_s1->unk0, MODEL_D5); uvDobjPosm(var_s1->unk0, 0, &var_s1->unk4); uvDobjState(var_s1->unk0, 2U); uvDobjProps(var_s1->unk0, 3, temp_s0->unk4C, 0); @@ -139,7 +139,7 @@ void wind_render(void) { var_s1->unk4.m[3][1] = (temp_s0->unk0.f[1] + s2->f[1]) * 0.5; var_s1->unk4.m[3][2] = (temp_s0->unk0.f[2] + s2->f[2]) * 0.5; var_s1->unk0 = uvDobjAllocIdx(); - uvDobjModel(var_s1->unk0, 0xD5U); + uvDobjModel(var_s1->unk0, MODEL_D5); uvDobjPosm(var_s1->unk0, 0, &var_s1->unk4); uvDobjState(var_s1->unk0, 2U); if (temp_fs0 < temp_s0->unk4C) { @@ -170,7 +170,7 @@ void wind_render(void) { var_s1->unk9C.f[1] = temp_s0->unk30.f[1]; var_s1->unk9C.f[2] = temp_s0->unk30.f[2]; var_s1->unk0 = uvDobjAllocIdx(); - uvDobjModel(var_s1->unk0, 0xD6U); + uvDobjModel(var_s1->unk0, MODEL_D6); uvDobjPosm(var_s1->unk0, 0, &var_s1->unk4); uvDobjState(var_s1->unk0, 2U); if (temp_s0->unk30.f[1] < temp_s0->unk30.f[0]) { @@ -203,7 +203,7 @@ void func_8034D4AC(void) { for (i = 0; i < D_8037F514; i++) { var_s0 = &D_8037F518[i]; if (var_s0->unk0 != 0xFFFF) { - uvDobjModel(var_s0->unk0, WORLD_MODEL_ID); + uvDobjModel(var_s0->unk0, MODEL_WORLD); } var_s0->unk0 = 0xFFFF; } diff --git a/src/app/targets.c b/src/app/targets.c index b759ac2e..ca906638 100644 --- a/src/app/targets.c +++ b/src/app/targets.c @@ -75,13 +75,13 @@ void func_803442F8(void) { var_s1->unk48 = hud_8031A6C8(missileTarget->pos.x, missileTarget->pos.y, missileTarget->pos.z); switch (missileTarget->targetType) { case 0: - uvDobjModel(var_s1->unk0, 0xF9); + uvDobjModel(var_s1->unk0, MODEL_F9); break; case 1: - uvDobjModel(var_s1->unk0, 0xF8); + uvDobjModel(var_s1->unk0, MODEL_F8); break; case 2: - uvDobjModel(var_s1->unk0, 0xF7); + uvDobjModel(var_s1->unk0, MODEL_F7); break; default: _uvDebugPrintf("targets : unknwwon target type [%d]\n", missileTarget->targetType); @@ -130,7 +130,7 @@ void func_8034467C(void) { for (i = 0; i < sMissileTargetCount; i++) { if (D_80378CF8[i].unk0 != 0xFFFF) { - uvDobjModel(D_80378CF8[i].unk0, WORLD_MODEL_ID); + uvDobjModel(D_80378CF8[i].unk0, MODEL_WORLD); D_80378CF8[i].unk0 = 0xFFFF; } if (D_80378CF8[i].unk48 != 0xFF) { @@ -176,7 +176,7 @@ f32 func_8034473C(s32 arg0, s32 arg1) { uvFxProps(sp4C, 0xA, var_s0->unk4.m[3][0], var_s0->unk4.m[3][1], var_s0->unk4.m[3][2], 0); } - uvDobjModel(var_s0->unk0, 0xFFFF); + uvDobjModel(var_s0->unk0, MODEL_WORLD); var_s0->unk0 = 0xFFFF; if (var_s0->unk48 != 0xFF) { hud_8031A8E0(var_s0->unk48); diff --git a/src/app/thermals.c b/src/app/thermals.c index f7acb945..ba4f3341 100644 --- a/src/app/thermals.c +++ b/src/app/thermals.c @@ -54,7 +54,7 @@ void therm_8034662C(void) { levlTher = &gLevelTHER[i]; therm = &gThermals[i]; therm->unk0 = uvDobjAllocIdx(); - uvDobjModel(therm->unk0, 0x101); + uvDobjModel(therm->unk0, MODEL_HG_THERMAL_CYLINDER); uvDobjState(therm->unk0, 2); uvVec3Copy(&gThermals[i].pos, &levlTher->pos); if (levlTher->height < levlTher->scale) { @@ -138,7 +138,7 @@ void therm_80346B84(void) { for (i = 0; i < gThermalCount; i++) { if (gThermals[i].unk0 != 0xFFFF) { - uvDobjModel(gThermals[i].unk0, 0xFFFF); + uvDobjModel(gThermals[i].unk0, MODEL_WORLD); gThermals[i].unk0 = 0xFFFF; } } diff --git a/src/app/wind_objects.c b/src/app/wind_objects.c index 44b3c2b3..3e1a127a 100644 --- a/src/app/wind_objects.c +++ b/src/app/wind_objects.c @@ -61,20 +61,20 @@ void func_8034E0B4(void) { windObject->objId = uvDobjAllocIdx(); switch (windObjectData->unkC) { case 0: - uvDobjModel(windObject->objId, 0x40); + uvDobjModel(windObject->objId, MODEL_40); uvModelGetPosm(0x40, 1, &windObject->unk44); uvModelGetPosm(0x40, 2, &windObject->unk84); windObject->unkC8 = 0.0f; windObject->unkC4 = 0.0f; break; case 1: - uvDobjModel(windObject->objId, 0x53); + uvDobjModel(windObject->objId, MODEL_WIND_TURBINE); uvModelGetPosm(0x53, 1, &windObject->unk44); uvModelGetPosm(0x53, 2, &windObject->unk84); windObject->unkC4 = 0.0f; break; case 2: - uvDobjModel(windObject->objId, 0x40); + uvDobjModel(windObject->objId, MODEL_40); break; } uvMat4SetIdentity(&windObject->unk4); @@ -172,7 +172,7 @@ void func_8034E628(void) { for (i = 0; i < sWindObjectsInLevel; i++) { windObject = &sWindObjects[i]; if (windObject->objId != INITIAL_OBJECT_ID) { - uvDobjModel(windObject->objId, WORLD_MODEL_ID); + uvDobjModel(windObject->objId, MODEL_WORLD); windObject->objId = INITIAL_OBJECT_ID; } } From fc8b387eb3fbbe2b18cf795ef4f20ae8dd80e5b5 Mon Sep 17 00:00:00 2001 From: Bl00D4NGEL Date: Tue, 3 Mar 2026 20:14:11 +0100 Subject: [PATCH 12/13] fix history --- src/app/cannonball.c | 5 +++ src/app/code_A6000.c | 9 +++++ src/app/code_A6000.h | 10 ++++++ src/app/code_C9B60.c | 78 +++++++++++++++++++++++++++++++++++++++--- src/app/code_D2D50.c | 11 ++++++ src/app/code_D3810.c | 11 ++++++ src/app/code_D4290.c | 4 +++ src/app/targets.c | 18 ++++++++++ src/app/wind_objects.c | 16 +++++++++ 9 files changed, 157 insertions(+), 5 deletions(-) diff --git a/src/app/cannonball.c b/src/app/cannonball.c index e11f3340..033ba65b 100644 --- a/src/app/cannonball.c +++ b/src/app/cannonball.c @@ -148,8 +148,13 @@ void cannon_802D5C5C(Unk802D5B50_Arg2* arg0) { // cannonEndTarget is invoked at the end of a cannonball target void cannonEndTarget(Unk802D5B50_Arg2* arg0) { +<<<<<<< HEAD uvDobjModel(arg0->unk0, MODEL_WORLD); uvDobjModel(arg0->unk54, MODEL_WORLD); +======= + uvDobjModel(arg0->unk0, WORLD_MODEL_ID); + uvDobjModel(arg0->unk54, WORLD_MODEL_ID); +>>>>>>> 94b25db (Match/app stuff (#75)) arg0->unk10 = 0xFFFF; arg0->unk0 = 0xFFFF; arg0->unk54 = 0xFFFF; diff --git a/src/app/code_A6000.c b/src/app/code_A6000.c index d8947abf..1c734231 100644 --- a/src/app/code_A6000.c +++ b/src/app/code_A6000.c @@ -25,7 +25,11 @@ void uvPathPoseLine(Unk8037F098* arg0, Unk8037DCA0* arg1, f32 arg2) { s32 pad1; s32 pad2; +<<<<<<< HEAD if (arg1->modelId == MODEL_WORLD) { +======= + if (arg1->modelId == WORLD_MODEL_ID) { +>>>>>>> 94b25db (Match/app stuff (#75)) _uvDebugPrintf("uvPathPoseLine: Path has an invalid Model ID!\n"); return; } @@ -128,7 +132,12 @@ void func_8031EF60(Unk8037DCA0* arg0, s32 arg1) { } void func_8031EF68(Unk8037DCA0* arg0) { +<<<<<<< HEAD if (arg0->modelId != MODEL_WORLD) { arg0->modelId = MODEL_WORLD; +======= + if (arg0->modelId != WORLD_MODEL_ID) { + arg0->modelId = WORLD_MODEL_ID; +>>>>>>> 94b25db (Match/app stuff (#75)) } } diff --git a/src/app/code_A6000.h b/src/app/code_A6000.h index 5b7814df..b41ea65c 100644 --- a/src/app/code_A6000.h +++ b/src/app/code_A6000.h @@ -43,6 +43,16 @@ typedef struct { u16 unk352; } Unk8037DCA0; // size = 0x354 +// size: 0x2E8 +typedef struct { + Vec4F unk0[25]; + Vec3F unk190[25]; + u8 unk2BC[25]; + u8 pad2D5[3]; + s32 unk2D8; + u8 pad2DC[0xC]; +} Unk8037F098; + void uvPathPoseLine(Unk8037F098*, Unk8037DCA0*, f32); void func_8031EF60(Unk8037DCA0*, s32); void func_8031EF68(Unk8037DCA0*); diff --git a/src/app/code_C9B60.c b/src/app/code_C9B60.c index 819170d1..1a23ce0f 100644 --- a/src/app/code_C9B60.c +++ b/src/app/code_C9B60.c @@ -45,7 +45,11 @@ typedef struct { f32 unk238; f32 unk23C; Unk8037DCA0* unk240[6]; +<<<<<<< HEAD u16 modelIds[6]; +======= + u16 unk258[6]; +>>>>>>> 94b25db (Match/app stuff (#75)) u8 unk264; u8 unk265; u8 unk266; @@ -139,6 +143,7 @@ static void func_803427FC(void) { spath_update(&D_80378CE0->unkAC, D_80378CE0->unk18, 0, 1.0f); spath_update(&D_80378CE0->unkEC, D_80378CE0->unk18, 0, 1.0f); D_80378CE0->unk0 = uvDobjAllocIdx(); +<<<<<<< HEAD uvDobjModel(D_80378CE0->unk0, MODEL_LOW_POLY_INTRO_CRESCENT_ISLAND); uvMat4SetIdentity(&sp58); uvDobjPosm(D_80378CE0->unk0, 0, &sp58); @@ -156,6 +161,25 @@ static void func_803427FC(void) { uvDobjState(D_80378CE0->unkC, 2); D_80378CE0->unk10 = uvDobjAllocIdx(); uvDobjModel(D_80378CE0->unk10, MODEL_3D_4_IN_INTRO_PW64_LOGO); +======= + uvDobjModel(D_80378CE0->unk0, 0x28); + uvMat4SetIdentity(&sp58); + uvDobjPosm(D_80378CE0->unk0, 0, &sp58); + D_80378CE0->unk4 = uvDobjAllocIdx(); + uvDobjModel(D_80378CE0->unk4, 0x157); + uvDobjPosm(D_80378CE0->unk4, 0, &D_80378CE0->unk2C); + uvDobjState(D_80378CE0->unk4, 2); + D_80378CE0->unk8 = uvDobjAllocIdx(); + uvDobjModel(D_80378CE0->unk8, 0xCD); + uvDobjPosm(D_80378CE0->unk8, 0, &D_80378CE0->unk6C); + uvDobjState(D_80378CE0->unk8, 2); + D_80378CE0->unkC = uvDobjAllocIdx(); + uvDobjModel(D_80378CE0->unkC, 0x158); + uvDobjPosm(D_80378CE0->unkC, 0, &D_80378CE0->unkAC); + uvDobjState(D_80378CE0->unkC, 2); + D_80378CE0->unk10 = uvDobjAllocIdx(); + uvDobjModel(D_80378CE0->unk10, 0x159); +>>>>>>> 94b25db (Match/app stuff (#75)) uvDobjPosm(D_80378CE0->unk10, 0, &D_80378CE0->unkEC); uvDobjState(D_80378CE0->unk10, 2); menuCreateItems(0x66, 0x3C, 6, 1.0f, 1.0f, D_80350698, 2); @@ -206,13 +230,14 @@ static void func_80342D2C(void) { uvMat4RotateAxis(&D_80378CE0->unk16C, -1.4835305f, 'x'); uvMat4RotateAxis(&D_80378CE0->unk16C, 3.141594f, 'y'); -#define placeInUserPath(idx, modelId) \ - allocIdx = uvDobjAllocIdx(); \ +#define placeInUserPath(idx, modelId) \ + allocIdx = uvDobjAllocIdx(); \ +<<<<<<< HEAD D_80378CE0->modelIds[(idx)] = allocIdx; \ - D_80378CE0->unk240[(idx)]->unk352 = allocIdx; \ + D_80378CE0->unk240[(idx)]->unk352 = allocIdx; \ uvDobjModel(D_80378CE0->modelIds[(idx)], (modelId)); \ - userPath_8034A950(D_80378CE0->unk240[(idx)]->unk4C, &sp2FC); \ - func_803136C4(&sp2FC, &D_80378CE0->unk12C); \ + userPath_8034A950(D_80378CE0->unk240[(idx)]->unk4C, &sp2FC); \ + func_803136C4(&sp2FC, &D_80378CE0->unk12C); \ uvDobjPosm(D_80378CE0->modelIds[(idx)], 0, &D_80378CE0->unk12C); \ uvDobjState(D_80378CE0->modelIds[(idx)], 2); @@ -222,6 +247,22 @@ static void func_80342D2C(void) { placeInUserPath(3, MODEL_KIWI_GYRO); placeInUserPath(4, MODEL_IBIS_GYRO); placeInUserPath(5, MODEL_ROBYN_GYRO); +======= + D_80378CE0->unk258[(idx)] = allocIdx; \ + D_80378CE0->unk240[(idx)]->unk352 = allocIdx; \ + uvDobjModel(D_80378CE0->unk258[(idx)], (modelId)); \ + userPath_8034A950(D_80378CE0->unk240[(idx)]->unk4C, &sp2FC); \ + func_803136C4(&sp2FC, &D_80378CE0->unk12C); \ + uvDobjPosm(D_80378CE0->unk258[(idx)], 0, &D_80378CE0->unk12C); \ + uvDobjState(D_80378CE0->unk258[(idx)], 2); + + placeInUserPath(0, 0x127); + placeInUserPath(1, 0x12B); + placeInUserPath(2, 0x12D); + placeInUserPath(3, 0x12F); + placeInUserPath(4, 0x131); + placeInUserPath(5, 0x133); +>>>>>>> 94b25db (Match/app stuff (#75)) for (i = 0; i < ARRAY_COUNT(D_80378CE0->unk240); i++) { userPath_8034A8B0(D_80378CE0->unk240[i], 0, 0.0f); @@ -231,11 +272,19 @@ static void func_80342D2C(void) { static void func_80343294(void) { func_803433A4(); +<<<<<<< HEAD uvDobjModel(D_80378CE0->unk0, MODEL_WORLD); uvDobjModel(D_80378CE0->unk4, MODEL_WORLD); uvDobjModel(D_80378CE0->unk8, MODEL_WORLD); uvDobjModel(D_80378CE0->unkC, MODEL_WORLD); uvDobjModel(D_80378CE0->unk10, MODEL_WORLD); +======= + uvDobjModel(D_80378CE0->unk0, WORLD_MODEL_ID); + uvDobjModel(D_80378CE0->unk4, WORLD_MODEL_ID); + uvDobjModel(D_80378CE0->unk8, WORLD_MODEL_ID); + uvDobjModel(D_80378CE0->unkC, WORLD_MODEL_ID); + uvDobjModel(D_80378CE0->unk10, WORLD_MODEL_ID); +>>>>>>> 94b25db (Match/app stuff (#75)) spath_free(D_80378CE0->unk14); spath_free(D_80378CE0->unk18); spath_free(D_80378CE0->unk1C); @@ -254,6 +303,7 @@ static void func_803433A4(void) { temp_a0 = D_80378CE0->unk240[0]; if (temp_a0 != NULL) { func_8031EF68(temp_a0); +<<<<<<< HEAD uvDobjModel(D_80378CE0->modelIds[0], MODEL_WORLD); userPathFree(0); func_8031EF68(D_80378CE0->unk240[1]); @@ -270,6 +320,24 @@ static void func_803433A4(void) { userPathFree(4); func_8031EF68(D_80378CE0->unk240[5]); uvDobjModel(D_80378CE0->modelIds[5], MODEL_WORLD); +======= + uvDobjModel(D_80378CE0->unk258[0], WORLD_MODEL_ID); + userPathFree(0); + func_8031EF68(D_80378CE0->unk240[1]); + uvDobjModel(D_80378CE0->unk258[1], WORLD_MODEL_ID); + userPathFree(1); + func_8031EF68(D_80378CE0->unk240[2]); + uvDobjModel(D_80378CE0->unk258[2], WORLD_MODEL_ID); + userPathFree(2); + func_8031EF68(D_80378CE0->unk240[3]); + uvDobjModel(D_80378CE0->unk258[3], WORLD_MODEL_ID); + userPathFree(3); + func_8031EF68(D_80378CE0->unk240[4]); + uvDobjModel(D_80378CE0->unk258[4], WORLD_MODEL_ID); + userPathFree(4); + func_8031EF68(D_80378CE0->unk240[5]); + uvDobjModel(D_80378CE0->unk258[5], WORLD_MODEL_ID); +>>>>>>> 94b25db (Match/app stuff (#75)) userPathFree(5); D_80378CE0->unk240[0] = NULL; D_80378CE0->unk240[1] = NULL; diff --git a/src/app/code_D2D50.c b/src/app/code_D2D50.c index 3fad771f..478f9d22 100644 --- a/src/app/code_D2D50.c +++ b/src/app/code_D2D50.c @@ -186,7 +186,11 @@ void func_8034BEDC(void) { D_803509C0 = uvDobjAllocIdx(); if (D_803509C0 == 0xFFFF) { if (D_803509C4 != 0xFFFF) { +<<<<<<< HEAD uvDobjModel(D_803509C4, MODEL_WORLD); +======= + uvDobjModel(D_803509C4, WORLD_MODEL_ID); +>>>>>>> 94b25db (Match/app stuff (#75)) D_803509C4 = 0xFFFF; } } else { @@ -209,10 +213,17 @@ void func_8034C0BC(void) { return; } +<<<<<<< HEAD uvDobjModel(D_803509C0, MODEL_WORLD); D_803509C0 = 0xFFFF; if (D_803509C4 != 0xFFFF) { uvDobjModel(D_803509C4, MODEL_WORLD); +======= + uvDobjModel(D_803509C0, WORLD_MODEL_ID); + D_803509C0 = 0xFFFF; + if (D_803509C4 != 0xFFFF) { + uvDobjModel(D_803509C4, WORLD_MODEL_ID); +>>>>>>> 94b25db (Match/app stuff (#75)) D_803509C4 = 0xFFFF; } func_803212DC(D_803509CC); diff --git a/src/app/code_D3810.c b/src/app/code_D3810.c index bf61da45..1ba7beff 100644 --- a/src/app/code_D3810.c +++ b/src/app/code_D3810.c @@ -189,7 +189,11 @@ void func_8034C964(void) { D_8037F450[i].unk0 = uvDobjAllocIdx(); if (D_8037F450[i].unk0 == 0xFFFF) { if (D_8037F450[i].unk4 != 0xFFFF) { +<<<<<<< HEAD uvDobjModel(D_8037F450[i].unk4, MODEL_WORLD); +======= + uvDobjModel(D_8037F450[i].unk4, WORLD_MODEL_ID); +>>>>>>> 94b25db (Match/app stuff (#75)) D_8037F450[i].unk4 = 0xFFFF; } } else { @@ -236,10 +240,17 @@ void func_8034CB80(void) { for (i = 0; i < ARRAY_COUNT(D_8037F450); i++) { if (D_8037F450[i].unk0 != 0xFFFF) { +<<<<<<< HEAD uvDobjModel(D_8037F450[i].unk0, MODEL_WORLD); D_8037F450[i].unk0 = 0xFFFF; if (D_8037F450[i].unk4 != 0xFFFF) { uvDobjModel(D_8037F450[i].unk4, MODEL_WORLD); +======= + uvDobjModel(D_8037F450[i].unk0, WORLD_MODEL_ID); + D_8037F450[i].unk0 = 0xFFFF; + if (D_8037F450[i].unk4 != 0xFFFF) { + uvDobjModel(D_8037F450[i].unk4, WORLD_MODEL_ID); +>>>>>>> 94b25db (Match/app stuff (#75)) D_8037F450[i].unk4 = 0xFFFF; } } diff --git a/src/app/code_D4290.c b/src/app/code_D4290.c index 9aab42c4..31e5b4cd 100644 --- a/src/app/code_D4290.c +++ b/src/app/code_D4290.c @@ -203,7 +203,11 @@ void func_8034D4AC(void) { for (i = 0; i < D_8037F514; i++) { var_s0 = &D_8037F518[i]; if (var_s0->unk0 != 0xFFFF) { +<<<<<<< HEAD uvDobjModel(var_s0->unk0, MODEL_WORLD); +======= + uvDobjModel(var_s0->unk0, WORLD_MODEL_ID); +>>>>>>> 94b25db (Match/app stuff (#75)) } var_s0->unk0 = 0xFFFF; } diff --git a/src/app/targets.c b/src/app/targets.c index ca906638..ae0616ae 100644 --- a/src/app/targets.c +++ b/src/app/targets.c @@ -75,6 +75,7 @@ void func_803442F8(void) { var_s1->unk48 = hud_8031A6C8(missileTarget->pos.x, missileTarget->pos.y, missileTarget->pos.z); switch (missileTarget->targetType) { case 0: +<<<<<<< HEAD uvDobjModel(var_s1->unk0, MODEL_F9); break; case 1: @@ -82,6 +83,15 @@ void func_803442F8(void) { break; case 2: uvDobjModel(var_s1->unk0, MODEL_F7); +======= + uvDobjModel(var_s1->unk0, 0xF9); + break; + case 1: + uvDobjModel(var_s1->unk0, 0xF8); + break; + case 2: + uvDobjModel(var_s1->unk0, 0xF7); +>>>>>>> 94b25db (Match/app stuff (#75)) break; default: _uvDebugPrintf("targets : unknwwon target type [%d]\n", missileTarget->targetType); @@ -130,7 +140,11 @@ void func_8034467C(void) { for (i = 0; i < sMissileTargetCount; i++) { if (D_80378CF8[i].unk0 != 0xFFFF) { +<<<<<<< HEAD uvDobjModel(D_80378CF8[i].unk0, MODEL_WORLD); +======= + uvDobjModel(D_80378CF8[i].unk0, WORLD_MODEL_ID); +>>>>>>> 94b25db (Match/app stuff (#75)) D_80378CF8[i].unk0 = 0xFFFF; } if (D_80378CF8[i].unk48 != 0xFF) { @@ -176,7 +190,11 @@ f32 func_8034473C(s32 arg0, s32 arg1) { uvFxProps(sp4C, 0xA, var_s0->unk4.m[3][0], var_s0->unk4.m[3][1], var_s0->unk4.m[3][2], 0); } +<<<<<<< HEAD uvDobjModel(var_s0->unk0, MODEL_WORLD); +======= + uvDobjModel(var_s0->unk0, 0xFFFF); +>>>>>>> 94b25db (Match/app stuff (#75)) var_s0->unk0 = 0xFFFF; if (var_s0->unk48 != 0xFF) { hud_8031A8E0(var_s0->unk48); diff --git a/src/app/wind_objects.c b/src/app/wind_objects.c index 5890becc..889fc774 100644 --- a/src/app/wind_objects.c +++ b/src/app/wind_objects.c @@ -61,20 +61,32 @@ void func_8034E0B4(void) { windObject->objId = uvDobjAllocIdx(); switch (windObjectData->unkC) { case 0: +<<<<<<< HEAD uvDobjModel(windObject->objId, MODEL_40); +======= + uvDobjModel(windObject->objId, 0x40); +>>>>>>> 94b25db (Match/app stuff (#75)) uvModelGetPosm(0x40, 1, &windObject->unk44); uvModelGetPosm(0x40, 2, &windObject->unk84); windObject->unkC8 = 0.0f; windObject->unkC4 = 0.0f; break; case 1: +<<<<<<< HEAD uvDobjModel(windObject->objId, MODEL_WIND_TURBINE); +======= + uvDobjModel(windObject->objId, 0x53); +>>>>>>> 94b25db (Match/app stuff (#75)) uvModelGetPosm(0x53, 1, &windObject->unk44); uvModelGetPosm(0x53, 2, &windObject->unk84); windObject->unkC4 = 0.0f; break; case 2: +<<<<<<< HEAD uvDobjModel(windObject->objId, MODEL_40); +======= + uvDobjModel(windObject->objId, 0x40); +>>>>>>> 94b25db (Match/app stuff (#75)) break; } uvMat4SetIdentity(&windObject->unk4); @@ -172,7 +184,11 @@ void func_8034E628(void) { for (i = 0; i < sWindObjectsInLevel; i++) { windObject = &sWindObjects[i]; if (windObject->objId != INITIAL_OBJECT_ID) { +<<<<<<< HEAD uvDobjModel(windObject->objId, MODEL_WORLD); +======= + uvDobjModel(windObject->objId, WORLD_MODEL_ID); +>>>>>>> 94b25db (Match/app stuff (#75)) windObject->objId = INITIAL_OBJECT_ID; } } From d268d129c6971d82e2d169e8543159bc47ee9178 Mon Sep 17 00:00:00 2001 From: Bl00D4NGEL Date: Tue, 3 Mar 2026 20:18:54 +0100 Subject: [PATCH 13/13] I forgot how git works oops --- src/app/cannonball.c | 5 --- src/app/code_A6000.c | 9 ----- src/app/code_A6000.h | 10 ------ src/app/code_C9B60.c | 78 +++--------------------------------------- src/app/code_D2D50.c | 11 ------ src/app/code_D3810.c | 11 ------ src/app/code_D4290.c | 4 --- src/app/targets.c | 18 ---------- src/app/wind_objects.c | 16 --------- 9 files changed, 5 insertions(+), 157 deletions(-) diff --git a/src/app/cannonball.c b/src/app/cannonball.c index 033ba65b..e11f3340 100644 --- a/src/app/cannonball.c +++ b/src/app/cannonball.c @@ -148,13 +148,8 @@ void cannon_802D5C5C(Unk802D5B50_Arg2* arg0) { // cannonEndTarget is invoked at the end of a cannonball target void cannonEndTarget(Unk802D5B50_Arg2* arg0) { -<<<<<<< HEAD uvDobjModel(arg0->unk0, MODEL_WORLD); uvDobjModel(arg0->unk54, MODEL_WORLD); -======= - uvDobjModel(arg0->unk0, WORLD_MODEL_ID); - uvDobjModel(arg0->unk54, WORLD_MODEL_ID); ->>>>>>> 94b25db (Match/app stuff (#75)) arg0->unk10 = 0xFFFF; arg0->unk0 = 0xFFFF; arg0->unk54 = 0xFFFF; diff --git a/src/app/code_A6000.c b/src/app/code_A6000.c index 1c734231..d8947abf 100644 --- a/src/app/code_A6000.c +++ b/src/app/code_A6000.c @@ -25,11 +25,7 @@ void uvPathPoseLine(Unk8037F098* arg0, Unk8037DCA0* arg1, f32 arg2) { s32 pad1; s32 pad2; -<<<<<<< HEAD if (arg1->modelId == MODEL_WORLD) { -======= - if (arg1->modelId == WORLD_MODEL_ID) { ->>>>>>> 94b25db (Match/app stuff (#75)) _uvDebugPrintf("uvPathPoseLine: Path has an invalid Model ID!\n"); return; } @@ -132,12 +128,7 @@ void func_8031EF60(Unk8037DCA0* arg0, s32 arg1) { } void func_8031EF68(Unk8037DCA0* arg0) { -<<<<<<< HEAD if (arg0->modelId != MODEL_WORLD) { arg0->modelId = MODEL_WORLD; -======= - if (arg0->modelId != WORLD_MODEL_ID) { - arg0->modelId = WORLD_MODEL_ID; ->>>>>>> 94b25db (Match/app stuff (#75)) } } diff --git a/src/app/code_A6000.h b/src/app/code_A6000.h index b41ea65c..5b7814df 100644 --- a/src/app/code_A6000.h +++ b/src/app/code_A6000.h @@ -43,16 +43,6 @@ typedef struct { u16 unk352; } Unk8037DCA0; // size = 0x354 -// size: 0x2E8 -typedef struct { - Vec4F unk0[25]; - Vec3F unk190[25]; - u8 unk2BC[25]; - u8 pad2D5[3]; - s32 unk2D8; - u8 pad2DC[0xC]; -} Unk8037F098; - void uvPathPoseLine(Unk8037F098*, Unk8037DCA0*, f32); void func_8031EF60(Unk8037DCA0*, s32); void func_8031EF68(Unk8037DCA0*); diff --git a/src/app/code_C9B60.c b/src/app/code_C9B60.c index 1a23ce0f..819170d1 100644 --- a/src/app/code_C9B60.c +++ b/src/app/code_C9B60.c @@ -45,11 +45,7 @@ typedef struct { f32 unk238; f32 unk23C; Unk8037DCA0* unk240[6]; -<<<<<<< HEAD u16 modelIds[6]; -======= - u16 unk258[6]; ->>>>>>> 94b25db (Match/app stuff (#75)) u8 unk264; u8 unk265; u8 unk266; @@ -143,7 +139,6 @@ static void func_803427FC(void) { spath_update(&D_80378CE0->unkAC, D_80378CE0->unk18, 0, 1.0f); spath_update(&D_80378CE0->unkEC, D_80378CE0->unk18, 0, 1.0f); D_80378CE0->unk0 = uvDobjAllocIdx(); -<<<<<<< HEAD uvDobjModel(D_80378CE0->unk0, MODEL_LOW_POLY_INTRO_CRESCENT_ISLAND); uvMat4SetIdentity(&sp58); uvDobjPosm(D_80378CE0->unk0, 0, &sp58); @@ -161,25 +156,6 @@ static void func_803427FC(void) { uvDobjState(D_80378CE0->unkC, 2); D_80378CE0->unk10 = uvDobjAllocIdx(); uvDobjModel(D_80378CE0->unk10, MODEL_3D_4_IN_INTRO_PW64_LOGO); -======= - uvDobjModel(D_80378CE0->unk0, 0x28); - uvMat4SetIdentity(&sp58); - uvDobjPosm(D_80378CE0->unk0, 0, &sp58); - D_80378CE0->unk4 = uvDobjAllocIdx(); - uvDobjModel(D_80378CE0->unk4, 0x157); - uvDobjPosm(D_80378CE0->unk4, 0, &D_80378CE0->unk2C); - uvDobjState(D_80378CE0->unk4, 2); - D_80378CE0->unk8 = uvDobjAllocIdx(); - uvDobjModel(D_80378CE0->unk8, 0xCD); - uvDobjPosm(D_80378CE0->unk8, 0, &D_80378CE0->unk6C); - uvDobjState(D_80378CE0->unk8, 2); - D_80378CE0->unkC = uvDobjAllocIdx(); - uvDobjModel(D_80378CE0->unkC, 0x158); - uvDobjPosm(D_80378CE0->unkC, 0, &D_80378CE0->unkAC); - uvDobjState(D_80378CE0->unkC, 2); - D_80378CE0->unk10 = uvDobjAllocIdx(); - uvDobjModel(D_80378CE0->unk10, 0x159); ->>>>>>> 94b25db (Match/app stuff (#75)) uvDobjPosm(D_80378CE0->unk10, 0, &D_80378CE0->unkEC); uvDobjState(D_80378CE0->unk10, 2); menuCreateItems(0x66, 0x3C, 6, 1.0f, 1.0f, D_80350698, 2); @@ -230,14 +206,13 @@ static void func_80342D2C(void) { uvMat4RotateAxis(&D_80378CE0->unk16C, -1.4835305f, 'x'); uvMat4RotateAxis(&D_80378CE0->unk16C, 3.141594f, 'y'); -#define placeInUserPath(idx, modelId) \ - allocIdx = uvDobjAllocIdx(); \ -<<<<<<< HEAD +#define placeInUserPath(idx, modelId) \ + allocIdx = uvDobjAllocIdx(); \ D_80378CE0->modelIds[(idx)] = allocIdx; \ - D_80378CE0->unk240[(idx)]->unk352 = allocIdx; \ + D_80378CE0->unk240[(idx)]->unk352 = allocIdx; \ uvDobjModel(D_80378CE0->modelIds[(idx)], (modelId)); \ - userPath_8034A950(D_80378CE0->unk240[(idx)]->unk4C, &sp2FC); \ - func_803136C4(&sp2FC, &D_80378CE0->unk12C); \ + userPath_8034A950(D_80378CE0->unk240[(idx)]->unk4C, &sp2FC); \ + func_803136C4(&sp2FC, &D_80378CE0->unk12C); \ uvDobjPosm(D_80378CE0->modelIds[(idx)], 0, &D_80378CE0->unk12C); \ uvDobjState(D_80378CE0->modelIds[(idx)], 2); @@ -247,22 +222,6 @@ static void func_80342D2C(void) { placeInUserPath(3, MODEL_KIWI_GYRO); placeInUserPath(4, MODEL_IBIS_GYRO); placeInUserPath(5, MODEL_ROBYN_GYRO); -======= - D_80378CE0->unk258[(idx)] = allocIdx; \ - D_80378CE0->unk240[(idx)]->unk352 = allocIdx; \ - uvDobjModel(D_80378CE0->unk258[(idx)], (modelId)); \ - userPath_8034A950(D_80378CE0->unk240[(idx)]->unk4C, &sp2FC); \ - func_803136C4(&sp2FC, &D_80378CE0->unk12C); \ - uvDobjPosm(D_80378CE0->unk258[(idx)], 0, &D_80378CE0->unk12C); \ - uvDobjState(D_80378CE0->unk258[(idx)], 2); - - placeInUserPath(0, 0x127); - placeInUserPath(1, 0x12B); - placeInUserPath(2, 0x12D); - placeInUserPath(3, 0x12F); - placeInUserPath(4, 0x131); - placeInUserPath(5, 0x133); ->>>>>>> 94b25db (Match/app stuff (#75)) for (i = 0; i < ARRAY_COUNT(D_80378CE0->unk240); i++) { userPath_8034A8B0(D_80378CE0->unk240[i], 0, 0.0f); @@ -272,19 +231,11 @@ static void func_80342D2C(void) { static void func_80343294(void) { func_803433A4(); -<<<<<<< HEAD uvDobjModel(D_80378CE0->unk0, MODEL_WORLD); uvDobjModel(D_80378CE0->unk4, MODEL_WORLD); uvDobjModel(D_80378CE0->unk8, MODEL_WORLD); uvDobjModel(D_80378CE0->unkC, MODEL_WORLD); uvDobjModel(D_80378CE0->unk10, MODEL_WORLD); -======= - uvDobjModel(D_80378CE0->unk0, WORLD_MODEL_ID); - uvDobjModel(D_80378CE0->unk4, WORLD_MODEL_ID); - uvDobjModel(D_80378CE0->unk8, WORLD_MODEL_ID); - uvDobjModel(D_80378CE0->unkC, WORLD_MODEL_ID); - uvDobjModel(D_80378CE0->unk10, WORLD_MODEL_ID); ->>>>>>> 94b25db (Match/app stuff (#75)) spath_free(D_80378CE0->unk14); spath_free(D_80378CE0->unk18); spath_free(D_80378CE0->unk1C); @@ -303,7 +254,6 @@ static void func_803433A4(void) { temp_a0 = D_80378CE0->unk240[0]; if (temp_a0 != NULL) { func_8031EF68(temp_a0); -<<<<<<< HEAD uvDobjModel(D_80378CE0->modelIds[0], MODEL_WORLD); userPathFree(0); func_8031EF68(D_80378CE0->unk240[1]); @@ -320,24 +270,6 @@ static void func_803433A4(void) { userPathFree(4); func_8031EF68(D_80378CE0->unk240[5]); uvDobjModel(D_80378CE0->modelIds[5], MODEL_WORLD); -======= - uvDobjModel(D_80378CE0->unk258[0], WORLD_MODEL_ID); - userPathFree(0); - func_8031EF68(D_80378CE0->unk240[1]); - uvDobjModel(D_80378CE0->unk258[1], WORLD_MODEL_ID); - userPathFree(1); - func_8031EF68(D_80378CE0->unk240[2]); - uvDobjModel(D_80378CE0->unk258[2], WORLD_MODEL_ID); - userPathFree(2); - func_8031EF68(D_80378CE0->unk240[3]); - uvDobjModel(D_80378CE0->unk258[3], WORLD_MODEL_ID); - userPathFree(3); - func_8031EF68(D_80378CE0->unk240[4]); - uvDobjModel(D_80378CE0->unk258[4], WORLD_MODEL_ID); - userPathFree(4); - func_8031EF68(D_80378CE0->unk240[5]); - uvDobjModel(D_80378CE0->unk258[5], WORLD_MODEL_ID); ->>>>>>> 94b25db (Match/app stuff (#75)) userPathFree(5); D_80378CE0->unk240[0] = NULL; D_80378CE0->unk240[1] = NULL; diff --git a/src/app/code_D2D50.c b/src/app/code_D2D50.c index 478f9d22..3fad771f 100644 --- a/src/app/code_D2D50.c +++ b/src/app/code_D2D50.c @@ -186,11 +186,7 @@ void func_8034BEDC(void) { D_803509C0 = uvDobjAllocIdx(); if (D_803509C0 == 0xFFFF) { if (D_803509C4 != 0xFFFF) { -<<<<<<< HEAD uvDobjModel(D_803509C4, MODEL_WORLD); -======= - uvDobjModel(D_803509C4, WORLD_MODEL_ID); ->>>>>>> 94b25db (Match/app stuff (#75)) D_803509C4 = 0xFFFF; } } else { @@ -213,17 +209,10 @@ void func_8034C0BC(void) { return; } -<<<<<<< HEAD uvDobjModel(D_803509C0, MODEL_WORLD); D_803509C0 = 0xFFFF; if (D_803509C4 != 0xFFFF) { uvDobjModel(D_803509C4, MODEL_WORLD); -======= - uvDobjModel(D_803509C0, WORLD_MODEL_ID); - D_803509C0 = 0xFFFF; - if (D_803509C4 != 0xFFFF) { - uvDobjModel(D_803509C4, WORLD_MODEL_ID); ->>>>>>> 94b25db (Match/app stuff (#75)) D_803509C4 = 0xFFFF; } func_803212DC(D_803509CC); diff --git a/src/app/code_D3810.c b/src/app/code_D3810.c index 1ba7beff..bf61da45 100644 --- a/src/app/code_D3810.c +++ b/src/app/code_D3810.c @@ -189,11 +189,7 @@ void func_8034C964(void) { D_8037F450[i].unk0 = uvDobjAllocIdx(); if (D_8037F450[i].unk0 == 0xFFFF) { if (D_8037F450[i].unk4 != 0xFFFF) { -<<<<<<< HEAD uvDobjModel(D_8037F450[i].unk4, MODEL_WORLD); -======= - uvDobjModel(D_8037F450[i].unk4, WORLD_MODEL_ID); ->>>>>>> 94b25db (Match/app stuff (#75)) D_8037F450[i].unk4 = 0xFFFF; } } else { @@ -240,17 +236,10 @@ void func_8034CB80(void) { for (i = 0; i < ARRAY_COUNT(D_8037F450); i++) { if (D_8037F450[i].unk0 != 0xFFFF) { -<<<<<<< HEAD uvDobjModel(D_8037F450[i].unk0, MODEL_WORLD); D_8037F450[i].unk0 = 0xFFFF; if (D_8037F450[i].unk4 != 0xFFFF) { uvDobjModel(D_8037F450[i].unk4, MODEL_WORLD); -======= - uvDobjModel(D_8037F450[i].unk0, WORLD_MODEL_ID); - D_8037F450[i].unk0 = 0xFFFF; - if (D_8037F450[i].unk4 != 0xFFFF) { - uvDobjModel(D_8037F450[i].unk4, WORLD_MODEL_ID); ->>>>>>> 94b25db (Match/app stuff (#75)) D_8037F450[i].unk4 = 0xFFFF; } } diff --git a/src/app/code_D4290.c b/src/app/code_D4290.c index 31e5b4cd..9aab42c4 100644 --- a/src/app/code_D4290.c +++ b/src/app/code_D4290.c @@ -203,11 +203,7 @@ void func_8034D4AC(void) { for (i = 0; i < D_8037F514; i++) { var_s0 = &D_8037F518[i]; if (var_s0->unk0 != 0xFFFF) { -<<<<<<< HEAD uvDobjModel(var_s0->unk0, MODEL_WORLD); -======= - uvDobjModel(var_s0->unk0, WORLD_MODEL_ID); ->>>>>>> 94b25db (Match/app stuff (#75)) } var_s0->unk0 = 0xFFFF; } diff --git a/src/app/targets.c b/src/app/targets.c index ae0616ae..ca906638 100644 --- a/src/app/targets.c +++ b/src/app/targets.c @@ -75,7 +75,6 @@ void func_803442F8(void) { var_s1->unk48 = hud_8031A6C8(missileTarget->pos.x, missileTarget->pos.y, missileTarget->pos.z); switch (missileTarget->targetType) { case 0: -<<<<<<< HEAD uvDobjModel(var_s1->unk0, MODEL_F9); break; case 1: @@ -83,15 +82,6 @@ void func_803442F8(void) { break; case 2: uvDobjModel(var_s1->unk0, MODEL_F7); -======= - uvDobjModel(var_s1->unk0, 0xF9); - break; - case 1: - uvDobjModel(var_s1->unk0, 0xF8); - break; - case 2: - uvDobjModel(var_s1->unk0, 0xF7); ->>>>>>> 94b25db (Match/app stuff (#75)) break; default: _uvDebugPrintf("targets : unknwwon target type [%d]\n", missileTarget->targetType); @@ -140,11 +130,7 @@ void func_8034467C(void) { for (i = 0; i < sMissileTargetCount; i++) { if (D_80378CF8[i].unk0 != 0xFFFF) { -<<<<<<< HEAD uvDobjModel(D_80378CF8[i].unk0, MODEL_WORLD); -======= - uvDobjModel(D_80378CF8[i].unk0, WORLD_MODEL_ID); ->>>>>>> 94b25db (Match/app stuff (#75)) D_80378CF8[i].unk0 = 0xFFFF; } if (D_80378CF8[i].unk48 != 0xFF) { @@ -190,11 +176,7 @@ f32 func_8034473C(s32 arg0, s32 arg1) { uvFxProps(sp4C, 0xA, var_s0->unk4.m[3][0], var_s0->unk4.m[3][1], var_s0->unk4.m[3][2], 0); } -<<<<<<< HEAD uvDobjModel(var_s0->unk0, MODEL_WORLD); -======= - uvDobjModel(var_s0->unk0, 0xFFFF); ->>>>>>> 94b25db (Match/app stuff (#75)) var_s0->unk0 = 0xFFFF; if (var_s0->unk48 != 0xFF) { hud_8031A8E0(var_s0->unk48); diff --git a/src/app/wind_objects.c b/src/app/wind_objects.c index 889fc774..5890becc 100644 --- a/src/app/wind_objects.c +++ b/src/app/wind_objects.c @@ -61,32 +61,20 @@ void func_8034E0B4(void) { windObject->objId = uvDobjAllocIdx(); switch (windObjectData->unkC) { case 0: -<<<<<<< HEAD uvDobjModel(windObject->objId, MODEL_40); -======= - uvDobjModel(windObject->objId, 0x40); ->>>>>>> 94b25db (Match/app stuff (#75)) uvModelGetPosm(0x40, 1, &windObject->unk44); uvModelGetPosm(0x40, 2, &windObject->unk84); windObject->unkC8 = 0.0f; windObject->unkC4 = 0.0f; break; case 1: -<<<<<<< HEAD uvDobjModel(windObject->objId, MODEL_WIND_TURBINE); -======= - uvDobjModel(windObject->objId, 0x53); ->>>>>>> 94b25db (Match/app stuff (#75)) uvModelGetPosm(0x53, 1, &windObject->unk44); uvModelGetPosm(0x53, 2, &windObject->unk84); windObject->unkC4 = 0.0f; break; case 2: -<<<<<<< HEAD uvDobjModel(windObject->objId, MODEL_40); -======= - uvDobjModel(windObject->objId, 0x40); ->>>>>>> 94b25db (Match/app stuff (#75)) break; } uvMat4SetIdentity(&windObject->unk4); @@ -184,11 +172,7 @@ void func_8034E628(void) { for (i = 0; i < sWindObjectsInLevel; i++) { windObject = &sWindObjects[i]; if (windObject->objId != INITIAL_OBJECT_ID) { -<<<<<<< HEAD uvDobjModel(windObject->objId, MODEL_WORLD); -======= - uvDobjModel(windObject->objId, WORLD_MODEL_ID); ->>>>>>> 94b25db (Match/app stuff (#75)) windObject->objId = INITIAL_OBJECT_ID; } }