diff --git a/include/functions.h b/include/functions.h index 6cd40e0b..a7693772 100644 --- a/include/functions.h +++ b/include/functions.h @@ -132,9 +132,9 @@ void func_80042FDC(Object_408*); void func_80042FE8(Object_408*); // fox_43E80 -void func_80043468(Player* ); -void func_800444BC(Player *); -void func_80047504(Player *); +void func_80043468(Player* player); +void func_800444BC(Player * player); +void func_80047504(Player * player); // sf_496E0 void func_80049C0C(Player *); @@ -512,6 +512,17 @@ void func_800B7184(Player *, s32); void func_800B73E0(Player *); void func_800B852C(s32 , Item *); void func_800B86CC(void); +void func_800AD7F0(Player *player); +void func_800ADF58(Player *player); +void func_800B415C(Player *player); +void func_800B41E0(Player *player); +void func_800B41EC(Player *player); +void func_800A46A0(Player* player); +void func_800A86E4(Player* player); +void func_800A887C(Player* player); +s32 func_800A7974(Player* player, f32* hitboxData, s32* index, f32 xPos, f32 yPos, f32 zPos, f32 xRot, f32 yRot, + f32 zRot, f32 arg9, f32 argA, f32 argB); +bool func_800A8054(s32 objId, f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5, f32 arg6, Vec3f* arg7, Vec3f* arg8); // fox_radio s32 func_800BA7BC(u16*, s32); diff --git a/include/gfx.h b/include/gfx.h index 53c4109b..e2db52e3 100644 --- a/include/gfx.h +++ b/include/gfx.h @@ -26,6 +26,10 @@ #define VTX_T(x,y,z,s,t,cr,cg,cb,a) { { x, y, z }, 0, { s, t }, { cr, cg, cb, a } } +typedef struct { + u8 r, g, b; +} Color_RGB8; // size = 0x3 + typedef union { u16 data[SCREEN_HEIGHT * SCREEN_WIDTH]; u16 array[SCREEN_HEIGHT][SCREEN_WIDTH]; diff --git a/include/variables.h b/include/variables.h index f7a68ef6..0eae5cd3 100644 --- a/include/variables.h +++ b/include/variables.h @@ -289,7 +289,7 @@ extern s32 D_8015F978; extern s32 D_8015F97C; extern s32 D_8015F980; extern f32 D_8015F984; -extern f32 D_80161394; +// extern f32 D_80161394; // fox_43AC0 extern s32 D_801613A0; @@ -516,7 +516,7 @@ extern u8 D_80177B6C; extern s32 D_80177B70[7]; extern u8 D_80177B8C; extern s32 D_80177B90[7]; -extern s8 D_80177BAC; +extern u8 D_80177BAC; extern s32 D_80177BB0[7]; // extern u16 D_Timer_80177BD0[4]; @@ -826,7 +826,7 @@ extern Gfx* D_E6A810_801B7584[]; extern Gfx* D_E6A810_801B7608[]; extern Gfx* D_E6A810_801B769C[]; extern f32 D_E6A810_801B83A8[]; -extern s8 D_E6A810_801BA1E8; +extern u8 D_E6A810_801BA1E8; // ovl_E9F1D0 extern f32 D_E9F1D0_801A7F58; @@ -969,10 +969,12 @@ extern Gfx D_3000090[]; extern Gfx D_3000660[]; extern u16 D_3000BC0[]; extern Gfx D_3001C90[]; +extern u16 D_3002E80[]; extern Gfx D_3003CE0[]; extern Gfx D_3004680[]; extern Gfx D_3005980[]; extern Gfx D_3005AB0[]; +extern u16 D_3005EA8[]; extern Gfx D_30066B0[]; extern Gfx D_3007650[]; extern Gfx D_3008100[]; @@ -1053,7 +1055,6 @@ extern f32 D_302EE64[]; extern f32 D_302EE80[]; extern f32 D_302EE9C[]; - // ast_918430, ast_922730 extern AnimationHeader D_4000080; extern Limb* D_400014C[]; @@ -1210,6 +1211,7 @@ extern f32 D_60092E8[]; extern f32 D_6009388[]; extern Gfx D_60097E0[]; extern u16* D_6009B34[]; +extern u16 D_6009BB8[]; extern f32 D_6009CC4[]; extern f32 D_6009CFC[]; extern Gfx D_6009E30[]; diff --git a/src/main/fox_360.c b/src/main/fox_360.c index f39adf7d..7bc3b89d 100644 --- a/src/main/fox_360.c +++ b/src/main/fox_360.c @@ -284,9 +284,9 @@ void func_8002EE34(void) { } void func_8002EE64(Object_2F4* obj2F4) { - s32 var_s3; + s32 i; s32 var_s0; - Object_58* var_s2; + Object_58* obj58; Vec3f temp1; f32 temp4; f32 temp5; @@ -303,16 +303,16 @@ void func_8002EE64(Object_2F4* obj2F4) { obj2F4->unk_178 = obj2F4->unk_17C = obj2F4->unk_184 = obj2F4->unk_180 = 0.0f; if ((obj2F4->unk_0C9 != 0) && (gLevelMode == LEVELMODE_ALL_RANGE) && (gLevelType == LEVELTYPE_PLANET)) { - for (var_s3 = 0, var_s2 = gObjects58; var_s3 < 200; var_s3++, var_s2++) { - if ((var_s2->obj.status == 2) && - ((var_s2->obj.id == 150) || (var_s2->obj.id == 149) || (var_s2->obj.id == 148) || - (var_s2->obj.id == 1) || (var_s2->obj.id == 3)) && - (fabsf(var_s2->obj.pos.x - obj2F4->obj.pos.x) < 2500.0f) && - (fabsf(var_s2->obj.pos.z - obj2F4->obj.pos.z) < 2500.0f)) { - temp1.x = var_s2->obj.pos.x; - temp1.y = var_s2->obj.pos.y; - temp1.z = var_s2->obj.pos.z; - temp4 = var_s2->obj.rot.y; + for (i = 0, obj58 = gObjects58; i < 200; i++, obj58++) { + if ((obj58->obj.status == 2) && + ((obj58->obj.id == OBJ_80_150) || (obj58->obj.id == OBJ_80_149) || (obj58->obj.id == OBJ_80_148) || + (obj58->obj.id == OBJ_80_1) || (obj58->obj.id == OBJ_80_3)) && + (fabsf(obj58->obj.pos.x - obj2F4->obj.pos.x) < 2500.0f) && + (fabsf(obj58->obj.pos.z - obj2F4->obj.pos.z) < 2500.0f)) { + temp1.x = obj58->obj.pos.x; + temp1.y = obj58->obj.pos.y; + temp1.z = obj58->obj.pos.z; + temp4 = obj58->obj.rot.y; Matrix_RotateY(gCalcMatrix, -temp4 * M_DTOR, 0); spE4.x = obj2F4->obj.pos.x - temp1.x; @@ -326,8 +326,8 @@ void func_8002EE64(Object_2F4* obj2F4) { spC0.z = temp1.z; // fake? spCC.y = spD8.y + temp1.y; spCC.z = spD8.z + temp1.z; - if ((var_s2->obj.id == 149) || (var_s2->obj.id == 150)) { - if (var_s2->obj.id == 149) { + if ((obj58->obj.id == OBJ_80_149) || (obj58->obj.id == OBJ_80_150)) { + if (obj58->obj.id == OBJ_80_149) { var_s0 = 5; } else { var_s0 = 6; @@ -340,7 +340,7 @@ void func_8002EE64(Object_2F4* obj2F4) { } } else { var_s0 = 0; - if (var_s2->obj.id == 3) { + if (obj58->obj.id == OBJ_80_3) { var_s0 = 3; } if (func_800A3690(&spCC, &spC0, var_s0, &spB4) != 0) { @@ -366,7 +366,7 @@ void func_8002F180(void) { } Object_2F4_Initialize(obj2F4); obj2F4->obj.status = 2; - obj2F4->obj.id = 197; + obj2F4->obj.id = OBJ_2F4_197; Object_SetInfo(&obj2F4->info, obj2F4->obj.id); if (i == 0) { obj2F4->unk_0E4 = 1000; @@ -413,7 +413,7 @@ void func_8002F3E0(void) { obj2F4->obj.pos.x = D_800C9AFC[i].x; obj2F4->obj.pos.y = D_800C9AFC[i].y; obj2F4->obj.pos.z = D_800C9AFC[i].z; - obj2F4->obj.id = 197; + obj2F4->obj.id = OBJ_2F4_197; obj2F4->unk_0E4 = i + 4; obj2F4->unk_0E6 = D_800C9B2C[i]; gObjects2F4[obj2F4->unk_0E6].unk_0E6 = -1; @@ -548,7 +548,8 @@ void func_8002FB4C(Object_2F4* obj2F4) { s32 i; for (i = 10, var_v1 = &gObjects2F4[10]; i < 60; i++, var_v1++) { - if ((var_v1->obj.status == 2) && (var_v1->obj.id == 197) && (var_v1->unk_0B6 == 0) && (var_v1->unk_0E6 < 0)) { + if ((var_v1->obj.status == 2) && (var_v1->obj.id == OBJ_2F4_197) && (var_v1->unk_0B6 == 0) && + (var_v1->unk_0E6 < 0)) { var_a0 = false; for (j = 1, var_a2 = &gObjects2F4[1]; j < 4; j++, var_a2++) { if ((j != obj2F4->index) && (i == var_a2->unk_0E6)) { @@ -635,7 +636,7 @@ void func_8002FEF0(Object_2F4* arg0) { if (var_s0->obj.status == 0) { Object_2F4_Initialize(var_s0); var_s0->obj.status = 1; - var_s0->obj.id = 291; + var_s0->obj.id = OBJ_2F4_291; if (gCurrentLevel == LEVEL_SECTOR_Z) { var_s0->obj.pos.x = 200.0f; var_s0->obj.pos.y = -500.0f; @@ -1454,9 +1455,9 @@ void func_800319AC(Object_2F4* this) { } if ((this->unk_0E4 >= 4) && (this->unk_0E4 != 8) && ((gCurrentLevel != LEVEL_VENOM_2) || (this->unk_0E4 != 4))) { - spCC = __sinf(((this->index * 45) + gFrameCount) * 0.017453292f) * 100.0f; - spC8 = __cosf(((this->index * 45) + (gFrameCount * 2)) * 0.017453292f) * 100.0f; - spC4 = __sinf(((this->index * 45) + gFrameCount) * 0.017453292f) * 100.0f; + spCC = __sinf(((this->index * 45) + gFrameCount) * M_DTOR) * 100.0f; + spC8 = __cosf(((this->index * 45) + (gFrameCount * 2)) * M_DTOR) * 100.0f; + spC4 = __sinf(((this->index * 45) + gFrameCount) * M_DTOR) * 100.0f; } if (gPlayer->unk_4DC == 0) { this->unk_124.x = gPlayer->pos.x + spCC; @@ -1484,9 +1485,9 @@ void func_800319AC(Object_2F4* this) { } } else if (this->unk_0E6 != 100) { if (this->unk_0E4 >= 10) { - spCC = __sinf(((this->index * 45) + gFrameCount) * 0.017453292f) * 200.0f; - spC8 = __cosf(((this->index * 45) + (gFrameCount * 2)) * 0.017453292f) * 200.0f; - spC4 = __sinf(((this->index * 45) + gFrameCount) * 0.017453292f) * 200.0f; + spCC = __sinf(((this->index * 45) + gFrameCount) * M_DTOR) * 200.0f; + spC8 = __cosf(((this->index * 45) + (gFrameCount * 2)) * M_DTOR) * 200.0f; + spC4 = __sinf(((this->index * 45) + gFrameCount) * M_DTOR) * 200.0f; } this->unk_124.x = gObjects2F4[this->unk_0E6].obj.pos.x + spCC; this->unk_124.y = gObjects2F4[this->unk_0E6].obj.pos.y + spC8; @@ -1790,7 +1791,7 @@ void func_800319AC(Object_2F4* this) { this->timer_0C0 = (s32) (Rand_ZeroOne() * 200.0f) + 200; this->unk_13C = 30.0f; } - if ((this->unk_0E6 > 0) && (gObjects2F4[this->unk_0E6].obj.id == 0xC5) && + if ((this->unk_0E6 > 0) && (gObjects2F4[this->unk_0E6].obj.id == OBJ_2F4_197) && (gObjects2F4[this->unk_0E6].timer_0C2 == 0) && (gObjects2F4[this->unk_0E6].obj.status == 2)) { this->unk_0B8 = 2; this->unk_058 = 0; @@ -1941,9 +1942,9 @@ void func_800319AC(Object_2F4* this) { Math_SmoothStepToAngle(&this->obj.rot.z, this->unk_130, 0.2f, 100.0f, 0.01f); if ((this->unk_0E4 == 8) && !(gFrameCount & 1)) { if ((this->unk_130 > 10.0f) && (this->unk_130 < 350.0f)) { - Matrix_RotateY(gCalcMatrix, this->obj.rot.y * 0.017453292f, 0); - Matrix_RotateX(gCalcMatrix, this->obj.rot.x * 0.017453292f, 1); - Matrix_RotateZ(gCalcMatrix, this->obj.rot.z * 0.017453292f, 1); + Matrix_RotateY(gCalcMatrix, this->obj.rot.y * M_DTOR, 0); + Matrix_RotateX(gCalcMatrix, this->obj.rot.x * M_DTOR, 1); + Matrix_RotateZ(gCalcMatrix, this->obj.rot.z * M_DTOR, 1); spA8.x = 0.0f; spA8.y = 70.0f; @@ -1957,10 +1958,10 @@ void func_800319AC(Object_2F4* this) { this->obj.rot.y = this->unk_0F4.y; Math_SmoothStepToF(&this->unk_114, this->unk_118, 0.2f, 1.0f, 0.1f); Math_SmoothStepToF(&this->unk_11C, this->unk_120, 1.0f, 0.1f, 0.1f); - spC0 = __sinf(this->obj.rot.x * 0.017453292f); - spB8 = __cosf(this->obj.rot.x * 0.017453292f); - spBC = __sinf(this->obj.rot.y * 0.017453292f); - spB4 = __cosf(this->obj.rot.y * 0.017453292f); + spC0 = __sinf(this->obj.rot.x * M_DTOR); + spB8 = __cosf(this->obj.rot.x * M_DTOR); + spBC = __sinf(this->obj.rot.y * M_DTOR); + spB4 = __cosf(this->obj.rot.y * M_DTOR); sp9C.z = (this->unk_138 + this->unk_114) * spB8; sp9C.y = (this->unk_138 + this->unk_114) * -spC0; @@ -1986,9 +1987,9 @@ void func_800319AC(Object_2F4* this) { sp90.z = spB4 * sp90.z; if ((gCurrentLevel == LEVEL_VENOM_2) && (this->unk_0E4 >= 4)) { - Matrix_RotateY(gCalcMatrix, this->obj.rot.y * 0.017453292f, 0); - Matrix_RotateX(gCalcMatrix, this->obj.rot.x * 0.017453292f, 1); - Matrix_RotateZ(gCalcMatrix, this->obj.rot.z * 0.017453292f, 1); + Matrix_RotateY(gCalcMatrix, this->obj.rot.y * M_DTOR, 0); + Matrix_RotateX(gCalcMatrix, this->obj.rot.x * M_DTOR, 1); + Matrix_RotateZ(gCalcMatrix, this->obj.rot.z * M_DTOR, 1); spA8.y = 0.0f; spA8.z = 0.0f; if (Rand_ZeroOne() < 0.8f) { @@ -2155,7 +2156,7 @@ bool func_800352E0(s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3f* rot, void* thi RCP_SetupDL(&gMasterDisp, 0x1D); } if ((limbIndex == 1) || (limbIndex == 3)) { - rot->z += (f32) gFrameCount * 3.0f; + rot->z += gFrameCount * 3.0f; } if ((limbIndex == 1) || (limbIndex == 2)) { RCP_SetupDL(&gMasterDisp, 0x22); diff --git a/src/main/fox_bg.c b/src/main/fox_bg.c index b18aa868..f15944bc 100644 --- a/src/main/fox_bg.c +++ b/src/main/fox_bg.c @@ -1,41 +1,76 @@ #include "global.h" -typedef struct { - u8 r, g, b; -} Color_RGB8; +f32 D_8015F960; +u8 D_8015F964; +f32 D_8015F968; +f32 D_8015F96C; +f32 D_8015F970; +s32 D_8015F974; +s32 D_8015F978; +s32 D_8015F97C; +s32 D_8015F980; +f32 D_8015F984; +UNK_TYPE D_8015F988[0x683]; // Unused? Close to being [13][0x80] +f32 D_80161394; // can be static -extern f32 D_8015F960; -extern u8 D_8015F964; -extern f32 D_8015F968; -extern f32 D_8015F96C; -extern f32 D_8015F970; -extern s32 D_8015F974; -extern s32 D_8015F978; -extern s32 D_8015F97C; -extern s32 D_8015F980; -extern f32 D_8015F984; -// extern s32 D_8015F988[0x67F] // enormous unused space. D_8015F984[0x680] perhaps? Fits the divisible by 13 pattern -extern f32 D_80161394; // can be static - -extern f32 D_800C9C30; -extern u16 D_800C9C34; -// D_800C9C38 missing -extern u16 D_800C9C3C[16]; -extern Gfx* D_800C9C5C[13]; -extern Gfx* D_800C9C90[13]; -extern f32 D_800C9CC4[13]; -extern f32 D_800C9CF8[13]; -extern f32 D_800C9D2C[13]; -extern f32 D_800C9D60[13]; -extern Color_RGB8 D_800C9D94[13]; -extern Color_RGB8 D_800C9DBC[13]; -extern s32 D_800C9DE4[13]; -extern s32 D_800C9E18[13]; -extern s32 D_800C9E4C[2]; -extern s32 D_800C9E54[2]; -extern f32 D_800C9E5C[2]; -extern f32 D_800C9E64[4]; -extern f32 D_800C9E74[4]; +f32 D_800C9C30 = 0.0f; +u16 D_800C9C34 = 1; +s32 D_800C9C38 = 0; // unused? +u16 D_800C9C3C[16] = { + 0x108B, 0x108B, 0x1087, 0x1089, 0x39FF, 0x190D, 0x108B, 0x1089, + 0x294B, 0x18DF, 0x294B, 0x1085, 0x39FF, 0x108B, 0x18CD, 0x108B, +}; +Gfx* D_800C9C5C[13] = { + D_102A8A0, D_102A8A0, D_102A8A0, D_102A8A0, D_102A8A0, D_20112C0, D_102A8A0, + D_102A8A0, D_102A8A0, D_102A8A0, D_102A8A0, D_20112C0, D_102A8A0, +}; +Gfx* D_800C9C90[13] = { + D_102A8A0, D_102A8A0, D_102A8A0, D_102A8A0, D_102A8A0, D_102A8A0, D_102A8A0, + D_102A8A0, D_102A8A0, D_102A8A0, D_102A8A0, D_102A8A0, D_102A8A0, +}; +f32 D_800C9CC4[13] = { + 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 10.0f, 13.0f, 20.0f, 35.0f, 40.0f, 50.0f, 50.0f, 70.0f, +}; +f32 D_800C9CF8[13] = { + 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 5.0f, 10.0f, 16.0f, 20.0f, 30.0f, 45.0f, 60.0f, 70.0f, +}; +f32 D_800C9D2C[13] = { + 0.7f, 1.0f, 1.2f, 1.4f, 1.8f, 2.0f, 0.4f, 0.6f, 0.8f, 1.7f, 0.8f, 4.0f, 2.0f, +}; +f32 D_800C9D60[13] = { + 0.525f, 0.75f, 0.90000004f, 1.05f, 1.3499999f, 0.15f, 0.25f, 0.35f, 1.0f, 0.6f, 0.35f, 0.9f, 1.0f, +}; +Color_RGB8 D_800C9D94[13] = { + { 255, 255, 255 }, { 255, 255, 192 }, { 255, 255, 128 }, { 255, 255, 96 }, { 255, 255, 64 }, + { 255, 255, 64 }, { 255, 255, 64 }, { 255, 255, 64 }, { 255, 255, 64 }, { 255, 255, 64 }, + { 255, 255, 64 }, { 255, 255, 64 }, { 255, 255, 64 }, +}; +Color_RGB8 D_800C9DBC[13] = { + { 255, 128, 64 }, { 255, 128, 64 }, { 255, 128, 64 }, { 255, 128, 64 }, { 255, 128, 64 }, + { 255, 255, 64 }, { 255, 128, 64 }, { 255, 128, 64 }, { 255, 255, 64 }, { 128, 128, 128 }, + { 128, 128, 255 }, { 255, 255, 64 }, { 255, 128, 64 }, +}; +s32 D_800C9DE4[13] = { + 255, 80, 64, 48, 32, 12, 32, 44, 32, 42, 36, 12, 38, +}; +s32 D_800C9E18[13] = { + 80, 60, 40, 20, 10, 20, 30, 20, 15, 30, 20, 27, 20, +}; +s32 D_800C9E4C[2] = { 10, 4 }; +s32 D_800C9E54[2] = { 140, 40 }; +f32 D_800C9E5C[2] = { 1.2f, 0.5f }; +f32 D_800C9E64[4] = { + 6000.0f, + -6000.0f, + 6000.0f, + -6000.0f, +}; +f32 D_800C9E74[4] = { + 6000.0f, + 6000.0f, + -6000.0f, + -6000.0f, +}; void func_8003DAF0(void) { f32 var_fa0; @@ -189,237 +224,182 @@ void func_8003E1E8(void) { u8 var_s0; s32 sp11C; - if (D_80177AB0 != 0) { - var_s0 = gLevelType; - if ((gCurrentLevel == LEVEL_VERSUS) && (gVersusStage == VS_STAGE_SECTOR_Z)) { - var_s0 = LEVELTYPE_PLANET; - } - if (gCurrentLevel == LEVEL_TRAINING) { - var_s0 = LEVELTYPE_SPACE; - } - sp11C = gCurrentLevel; - Matrix_Push(&gGfxMatrix); - if (D_80177C70 == 2) { - Matrix_Scale(gGfxMatrix, 1.2f, 1.2f, 1.0f, 1); - } - switch (var_s0) { - case LEVELTYPE_PLANET: - RCP_SetupDL(&gMasterDisp, 0x11); - switch (sp11C) { - case LEVEL_FORTUNA: - case LEVEL_KATINA: - case LEVEL_VENOM_2: - case LEVEL_VERSUS: - sp134 = (gPlayer[gPlayerNum].unk_05C * -6000.0f) - (gPlayer[gPlayerNum].camEye.y * 0.4f); - sp13C = Math_ModF(Math_RadToDeg(gPlayer[gPlayerNum].unk_058) * -20.222221f * 5.0f, 7280.0f); - Matrix_RotateZ(gGfxMatrix, gPlayer[gPlayerNum].unk_034 * 0.017453292f, 1); - Matrix_Translate(gGfxMatrix, sp13C, -2000.0f + sp134, -6000.0f, 1); - if (gCurrentLevel == LEVEL_FORTUNA) { - Matrix_Translate(gGfxMatrix, 0.0f, -2000.0f, 0, 1); - } else if (gCurrentLevel == LEVEL_KATINA) { - Matrix_Translate(gGfxMatrix, 0.0f, -2500.0f, 0, 1); - } - Matrix_SetGfxMtx(&gMasterDisp); - switch (gCurrentLevel) { - case LEVEL_VERSUS: - if (gVersusStage == VS_STAGE_CORNERIA) { - gSPDisplayList(gMasterDisp++, D_302D4D0); - } else if (gVersusStage == VS_STAGE_KATINA) { - gSPDisplayList(gMasterDisp++, D_30146B0); - } else { - gSPDisplayList(gMasterDisp++, D_3011E40); - } - break; - case LEVEL_FORTUNA: - gSPDisplayList(gMasterDisp++, D_600D9F0); - break; - case LEVEL_KATINA: - gSPDisplayList(gMasterDisp++, D_600F1D0); - break; - case LEVEL_VENOM_2: - gSPDisplayList(gMasterDisp++, D_600F670); - break; - } - Matrix_Translate(gGfxMatrix, 7280.0f, 0.0f, 0.0f, 1); - Matrix_SetGfxMtx(&gMasterDisp); - switch (gCurrentLevel) { - case LEVEL_VERSUS: - if (gVersusStage == VS_STAGE_CORNERIA) { - gSPDisplayList(gMasterDisp++, D_302D4D0); - } else if (gVersusStage == VS_STAGE_KATINA) { - gSPDisplayList(gMasterDisp++, D_30146B0); - } else { - gSPDisplayList(gMasterDisp++, D_3011E40); - } - break; - case LEVEL_FORTUNA: - gSPDisplayList(gMasterDisp++, D_600D9F0); - break; - case LEVEL_KATINA: - gSPDisplayList(gMasterDisp++, D_600F1D0); - break; - case LEVEL_VENOM_2: - gSPDisplayList(gMasterDisp++, D_600F670); - break; - } - break; - case LEVEL_CORNERIA: - case LEVEL_VENOM_1: - sp134 = (gPlayer[gPlayerNum].unk_05C * -6000.0f) - (gPlayer[gPlayerNum].camEye.y * 0.6f); - sp13C = Math_ModF(Math_RadToDeg(gPlayer[gPlayerNum].unk_058) * -20.222221f * 5.0f, 7280.0f); - Matrix_RotateZ(gGfxMatrix, gPlayer[gPlayerNum].unk_034 * 0.017453292f, 1); - Matrix_Translate(gGfxMatrix, sp13C, -2000.0f + sp134, -6000.0f, 1); - Matrix_SetGfxMtx(&gMasterDisp); - switch (gCurrentLevel) { - case LEVEL_CORNERIA: - gSPDisplayList(gMasterDisp++, D_60059F0); - break; - case LEVEL_VENOM_1: - gSPDisplayList(gMasterDisp++, D_60046F0); - break; - } - Matrix_Translate(gGfxMatrix, 7280.0f, 0.0f, 0.0f, 1); - Matrix_SetGfxMtx(&gMasterDisp); - switch (gCurrentLevel) { - case LEVEL_CORNERIA: - gSPDisplayList(gMasterDisp++, D_60059F0); - break; - case LEVEL_VENOM_1: - gSPDisplayList(gMasterDisp++, D_60046F0); - break; - } - break; - case LEVEL_VENOM_ANDROSS: - if (D_80177AB0 != 6) { - if ((D_80177AB0 == 2) || (D_80177AB0 == 7)) { - Matrix_RotateZ(gGfxMatrix, gPlayer[gPlayerNum].unk_034 * 0.017453292f, 1); - Matrix_Translate(gGfxMatrix, 0.0f, -4000.0f, -7000.0f, 1); - Matrix_SetGfxMtx(&gMasterDisp); - gSPDisplayList(gMasterDisp++, D_600F670); - } else if ((D_80177AB0 == 3) || (D_80177AB0 == 4)) { - RCP_SetupDL(&gMasterDisp, 0x3E); - if (D_80177AB0 == 4) { - if (!(gFrameCount & 8)) { - Math_SmoothStepToF(&D_80161394, 0.0f, 1.0f, 30.0f, 0); - } else { - Math_SmoothStepToF(&D_80161394, 120.0f, 1.0f, 30.0f, 0); - } - } else { - D_80161394 = 255.0f; - } - gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, (s32) D_80161394, (s32) D_80161394, - (s32) D_800C9C30); + if (D_80177AB0 == 0) { + return; + } - sp134 = - (gPlayer[gPlayerNum].unk_05C * -6000.0f) - (gPlayer[gPlayerNum].camEye.y * 0.4f); - sp13C = - Math_ModF(Math_RadToDeg(gPlayer[gPlayerNum].unk_058) * -20.222221f * 5.0f, 7280.0f); - Matrix_RotateZ(gGfxMatrix, gPlayer[gPlayerNum].unk_034 * 0.017453292f, 1); - Matrix_Translate(gGfxMatrix, sp13C, -2000.0f + sp134, -6000.0f, 1); - Matrix_Translate(gGfxMatrix, 0.0f, -2500.0f, 0.0f, 1); - Matrix_SetGfxMtx(&gMasterDisp); - gSPDisplayList(gMasterDisp++, D_60038E0); - Matrix_Translate(gGfxMatrix, 7280.0f, 0.0f, 0.0f, 1); - Matrix_SetGfxMtx(&gMasterDisp); - gSPDisplayList(gMasterDisp++, D_60038E0); + var_s0 = gLevelType; + if ((gCurrentLevel == LEVEL_VERSUS) && (gVersusStage == VS_STAGE_SECTOR_Z)) { + var_s0 = LEVELTYPE_PLANET; + } + if (gCurrentLevel == LEVEL_TRAINING) { + var_s0 = LEVELTYPE_SPACE; + } + sp11C = gCurrentLevel; + Matrix_Push(&gGfxMatrix); + if (D_80177C70 == 2) { + Matrix_Scale(gGfxMatrix, 1.2f, 1.2f, 1.0f, 1); + } + switch (var_s0) { + case LEVELTYPE_PLANET: + RCP_SetupDL(&gMasterDisp, 0x11); + switch (sp11C) { + case LEVEL_FORTUNA: + case LEVEL_KATINA: + case LEVEL_VENOM_2: + case LEVEL_VERSUS: + sp134 = (gPlayer[gPlayerNum].unk_05C * -6000.0f) - (gPlayer[gPlayerNum].camEye.y * 0.4f); + sp13C = Math_ModF(Math_RadToDeg(gPlayer[gPlayerNum].unk_058) * -20.222221f * 5.0f, 7280.0f); + Matrix_RotateZ(gGfxMatrix, gPlayer[gPlayerNum].unk_034 * M_DTOR, 1); + Matrix_Translate(gGfxMatrix, sp13C, -2000.0f + sp134, -6000.0f, 1); + if (gCurrentLevel == LEVEL_FORTUNA) { + Matrix_Translate(gGfxMatrix, 0.0f, -2000.0f, 0, 1); + } else if (gCurrentLevel == LEVEL_KATINA) { + Matrix_Translate(gGfxMatrix, 0.0f, -2500.0f, 0, 1); + } + Matrix_SetGfxMtx(&gMasterDisp); + switch (gCurrentLevel) { + case LEVEL_VERSUS: + if (gVersusStage == VS_STAGE_CORNERIA) { + gSPDisplayList(gMasterDisp++, D_302D4D0); + } else if (gVersusStage == VS_STAGE_KATINA) { + gSPDisplayList(gMasterDisp++, D_30146B0); } else { - RCP_SetupDL(&gMasterDisp, 0x3E); - if (D_80177AB0 == 5) { - gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 255, 64); + gSPDisplayList(gMasterDisp++, D_3011E40); + } + break; + case LEVEL_FORTUNA: + gSPDisplayList(gMasterDisp++, D_600D9F0); + break; + case LEVEL_KATINA: + gSPDisplayList(gMasterDisp++, D_600F1D0); + break; + case LEVEL_VENOM_2: + gSPDisplayList(gMasterDisp++, D_600F670); + break; + } + Matrix_Translate(gGfxMatrix, 7280.0f, 0.0f, 0.0f, 1); + Matrix_SetGfxMtx(&gMasterDisp); + switch (gCurrentLevel) { + case LEVEL_VERSUS: + if (gVersusStage == VS_STAGE_CORNERIA) { + gSPDisplayList(gMasterDisp++, D_302D4D0); + } else if (gVersusStage == VS_STAGE_KATINA) { + gSPDisplayList(gMasterDisp++, D_30146B0); + } else { + gSPDisplayList(gMasterDisp++, D_3011E40); + } + break; + case LEVEL_FORTUNA: + gSPDisplayList(gMasterDisp++, D_600D9F0); + break; + case LEVEL_KATINA: + gSPDisplayList(gMasterDisp++, D_600F1D0); + break; + case LEVEL_VENOM_2: + gSPDisplayList(gMasterDisp++, D_600F670); + break; + } + break; + case LEVEL_CORNERIA: + case LEVEL_VENOM_1: + sp134 = (gPlayer[gPlayerNum].unk_05C * -6000.0f) - (gPlayer[gPlayerNum].camEye.y * 0.6f); + sp13C = Math_ModF(Math_RadToDeg(gPlayer[gPlayerNum].unk_058) * -20.222221f * 5.0f, 7280.0f); + Matrix_RotateZ(gGfxMatrix, gPlayer[gPlayerNum].unk_034 * M_DTOR, 1); + Matrix_Translate(gGfxMatrix, sp13C, -2000.0f + sp134, -6000.0f, 1); + Matrix_SetGfxMtx(&gMasterDisp); + switch (gCurrentLevel) { + case LEVEL_CORNERIA: + gSPDisplayList(gMasterDisp++, D_60059F0); + break; + case LEVEL_VENOM_1: + gSPDisplayList(gMasterDisp++, D_60046F0); + break; + } + Matrix_Translate(gGfxMatrix, 7280.0f, 0.0f, 0.0f, 1); + Matrix_SetGfxMtx(&gMasterDisp); + switch (gCurrentLevel) { + case LEVEL_CORNERIA: + gSPDisplayList(gMasterDisp++, D_60059F0); + break; + case LEVEL_VENOM_1: + gSPDisplayList(gMasterDisp++, D_60046F0); + break; + } + break; + case LEVEL_VENOM_ANDROSS: + if (D_80177AB0 != 6) { + if ((D_80177AB0 == 2) || (D_80177AB0 == 7)) { + Matrix_RotateZ(gGfxMatrix, gPlayer[gPlayerNum].unk_034 * M_DTOR, 1); + Matrix_Translate(gGfxMatrix, 0.0f, -4000.0f, -7000.0f, 1); + Matrix_SetGfxMtx(&gMasterDisp); + gSPDisplayList(gMasterDisp++, D_600F670); + } else if ((D_80177AB0 == 3) || (D_80177AB0 == 4)) { + RCP_SetupDL(&gMasterDisp, 0x3E); + if (D_80177AB0 == 4) { + if (!(gFrameCount & 8)) { + Math_SmoothStepToF(&D_80161394, 0.0f, 1.0f, 30.0f, 0); } else { - gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 0, 255, 128, (s32) D_800C9C30); + Math_SmoothStepToF(&D_80161394, 120.0f, 1.0f, 30.0f, 0); } - Matrix_Translate(gGfxMatrix, 0.0f, 0.0f, -290.0f, 1); + } else { + D_80161394 = 255.0f; + } + gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, (s32) D_80161394, (s32) D_80161394, + (s32) D_800C9C30); + + sp134 = (gPlayer[gPlayerNum].unk_05C * -6000.0f) - (gPlayer[gPlayerNum].camEye.y * 0.4f); + sp13C = Math_ModF(Math_RadToDeg(gPlayer[gPlayerNum].unk_058) * -20.222221f * 5.0f, 7280.0f); + Matrix_RotateZ(gGfxMatrix, gPlayer[gPlayerNum].unk_034 * M_DTOR, 1); + Matrix_Translate(gGfxMatrix, sp13C, -2000.0f + sp134, -6000.0f, 1); + Matrix_Translate(gGfxMatrix, 0.0f, -2500.0f, 0.0f, 1); + Matrix_SetGfxMtx(&gMasterDisp); + gSPDisplayList(gMasterDisp++, D_60038E0); + Matrix_Translate(gGfxMatrix, 7280.0f, 0.0f, 0.0f, 1); + Matrix_SetGfxMtx(&gMasterDisp); + gSPDisplayList(gMasterDisp++, D_60038E0); + } else { + RCP_SetupDL(&gMasterDisp, 0x3E); + if (D_80177AB0 == 5) { + gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 255, 64); + } else { + gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 0, 255, 128, (s32) D_800C9C30); + } + Matrix_Translate(gGfxMatrix, 0.0f, 0.0f, -290.0f, 1); + Matrix_Push(&gGfxMatrix); + Matrix_Scale(gGfxMatrix, 11.0f, 11.0f, 1.0f, 1); + Matrix_RotateZ(gGfxMatrix, (gPlayer->unk_034 + (gFrameCount * 1.5f)) * M_DTOR, 1); + Matrix_SetGfxMtx(&gMasterDisp); + gSPDisplayList(gMasterDisp++, D_C039208); + Matrix_Pop(&gGfxMatrix); + if (D_80177AB0 != 5) { Matrix_Push(&gGfxMatrix); - Matrix_Scale(gGfxMatrix, 11.0f, 11.0f, 1.0f, 1); - Matrix_RotateZ(gGfxMatrix, - (gPlayer->unk_034 + ((f32) gFrameCount * 1.5f)) * 0.017453292f, 1); + Matrix_Scale(gGfxMatrix, 10.0f, 10.0f, 1.0f, 1); + Matrix_RotateZ(gGfxMatrix, (gPlayer->unk_034 + (gFrameCount * -1.3f)) * M_DTOR, 1); Matrix_SetGfxMtx(&gMasterDisp); gSPDisplayList(gMasterDisp++, D_C039208); Matrix_Pop(&gGfxMatrix); - if (D_80177AB0 != 5) { - Matrix_Push(&gGfxMatrix); - Matrix_Scale(gGfxMatrix, 10.0f, 10.0f, 1.0f, 1); - Matrix_RotateZ(gGfxMatrix, - (gPlayer->unk_034 + ((f32) gFrameCount * -1.3f)) * 0.017453292f, 1); - Matrix_SetGfxMtx(&gMasterDisp); - gSPDisplayList(gMasterDisp++, D_C039208); - Matrix_Pop(&gGfxMatrix); - } } } - break; - case LEVEL_AQUAS: - if (gPlayer->state_1C8 == PLAYERSTATE_1C8_2) { - sp13C = ((Math_RadToDeg(gPlayer[gPlayerNum].unk_058) - gPlayer[gPlayerNum].unk_114)); - sp134 = (gPlayer[gPlayerNum].unk_05C * -7000.0f) - (gPlayer[gPlayerNum].camEye.y * 0.6f); - sp13C = Math_ModF(sp13C * -40.44444f * 2.0f, 7280.0f); - RCP_SetupDL_17(); - Matrix_RotateZ(gGfxMatrix, gPlayer[gPlayerNum].unk_034 * 0.017453292f, 1); - Matrix_Scale(gGfxMatrix, 1.5f, 1.0f, 1.0f, 1); - Matrix_Push(&gGfxMatrix); - Matrix_Translate(gGfxMatrix, sp13C, sp134, -7000.0f, 1); - Matrix_SetGfxMtx(&gMasterDisp); - if (gPlayer->state_1C8 == PLAYERSTATE_1C8_2) { - gSPDisplayList(gMasterDisp++, D_601AFF0); - } else { - gSPDisplayList(gMasterDisp++, D_601C080); - } - - if (sp13C < 0) { - sp13C = 1.0f; - } else { - sp13C = -1.0f; - } - Matrix_Translate(gGfxMatrix, 7280.0f * sp13C, 0.0f, 0.0f, 1); - Matrix_SetGfxMtx(&gMasterDisp); - if (gPlayer->state_1C8 == PLAYERSTATE_1C8_2) { - gSPDisplayList(gMasterDisp++, D_601AFF0); - - } else { - gSPDisplayList(gMasterDisp++, D_601C080); - } - Matrix_Pop(&gGfxMatrix); - } - break; - case LEVEL_SOLAR: - case LEVEL_ZONESS: - case LEVEL_MACBETH: - case LEVEL_TITANIA: - sp13C = (Math_RadToDeg(gPlayer[gPlayerNum].unk_058) - gPlayer[gPlayerNum].unk_114) * - -40.44444f * 2.0f; + } + break; + case LEVEL_AQUAS: + if (gPlayer->state_1C8 == PLAYERSTATE_1C8_2) { + sp13C = ((Math_RadToDeg(gPlayer[gPlayerNum].unk_058) - gPlayer[gPlayerNum].unk_114)); sp134 = (gPlayer[gPlayerNum].unk_05C * -7000.0f) - (gPlayer[gPlayerNum].camEye.y * 0.6f); - if ((gCurrentLevel == LEVEL_TITANIA) && (gPlayer->state_1C8 == PLAYERSTATE_1C8_2) && - (gPlayer->unk_1D0 < 3)) { - D_8015F968 += __sinf(gPlayer->unk_058) * 20.0f; - sp13C += D_8015F968; - } - if ((gCurrentLevel == LEVEL_SOLAR) && (gPlayer->state_1C8 == PLAYERSTATE_1C8_2) && - (gPlayer->unk_1D0 >= 2) && (gPlayer->camEye.z <= -1900.0f)) { - D_8015F968 = __sinf(gPlayer->unk_05C) * 7000.0f; - sp134 -= fabsf(D_8015F968); - } - sp13C = Math_ModF(sp13C, 7280.0f); + sp13C = Math_ModF(sp13C * -40.44444f * 2.0f, 7280.0f); RCP_SetupDL_17(); - Matrix_RotateZ(gGfxMatrix, gPlayer[gPlayerNum].unk_034 * 0.017453292f, 1); + Matrix_RotateZ(gGfxMatrix, gPlayer[gPlayerNum].unk_034 * M_DTOR, 1); Matrix_Scale(gGfxMatrix, 1.5f, 1.0f, 1.0f, 1); - if ((gCurrentLevel == LEVEL_TITANIA) || (gCurrentLevel == LEVEL_ZONESS)) { - Matrix_Translate(gGfxMatrix, sp13C, -3000.0f + sp134, -7000.0f, 1); - } else if (gCurrentLevel == LEVEL_SOLAR) { - Matrix_Translate(gGfxMatrix, sp13C, -3500.0f + sp134, -7000.0f, 1); - } else if (gCurrentLevel == LEVEL_MACBETH) { - Matrix_Translate(gGfxMatrix, sp13C, -4000.0f + sp134, -7000.0f, 1); - } + Matrix_Push(&gGfxMatrix); + Matrix_Translate(gGfxMatrix, sp13C, sp134, -7000.0f, 1); Matrix_SetGfxMtx(&gMasterDisp); - if (gCurrentLevel == LEVEL_TITANIA) { - gSPDisplayList(gMasterDisp++, D_6000A80); - } else if (gCurrentLevel == LEVEL_MACBETH) { - gSPDisplayList(gMasterDisp++, D_6019220); - } else if (gCurrentLevel == LEVEL_ZONESS) { - gSPDisplayList(gMasterDisp++, D_6013480); - } else if (gCurrentLevel == LEVEL_SOLAR) { - gSPDisplayList(gMasterDisp++, D_601E150); + if (gPlayer->state_1C8 == PLAYERSTATE_1C8_2) { + gSPDisplayList(gMasterDisp++, D_601AFF0); + } else { + gSPDisplayList(gMasterDisp++, D_601C080); } + if (sp13C < 0) { sp13C = 1.0f; } else { @@ -427,192 +407,241 @@ void func_8003E1E8(void) { } Matrix_Translate(gGfxMatrix, 7280.0f * sp13C, 0.0f, 0.0f, 1); Matrix_SetGfxMtx(&gMasterDisp); - if (gCurrentLevel == LEVEL_TITANIA) { - gSPDisplayList(gMasterDisp++, D_6000A80); - } else if (gCurrentLevel == LEVEL_MACBETH) { - gSPDisplayList(gMasterDisp++, D_6019220); - } else if (gCurrentLevel == LEVEL_ZONESS) { - gSPDisplayList(gMasterDisp++, D_6013480); - } else if (gCurrentLevel == LEVEL_SOLAR) { - gSPDisplayList(gMasterDisp++, D_601E150); - } - break; - } - break; - case LEVELTYPE_SPACE: - if (gPlayer->state_1C8 != PLAYERSTATE_1C8_8) { - Matrix_Push(&gGfxMatrix); - sp12C = Math_RadToDeg(gPlayer->unk_058); - sp130 = Math_RadToDeg(gPlayer->unk_05C); - if (((sp12C < 45.0f) || (sp12C > 315.0f)) && ((sp130 < 40.0f) || (sp130 > 325.0f))) { - RCP_SetupDL_36(); - sp138 = D_80178420; - sp134 = D_80178424; - if (((gCurrentLevel == LEVEL_SECTOR_X) || (gCurrentLevel == LEVEL_METEO)) && - (D_8017827C == 1)) { - sp11C = LEVEL_WARP_ZONE; - } - if (sp11C == LEVEL_SECTOR_X) { - sp138 = Math_ModF(sp138 + 60.0f, 480.0f); - sp134 = Math_ModF(sp134 + 360.0f - 40.0f, 360.0f); - } else if (sp11C == LEVEL_TRAINING) { - sp138 = Math_ModF(sp138 - 30.0f, 480.0f); - sp134 = Math_ModF(sp134 + 360.0f - 40.0f, 360.0f); - } else if ((sp11C == LEVEL_SECTOR_Y) && (gLevelMode == LEVELMODE_ON_RAILS)) { - sp138 = Math_ModF(sp138 + 480.0f - 60.0f, 480.0f); - sp134 = Math_ModF(sp134, 360.0f); - } else if (sp11C == LEVEL_FORTUNA) { - sp138 = Math_ModF(sp138 - 34.5f, 480.0f); - sp134 = Math_ModF(sp134 + 19.0f, 360.0f); - } else if (sp11C == LEVEL_BOLSE) { - if ((gPlayer->state_1C8 != PLAYERSTATE_1C8_7) || (gPlayer->unk_1D0 < 10)) { - sp134 = Math_ModF(sp134 + 360.0f - 100.0f, 360.0f); - } + if (gPlayer->state_1C8 == PLAYERSTATE_1C8_2) { + gSPDisplayList(gMasterDisp++, D_601AFF0); + } else { - sp138 = Math_ModF(sp138, 480.0f); - sp134 = Math_ModF(sp134, 360.0f); + gSPDisplayList(gMasterDisp++, D_601C080); } - if ((sp12C < 180.0f) && (sp138 > 380.0f)) { - sp138 = -(480.0f - sp138); + Matrix_Pop(&gGfxMatrix); + } + break; + case LEVEL_SOLAR: + case LEVEL_ZONESS: + case LEVEL_MACBETH: + case LEVEL_TITANIA: + sp138 = Math_RadToDeg(gPlayer[gPlayerNum].unk_058) - gPlayer[gPlayerNum].unk_114; + sp134 = (gPlayer[gPlayerNum].unk_05C * -7000.0f) - (gPlayer[gPlayerNum].camEye.y * 0.6f); + sp13C = sp138 * -40.44444f * 2.0f; + if ((gCurrentLevel == LEVEL_TITANIA) && (gPlayer->state_1C8 == PLAYERSTATE_1C8_2) && + (gPlayer->unk_1D0 < 3)) { + D_8015F968 += __sinf(gPlayer->unk_058) * 20.0f; + sp13C += D_8015F968; + } + if ((gCurrentLevel == LEVEL_SOLAR) && (gPlayer->state_1C8 == PLAYERSTATE_1C8_2) && + (gPlayer->unk_1D0 >= 2) && (gPlayer->camEye.z <= -1900.0f)) { + D_8015F968 = __sinf(gPlayer->unk_05C) * 7000.0f; + sp134 -= fabsf(D_8015F968); + } + sp13C = Math_ModF(sp13C, 7280.0f); + RCP_SetupDL_17(); + Matrix_RotateZ(gGfxMatrix, gPlayer[gPlayerNum].unk_034 * M_DTOR, 1); + Matrix_Scale(gGfxMatrix, 1.5f, 1.0f, 1.0f, 1); + if ((gCurrentLevel == LEVEL_TITANIA) || (gCurrentLevel == LEVEL_ZONESS)) { + Matrix_Translate(gGfxMatrix, sp13C, -3000.0f + sp134, -7000.0f, 1); + } else if (gCurrentLevel == LEVEL_SOLAR) { + Matrix_Translate(gGfxMatrix, sp13C, -3500.0f + sp134, -7000.0f, 1); + } else if (gCurrentLevel == LEVEL_MACBETH) { + Matrix_Translate(gGfxMatrix, sp13C, -4000.0f + sp134, -7000.0f, 1); + } + Matrix_SetGfxMtx(&gMasterDisp); + if (gCurrentLevel == LEVEL_TITANIA) { + gSPDisplayList(gMasterDisp++, D_6000A80); + } else if (gCurrentLevel == LEVEL_MACBETH) { + gSPDisplayList(gMasterDisp++, D_6019220); + } else if (gCurrentLevel == LEVEL_ZONESS) { + gSPDisplayList(gMasterDisp++, D_6013480); + } else if (gCurrentLevel == LEVEL_SOLAR) { + gSPDisplayList(gMasterDisp++, D_601E150); + } + if (sp13C < 0) { + sp13C = 1.0f; + } else { + sp13C = -1.0f; + } + Matrix_Translate(gGfxMatrix, 7280.0f * sp13C, 0.0f, 0.0f, 1); + Matrix_SetGfxMtx(&gMasterDisp); + if (gCurrentLevel == LEVEL_TITANIA) { + gSPDisplayList(gMasterDisp++, D_6000A80); + } else if (gCurrentLevel == LEVEL_MACBETH) { + gSPDisplayList(gMasterDisp++, D_6019220); + } else if (gCurrentLevel == LEVEL_ZONESS) { + gSPDisplayList(gMasterDisp++, D_6013480); + } else if (gCurrentLevel == LEVEL_SOLAR) { + gSPDisplayList(gMasterDisp++, D_601E150); + } + break; + } + break; + case LEVELTYPE_SPACE: + if (gPlayer->state_1C8 != PLAYERSTATE_1C8_8) { + Matrix_Push(&gGfxMatrix); + sp12C = Math_RadToDeg(gPlayer->unk_058); + sp130 = Math_RadToDeg(gPlayer->unk_05C); + if (((sp12C < 45.0f) || (sp12C > 315.0f)) && ((sp130 < 40.0f) || (sp130 > 325.0f))) { + RCP_SetupDL_36(); + sp138 = D_80178420; + sp134 = D_80178424; + if (((gCurrentLevel == LEVEL_SECTOR_X) || (gCurrentLevel == LEVEL_METEO)) && (D_8017827C == 1)) { + sp11C = LEVEL_WARP_ZONE; + } + if (sp11C == LEVEL_SECTOR_X) { + sp138 = Math_ModF(sp138 + 60.0f, 480.0f); + sp134 = Math_ModF(sp134 + 360.0f - 40.0f, 360.0f); + } else if (sp11C == LEVEL_TRAINING) { + sp138 = Math_ModF(sp138 - 30.0f, 480.0f); + sp134 = Math_ModF(sp134 + 360.0f - 40.0f, 360.0f); + } else if ((sp11C == LEVEL_SECTOR_Y) && (gLevelMode == LEVELMODE_ON_RAILS)) { + sp138 = Math_ModF(sp138 + 480.0f - 60.0f, 480.0f); + sp134 = Math_ModF(sp134, 360.0f); + } else if (sp11C == LEVEL_FORTUNA) { + sp138 = Math_ModF(sp138 - 34.5f, 480.0f); + sp134 = Math_ModF(sp134 + 19.0f, 360.0f); + } else if (sp11C == LEVEL_BOLSE) { + if ((gPlayer->state_1C8 != PLAYERSTATE_1C8_7) || (gPlayer->unk_1D0 < 10)) { + sp134 = Math_ModF(sp134 + 360.0f - 100.0f, 360.0f); } - if ((sp130 > 180.0f) && (sp134 > 280.0f)) { - sp134 = -(360.0f - sp134); - } - Matrix_RotateZ(gGfxMatrix, D_80178428, 1); - switch (sp11C) { - case LEVEL_WARP_ZONE: - if ((s32) D_8015F960 != 0) { - RCP_SetupDL_62(); - gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 255, (s32) D_8015F960); - Matrix_Translate(gGfxMatrix, sp138 - 120.0f, -(sp134 - 120.0f), -290.0f, 1); - Matrix_Scale(gGfxMatrix, 1.7f, 1.7f, 1.0f, 1); - Matrix_Push(&gGfxMatrix); - Matrix_RotateZ(gGfxMatrix, -(f32) gFrameCount * 10.0f * 0.017453292f, 1); - Matrix_Scale(gGfxMatrix, 1.07f, 0.93f, 1.0f, 1); - Matrix_RotateZ(gGfxMatrix, (f32) gFrameCount * 10.0f * 0.017453292f, 1); - Matrix_Scale(gGfxMatrix, 1.07f, 0.93f, 1.0f, 1); - Matrix_SetGfxMtx(&gMasterDisp); - gSPDisplayList(gMasterDisp++, D_7001540); - Matrix_Pop(&gGfxMatrix); - } - break; - case LEVEL_METEO: - if ((gPlayer->state_1C8 == PLAYERSTATE_1C8_7) && (D_80177A80 > 260)) { - Matrix_Translate(gGfxMatrix, sp138 - 120.0f, -(sp134 - 120.0f) - 30.0f, -290.0f, 1); - Matrix_Scale(gGfxMatrix, 0.5f, 0.5f, 1.0f, 1); - Matrix_SetGfxMtx(&gMasterDisp); - gSPDisplayList(gMasterDisp++, D_600DDF0); - } else if (D_80177D20 > 185668.0f) { - Matrix_Translate(gGfxMatrix, sp138 - 120.0f, -(sp134 - 120.0f) - 130.0f, -290.0f, - 1); - Matrix_Scale(gGfxMatrix, 0.4f, 0.4f, 1.0f, 1); - Matrix_SetGfxMtx(&gMasterDisp); - gSPDisplayList(gMasterDisp++, D_600DDF0); - } - break; - case LEVEL_SECTOR_X: - if (gOverlayStage == 0) { - Matrix_Translate(gGfxMatrix, sp138 - 120.0f, -(sp134 - 120.0f), -290.0f, 1); - Matrix_Scale(gGfxMatrix, 3.0f, 3.0f, 1.0f, 1); - Matrix_SetGfxMtx(&gMasterDisp); - RCP_SetupDL_62(); - gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 255, 192); - gSPDisplayList(gMasterDisp++, D_6029890); - } - break; - case LEVEL_TRAINING: - Matrix_Translate(gGfxMatrix, sp138 - 120.0f, -(sp134 - 120.0f), -290.0f, 1); - Matrix_Scale(gGfxMatrix, 0.2f, 0.2f, 1.0f, 1); - Matrix_SetGfxMtx(&gMasterDisp); + } else { + sp138 = Math_ModF(sp138, 480.0f); + sp134 = Math_ModF(sp134, 360.0f); + } + if ((sp12C < 180.0f) && (sp138 > 380.0f)) { + sp138 = -(480.0f - sp138); + } + if ((sp130 > 180.0f) && (sp134 > 280.0f)) { + sp134 = -(360.0f - sp134); + } + Matrix_RotateZ(gGfxMatrix, D_80178428, 1); + switch (sp11C) { + case LEVEL_WARP_ZONE: + if ((s32) D_8015F960 != 0) { RCP_SetupDL_62(); - gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 255, 255); - gSPDisplayList(gMasterDisp++, D_6003760); - break; - case LEVEL_AREA_6: - case LEVEL_UNK_4: - sp128 = (D_80177D20 * 0.00004f) + 0.5f; - if (sp128 > 3.5f) { - sp128 = 3.5f; - } - if (gPlayer->state_1C8 == PLAYERSTATE_1C8_7) { - sp128 = D_8015F984; - if (sp128 > 3.5f) { - sp128 = 3.5f; - } - } - sp128 = sp128; + gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 255, (s32) D_8015F960); Matrix_Translate(gGfxMatrix, sp138 - 120.0f, -(sp134 - 120.0f), -290.0f, 1); - Matrix_Scale(gGfxMatrix, sp128 * 0.75, sp128 * 0.75f, 1.0f, 1); + Matrix_Scale(gGfxMatrix, 1.7f, 1.7f, 1.0f, 1); + Matrix_Push(&gGfxMatrix); + Matrix_RotateZ(gGfxMatrix, -(f32) gFrameCount * 10.0f * M_DTOR, 1); + Matrix_Scale(gGfxMatrix, 1.07f, 0.93f, 1.0f, 1); + Matrix_RotateZ(gGfxMatrix, gFrameCount * 10.0f * M_DTOR, 1); + Matrix_Scale(gGfxMatrix, 1.07f, 0.93f, 1.0f, 1); Matrix_SetGfxMtx(&gMasterDisp); - gSPDisplayList(gMasterDisp++, D_601BB40); - break; - case LEVEL_FORTUNA: - sp128 = 1.5f; - if ((D_80177A80 > 400) && (D_80177930 == 0)) { - sp128 = 0.75f; - } - Matrix_Translate(gGfxMatrix, sp138 - 120.0f, -(sp134 - 120.0f), -290.0f, 1); - Matrix_Scale(gGfxMatrix, sp128, sp128, sp128, 1); + gSPDisplayList(gMasterDisp++, D_7001540); + Matrix_Pop(&gGfxMatrix); + } + break; + case LEVEL_METEO: + if ((gPlayer->state_1C8 == PLAYERSTATE_1C8_7) && (D_80177A80 > 260)) { + Matrix_Translate(gGfxMatrix, sp138 - 120.0f, -(sp134 - 120.0f) - 30.0f, -290.0f, 1); + Matrix_Scale(gGfxMatrix, 0.5f, 0.5f, 1.0f, 1); Matrix_SetGfxMtx(&gMasterDisp); - gSPDisplayList(gMasterDisp++, D_600B4B0); - break; - case LEVEL_BOLSE: - sp128 = 1.0f; - if ((D_80177A80 > 500) && (gPlayer->state_1C8 == PLAYERSTATE_1C8_7)) { - sp128 = 1.3f; - } - Matrix_Translate(gGfxMatrix, sp138 - 120.0f, -(sp134 - 120.0f), -290.0f, 1); - Matrix_Scale(gGfxMatrix, sp128, sp128, sp128, 1); - Matrix_SetGfxMtx(&gMasterDisp); - gSPDisplayList(gMasterDisp++, D_600D190); - break; - case LEVEL_SECTOR_Z: - Matrix_Translate(gGfxMatrix, sp138 - 120.0f, -(sp134 - 120.0f), -290.0f, 1); - Matrix_Scale(gGfxMatrix, 0.5f, 0.5f, 0.5f, 1); - Matrix_RotateX(gGfxMatrix, 1.5707964f, 1); - Matrix_SetGfxMtx(&gMasterDisp); - gSPDisplayList(gMasterDisp++, D_6002F80); - break; - case LEVEL_SECTOR_Y: - Matrix_Translate(gGfxMatrix, sp138 - 120.0f, -(sp134 - 120.0f), -290.0f, 1); + gSPDisplayList(gMasterDisp++, D_600DDF0); + } else if (D_80177D20 > 185668.0f) { + Matrix_Translate(gGfxMatrix, sp138 - 120.0f, -(sp134 - 120.0f) - 130.0f, -290.0f, 1); Matrix_Scale(gGfxMatrix, 0.4f, 0.4f, 1.0f, 1); Matrix_SetGfxMtx(&gMasterDisp); + gSPDisplayList(gMasterDisp++, D_600DDF0); + } + break; + case LEVEL_SECTOR_X: + if (gOverlayStage == 0) { + Matrix_Translate(gGfxMatrix, sp138 - 120.0f, -(sp134 - 120.0f), -290.0f, 1); + Matrix_Scale(gGfxMatrix, 3.0f, 3.0f, 1.0f, 1); + Matrix_SetGfxMtx(&gMasterDisp); RCP_SetupDL_62(); gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 255, 192); - gSPDisplayList(gMasterDisp++, D_6001840); - break; - } + gSPDisplayList(gMasterDisp++, D_6029890); + } + break; + case LEVEL_TRAINING: + Matrix_Translate(gGfxMatrix, sp138 - 120.0f, -(sp134 - 120.0f), -290.0f, 1); + Matrix_Scale(gGfxMatrix, 0.2f, 0.2f, 1.0f, 1); + Matrix_SetGfxMtx(&gMasterDisp); + RCP_SetupDL_62(); + gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 255, 255); + gSPDisplayList(gMasterDisp++, D_6003760); + break; + case LEVEL_AREA_6: + case LEVEL_UNK_4: + sp128 = (D_80177D20 * 0.00004f) + 0.5f; + if (sp128 > 3.5f) { + sp128 = 3.5f; + } + if (gPlayer->state_1C8 == PLAYERSTATE_1C8_7) { + sp128 = D_8015F984; + if (sp128 > 3.5f) { + sp128 = 3.5f; + } + } + sp128 = sp128; + Matrix_Translate(gGfxMatrix, sp138 - 120.0f, -(sp134 - 120.0f), -290.0f, 1); + Matrix_Scale(gGfxMatrix, sp128 * 0.75, sp128 * 0.75f, 1.0f, 1); + Matrix_SetGfxMtx(&gMasterDisp); + gSPDisplayList(gMasterDisp++, D_601BB40); + break; + case LEVEL_FORTUNA: + sp128 = 1.5f; + if ((D_80177A80 > 400) && (D_80177930 == 0)) { + sp128 = 0.75f; + } + Matrix_Translate(gGfxMatrix, sp138 - 120.0f, -(sp134 - 120.0f), -290.0f, 1); + Matrix_Scale(gGfxMatrix, sp128, sp128, sp128, 1); + Matrix_SetGfxMtx(&gMasterDisp); + gSPDisplayList(gMasterDisp++, D_600B4B0); + break; + case LEVEL_BOLSE: + sp128 = 1.0f; + if ((D_80177A80 > 500) && (gPlayer->state_1C8 == PLAYERSTATE_1C8_7)) { + sp128 = 1.3f; + } + Matrix_Translate(gGfxMatrix, sp138 - 120.0f, -(sp134 - 120.0f), -290.0f, 1); + Matrix_Scale(gGfxMatrix, sp128, sp128, sp128, 1); + Matrix_SetGfxMtx(&gMasterDisp); + gSPDisplayList(gMasterDisp++, D_600D190); + break; + case LEVEL_SECTOR_Z: + Matrix_Translate(gGfxMatrix, sp138 - 120.0f, -(sp134 - 120.0f), -290.0f, 1); + Matrix_Scale(gGfxMatrix, 0.5f, 0.5f, 0.5f, 1); + Matrix_RotateX(gGfxMatrix, M_PI / 2.0f, 1); + Matrix_SetGfxMtx(&gMasterDisp); + gSPDisplayList(gMasterDisp++, D_6002F80); + break; + case LEVEL_SECTOR_Y: + Matrix_Translate(gGfxMatrix, sp138 - 120.0f, -(sp134 - 120.0f), -290.0f, 1); + Matrix_Scale(gGfxMatrix, 0.4f, 0.4f, 1.0f, 1); + Matrix_SetGfxMtx(&gMasterDisp); + RCP_SetupDL_62(); + gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 255, 192); + gSPDisplayList(gMasterDisp++, D_6001840); + break; } - Matrix_Pop(&gGfxMatrix); } - if (D_80178414 > 0.0f) { - f32* sp50 = D_80178288; - f32* sp4C = D_80178290; - f32 sp48; - s32 pad; - s32 pad2; + Matrix_Pop(&gGfxMatrix); + } + if (D_80178414 > 0.0f) { + f32* sp50 = D_80178288; + f32* sp4C = D_80178290; + f32 sp48; - RCP_SetupDL_14(); - gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 128, 128, 255, 255); - sp124 = 0; - sp48 = 0.0f; - for (sp124 = 0; sp124 < 300; sp124++, sp50++, sp4C++) { - *sp50 = (Rand_ZeroOneSeeded() * 480.0f) - 80.0f; - *sp4C = (Rand_ZeroOneSeeded() * 360.0f) - 60.0f; - Matrix_Push(&gGfxMatrix); - Matrix_Translate(gGfxMatrix, (*sp50 - 160.0f) * 10.0f, (*sp4C - 120.0f) * 10.0f, -5000.0f, 1); - Matrix_RotateZ(gGfxMatrix, sp48, 1); - Matrix_Scale(gGfxMatrix, 10.0f, 1.0f, -D_80178414, 1); - Matrix_SetGfxMtx(&gMasterDisp); - gSPDisplayList(gMasterDisp++, D_800CFD80); - Matrix_Pop(&gGfxMatrix); - sp48 += 0.7853982f; - } + RCP_SetupDL_14(); + gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 128, 128, 255, 255); + sp124 = 0; + sp48 = 0.0f; + for (sp124 = 0; sp124 < 300; sp124++, sp50++, sp4C++) { + *sp50 = (Rand_ZeroOneSeeded() * 480.0f) - 80.0f; + *sp4C = (Rand_ZeroOneSeeded() * 360.0f) - 60.0f; + Matrix_Push(&gGfxMatrix); + Matrix_Translate(gGfxMatrix, (*sp50 - 160.0f) * 10.0f, (*sp4C - 120.0f) * 10.0f, -5000.0f, 1); + Matrix_RotateZ(gGfxMatrix, sp48, 1); + Matrix_Scale(gGfxMatrix, 10.0f, 1.0f, -D_80178414, 1); + Matrix_SetGfxMtx(&gMasterDisp); + gSPDisplayList(gMasterDisp++, D_800CFD80); + Matrix_Pop(&gGfxMatrix); + sp48 += M_PI / 4.0f; } - break; - } - Matrix_Pop(&gGfxMatrix); + } + break; } + Matrix_Pop(&gGfxMatrix); } #else #pragma GLOBAL_ASM("asm/us/nonmatchings/main/fox_bg/func_8003E1E8.s") @@ -667,7 +696,7 @@ void func_80040450(void) { } if (D_80178380[gPlayerNum] != 0) { Matrix_Push(&gGfxMatrix); - Matrix_RotateZ(gGfxMatrix, gPlayer[gPlayerNum].unk_034 * 0.017453292f, 1); + Matrix_RotateZ(gGfxMatrix, gPlayer[gPlayerNum].unk_034 * M_DTOR, 1); Matrix_Translate(gGfxMatrix, D_801783D0, D_801783D4, -200.0f, 1); RCP_SetupDL_62(); var_s1 = D_800C9D94; @@ -711,7 +740,7 @@ void func_80040954(void) { } var_fs2 *= D_800C9E5C[gLevelType]; Matrix_Push(&gGfxMatrix); - Matrix_RotateZ(gGfxMatrix, gPlayer[gPlayerNum].unk_034 * 0.017453292f, 1); + Matrix_RotateZ(gGfxMatrix, gPlayer[gPlayerNum].unk_034 * M_DTOR, 1); Matrix_Translate(gGfxMatrix, D_801783D0, D_801783D4, -200.0f, 1); RCP_SetupDL_62(); temp_fs0 = D_801783D0 * -0.03f; @@ -733,7 +762,7 @@ void func_80040954(void) { Matrix_Translate(gGfxMatrix, *var_s7 * temp_fs0, *var_s7 * -temp_fs1, 0.0f, 1); Matrix_Scale(gGfxMatrix, *var_s6, *var_s6, *var_s6, 1); if (((i == 5) || (i == 11)) && (gCurrentLevel != LEVEL_KATINA)) { - Matrix_RotateX(gGfxMatrix, 1.5707964f, 1); + Matrix_RotateX(gGfxMatrix, M_PI / 2.0f, 1); } Matrix_SetGfxMtx(&gMasterDisp); var_fv0 = *var_s4; @@ -751,7 +780,6 @@ void func_80040954(void) { void func_80040CDC(void) { } -#ifdef NON_MATCHING void func_80040CE4(void) { f32 sp1D4; s32 i; @@ -985,13 +1013,14 @@ void func_80040CE4(void) { Matrix_Translate(gGfxMatrix, 0.0f, 0.0f, -3000.0f, 1); Matrix_Scale(gGfxMatrix, 1.0f, 1.0f, 0.5f, 1); Matrix_SetGfxMtx(&gMasterDisp); - gSPDisplayList(gMasterDisp++, D_600AB10); + sp1C0 = D_600AB10; + gSPDisplayList(gMasterDisp++, sp1C0); Matrix_Pop(&gGfxMatrix); Matrix_Push(&gGfxMatrix); Matrix_Translate(gGfxMatrix, 0.0f, 0.0f, 3000.0f, 1); Matrix_Scale(gGfxMatrix, 1.0f, 1.0f, 0.5f, 1); Matrix_SetGfxMtx(&gMasterDisp); - gSPDisplayList(gMasterDisp++, D_600AB10); + gSPDisplayList(gMasterDisp++, sp1C0); Matrix_Pop(&gGfxMatrix); } if ((D_8015F964 != 0) || (D_80177AC8 == 0)) { @@ -1101,25 +1130,27 @@ void func_80040CE4(void) { } Matrix_Pop(&gGfxMatrix); } -#else -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/fox_bg/func_80040CE4.s") -#endif -#ifdef NON_MATCHING void func_80042D38(void) { + f32 xEye; + f32 zEye; + + if (!gPlayer[gPlayerNum].camEye.x) {} + if (!gPlayer[gPlayerNum].camEye.y) {} // all sorts of fake + Matrix_Push(&gGfxMatrix); - Matrix_Translate(gGfxMatrix, gPlayer[gPlayerNum].camEye.x, 2.0f + D_8017847C, gPlayer[gPlayerNum].camEye.z, 1); + xEye = gPlayer[gPlayerNum].camEye.x; + if (0) {} + zEye = gPlayer[gPlayerNum].camEye.z; + Matrix_Translate(gGfxMatrix, xEye, 2.0f + D_8017847C, zEye, 1); Matrix_Scale(gGfxMatrix, 1.5f, 1.0f, 1.0f, 1); RCP_SetupDL_37(gFogRed, gFogGreen, gFogBlue, gFogAlpha, gFogNear, gFogFar); - GPC(255, 255, 255, 125); + gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 255, 125); Matrix_SetGfxMtx(&gMasterDisp); if (gFrameCount & 1) { - GDL(D_602C030); + gSPDisplayList(gMasterDisp++, D_602C030); } else { - GDL(D_602C088); + gSPDisplayList(gMasterDisp++, D_602C088); } Matrix_Pop(&gGfxMatrix); } -#else -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/fox_bg/func_80042D38.s") -#endif diff --git a/src/main/fox_display.c b/src/main/fox_display.c index 0a81f9a8..43e05139 100644 --- a/src/main/fox_display.c +++ b/src/main/fox_display.c @@ -1527,7 +1527,7 @@ void func_80057D00(void) { } else { Math_SmoothStepToF(&D_800CA230, 0.0f, 0.2f, 0.002f, 0.0f); } - Matrix_RotateZ(gGfxMatrix, (f32) gFrameCount * 10.0f * M_DTOR, 1); + Matrix_RotateZ(gGfxMatrix, gFrameCount * 10.0f * M_DTOR, 1); Matrix_Scale(gGfxMatrix, 1.0f + D_800CA230, 1.0f - D_800CA230, 1.0f, 1); Matrix_RotateZ(gGfxMatrix, -(f32) gFrameCount * 10.0f * M_DTOR, 1); Matrix_Scale(gGfxMatrix, 1.0f + D_800CA230, 1.0f - D_800CA230, 1.0f, 1); @@ -1556,7 +1556,7 @@ void func_80057D00(void) { D_801779E8.z += player->unk_138 + player->unk_144; if ((player->unk_238 != 0) && (player->unk_110 > 5.0f)) { - D_801779E8.x += __sinf((f32) gFrameCount * 150.0f * M_DTOR) * player->unk_110 * 0.2f; + D_801779E8.x += __sinf(gFrameCount * 150.0f * M_DTOR) * player->unk_110 * 0.2f; } } else if (player->state_1C8 == PLAYERSTATE_1C8_7) { func_800578C4(player); diff --git a/src/main/fox_enmy.c b/src/main/fox_enmy.c index 773bc8d0..254e05e8 100644 --- a/src/main/fox_enmy.c +++ b/src/main/fox_enmy.c @@ -1406,7 +1406,7 @@ void func_8006566C(f32 xPos, f32 yPos, f32 zPos, s32 arg3) { } } -#ifdef NON_MATCHING +#ifdef NON_EQUIVALENT void func_800656D4(Object_2F4* obj2F4) { f32 spD4; f32 spD0; diff --git a/src/main/fox_enmy2.c b/src/main/fox_enmy2.c index fae0977b..81085baf 100644 --- a/src/main/fox_enmy2.c +++ b/src/main/fox_enmy2.c @@ -487,7 +487,7 @@ void func_8006C008(Object_2F4* obj2F4) { s32 sp40; switch (obj2F4->unk_0B8) { - case 0x28: + case 40: if (obj2F4->unk_04A & 4) { obj2F4->obj.pos.x = obj2F4->unk_120 + gPlayer->pos.x; obj2F4->obj.pos.z = obj2F4->unk_124.x + gPlayer->unk_138; @@ -539,12 +539,12 @@ void func_8006C008(Object_2F4* obj2F4) { } break; - case 0x2D: + case 45: obj2F4->obj.rot.y += obj2F4->unk_114; obj2F4->obj.rot.z += obj2F4->unk_118; break; - case 0x2E: + case 46: obj2F4->obj.rot.x += obj2F4->unk_114; obj2F4->obj.rot.y += obj2F4->unk_118; obj2F4->obj.rot.z += obj2F4->unk_11C; @@ -568,7 +568,7 @@ void func_8006C008(Object_2F4* obj2F4) { } break; - case 0x2F: + case 47: func_E6A810_801B6E20(obj2F4->obj.pos.x, obj2F4->obj.pos.z + D_80177D20, &sp4C, &sp48, &sp4C); if (obj2F4->obj.pos.y < obj2F4->unk_120 + (-100.0f + sp48)) { @@ -600,12 +600,12 @@ void func_8006C008(Object_2F4* obj2F4) { } break; - case 0x30: - case 0x31: - case 0x33: - case 0x34: - case 0x35: - case 0x37: + case 48: + case 49: + case 51: + case 52: + case 53: + case 55: if (((obj2F4->timer_0BC == 0) || (func_8006351C(obj2F4->index, &obj2F4->obj.pos, &D_800D0030, 1) != 0) || (obj2F4->obj.pos.y < (D_80177940 + 10.0f))) && (obj2F4->timer_0BE == 0)) { @@ -615,7 +615,7 @@ void func_8006C008(Object_2F4* obj2F4) { } break; - case 0x38: + case 56: Math_SmoothStepToF(&obj2F4->scale, 0.0f, 0.1f, 2.0f, 0.0001f); if (((obj2F4->timer_0BC == 0) || (func_8006351C(obj2F4->index, &obj2F4->obj.pos, &D_800D0030, 1) != 0) || (obj2F4->obj.pos.y < (D_80177940 + 10.0f))) && @@ -626,7 +626,7 @@ void func_8006C008(Object_2F4* obj2F4) { } break; - case 0x3A: + case 58: if (obj2F4->unk_046 == 0) { obj2F4->unk_046++; obj2F4->unk_114 = (Rand_ZeroOne() - 0.5f) * 30.0f; @@ -647,7 +647,7 @@ void func_8006C008(Object_2F4* obj2F4) { } break; - case 0x36: + case 54: if (((obj2F4->timer_0BC == 0) || (func_8006351C(obj2F4->index, &obj2F4->obj.pos, &D_800D0030, 1) != 0) || (obj2F4->obj.pos.y < (D_80177940 + 10.0f))) && (obj2F4->timer_0BE == 0)) { @@ -658,7 +658,7 @@ void func_8006C008(Object_2F4* obj2F4) { } break; - case 0x32: + case 50: if ((obj2F4->unk_050 == 2) && (obj2F4->timer_0BC == 0)) { func_8007D2C8(obj2F4->obj.pos.x, obj2F4->obj.pos.y, obj2F4->obj.pos.z, 5.0f); obj2F4->timer_0BC = 4; @@ -674,7 +674,7 @@ void func_8006C008(Object_2F4* obj2F4) { } break; - case 0x39: + case 57: obj2F4->obj.rot.x += obj2F4->unk_114; obj2F4->obj.rot.y += obj2F4->unk_118; obj2F4->obj.rot.z += obj2F4->unk_11C; @@ -2092,15 +2092,15 @@ void func_800701E0(Object_2F4* obj2F4) { } } else { switch (obj2F4->unk_0B4) { - case 0xD: + case 13: func_800654E4(&obj2F4->obj); break; - case 0x3D: + case 61: func_E08400_8018CCF8(obj2F4); break; - case 0x1B: + case 27: obj2F4->obj.pos.y -= obj2F4->unk_0E8.y; obj2F4->obj.status = 2; func_8007D0E0(obj2F4->obj.pos.x - obj2F4->unk_0E8.x, obj2F4->obj.pos.y + 30.0f, @@ -2270,252 +2270,252 @@ void func_80070D44(Object_2F4* obj2F4) { case 0: break; - case 0x1: + case 1: if ((gObjects2F4[obj2F4->unk_054].obj.status != 2) || (gObjects2F4[obj2F4->unk_054].unk_0CE <= 0) || (obj2F4->unk_078 != gObjects2F4[obj2F4->unk_054].unk_0E4)) { func_80070CEC(obj2F4); } break; - case 0x2: + case 2: if (var_v1 == 3) { func_80070CEC(obj2F4); } break; - case 0x3: + case 3: if (var_v1 == 2) { func_80070CEC(obj2F4); } break; - case 0x4: + case 4: if (var_v1 == 1) { func_80070CEC(obj2F4); } break; - case 0x5: + case 5: if (var_v1 == 0) { func_80070CEC(obj2F4); } break; - case 0x6: + case 6: if (gTeamShields[1] > 0) { func_80070CEC(obj2F4); } break; - case 0x7: + case 7: if (gTeamShields[3] > 0) { func_80070CEC(obj2F4); } break; - case 0x8: + case 8: if (gTeamShields[2] > 0) { func_80070CEC(obj2F4); } break; - case 0x9: + case 9: if (((obj2F4->obj.pos.x - gPlayer[0].pos.x) <= 100.0f) && ((obj2F4->obj.pos.x - gPlayer[0].pos.x) >= 0.0f)) { func_80070CEC(obj2F4); } break; - case 0xA: + case 10: if (((obj2F4->obj.pos.x - gPlayer[0].pos.x) <= 400.0f) && ((obj2F4->obj.pos.x - gPlayer[0].pos.x) >= 0.0f)) { func_80070CEC(obj2F4); } break; - case 0xB: + case 11: if (((obj2F4->obj.pos.x - gPlayer[0].pos.x) <= 700.0f) && ((obj2F4->obj.pos.x - gPlayer[0].pos.x) >= 0.0f)) { func_80070CEC(obj2F4); } break; - case 0xC: + case 12: if (((obj2F4->obj.pos.x - gPlayer[0].pos.x) <= 200.0f) && ((obj2F4->obj.pos.x - gPlayer[0].pos.x) >= 0.0f)) { func_80070CEC(obj2F4); } break; - case 0xD: + case 13: if (((obj2F4->obj.pos.x - gPlayer[0].pos.x) >= -100.0f) && ((obj2F4->obj.pos.x - gPlayer[0].pos.x) <= 0.0f)) { func_80070CEC(obj2F4); } break; - case 0xE: + case 14: if (((obj2F4->obj.pos.x - gPlayer[0].pos.x) >= -400.0f) && ((obj2F4->obj.pos.x - gPlayer[0].pos.x) <= 0.0f)) { func_80070CEC(obj2F4); } break; - case 0xF: + case 15: if (((obj2F4->obj.pos.x - gPlayer[0].pos.x) >= -700.0f) && ((obj2F4->obj.pos.x - gPlayer[0].pos.x) <= 0.0f)) { func_80070CEC(obj2F4); } break; - case 0x10: + case 16: if (((obj2F4->obj.pos.x - gPlayer[0].pos.x) >= -200.0f) && ((obj2F4->obj.pos.x - gPlayer[0].pos.x) <= 0.0f)) { func_80070CEC(obj2F4); } break; - case 0x11: + case 17: if (((obj2F4->obj.pos.y - gPlayer[0].pos.y) <= 100.0f) && ((obj2F4->obj.pos.y - gPlayer[0].pos.y) >= 0.0f)) { func_80070CEC(obj2F4); } break; - case 0x12: + case 18: if (((obj2F4->obj.pos.y - gPlayer[0].pos.y) <= 400.0f) && ((obj2F4->obj.pos.y - gPlayer[0].pos.y) >= 0.0f)) { func_80070CEC(obj2F4); } break; - case 0x13: + case 19: if (((obj2F4->obj.pos.y - gPlayer[0].pos.y) <= 700.0f) && ((obj2F4->obj.pos.y - gPlayer[0].pos.y) >= 0.0f)) { func_80070CEC(obj2F4); } break; - case 0x14: + case 20: if (((obj2F4->obj.pos.y - gPlayer[0].pos.y) <= 200.0f) && ((obj2F4->obj.pos.y - gPlayer[0].pos.y) >= 0.0f)) { func_80070CEC(obj2F4); } break; - case 0x15: + case 21: if (((obj2F4->obj.pos.y - gPlayer[0].pos.y) >= -100.0f) && ((obj2F4->obj.pos.y - gPlayer[0].pos.y) <= 0.0f)) { func_80070CEC(obj2F4); } break; - case 0x16: + case 22: if (((obj2F4->obj.pos.y - gPlayer[0].pos.y) >= -400.0f) && ((obj2F4->obj.pos.y - gPlayer[0].pos.y) <= 0.0f)) { func_80070CEC(obj2F4); } break; - case 0x17: + case 23: if (((obj2F4->obj.pos.y - gPlayer[0].pos.y) >= -700.0f) && ((obj2F4->obj.pos.y - gPlayer[0].pos.y) <= 0.0f)) { func_80070CEC(obj2F4); } break; - case 0x18: + case 24: if (((obj2F4->obj.pos.y - gPlayer[0].pos.y) >= -200.0f) && ((obj2F4->obj.pos.y - gPlayer[0].pos.y) <= 0.0f)) { func_80070CEC(obj2F4); } break; - case 0x19: + case 25: if (gPlayer[0].shields >= Play_GetMaxShields()) { func_80070CEC(obj2F4); } break; - case 0x1A: + case 26: if (gPlayer[0].shields >= (Play_GetMaxShields() * 3 / 4)) { func_80070CEC(obj2F4); } break; - case 0x1B: + case 27: if (gPlayer[0].shields >= (Play_GetMaxShields() / 2)) { func_80070CEC(obj2F4); } break; - case 0x1C: + case 28: if (gPlayer[0].shields >= (Play_GetMaxShields() / 4)) { func_80070CEC(obj2F4); } break; - case 0x1D: + case 29: if (gPlayer[0].shields == 0) { func_80070CEC(obj2F4); } break; - case 0x1E: + case 30: if (gPlayer[0].unk_270 >= 5) { func_80070CEC(obj2F4); } break; - case 0x1F: + case 31: if (gPlayer[0].unk_270 != 0) { func_80070CEC(obj2F4); } break; - case 0x20: + case 32: if (gPlayer[0].unk_270 == 0) { func_80070CEC(obj2F4); } break; - case 0x21: + case 33: if (gPlayer[0].unk_250 >= 16.8f) { func_80070CEC(obj2F4); } break; - case 0x22: + case 34: if (gPlayer[0].unk_250 <= 8.4f) { func_80070CEC(obj2F4); } break; - case 0x23: + case 35: if (gPlayer[0].wings.unk_14 > -8.0f) { func_80070CEC(obj2F4); } break; - case 0x24: + case 36: if ((gPlayer[0].wings.unk_14 < -8.0f) && (gLaserStrength[0] == 1)) { func_80070CEC(obj2F4); } break; - case 0x25: + case 37: if ((gPlayer[0].wings.unk_14 < -8.0f) && (gLaserStrength[0] == 2)) { func_80070CEC(obj2F4); } break; - case 0x26: + case 38: if ((gPlayer[0].wings.unk_14 < -8.0f) && (gLaserStrength[0] == 3)) { func_80070CEC(obj2F4); } break; - case 0x27: + case 39: for (i = 0; i < ARRAY_COUNT(gPlayerShots); i++) { if ((gPlayerShots[i].obj.status == 1) && (fabsf(obj2F4->obj.pos.x - gPlayerShots[i].obj.pos.x) < 150.0f) && @@ -2527,7 +2527,7 @@ void func_80070D44(Object_2F4* obj2F4) { } break; - case 0x28: + case 40: for (i = 0; i < ARRAY_COUNT(gPlayerShots); i++) { if ((gPlayerShots[i].obj.status == 1) && (fabsf(obj2F4->obj.pos.x - gPlayerShots[i].obj.pos.x) < 300.0f) && @@ -2539,14 +2539,14 @@ void func_80070D44(Object_2F4* obj2F4) { } break; - case 0x29: + case 41: if ((gObjects2F4[obj2F4->unk_074].obj.status != 2) || ((gObjects2F4[obj2F4->unk_074].scale < 0.0f) && (obj2F4->unk_0CE <= 0))) { func_80070CEC(obj2F4); } break; - case 0x2A: + case 42: for (i = 0; i < ARRAY_COUNT(gObjects2F4); i++) { if ((gObjects2F4[i].obj.status == 2) && (gObjects2F4[i].obj.id == OBJ_2F4_200) && (gObjects2F4[i].unk_084 != 0) && (i != obj2F4->index) && @@ -2557,7 +2557,7 @@ void func_80070D44(Object_2F4* obj2F4) { func_80070CEC(obj2F4); break; - case 0x2B: + case 43: for (i = 0; i < ARRAY_COUNT(gObjects2F4); i++) { if ((gObjects2F4[i].obj.status == 2) && (gObjects2F4[i].obj.id == OBJ_2F4_200) && (gObjects2F4[i].unk_084 != 0) && (i != obj2F4->index) && @@ -2568,13 +2568,13 @@ void func_80070D44(Object_2F4* obj2F4) { } break; - case 0x2C: + case 44: if (obj2F4->unk_0D0 != 0) { func_80070CEC(obj2F4); } break; - case 0x2D: + case 45: var_v1_4 = 7; switch (gCurrentLevel) { case LEVEL_CORNERIA: @@ -2592,7 +2592,7 @@ void func_80070D44(Object_2F4* obj2F4) { } break; - case 0x2E: + case 46: for (i = 0, other2F4 = gObjects2F4; i < ARRAY_COUNT(gObjects2F4); i++, other2F4++) { if (((other2F4->obj.status == 3) || (other2F4->obj.status == 0)) && (obj2F4->unk_08C == other2F4->unk_08C) && (other2F4->unk_090 != 0)) { @@ -2601,7 +2601,7 @@ void func_80070D44(Object_2F4* obj2F4) { } break; - case 0x2F: + case 47: if (gControllerPress[gMainController].button & R_CBUTTONS) { func_8001AF40(0); D_800CFF90 = 0; @@ -2610,121 +2610,121 @@ void func_80070D44(Object_2F4* obj2F4) { } break; - case 0x30: + case 48: if ((gPlayer[0].wings.rightState <= WINGSTATE_BROKEN) || (gPlayer[0].wings.leftState <= WINGSTATE_BROKEN)) { func_80070CEC(obj2F4); } break; - case 0x31: + case 49: if (D_800D3180[1] != 0) { func_80070CEC(obj2F4); } break; - case 0x32: + case 50: if (D_800D3180[0xE] != 0) { func_80070CEC(obj2F4); } break; - case 0x33: + case 51: if (D_800D3180[2] != 0) { func_80070CEC(obj2F4); } break; - case 0x34: + case 52: if (D_800D3180[0xC] != 0) { func_80070CEC(obj2F4); } break; - case 0x35: + case 53: if (D_800D3180[0x11] != 0) { func_80070CEC(obj2F4); } break; - case 0x36: + case 54: if (D_800D3180[5] != 0) { func_80070CEC(obj2F4); } break; - case 0x37: + case 55: if (D_800D3180[0x10] != 0) { func_80070CEC(obj2F4); } break; - case 0x38: + case 56: if (D_800D3180[7] != 0) { func_80070CEC(obj2F4); } break; - case 0x39: + case 57: if (D_800D3180[0xB] != 0) { func_80070CEC(obj2F4); } break; - case 0x3A: + case 58: if (D_800D3180[0xD] != 0) { func_80070CEC(obj2F4); } break; - case 0x3B: + case 59: if (D_800D3180[8] != 0) { func_80070CEC(obj2F4); } break; - case 0x3C: + case 60: if (D_800D3180[0x12] != 0) { func_80070CEC(obj2F4); } break; - case 0x3D: + case 61: if (D_800D3180[3] != 0) { func_80070CEC(obj2F4); } break; - case 0x3E: + case 62: if (D_Timer_80161670[obj2F4->unk_080] == 0) { func_80070CEC(obj2F4); } break; - case 0x3F: + case 63: if (D_Timer_80161670[obj2F4->unk_080] != 0) { func_80070CEC(obj2F4); } break; - case 0x40: + case 64: if (D_80161684 != 0) { func_80070CEC(obj2F4); } break; - case 0x41: + case 65: if (gHitCount >= 30) { func_80070CEC(obj2F4); } break; - case 0x42: + case 66: if (gHitCount >= 80) { func_80070CEC(obj2F4); } break; - case 0x43: + case 67: if (gExpertMode != 0) { func_80070CEC(obj2F4); } @@ -3011,20 +3011,20 @@ void func_80072594(Object_2F4* obj2F4) { } switch (obj2F4->unk_0B8) { - case 0x0: + case 0: func_8006D36C(obj2F4); break; - case 0x1: + case 1: if (obj2F4->timer_0BC == 0) { func_8006D36C(obj2F4); } break; - case 0x6: - case 0x7: - case 0xE: - case 0xF: + case 6: + case 7: + case 14: + case 15: spF0 = obj2F4->obj.pos.x; spEC = obj2F4->obj.pos.y; spE8 = obj2F4->obj.pos.z; @@ -3139,15 +3139,15 @@ void func_80072594(Object_2F4* obj2F4) { } break; - case 0xD: - spDC = __sinf(((obj2F4->index * 0x2D) + gFrameCount) * M_DTOR) * obj2F4[0].unk_158; - spD8 = __cosf(((obj2F4->index * 0x2D) + (gFrameCount * 2)) * M_DTOR) * obj2F4[0].unk_158; + case 13: + spDC = __sinf(((obj2F4->index * 45) + gFrameCount) * M_DTOR) * (*obj2F4).unk_158; + spD8 = __cosf(((obj2F4->index * 45) + (gFrameCount * 2)) * M_DTOR) * (*obj2F4).unk_158; pad = obj2F4->unk_054; pad = gObjects2F4[pad].unk_080; D_Timer_80161670[pad] = 5; - case 0x8: - case 0x9: + case 8: + case 9: spF0 = obj2F4->obj.pos.x; spEC = obj2F4->obj.pos.y; spE8 = obj2F4->obj.pos.z; @@ -3182,7 +3182,7 @@ void func_80072594(Object_2F4* obj2F4) { } break; - case 0x2: + case 2: obj2F4->unk_0F4.x += obj2F4->unk_120; obj2F4->unk_11C -= obj2F4->unk_120; if (obj2F4->unk_11C <= 0.0f) { @@ -3190,7 +3190,7 @@ void func_80072594(Object_2F4* obj2F4) { } break; - case 0x3: + case 3: obj2F4->unk_0F4.x -= obj2F4->unk_120; obj2F4->unk_11C -= obj2F4->unk_120; if (obj2F4->unk_11C <= 0.0f) { @@ -3198,7 +3198,7 @@ void func_80072594(Object_2F4* obj2F4) { } break; - case 0x4: + case 4: obj2F4->unk_0F4.y += obj2F4->unk_120; obj2F4->unk_11C -= obj2F4->unk_120; if (obj2F4->unk_11C <= 0.0f) { @@ -3206,7 +3206,7 @@ void func_80072594(Object_2F4* obj2F4) { } break; - case 0x5: + case 5: obj2F4->unk_0F4.y -= obj2F4->unk_120; obj2F4->unk_11C -= obj2F4->unk_120; if (obj2F4->unk_11C <= 0.0f) { @@ -3214,7 +3214,7 @@ void func_80072594(Object_2F4* obj2F4) { } break; - case 0xA: + case 10: var_s0 = 0; if (Math_SmoothStepToAngle(&obj2F4->obj.rot.x, 0.0f, 0.3f, 10.0f, 1.0f) == 0.0f) { var_s0++; @@ -3234,13 +3234,13 @@ void func_80072594(Object_2F4* obj2F4) { } break; - case 0xB: + case 11: if (Math_SmoothStepToF(&obj2F4->unk_150, 0.0f, 0.3f, 10.0f, 1.0f) == 0.0f) { func_8006D36C(obj2F4); } break; - case 0xC: + case 12: Math_SmoothStepToAngle(&obj2F4->unk_0F4.x, 270.0f, 0.1f, 2.0f, 0.0f); gTeamShields[obj2F4->unk_080] = -1; gTeamDamage[obj2F4->unk_080] = 0; @@ -3286,7 +3286,7 @@ void func_80072594(Object_2F4* obj2F4) { } if (obj2F4->unk_068 != 0) { - if ((gLevelMode == LEVELMODE_UNK_2) && (obj2F4->unk_0B4 == 0xC8)) { + if ((gLevelMode == LEVELMODE_UNK_2) && (obj2F4->unk_0B4 == 200)) { Math_SmoothStepToAngle(&obj2F4->obj.rot.x, obj2F4->unk_0F4.x, 0.1f, 10.0f, 0.00001f); Math_SmoothStepToAngle(&obj2F4->obj.rot.y, obj2F4->unk_0F4.y, 0.1f, 10.0f, 0.00001f); } else { @@ -3390,12 +3390,12 @@ void func_80072594(Object_2F4* obj2F4) { } } - if ((obj2F4->unk_0B4 < 0xC8) && (obj2F4->unk_0B4 != 0x4E) && (obj2F4->scale >= 0.5f)) { + if ((obj2F4->unk_0B4 < 200) && (obj2F4->unk_0B4 != 78) && (obj2F4->scale >= 0.5f)) { switch (obj2F4->unk_0B4) { - case 0x47: + case 71: func_8006FE28(obj2F4); break; - case 0x4F: + case 79: func_8006FEEC(obj2F4); break; default: @@ -3406,11 +3406,11 @@ void func_80072594(Object_2F4* obj2F4) { } } switch (obj2F4->unk_0B4) { - case 0x5C: - case 0x5D: - case 0x5E: - case 0x5F: - case 0x60: + case 92: + case 93: + case 94: + case 95: + case 96: if (!(gFrameCount & 7)) { obj2F4->unk_15C = Rand_ZeroOne() * 255.0f; obj2F4->unk_160 = Rand_ZeroOne() * 255.0f; @@ -3421,7 +3421,7 @@ void func_80072594(Object_2F4* obj2F4) { Math_SmoothStepToF(&obj2F4->unk_158, obj2F4->unk_164, 1.0f, 10.0f, 0.0f); break; - case 0x2E: + case 46: if (func_800A73E4(&spEC, &spFC, obj2F4->obj.pos.x, -100.0f, obj2F4->obj.pos.z) != 0) { spF0 = 10.0f; @@ -3446,21 +3446,21 @@ void func_80072594(Object_2F4* obj2F4) { obj2F4->obj.rot.y = obj2F4->unk_0F4.y; break; - case 0x1F: - obj2F4->obj.rot.z = (f32) gFrameCount; + case 31: + obj2F4->obj.rot.z = gFrameCount; break; - case 0x15: - case 0x16: - obj2F4->obj.rot.z = (f32) gFrameCount * 3.0f; + case 21: + case 22: + obj2F4->obj.rot.z = gFrameCount * 3.0f; break; - case 0x3: + case 3: obj2F4->unk_0C9 = 1; obj2F4->obj.rot.y -= 10.0f; break; - case 0x6: + case 6: obj2F4->unk_0B6++; if (gCurrentLevel == LEVEL_SOLAR) { if (obj2F4->unk_0B6 >= Animation_GetFrameCount(&D_600636C)) { @@ -3475,7 +3475,7 @@ void func_80072594(Object_2F4* obj2F4) { } break; - case 0x9: + case 9: obj2F4->unk_0B6++; if (obj2F4->unk_0B6 >= Animation_GetFrameCount(&D_40001A4)) { obj2F4->unk_0B6 = 0; @@ -3485,21 +3485,21 @@ void func_80072594(Object_2F4* obj2F4) { } break; - case 0x30: - case 0x31: - case 0x32: + case 48: + case 49: + case 50: func_E9F1D0_801A3BD4(obj2F4); break; - case 0x34: + case 52: func_80072474(obj2F4); break; - case 0x4E: + case 78: func_8006753C(obj2F4); break; - case 0x4F: + case 79: if (obj2F4->timer_0C4 == 0) { obj2F4->unk_0B6 += 1; if (Animation_GetFrameCount(&D_600E5EC) < obj2F4->unk_0B6) { @@ -3508,7 +3508,7 @@ void func_80072594(Object_2F4* obj2F4) { } break; - case 0x50: { + case 80: { Object_8C* obj8C; Vec3f sp90; Vec3f sp84; @@ -3615,7 +3615,7 @@ void func_80072594(Object_2F4* obj2F4) { } } break; - case 0x51: + case 81: Math_SmoothStepToF(&obj2F4->unk_150, 1.0f, 0.1f, 0.1f, 0.001f); if (obj2F4->unk_150 > 0.5f) { @@ -3637,7 +3637,7 @@ void func_80072594(Object_2F4* obj2F4) { } break; - case 0x53: + case 83: if (obj2F4->unk_0CE <= 0) { if (obj2F4->unk_0B6 == 0x14) { spD4 = obj2F4->obj.pos.z; @@ -3669,7 +3669,7 @@ void func_80072594(Object_2F4* obj2F4) { } break; - case 0x58: + case 88: if (obj2F4->unk_04A == 0) { obj2F4->unk_046 += 4; if (obj2F4->unk_046 >= 0xFF) { @@ -3685,12 +3685,12 @@ void func_80072594(Object_2F4* obj2F4) { } break; - case 0x67: - case 0x68: + case 103: + case 104: func_80187530(obj2F4); break; - case 0x6A: + case 106: obj2F4->unk_0B6 += 1; if (obj2F4->unk_0B6 >= 6) { obj2F4->unk_0B6 = 0; @@ -3822,35 +3822,34 @@ void func_80074FF0(Object_2F4* obj2F4) { } switch (obj2F4->unk_0B4) { - case 0x5C: - case 0x5D: - case 0x5E: - case 0x5F: - case 0x60: + case 92: + case 93: + case 94: + case 95: + case 96: RCP_SetupDL(&gMasterDisp, 0x22); gDPSetTextureFilter(gMasterDisp++, G_TF_POINT); - gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, (s32) obj2F4[0].unk_150, (s32) obj2F4[0].unk_154, - (s32) obj2F4[0].unk_158, 255); + gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, (s32) (*obj2F4).unk_150, (s32) (*obj2F4).unk_154, + (s32) (*obj2F4).unk_158, 255); gSPDisplayList(gMasterDisp++, D_800D003C[obj2F4->unk_0B4].unk_00); gDPSetTextureFilter(gMasterDisp++, G_TF_BILERP); break; - default: { - - if ((obj2F4->unk_0B4 < 0xC8) && (D_800D003C[obj2F4->unk_0B4].unk_00 != NULL)) { + default: + if ((obj2F4->unk_0B4 < 200) && (D_800D003C[obj2F4->unk_0B4].unk_00 != NULL)) { gSPDisplayList(gMasterDisp++, D_800D003C[obj2F4->unk_0B4].unk_00); } switch (obj2F4->unk_0B4) { - case 0x38: + case 56: func_800515C4(); break; - case 0x0: + case 0: obj2F4->unk_07C = 1; func_8005ADAC(obj2F4); break; - case 0x2: + case 2: obj2F4->unk_150 -= obj2F4->unk_150 * 0.1f; obj2F4->unk_17C -= obj2F4->unk_17C * 0.1f; obj2F4->unk_154 -= obj2F4->unk_154 * 0.1f; @@ -3868,7 +3867,7 @@ void func_80074FF0(Object_2F4* obj2F4) { func_8005B388(obj2F4); break; - case 0x2B: + case 43: if (gLevelType == LEVELTYPE_PLANET) { gSPDisplayList(gMasterDisp++, D_40018A0); } else { @@ -3877,12 +3876,12 @@ void func_80074FF0(Object_2F4* obj2F4) { func_8005ADAC(obj2F4); break; - case 0x5: + case 5: obj2F4->unk_07C = 1; func_8005ADAC(obj2F4); break; - case 0x6: + case 6: if (gCurrentLevel == LEVEL_SOLAR) { gSPClearGeometryMode(gMasterDisp++, G_CULL_BACK); Animation_GetFrameData(&D_600636C, obj2F4->unk_0B6, sp114); @@ -3894,18 +3893,18 @@ void func_80074FF0(Object_2F4* obj2F4) { } break; - case 0x7: + case 7: obj2F4->unk_07C = 1; func_8005ADAC(obj2F4); break; - case 0x9: + case 9: Matrix_Translate(gGfxMatrix, 0.0f, -30.0f, 0.0f, 1); Animation_GetFrameData(&D_40001A4, obj2F4->unk_0B6, sp114); Animation_DrawSkeleton(1, D_4000270, sp114, NULL, NULL, obj2F4, &gIdentityMatrix); break; - case 0x12: + case 18: if (obj2F4->unk_114 > 0.1f) { obj2F4->unk_07C = 1; Matrix_Translate(gGfxMatrix, 0.0f, 0.0f, -30.0f, 1); @@ -3914,7 +3913,7 @@ void func_80074FF0(Object_2F4* obj2F4) { } break; - case 0x13: + case 19: if (obj2F4->unk_114 > 0.1f) { obj2F4->unk_07C = 1; Matrix_Translate(gGfxMatrix, 0.0f, 0.0f, -30.0f, 1); @@ -3923,12 +3922,12 @@ void func_80074FF0(Object_2F4* obj2F4) { } break; - case 0x14: + case 20: RCP_SetupDL_60(gFogRed, gFogGreen, gFogBlue, gFogAlpha, gFogNear, gFogFar); gSPDisplayList(gMasterDisp++, D_601A120); break; - case 0x15: + case 21: gSPClearGeometryMode(gMasterDisp++, G_CULL_BACK); gSPDisplayList(gMasterDisp++, D_6018BF0); gSPSetGeometryMode(gMasterDisp++, G_CULL_BACK); @@ -3937,7 +3936,7 @@ void func_80074FF0(Object_2F4* obj2F4) { func_8005B1E8(obj2F4, 2); break; - case 0x16: + case 22: gSPClearGeometryMode(gMasterDisp++, G_CULL_BACK); gSPDisplayList(gMasterDisp++, D_6019730); gSPSetGeometryMode(gMasterDisp++, G_CULL_BACK); @@ -3946,7 +3945,7 @@ void func_80074FF0(Object_2F4* obj2F4) { func_8005B1E8(obj2F4, 2); break; - case 0x1B: + case 27: if (obj2F4->timer_0C2 != 0) { if (!(obj2F4->timer_0C2 & 3) && (D_80177854 != 0x64)) { func_8007D0E0(((Rand_ZeroOne() - 0.5f) * 200.0f) + obj2F4->obj.pos.x, @@ -3962,37 +3961,37 @@ void func_80074FF0(Object_2F4* obj2F4) { } break; - case 0x1F: + case 31: Matrix_RotateX(gGfxMatrix, M_PI / 2.0f, 1); Matrix_SetGfxMtx(&gMasterDisp); gSPDisplayList(gMasterDisp++, D_600E0C0); break; - case 0x21: + case 33: Animation_GetFrameData(&D_400A30C, obj2F4->unk_0B6, sp114); Matrix_RotateY(gGfxMatrix, M_PI, 1); Matrix_Scale(gGfxMatrix, 1.5f, 1.5f, 1.5f, 1); Animation_DrawSkeleton(1, D_400A398, sp114, func_80074BFC, NULL, obj2F4, &gIdentityMatrix); - Math_SmoothStepToF(&obj2F4[0].unk_154, 0.0f, 0.3f, 2.0f, 0.0001f); + Math_SmoothStepToF(&(*obj2F4).unk_154, 0.0f, 0.3f, 2.0f, 0.0001f); break; - case 0x24: + case 36: Animation_GetFrameData(&D_700CAF4, obj2F4->unk_0B6, sp114); sp114[2].z += obj2F4->unk_150; Animation_DrawSkeleton(1, D_700CB60, sp114, NULL, NULL, obj2F4, &gIdentityMatrix); break; - case 0x26: + case 38: func_80074E3C(obj2F4); break; - case 0x30: - case 0x31: - case 0x32: + case 48: + case 49: + case 50: func_E9F1D0_801A4CB0(obj2F4); break; - case 0x34: + case 52: Animation_GetFrameData(&D_601F874, obj2F4->unk_0B6, sp114); sp114[2].z -= obj2F4->unk_150; gSPClearGeometryMode(gMasterDisp++, G_CULL_BACK); @@ -4001,7 +4000,7 @@ void func_80074FF0(Object_2F4* obj2F4) { gSPSetGeometryMode(gMasterDisp++, G_CULL_BACK); break; - case 0x40: + case 64: Matrix_Push(&gGfxMatrix); Matrix_RotateX(gGfxMatrix, obj2F4->unk_0F4.x * M_DTOR, 1); Matrix_RotateY(gGfxMatrix, obj2F4->unk_0F4.y * M_DTOR, 1); @@ -4017,30 +4016,30 @@ void func_80074FF0(Object_2F4* obj2F4) { Matrix_Pop(&gGfxMatrix); break; - case 0x43: + case 67: gSPDisplayList(gMasterDisp++, D_6008AA0); RCP_SetupDL(&gMasterDisp, 0x35); gSPDisplayList(gMasterDisp++, D_6009E30); break; - case 0x4E: + case 78: func_80067874(obj2F4); break; - case 0x4F: + case 79: temp_s0 = obj2F4->unk_0B8; obj2F4->unk_0B8 = 2; func_E16C50_80190430(obj2F4); obj2F4->unk_0B8 = temp_s0; break; - case 0x50: + case 80: Matrix_Scale(gGfxMatrix, 0.6f, 0.6f, 0.6f, 1); Matrix_SetGfxMtx(&gMasterDisp); gSPDisplayList(gMasterDisp++, D_9011200); break; - case 0x51: + case 81: if (obj2F4->unk_150 > 0.001f) { Matrix_Scale(gGfxMatrix, obj2F4->unk_150, obj2F4->unk_150, obj2F4->unk_150, 1); Matrix_SetGfxMtx(&gMasterDisp); @@ -4049,52 +4048,52 @@ void func_80074FF0(Object_2F4* obj2F4) { } break; - case 0x52: + case 82: gSPClearGeometryMode(gMasterDisp++, G_CULL_BACK); gSPDisplayList(gMasterDisp++, D_600DA10); gSPSetGeometryMode(gMasterDisp++, G_CULL_BACK); break; - case 0x53: + case 83: Matrix_Scale(gGfxMatrix, 3.0f, 3.0f, 3.0f, 1); Animation_GetFrameData(&D_602201C, obj2F4->unk_0B6, sp114); Animation_DrawSkeleton(1, D_60220E8, sp114, NULL, NULL, obj2F4, &gIdentityMatrix); break; - case 0x55: + case 85: gSPDisplayList(gMasterDisp++, D_D00B880); func_8005ADAC(obj2F4); break; - case 0x56: + case 86: gSPDisplayList(gMasterDisp++, D_D009A40); func_8005ADAC(obj2F4); break; - case 0x58: + case 88: RCP_SetupDL(&gMasterDisp, 0x16); gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, obj2F4->unk_046, obj2F4->unk_046, obj2F4->unk_046, 255); gSPDisplayList(gMasterDisp++, D_6008970); break; - case 0x59: + case 89: RCP_SetupDL(&gMasterDisp, 0x15); gSPDisplayList(gMasterDisp++, D_6000E10); break; - case 0x67: - case 0x68: + case 103: + case 104: func_E6A810_8018769C(obj2F4); break; - case 0x69: + case 105: RCP_SetupDL(&gMasterDisp, 0x23); gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 0, 0, 0, 0x8F); gDPSetEnvColor(gMasterDisp++, 0, 0, 0, 0); gSPDisplayList(gMasterDisp++, D_7000000); break; - case 0x6A: + case 106: Animation_GetFrameData(&D_4000080, obj2F4->unk_0B6, sp114); Animation_DrawSkeleton(1, D_400014C, sp114, NULL, NULL, obj2F4, &gIdentityMatrix); break; @@ -4114,7 +4113,7 @@ void func_80074FF0(Object_2F4* obj2F4) { Matrix_MultVec3f(gGfxMatrix, &sp58, &D_80177E98[obj2F4->unk_080]); } } - } break; + break; } } diff --git a/src/main/fox_play.c b/src/main/fox_play.c index f70785cc..2b2b24e6 100644 --- a/src/main/fox_play.c +++ b/src/main/fox_play.c @@ -2230,7 +2230,7 @@ void func_800AA800(Player* player) { } } else { hitboxData = obj80->info.hitbox; - count = (s32) *hitboxData; + count = *hitboxData; if (count != 0) { if (obj80->info.action == (ObjectFunc) func_80066EA8) { sp120 = 0.0f; @@ -3410,7 +3410,7 @@ void func_800AECAC(Player* player) { if (player->unk_4D8 < 180.0f) { player->pos.y += 2.0f; } - player->unk_2B4 = 1; + player->unk_2B4 = true; if (gLevelMode == LEVELMODE_ON_RAILS) { player->unk_2BC += 2.0f; } else { @@ -4485,7 +4485,7 @@ void func_800B2574(Player* player) { if ((player->unk_2BC != 0.0f) && (gInputHold->button & gBrakeButton[player->num]) && (gInputHold->button & gBoostButton[player->num])) { - player->unk_2B4 = 1; + player->unk_2B4 = true; } if (gLevelMode == LEVELMODE_ON_RAILS) { sp28 = 3.0f; @@ -4524,7 +4524,7 @@ void func_800B2574(Player* player) { } if (player->timer_27C != 0) { player->timer_27C--; - player->unk_2B4 = 1; + player->unk_2B4 = true; if (D_80177E80 > 0) { Math_SmoothStepToF(&D_801779A8[player->num], D_80177E80 * 10.0f, 1.0f, 5.0f, 0.0f); } @@ -4548,13 +4548,13 @@ void func_800B2574(Player* player) { } } if (!(gInputHold->button & gBrakeButton[player->num]) && !(gInputHold->button & gBoostButton[player->num])) { - player->unk_2B4 = 1; + player->unk_2B4 = true; if (player->unk_2BC == 0.0f) { - player->unk_2B4 = 0; + player->unk_2B4 = false; } } if ((gInputHold->button & gBoostButton[player->num]) && !(gInputHold->button & gBrakeButton[player->num]) && - (player->state_1C8 != PLAYERSTATE_1C8_5) && (player->unk_2B4 == 0)) { + (player->state_1C8 != PLAYERSTATE_1C8_5) && !player->unk_2B4) { if (player->unk_2BC == 0.0f) { func_800A5FA0(&player->unk_460, 0x09000002, player->num); player->unk_194 = 5.0f; @@ -4573,7 +4573,7 @@ void func_800B2574(Player* player) { player->unk_2BC += sp28; if (player->unk_2BC > 90.0f) { player->unk_2BC = 90.0f; - player->unk_2B4 = 1; + player->unk_2B4 = true; } player->unk_25C += 0.04f; if (player->unk_25C > 0.6f) { @@ -4592,7 +4592,7 @@ void func_800B2574(Player* player) { player->unk_2BC -= sp2C; if (player->unk_2BC <= 0.0f) { player->unk_2BC = 0.0f; - player->unk_2B4 = 0; + player->unk_2B4 = false; } } if (player->unk_110 > 0.0f) { @@ -4648,7 +4648,7 @@ void func_800B2C00(Player* player) { } } if ((gInputHold->button & gBrakeButton[player->num]) && !(gInputHold->button & gBoostButton[player->num]) && - (player->state_1C8 != PLAYERSTATE_1C8_5) && (player->unk_2B4 == 0)) { + (player->state_1C8 != PLAYERSTATE_1C8_5) && !player->unk_2B4) { if (player->unk_2BC == 0.0f) { func_800A5FA0(&player->unk_460, 0x09000003, player->num); if ((gLevelMode == LEVELMODE_ALL_RANGE) && (gInputPress->button & gBrakeButton[player->num])) { @@ -4663,7 +4663,7 @@ void func_800B2C00(Player* player) { } player->unk_2BC += sp30; if (player->unk_2BC > 90.0f) { - player->unk_2B4 = 1; + player->unk_2B4 = true; player->unk_2BC = 90.0f; } player->unk_190 = 0.3f; @@ -4678,7 +4678,7 @@ void func_800B2C00(Player* player) { player->unk_2BC -= sp34; if (player->unk_2BC <= 0.0f) { player->unk_2BC = 0.0f; - player->unk_2B4 = 0; + player->unk_2B4 = false; } if (player->unk_110 < 0.0f) { player->unk_110 += 0.5f; @@ -4693,18 +4693,18 @@ void func_800B2C00(Player* player) { void func_800B3010(Player* player) { f32 sp2C; - if (player->unk_2B8 == 0) { + if (!player->unk_2B8) { Math_SmoothStepToF(&player->unk_2BC, 0.0f, 1.0f, 1.0f, 0.0f); } - player->unk_2B8 = 0; + player->unk_2B8 = false; if (player->unk_2BC == 0.0f) { - player->unk_2B4 = 0; + player->unk_2B4 = false; } else if (!(gInputHold->button & Z_TRIG) && !(gInputHold->button & R_TRIG) && !(gInputHold->button & gBoostButton[player->num]) && !(gInputHold->button & gBrakeButton[player->num])) { - player->unk_2B4 = 1; + player->unk_2B4 = true; } sp2C = 20.0f; - if ((gInputHold->button & gBoostButton[player->num]) && (player->unk_2B4 == 0)) { + if ((gInputHold->button & gBoostButton[player->num]) && !player->unk_2B4) { if (player->unk_2BC == 0.0f) { player->unk_194 = 4.0f; player->unk_190 = 4.0f; @@ -4713,22 +4713,22 @@ void func_800B3010(Player* player) { Math_SmoothStepToF(&D_801779A8[player->num], 30.0f, 1.0f, 10.0f, 0.0f); player->unk_190 = 2.0f; sp2C = 35.0f; - player->unk_2B8 = 1; + player->unk_2B8 = true; Math_SmoothStepToF(&player->unk_2BC, 90.0f, 1.0f, 1.0f, 0.0f); if (player->unk_2BC >= 90.0f) { - player->unk_2B4 = 1; + player->unk_2B4 = true; } } - if ((gInputHold->button & gBrakeButton[player->num]) && (player->unk_2B4 == 0)) { + if ((gInputHold->button & gBrakeButton[player->num]) && !player->unk_2B4) { if (player->unk_2BC == 0.0f) { func_800A5FA0(&player->unk_460, 0x09000003, player->num); } Math_SmoothStepToF(&D_801779A8[player->num], 20.0f, 1.0f, 10.0f, 0.0f); sp2C = 5.0f; - player->unk_2B8 = 1; + player->unk_2B8 = true; Math_SmoothStepToF(&player->unk_2BC, 90.0f, 1.0f, 1.0f, 0.0f); if (player->unk_2BC >= 90.0f) { - player->unk_2B4 = 1; + player->unk_2B4 = true; } } Math_SmoothStepToF(&player->unk_0D0, sp2C, 0.1f, 2.0f, 0.001f); @@ -4739,7 +4739,7 @@ void func_800B3314(Player* player) { f32 temp2; player->unk_0D4 = 3.0f; - if ((gInputHold->button & Z_TRIG) && (player->unk_2B4 == 0)) { + if ((gInputHold->button & Z_TRIG) && !player->unk_2B4) { if (player->unk_2BC == 0.0f) { func_800A5FA0(&player->unk_460, 0x09000002, player->num); } @@ -4749,10 +4749,10 @@ void func_800B3314(Player* player) { player->unk_12C = 50.0f; } Math_SmoothStepToF(&player->unk_170, 1.0f, 1.0f, 0.4f, 0.0f); - player->unk_2B8 = 1; + player->unk_2B8 = true; Math_SmoothStepToF(&player->unk_2BC, 90.0f, 1.0f, 0.7f, 0.0f); if (player->unk_2BC >= 90.0f) { - player->unk_2B4 = 1; + player->unk_2B4 = true; } } else { if (player->unk_12C > 0.0f) { @@ -4767,7 +4767,7 @@ void func_800B3314(Player* player) { } } } - if ((gInputHold->button & R_TRIG) && (player->unk_2B4 == 0)) { + if ((gInputHold->button & R_TRIG) && !player->unk_2B4) { if (player->unk_2BC == 0.0f) { func_800A5FA0(&player->unk_460, 0x09000002, player->num); } @@ -4777,10 +4777,10 @@ void func_800B3314(Player* player) { player->unk_12C = -50.0f; } Math_SmoothStepToF(&player->unk_16C, 1.0f, 1.0f, 0.4f, 0.0f); - player->unk_2B8 = 1; + player->unk_2B8 = true; Math_SmoothStepToF(&player->unk_2BC, 90.0f, 1.0f, 0.7f, 0.0f); if (player->unk_2BC >= 90.0f) { - player->unk_2B4 = 1; + player->unk_2B4 = true; } } else if (player->unk_12C < 0.0f) { player->unk_188 += 1.5f; @@ -4794,7 +4794,7 @@ void func_800B3314(Player* player) { } } if ((player->unk_16C > 0.2f) && (player->unk_170 > 0.2f) && (player->timer_220 == 0)) { - player->unk_12C += (((__cosf((f32) gFrameCount * M_DTOR * 8.0f) * 10.0f) - player->unk_12C) * 0.1f); + player->unk_12C += (((__cosf(gFrameCount * M_DTOR * 8.0f) * 10.0f) - player->unk_12C) * 0.1f); Math_SmoothStepToAngle(&player->unk_0E4, 0.0f, 0.05f, 5.0f, 0.00001f); Math_SmoothStepToAngle(&player->unk_0EC, 0.0f, 0.05f, 5.0f, 0.00001f); temp = gInputPress->stick_y; @@ -4914,7 +4914,7 @@ void func_800B39E0(Player* player) { if ((gLevelMode != LEVELMODE_UNK_2) && ((player->unk_0D8.x != 0.f) || (player->unk_0D8.y != 0.f) || (player->unk_0D8.z != 0.f)) && ((player->unk_1A4 >= 40) || (player->unk_1A4 == 21))) { - player->unk_2B4 = 1; + player->unk_2B4 = true; player->unk_0E4 = 0; player->unk_0E8 = 0; Math_SmoothStepToF(&player->unk_110, 0, 1.0f, 5.0f, 0); @@ -5471,7 +5471,7 @@ void func_800B48BC(Player* player) { Math_SmoothStepToF(&player->unk_09C, sp1C8, 1.0f, 10.0f, 0.0f); if (player->form == FORM_ARWING) { Math_SmoothStepToF(&player->unk_194, player->unk_190, 0.5f, 5.0f, 0.0f); - if ((player->unk_2B4 != 0) && (gPlayer->state_1C8 == PLAYERSTATE_1C8_3)) { + if (player->unk_2B4 && (gPlayer->state_1C8 == PLAYERSTATE_1C8_3)) { player->unk_190 = 0.5f; } else { player->unk_190 = 1.0f; diff --git a/src/main/fox_std_lib.c b/src/main/fox_std_lib.c index 86e4d71a..4299a90b 100644 --- a/src/main/fox_std_lib.c +++ b/src/main/fox_std_lib.c @@ -837,7 +837,7 @@ void* sSmallCharTex[] = { void Graphics_DisplayLargeText(s32 xPos, s32 yPos, f32 xScale, f32 yScale, char* text) { u32 charIndex; - f32 xPosCurrent = (f32) xPos; + f32 xPosCurrent = xPos; s32 pad4C; s32 width; s32 startPrint = false; @@ -1110,7 +1110,7 @@ void Graphics_DisplayLargeNumber(s32 xPos, s32 yPos, s32 number) { void Graphics_DisplaySmallText(s32 xPos, s32 yPos, f32 xScale, f32 yScale, char* text) { u32 var_t0; - f32 xPosCurrent = (f32) xPos; + f32 xPosCurrent = xPos; s32 width; while (text[0] != 0) { diff --git a/src/main/sf_36930.c b/src/main/sf_36930.c deleted file mode 100644 index 24997fc8..00000000 --- a/src/main/sf_36930.c +++ /dev/null @@ -1,76 +0,0 @@ -#include "global.h" - -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_beam/func_80035D30.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_beam/func_80035DEC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_beam/PlayerShot_Initialize.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_beam/func_80035E78.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_beam/func_80036318.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_beam/func_80036528.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_beam/func_800365E4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_beam/func_800366CC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_beam/func_80036770.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_beam/func_80036874.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_beam/func_80036F88.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_beam/func_80037438.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_beam/func_80037698.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_beam/func_8003774C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_beam/func_80037CF4.s") - -void func_80038140(PlayerShot* shot); -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_beam/func_80038140.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_beam/func_80038F34.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_beam/func_80039210.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_beam/func_80039A50.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_beam/func_8003AF88.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_beam/func_8003AFD8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_beam/func_8003B00C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_beam/func_8003B55C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_beam/func_8003BA80.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_beam/func_8003BAA0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_beam/func_8003BACC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_beam/func_8003BB4C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_beam/func_8003BEF4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_beam/func_8003C008.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_beam/func_8003C3D8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_beam/func_8003C4D0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_beam/func_8003CC08.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_beam/func_8003CF90.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_beam/func_8003D54C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_beam/func_8003D854.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_beam/func_8003D9B8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_beam/func_8003DA0C.s") diff --git a/src/main/sf_3E6F0.c b/src/main/sf_3E6F0.c deleted file mode 100644 index b18aa868..00000000 --- a/src/main/sf_3E6F0.c +++ /dev/null @@ -1,1125 +0,0 @@ -#include "global.h" - -typedef struct { - u8 r, g, b; -} Color_RGB8; - -extern f32 D_8015F960; -extern u8 D_8015F964; -extern f32 D_8015F968; -extern f32 D_8015F96C; -extern f32 D_8015F970; -extern s32 D_8015F974; -extern s32 D_8015F978; -extern s32 D_8015F97C; -extern s32 D_8015F980; -extern f32 D_8015F984; -// extern s32 D_8015F988[0x67F] // enormous unused space. D_8015F984[0x680] perhaps? Fits the divisible by 13 pattern -extern f32 D_80161394; // can be static - -extern f32 D_800C9C30; -extern u16 D_800C9C34; -// D_800C9C38 missing -extern u16 D_800C9C3C[16]; -extern Gfx* D_800C9C5C[13]; -extern Gfx* D_800C9C90[13]; -extern f32 D_800C9CC4[13]; -extern f32 D_800C9CF8[13]; -extern f32 D_800C9D2C[13]; -extern f32 D_800C9D60[13]; -extern Color_RGB8 D_800C9D94[13]; -extern Color_RGB8 D_800C9DBC[13]; -extern s32 D_800C9DE4[13]; -extern s32 D_800C9E18[13]; -extern s32 D_800C9E4C[2]; -extern s32 D_800C9E54[2]; -extern f32 D_800C9E5C[2]; -extern f32 D_800C9E64[4]; -extern f32 D_800C9E74[4]; - -void func_8003DAF0(void) { - f32 var_fa0; - f32 var_fv1; - s16 temp_ft0; - s16 temp_ft2; - s32 i; - s32 var_s2; - f32 sp70; - f32 spf6C; - f32 spf68; - f32 spf64; - f32* sp60; - f32* sp5C; - u32* sp58; - - gDPPipeSync(gMasterDisp++); - gDPSetCycleType(gMasterDisp++, G_CYC_FILL); - gDPSetCombineMode(gMasterDisp++, G_CC_SHADE, G_CC_SHADE); - gDPSetRenderMode(gMasterDisp++, G_RM_OPA_SURF, G_RM_OPA_SURF2); - var_s2 = D_80178410; - if (var_s2 != 0) { - if (D_80178420 >= 480.0f) { - D_80178420 -= 480.0f; - } - if (D_80178424 >= 360.0f) { - D_80178424 -= 360.0f; - } - if (D_80178420 < 0.0f) { - D_80178420 += 480.0f; - } - if (D_80178424 < 0.0f) { - D_80178424 += 360.0f; - } - spf68 = D_80178420; - spf64 = D_80178424; - - sp60 = D_80178288; - sp5C = D_80178290; - sp58 = D_80178298; - - if (gGameState != 7) { - var_s2 = 1000; - } - sp70 = __cosf(D_80178428); - spf6C = __sinf(D_80178428); - for (i = 0; i < var_s2; i++, sp5C++, sp60++, sp58++) { - var_fv1 = *sp60 + spf68; - var_fa0 = *sp5C + spf64; - if (var_fv1 >= 400.0f) { - var_fv1 -= 480.0f; - } - var_fv1 -= 160.0f; - if (var_fa0 >= 300.0f) { - var_fa0 -= 360.0f; - } - var_fa0 -= 120.0f; - - temp_ft2 = (sp70 * var_fv1) + (spf6C * var_fa0) + 160.0f; - temp_ft0 = (-spf6C * var_fv1) + (sp70 * var_fa0) + 120.0f; - if ((temp_ft2 >= 0) && (temp_ft2 < SCREEN_WIDTH) && (temp_ft0 > 0) && (temp_ft0 < SCREEN_HEIGHT)) { - gDPPipeSync(gMasterDisp++); - gDPSetFillColor(gMasterDisp++, *sp58); - gDPFillRectangle(gMasterDisp++, temp_ft2, temp_ft0, temp_ft2, temp_ft0); - } - } - } - gDPPipeSync(gMasterDisp++); - gDPSetColorDither(gMasterDisp++, G_CD_MAGICSQ); -} - -void func_8003DE68(s32 arg0, s32 arg1) { - f32 var_fa0; // 8C - f32 var_fv1; // 88 - s16 temp_ft0; // 84 - s16 temp_ft2; - s32 i; // 80 - s32 var_s2; // 7C - f32 sp70; // 78 - f32 spf6C; // 74 - f32 spf68; // 70 - f32 spf64; // 6C - f32* sp60; // 68 - f32* sp5C; // 64 - u32* sp58; // 60 - - gDPPipeSync(gMasterDisp++); - gDPSetCycleType(gMasterDisp++, G_CYC_FILL); - gDPSetCombineMode(gMasterDisp++, G_CC_SHADE, G_CC_SHADE); - gDPSetRenderMode(gMasterDisp++, G_RM_OPA_SURF, G_RM_OPA_SURF2); - - if (D_80178420 >= 480.0f) { - D_80178420 -= 480.0f; - } - if (D_80178424 >= 360.0f) { - D_80178424 -= 360.0f; - } - if (D_80178420 < 0.0f) { - D_80178420 += 480.0f; - } - if (D_80178424 < 0.0f) { - D_80178424 += 360.0f; - } - - spf68 = D_80178420; - spf64 = D_80178424; - - sp60 = D_80178288; - sp5C = D_80178290; - sp58 = D_80178298; - var_s2 = 500; - - sp70 = __cosf(D_80178428); - spf6C = __sinf(D_80178428); - for (i = 0; i < var_s2; i++, sp5C++, sp60++, sp58++) { - var_fv1 = *sp60 + spf68; - var_fa0 = *sp5C + spf64; - if (var_fv1 >= 400.0f) { - var_fv1 -= 480.0f; - } - var_fv1 -= 160.0f; - if (var_fa0 >= 300.0f) { - var_fa0 -= 360.0f; - } - var_fa0 -= 120.0f; - - temp_ft2 = (sp70 * var_fv1) + (spf6C * var_fa0) + 160.0f; - temp_ft0 = (-spf6C * var_fv1) + (sp70 * var_fa0) + 120.0f; - if ((temp_ft2 >= 0) && (temp_ft2 < SCREEN_WIDTH) && (arg0 < temp_ft0) && (temp_ft0 < arg1)) { - gDPPipeSync(gMasterDisp++); - gDPSetFillColor(gMasterDisp++, *sp58); - gDPFillRectangle(gMasterDisp++, temp_ft2, temp_ft0, temp_ft2, temp_ft0); - } - } - gDPPipeSync(gMasterDisp++); - gDPSetColorDither(gMasterDisp++, G_CD_MAGICSQ); -} - -void func_8003E1E0(void) { -} - -#ifdef NON_MATCHING -void func_8003E1E8(void) { - f32 sp13C; - f32 sp138; - f32 sp134; - f32 sp130; - f32 sp12C; - f32 sp128; - s32 sp124; - u8 var_s0; - s32 sp11C; - - if (D_80177AB0 != 0) { - var_s0 = gLevelType; - if ((gCurrentLevel == LEVEL_VERSUS) && (gVersusStage == VS_STAGE_SECTOR_Z)) { - var_s0 = LEVELTYPE_PLANET; - } - if (gCurrentLevel == LEVEL_TRAINING) { - var_s0 = LEVELTYPE_SPACE; - } - sp11C = gCurrentLevel; - Matrix_Push(&gGfxMatrix); - if (D_80177C70 == 2) { - Matrix_Scale(gGfxMatrix, 1.2f, 1.2f, 1.0f, 1); - } - switch (var_s0) { - case LEVELTYPE_PLANET: - RCP_SetupDL(&gMasterDisp, 0x11); - switch (sp11C) { - case LEVEL_FORTUNA: - case LEVEL_KATINA: - case LEVEL_VENOM_2: - case LEVEL_VERSUS: - sp134 = (gPlayer[gPlayerNum].unk_05C * -6000.0f) - (gPlayer[gPlayerNum].camEye.y * 0.4f); - sp13C = Math_ModF(Math_RadToDeg(gPlayer[gPlayerNum].unk_058) * -20.222221f * 5.0f, 7280.0f); - Matrix_RotateZ(gGfxMatrix, gPlayer[gPlayerNum].unk_034 * 0.017453292f, 1); - Matrix_Translate(gGfxMatrix, sp13C, -2000.0f + sp134, -6000.0f, 1); - if (gCurrentLevel == LEVEL_FORTUNA) { - Matrix_Translate(gGfxMatrix, 0.0f, -2000.0f, 0, 1); - } else if (gCurrentLevel == LEVEL_KATINA) { - Matrix_Translate(gGfxMatrix, 0.0f, -2500.0f, 0, 1); - } - Matrix_SetGfxMtx(&gMasterDisp); - switch (gCurrentLevel) { - case LEVEL_VERSUS: - if (gVersusStage == VS_STAGE_CORNERIA) { - gSPDisplayList(gMasterDisp++, D_302D4D0); - } else if (gVersusStage == VS_STAGE_KATINA) { - gSPDisplayList(gMasterDisp++, D_30146B0); - } else { - gSPDisplayList(gMasterDisp++, D_3011E40); - } - break; - case LEVEL_FORTUNA: - gSPDisplayList(gMasterDisp++, D_600D9F0); - break; - case LEVEL_KATINA: - gSPDisplayList(gMasterDisp++, D_600F1D0); - break; - case LEVEL_VENOM_2: - gSPDisplayList(gMasterDisp++, D_600F670); - break; - } - Matrix_Translate(gGfxMatrix, 7280.0f, 0.0f, 0.0f, 1); - Matrix_SetGfxMtx(&gMasterDisp); - switch (gCurrentLevel) { - case LEVEL_VERSUS: - if (gVersusStage == VS_STAGE_CORNERIA) { - gSPDisplayList(gMasterDisp++, D_302D4D0); - } else if (gVersusStage == VS_STAGE_KATINA) { - gSPDisplayList(gMasterDisp++, D_30146B0); - } else { - gSPDisplayList(gMasterDisp++, D_3011E40); - } - break; - case LEVEL_FORTUNA: - gSPDisplayList(gMasterDisp++, D_600D9F0); - break; - case LEVEL_KATINA: - gSPDisplayList(gMasterDisp++, D_600F1D0); - break; - case LEVEL_VENOM_2: - gSPDisplayList(gMasterDisp++, D_600F670); - break; - } - break; - case LEVEL_CORNERIA: - case LEVEL_VENOM_1: - sp134 = (gPlayer[gPlayerNum].unk_05C * -6000.0f) - (gPlayer[gPlayerNum].camEye.y * 0.6f); - sp13C = Math_ModF(Math_RadToDeg(gPlayer[gPlayerNum].unk_058) * -20.222221f * 5.0f, 7280.0f); - Matrix_RotateZ(gGfxMatrix, gPlayer[gPlayerNum].unk_034 * 0.017453292f, 1); - Matrix_Translate(gGfxMatrix, sp13C, -2000.0f + sp134, -6000.0f, 1); - Matrix_SetGfxMtx(&gMasterDisp); - switch (gCurrentLevel) { - case LEVEL_CORNERIA: - gSPDisplayList(gMasterDisp++, D_60059F0); - break; - case LEVEL_VENOM_1: - gSPDisplayList(gMasterDisp++, D_60046F0); - break; - } - Matrix_Translate(gGfxMatrix, 7280.0f, 0.0f, 0.0f, 1); - Matrix_SetGfxMtx(&gMasterDisp); - switch (gCurrentLevel) { - case LEVEL_CORNERIA: - gSPDisplayList(gMasterDisp++, D_60059F0); - break; - case LEVEL_VENOM_1: - gSPDisplayList(gMasterDisp++, D_60046F0); - break; - } - break; - case LEVEL_VENOM_ANDROSS: - if (D_80177AB0 != 6) { - if ((D_80177AB0 == 2) || (D_80177AB0 == 7)) { - Matrix_RotateZ(gGfxMatrix, gPlayer[gPlayerNum].unk_034 * 0.017453292f, 1); - Matrix_Translate(gGfxMatrix, 0.0f, -4000.0f, -7000.0f, 1); - Matrix_SetGfxMtx(&gMasterDisp); - gSPDisplayList(gMasterDisp++, D_600F670); - } else if ((D_80177AB0 == 3) || (D_80177AB0 == 4)) { - RCP_SetupDL(&gMasterDisp, 0x3E); - if (D_80177AB0 == 4) { - if (!(gFrameCount & 8)) { - Math_SmoothStepToF(&D_80161394, 0.0f, 1.0f, 30.0f, 0); - } else { - Math_SmoothStepToF(&D_80161394, 120.0f, 1.0f, 30.0f, 0); - } - } else { - D_80161394 = 255.0f; - } - gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, (s32) D_80161394, (s32) D_80161394, - (s32) D_800C9C30); - - sp134 = - (gPlayer[gPlayerNum].unk_05C * -6000.0f) - (gPlayer[gPlayerNum].camEye.y * 0.4f); - sp13C = - Math_ModF(Math_RadToDeg(gPlayer[gPlayerNum].unk_058) * -20.222221f * 5.0f, 7280.0f); - Matrix_RotateZ(gGfxMatrix, gPlayer[gPlayerNum].unk_034 * 0.017453292f, 1); - Matrix_Translate(gGfxMatrix, sp13C, -2000.0f + sp134, -6000.0f, 1); - Matrix_Translate(gGfxMatrix, 0.0f, -2500.0f, 0.0f, 1); - Matrix_SetGfxMtx(&gMasterDisp); - gSPDisplayList(gMasterDisp++, D_60038E0); - Matrix_Translate(gGfxMatrix, 7280.0f, 0.0f, 0.0f, 1); - Matrix_SetGfxMtx(&gMasterDisp); - gSPDisplayList(gMasterDisp++, D_60038E0); - } else { - RCP_SetupDL(&gMasterDisp, 0x3E); - if (D_80177AB0 == 5) { - gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 255, 64); - } else { - gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 0, 255, 128, (s32) D_800C9C30); - } - Matrix_Translate(gGfxMatrix, 0.0f, 0.0f, -290.0f, 1); - Matrix_Push(&gGfxMatrix); - Matrix_Scale(gGfxMatrix, 11.0f, 11.0f, 1.0f, 1); - Matrix_RotateZ(gGfxMatrix, - (gPlayer->unk_034 + ((f32) gFrameCount * 1.5f)) * 0.017453292f, 1); - Matrix_SetGfxMtx(&gMasterDisp); - gSPDisplayList(gMasterDisp++, D_C039208); - Matrix_Pop(&gGfxMatrix); - if (D_80177AB0 != 5) { - Matrix_Push(&gGfxMatrix); - Matrix_Scale(gGfxMatrix, 10.0f, 10.0f, 1.0f, 1); - Matrix_RotateZ(gGfxMatrix, - (gPlayer->unk_034 + ((f32) gFrameCount * -1.3f)) * 0.017453292f, 1); - Matrix_SetGfxMtx(&gMasterDisp); - gSPDisplayList(gMasterDisp++, D_C039208); - Matrix_Pop(&gGfxMatrix); - } - } - } - break; - case LEVEL_AQUAS: - if (gPlayer->state_1C8 == PLAYERSTATE_1C8_2) { - sp13C = ((Math_RadToDeg(gPlayer[gPlayerNum].unk_058) - gPlayer[gPlayerNum].unk_114)); - sp134 = (gPlayer[gPlayerNum].unk_05C * -7000.0f) - (gPlayer[gPlayerNum].camEye.y * 0.6f); - sp13C = Math_ModF(sp13C * -40.44444f * 2.0f, 7280.0f); - RCP_SetupDL_17(); - Matrix_RotateZ(gGfxMatrix, gPlayer[gPlayerNum].unk_034 * 0.017453292f, 1); - Matrix_Scale(gGfxMatrix, 1.5f, 1.0f, 1.0f, 1); - Matrix_Push(&gGfxMatrix); - Matrix_Translate(gGfxMatrix, sp13C, sp134, -7000.0f, 1); - Matrix_SetGfxMtx(&gMasterDisp); - if (gPlayer->state_1C8 == PLAYERSTATE_1C8_2) { - gSPDisplayList(gMasterDisp++, D_601AFF0); - } else { - gSPDisplayList(gMasterDisp++, D_601C080); - } - - if (sp13C < 0) { - sp13C = 1.0f; - } else { - sp13C = -1.0f; - } - Matrix_Translate(gGfxMatrix, 7280.0f * sp13C, 0.0f, 0.0f, 1); - Matrix_SetGfxMtx(&gMasterDisp); - if (gPlayer->state_1C8 == PLAYERSTATE_1C8_2) { - gSPDisplayList(gMasterDisp++, D_601AFF0); - - } else { - gSPDisplayList(gMasterDisp++, D_601C080); - } - Matrix_Pop(&gGfxMatrix); - } - break; - case LEVEL_SOLAR: - case LEVEL_ZONESS: - case LEVEL_MACBETH: - case LEVEL_TITANIA: - sp13C = (Math_RadToDeg(gPlayer[gPlayerNum].unk_058) - gPlayer[gPlayerNum].unk_114) * - -40.44444f * 2.0f; - sp134 = (gPlayer[gPlayerNum].unk_05C * -7000.0f) - (gPlayer[gPlayerNum].camEye.y * 0.6f); - if ((gCurrentLevel == LEVEL_TITANIA) && (gPlayer->state_1C8 == PLAYERSTATE_1C8_2) && - (gPlayer->unk_1D0 < 3)) { - D_8015F968 += __sinf(gPlayer->unk_058) * 20.0f; - sp13C += D_8015F968; - } - if ((gCurrentLevel == LEVEL_SOLAR) && (gPlayer->state_1C8 == PLAYERSTATE_1C8_2) && - (gPlayer->unk_1D0 >= 2) && (gPlayer->camEye.z <= -1900.0f)) { - D_8015F968 = __sinf(gPlayer->unk_05C) * 7000.0f; - sp134 -= fabsf(D_8015F968); - } - sp13C = Math_ModF(sp13C, 7280.0f); - RCP_SetupDL_17(); - Matrix_RotateZ(gGfxMatrix, gPlayer[gPlayerNum].unk_034 * 0.017453292f, 1); - Matrix_Scale(gGfxMatrix, 1.5f, 1.0f, 1.0f, 1); - if ((gCurrentLevel == LEVEL_TITANIA) || (gCurrentLevel == LEVEL_ZONESS)) { - Matrix_Translate(gGfxMatrix, sp13C, -3000.0f + sp134, -7000.0f, 1); - } else if (gCurrentLevel == LEVEL_SOLAR) { - Matrix_Translate(gGfxMatrix, sp13C, -3500.0f + sp134, -7000.0f, 1); - } else if (gCurrentLevel == LEVEL_MACBETH) { - Matrix_Translate(gGfxMatrix, sp13C, -4000.0f + sp134, -7000.0f, 1); - } - Matrix_SetGfxMtx(&gMasterDisp); - if (gCurrentLevel == LEVEL_TITANIA) { - gSPDisplayList(gMasterDisp++, D_6000A80); - } else if (gCurrentLevel == LEVEL_MACBETH) { - gSPDisplayList(gMasterDisp++, D_6019220); - } else if (gCurrentLevel == LEVEL_ZONESS) { - gSPDisplayList(gMasterDisp++, D_6013480); - } else if (gCurrentLevel == LEVEL_SOLAR) { - gSPDisplayList(gMasterDisp++, D_601E150); - } - if (sp13C < 0) { - sp13C = 1.0f; - } else { - sp13C = -1.0f; - } - Matrix_Translate(gGfxMatrix, 7280.0f * sp13C, 0.0f, 0.0f, 1); - Matrix_SetGfxMtx(&gMasterDisp); - if (gCurrentLevel == LEVEL_TITANIA) { - gSPDisplayList(gMasterDisp++, D_6000A80); - } else if (gCurrentLevel == LEVEL_MACBETH) { - gSPDisplayList(gMasterDisp++, D_6019220); - } else if (gCurrentLevel == LEVEL_ZONESS) { - gSPDisplayList(gMasterDisp++, D_6013480); - } else if (gCurrentLevel == LEVEL_SOLAR) { - gSPDisplayList(gMasterDisp++, D_601E150); - } - break; - } - break; - case LEVELTYPE_SPACE: - if (gPlayer->state_1C8 != PLAYERSTATE_1C8_8) { - Matrix_Push(&gGfxMatrix); - sp12C = Math_RadToDeg(gPlayer->unk_058); - sp130 = Math_RadToDeg(gPlayer->unk_05C); - if (((sp12C < 45.0f) || (sp12C > 315.0f)) && ((sp130 < 40.0f) || (sp130 > 325.0f))) { - RCP_SetupDL_36(); - sp138 = D_80178420; - sp134 = D_80178424; - if (((gCurrentLevel == LEVEL_SECTOR_X) || (gCurrentLevel == LEVEL_METEO)) && - (D_8017827C == 1)) { - sp11C = LEVEL_WARP_ZONE; - } - if (sp11C == LEVEL_SECTOR_X) { - sp138 = Math_ModF(sp138 + 60.0f, 480.0f); - sp134 = Math_ModF(sp134 + 360.0f - 40.0f, 360.0f); - } else if (sp11C == LEVEL_TRAINING) { - sp138 = Math_ModF(sp138 - 30.0f, 480.0f); - sp134 = Math_ModF(sp134 + 360.0f - 40.0f, 360.0f); - } else if ((sp11C == LEVEL_SECTOR_Y) && (gLevelMode == LEVELMODE_ON_RAILS)) { - sp138 = Math_ModF(sp138 + 480.0f - 60.0f, 480.0f); - sp134 = Math_ModF(sp134, 360.0f); - } else if (sp11C == LEVEL_FORTUNA) { - sp138 = Math_ModF(sp138 - 34.5f, 480.0f); - sp134 = Math_ModF(sp134 + 19.0f, 360.0f); - } else if (sp11C == LEVEL_BOLSE) { - if ((gPlayer->state_1C8 != PLAYERSTATE_1C8_7) || (gPlayer->unk_1D0 < 10)) { - sp134 = Math_ModF(sp134 + 360.0f - 100.0f, 360.0f); - } - } else { - sp138 = Math_ModF(sp138, 480.0f); - sp134 = Math_ModF(sp134, 360.0f); - } - if ((sp12C < 180.0f) && (sp138 > 380.0f)) { - sp138 = -(480.0f - sp138); - } - if ((sp130 > 180.0f) && (sp134 > 280.0f)) { - sp134 = -(360.0f - sp134); - } - Matrix_RotateZ(gGfxMatrix, D_80178428, 1); - switch (sp11C) { - case LEVEL_WARP_ZONE: - if ((s32) D_8015F960 != 0) { - RCP_SetupDL_62(); - gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 255, (s32) D_8015F960); - Matrix_Translate(gGfxMatrix, sp138 - 120.0f, -(sp134 - 120.0f), -290.0f, 1); - Matrix_Scale(gGfxMatrix, 1.7f, 1.7f, 1.0f, 1); - Matrix_Push(&gGfxMatrix); - Matrix_RotateZ(gGfxMatrix, -(f32) gFrameCount * 10.0f * 0.017453292f, 1); - Matrix_Scale(gGfxMatrix, 1.07f, 0.93f, 1.0f, 1); - Matrix_RotateZ(gGfxMatrix, (f32) gFrameCount * 10.0f * 0.017453292f, 1); - Matrix_Scale(gGfxMatrix, 1.07f, 0.93f, 1.0f, 1); - Matrix_SetGfxMtx(&gMasterDisp); - gSPDisplayList(gMasterDisp++, D_7001540); - Matrix_Pop(&gGfxMatrix); - } - break; - case LEVEL_METEO: - if ((gPlayer->state_1C8 == PLAYERSTATE_1C8_7) && (D_80177A80 > 260)) { - Matrix_Translate(gGfxMatrix, sp138 - 120.0f, -(sp134 - 120.0f) - 30.0f, -290.0f, 1); - Matrix_Scale(gGfxMatrix, 0.5f, 0.5f, 1.0f, 1); - Matrix_SetGfxMtx(&gMasterDisp); - gSPDisplayList(gMasterDisp++, D_600DDF0); - } else if (D_80177D20 > 185668.0f) { - Matrix_Translate(gGfxMatrix, sp138 - 120.0f, -(sp134 - 120.0f) - 130.0f, -290.0f, - 1); - Matrix_Scale(gGfxMatrix, 0.4f, 0.4f, 1.0f, 1); - Matrix_SetGfxMtx(&gMasterDisp); - gSPDisplayList(gMasterDisp++, D_600DDF0); - } - break; - case LEVEL_SECTOR_X: - if (gOverlayStage == 0) { - Matrix_Translate(gGfxMatrix, sp138 - 120.0f, -(sp134 - 120.0f), -290.0f, 1); - Matrix_Scale(gGfxMatrix, 3.0f, 3.0f, 1.0f, 1); - Matrix_SetGfxMtx(&gMasterDisp); - RCP_SetupDL_62(); - gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 255, 192); - gSPDisplayList(gMasterDisp++, D_6029890); - } - break; - case LEVEL_TRAINING: - Matrix_Translate(gGfxMatrix, sp138 - 120.0f, -(sp134 - 120.0f), -290.0f, 1); - Matrix_Scale(gGfxMatrix, 0.2f, 0.2f, 1.0f, 1); - Matrix_SetGfxMtx(&gMasterDisp); - RCP_SetupDL_62(); - gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 255, 255); - gSPDisplayList(gMasterDisp++, D_6003760); - break; - case LEVEL_AREA_6: - case LEVEL_UNK_4: - sp128 = (D_80177D20 * 0.00004f) + 0.5f; - if (sp128 > 3.5f) { - sp128 = 3.5f; - } - if (gPlayer->state_1C8 == PLAYERSTATE_1C8_7) { - sp128 = D_8015F984; - if (sp128 > 3.5f) { - sp128 = 3.5f; - } - } - sp128 = sp128; - Matrix_Translate(gGfxMatrix, sp138 - 120.0f, -(sp134 - 120.0f), -290.0f, 1); - Matrix_Scale(gGfxMatrix, sp128 * 0.75, sp128 * 0.75f, 1.0f, 1); - Matrix_SetGfxMtx(&gMasterDisp); - gSPDisplayList(gMasterDisp++, D_601BB40); - break; - case LEVEL_FORTUNA: - sp128 = 1.5f; - if ((D_80177A80 > 400) && (D_80177930 == 0)) { - sp128 = 0.75f; - } - Matrix_Translate(gGfxMatrix, sp138 - 120.0f, -(sp134 - 120.0f), -290.0f, 1); - Matrix_Scale(gGfxMatrix, sp128, sp128, sp128, 1); - Matrix_SetGfxMtx(&gMasterDisp); - gSPDisplayList(gMasterDisp++, D_600B4B0); - break; - case LEVEL_BOLSE: - sp128 = 1.0f; - if ((D_80177A80 > 500) && (gPlayer->state_1C8 == PLAYERSTATE_1C8_7)) { - sp128 = 1.3f; - } - Matrix_Translate(gGfxMatrix, sp138 - 120.0f, -(sp134 - 120.0f), -290.0f, 1); - Matrix_Scale(gGfxMatrix, sp128, sp128, sp128, 1); - Matrix_SetGfxMtx(&gMasterDisp); - gSPDisplayList(gMasterDisp++, D_600D190); - break; - case LEVEL_SECTOR_Z: - Matrix_Translate(gGfxMatrix, sp138 - 120.0f, -(sp134 - 120.0f), -290.0f, 1); - Matrix_Scale(gGfxMatrix, 0.5f, 0.5f, 0.5f, 1); - Matrix_RotateX(gGfxMatrix, 1.5707964f, 1); - Matrix_SetGfxMtx(&gMasterDisp); - gSPDisplayList(gMasterDisp++, D_6002F80); - break; - case LEVEL_SECTOR_Y: - Matrix_Translate(gGfxMatrix, sp138 - 120.0f, -(sp134 - 120.0f), -290.0f, 1); - Matrix_Scale(gGfxMatrix, 0.4f, 0.4f, 1.0f, 1); - Matrix_SetGfxMtx(&gMasterDisp); - RCP_SetupDL_62(); - gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 255, 192); - gSPDisplayList(gMasterDisp++, D_6001840); - break; - } - } - Matrix_Pop(&gGfxMatrix); - } - if (D_80178414 > 0.0f) { - f32* sp50 = D_80178288; - f32* sp4C = D_80178290; - f32 sp48; - s32 pad; - s32 pad2; - - RCP_SetupDL_14(); - gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 128, 128, 255, 255); - sp124 = 0; - sp48 = 0.0f; - for (sp124 = 0; sp124 < 300; sp124++, sp50++, sp4C++) { - *sp50 = (Rand_ZeroOneSeeded() * 480.0f) - 80.0f; - *sp4C = (Rand_ZeroOneSeeded() * 360.0f) - 60.0f; - Matrix_Push(&gGfxMatrix); - Matrix_Translate(gGfxMatrix, (*sp50 - 160.0f) * 10.0f, (*sp4C - 120.0f) * 10.0f, -5000.0f, 1); - Matrix_RotateZ(gGfxMatrix, sp48, 1); - Matrix_Scale(gGfxMatrix, 10.0f, 1.0f, -D_80178414, 1); - Matrix_SetGfxMtx(&gMasterDisp); - gSPDisplayList(gMasterDisp++, D_800CFD80); - Matrix_Pop(&gGfxMatrix); - sp48 += 0.7853982f; - } - } - break; - } - Matrix_Pop(&gGfxMatrix); - } -} -#else -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/fox_bg/func_8003E1E8.s") -#endif - -void func_80040450(void) { - f32 sp44; - f32 var_fa0; - Color_RGB8* var_s1; - s32* var_s2; - Gfx** var_s3; - f32* var_s4; - s32 i; - s32 temp = gLevelType; - - if ((gCurrentLevel == LEVEL_KATINA) || (gCurrentLevel == LEVEL_VENOM_2) || (gCurrentLevel == LEVEL_VENOM_ANDROSS) || - (gCurrentLevel == LEVEL_SOLAR) || (gCurrentLevel == LEVEL_TRAINING) || gVersusMode) { - return; - } - D_80178380[gPlayerNum] -= D_800C9E4C[temp]; - if (D_80178380[gPlayerNum] > 300) { - D_80178380[gPlayerNum] = 0; - } - if (((gCurrentLevel == LEVEL_AQUAS) && (gPlayer->state_1C8 == PLAYERSTATE_1C8_2)) || - (((gPlayer[gPlayerNum].state_1C8 == PLAYERSTATE_1C8_5) || (gLevelMode == LEVELMODE_ALL_RANGE) || - (gPlayer[gPlayerNum].state_1C8 == PLAYERSTATE_1C8_7)) && - (gLevelType == LEVELTYPE_PLANET) && (gCurrentLevel != LEVEL_TITANIA) && (gCurrentLevel != LEVEL_AQUAS))) { - D_80178390[gPlayerNum] = 128; - D_801783A0[gPlayerNum] = 128; - D_801783B0[gPlayerNum] = 128; - sp44 = Math_RadToDeg(gPlayer[gPlayerNum].unk_058); - var_fa0 = Math_RadToDeg(gPlayer[gPlayerNum].unk_05C); - if (var_fa0 > 180.0f) { - var_fa0 -= 360.0f; - } - sp44 -= 135.0f; - D_801783D0 = -sp44 * 3.2f; - D_801783D4 = ((-var_fa0 * 3.2f) + 130.0f) - ((gPlayer[gPlayerNum].camEye.y - 350.0f) * 0.015f); - if (gCurrentLevel == LEVEL_KATINA) { - D_801783D4 -= 80.0f; - } - if ((gCurrentLevel == LEVEL_ZONESS) && (gPlayer->unk_1D0 >= 2) && (D_80161684 == 0)) { - D_801783D4 -= 60.0f; - D_801783D0 -= 480.0f; - } - if ((D_801783D0 < 120.0f) && (D_801783D0 > -120.0f) && (D_801783D4 < 120.0f)) { - D_80178380[gPlayerNum] += D_800C9E4C[temp] * 2; - if (D_800C9E54[temp] < D_80178380[gPlayerNum]) { - D_80178380[gPlayerNum] = D_800C9E54[temp]; - } - } - } - if (D_80178380[gPlayerNum] != 0) { - Matrix_Push(&gGfxMatrix); - Matrix_RotateZ(gGfxMatrix, gPlayer[gPlayerNum].unk_034 * 0.017453292f, 1); - Matrix_Translate(gGfxMatrix, D_801783D0, D_801783D4, -200.0f, 1); - RCP_SetupDL_62(); - var_s1 = D_800C9D94; - var_s2 = D_800C9DE4; - var_s3 = D_800C9C5C; - var_s4 = D_800C9D2C; - if (gCurrentLevel == LEVEL_KATINA) { - var_s1 = D_800C9DBC; - var_s2 = D_800C9E18; - var_s3 = D_800C9C90; - var_s4 = D_800C9D60; - } - for (i = 0; i < 5; i++, var_s1++, var_s2++, var_s3++, var_s4++) { - Matrix_Push(&gGfxMatrix); - Matrix_Scale(gGfxMatrix, *var_s4, *var_s4, *var_s4, 1); - Matrix_SetGfxMtx(&gMasterDisp); - gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, var_s1->r, var_s1->g, var_s1->b, *var_s2); - gSPDisplayList(gMasterDisp++, *var_s3); - Matrix_Pop(&gGfxMatrix); - } - Matrix_Pop(&gGfxMatrix); - } -} - -void func_80040954(void) { - s32 i; - Color_RGB8* var_s1; - s32* var_s4; - Gfx** var_s5; - f32* var_s6; - f32* var_s7; - f32 temp_fs0; - f32 temp_fs1; - f32 var_fs2; - f32 var_fv0; - - if ((gCurrentLevel != LEVEL_VENOM_ANDROSS) && (gLevelType != LEVELTYPE_SPACE) && (D_80178380[gPlayerNum] != 0)) { - var_fs2 = 1.0f; - if (D_80178380[gPlayerNum] < 80) { - var_fs2 = D_80178380[gPlayerNum] / 80.0f; - } - var_fs2 *= D_800C9E5C[gLevelType]; - Matrix_Push(&gGfxMatrix); - Matrix_RotateZ(gGfxMatrix, gPlayer[gPlayerNum].unk_034 * 0.017453292f, 1); - Matrix_Translate(gGfxMatrix, D_801783D0, D_801783D4, -200.0f, 1); - RCP_SetupDL_62(); - temp_fs0 = D_801783D0 * -0.03f; - temp_fs1 = D_801783D4 * 0.03f; - var_s1 = &D_800C9D94[5]; - var_s4 = &D_800C9DE4[5]; - var_s5 = &D_800C9C5C[5]; - var_s6 = &D_800C9D2C[5]; - var_s7 = &D_800C9CC4[5]; - if (gCurrentLevel == LEVEL_KATINA) { - var_s1 = &D_800C9DBC[5]; - var_s4 = &D_800C9E18[5]; - var_s5 = &D_800C9C90[5]; - var_s6 = &D_800C9D60[5]; - var_s7 = &D_800C9CF8[5]; - } - for (i = 5; i < 13; i++, var_s1++, var_s4++, var_s5++, var_s6++, var_s7++) { - Matrix_Push(&gGfxMatrix); - Matrix_Translate(gGfxMatrix, *var_s7 * temp_fs0, *var_s7 * -temp_fs1, 0.0f, 1); - Matrix_Scale(gGfxMatrix, *var_s6, *var_s6, *var_s6, 1); - if (((i == 5) || (i == 11)) && (gCurrentLevel != LEVEL_KATINA)) { - Matrix_RotateX(gGfxMatrix, 1.5707964f, 1); - } - Matrix_SetGfxMtx(&gMasterDisp); - var_fv0 = *var_s4; - if (i >= 5) { - var_fv0 *= var_fs2; - } - gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, var_s1->r, var_s1->g, var_s1->b, (s32) var_fv0); - gSPDisplayList(gMasterDisp++, *var_s5); - Matrix_Pop(&gGfxMatrix); - } - Matrix_Pop(&gGfxMatrix); - } -} - -void func_80040CDC(void) { -} - -#ifdef NON_MATCHING -void func_80040CE4(void) { - f32 sp1D4; - s32 i; - u32 temp_fv0; - u32 temp_s0; - u16* sp1C4; - Gfx* sp1C0; - - if ((gCurrentLevel != LEVEL_VENOM_2) && ((gPlayer->camEye.y > 4000.0f) || (D_80177A98 == 0))) { - return; - } - if ((gCurrentLevel == LEVEL_BOLSE) && (D_800C9C34 != 0)) { - func_E51970_80192264(); - return; - } - sp1D4 = 0.0f; - if ((D_801784AC != 10) && (D_801784AC != 11)) { - sp1D4 = -4000.0f; - } - if (D_801784AC == 7) { - sp1D4 = 0.0f; - gPlayer[gPlayerNum].unk_0AC = 0.0f; - } - - if (gLevelMode == LEVELMODE_ALL_RANGE) { - Vec3f sp1B4; - Vec3f sp1A8; - f32 temp_fv1; - f32 temp_fa0; - - sp1D4 = 0.0f; - gPlayer[gPlayerNum].unk_0AC = 0.0f; - - sp1B4.x = 0; - sp1B4.y = 0; - sp1B4.z = -5500.0f; - Matrix_RotateY(gCalcMatrix, -gPlayer[gPlayerNum].unk_058, 0); - Matrix_MultVec3fNoTranslate(gCalcMatrix, &sp1B4, &sp1A8); - temp_fv1 = gPlayer[gPlayerNum].camEye.x + sp1A8.x; - temp_fa0 = gPlayer[gPlayerNum].camEye.z + sp1A8.z; - if (temp_fv1 > 6000.0f) { - gPlayer[gPlayerNum].unk_0AC = 12000.0f; - } - if (temp_fv1 > 18000.0f) { - gPlayer[gPlayerNum].unk_0AC = 24000.0f; - } - if (temp_fv1 < -6000.0f) { - gPlayer[gPlayerNum].unk_0AC = -12000.0f; - } - if (temp_fv1 < -18000.0f) { - gPlayer[gPlayerNum].unk_0AC = -24000.0f; - } - if (temp_fa0 > 6000.0f) { - sp1D4 = 12000.0f; - } - if (temp_fa0 > 18000.0f) { - sp1D4 = 24000.0f; - } - if (temp_fa0 < -6000.0f) { - sp1D4 = -12000.0f; - } - if (temp_fa0 < -18000.0f) { - sp1D4 = -24000.0f; - } - } - Matrix_Push(&gGfxMatrix); - Matrix_Translate(gGfxMatrix, gPlayer[gPlayerNum].unk_0AC, -3.0f + D_8017847C, sp1D4, 1); - if (D_80177C70 == 2) { - Matrix_Scale(gGfxMatrix, 1.2f, 1.2f, 1.0f, 1); - } - Matrix_SetGfxMtx(&gMasterDisp); - switch (gCurrentLevel) { - case LEVEL_CORNERIA: - if (D_8017812C != 0) { - RCP_SetupDL_29(gFogRed, gFogGreen, gFogBlue, gFogAlpha, gFogNear, gFogFar); - } else { - RCP_SetupDL_20(gFogRed, gFogGreen, gFogBlue, gFogAlpha, gFogNear, gFogFar); - } - if (gLevelMode == LEVELMODE_ON_RAILS) { - gDPSetTextureImage(gMasterDisp++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, SEGMENTED_TO_VIRTUAL(D_601B6C0)); - temp_s0 = fabsf(Math_ModF(2.0f * (D_80177CE8 * 0.2133333f), 128.0f)); - temp_fv0 = Math_ModF((10000.0f - gPlayer[gPlayerNum].unk_0AC) * 0.32f, 128.0f); - gDPTileSync(gMasterDisp++); - gDPSetTile(gMasterDisp++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0x0000, G_TX_RENDERTILE, 0, - G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD); - gDPSetTileSize(gMasterDisp++, G_TX_RENDERTILE, temp_fv0, temp_s0, 124, 124); - switch (D_80161A88) { - case 0: - gDPSetTextureImage(gMasterDisp++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, D_601B6C0); - gDPTileSync(gMasterDisp++); - gDPSetTile(gMasterDisp++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, G_TX_LOADTILE, 0, - G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, - G_TX_NOMASK, G_TX_NOLOD); - gDPLoadSync(gMasterDisp++); - gDPLoadBlock(gMasterDisp++, G_TX_LOADTILE, 0, 0, 1023, 256); - gBgColor = 0x845; - break; - case 1: - gDPSetTextureImage(gMasterDisp++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, D_6028260); - gDPTileSync(gMasterDisp++); - gDPSetTile(gMasterDisp++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, G_TX_LOADTILE, 0, - G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, - G_TX_NOMASK, G_TX_NOLOD); - gDPLoadSync(gMasterDisp++); - gDPLoadBlock(gMasterDisp++, G_TX_LOADTILE, 0, 0, 1023, 256); - gBgColor = 0x845; - break; - case 2: - RCP_SetupDL_45(gFogRed, gFogGreen, gFogBlue, gFogAlpha, gFogNear, gFogFar); - gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 255, 128); - gDPSetTextureImage(gMasterDisp++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, D_6028A60); - gDPTileSync(gMasterDisp++); - gDPSetTile(gMasterDisp++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, G_TX_LOADTILE, 0, - G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, - G_TX_NOMASK, G_TX_NOLOD); - gDPLoadSync(gMasterDisp++); - gDPLoadBlock(gMasterDisp++, G_TX_LOADTILE, 0, 0, 1023, 256); - gBgColor = 0x190F; - break; - } - Matrix_Push(&gGfxMatrix); - Matrix_Translate(gGfxMatrix, 0.0f, 0.0f, -3000.0f, 1); - Matrix_Scale(gGfxMatrix, 1.0f, 1.0f, 0.5f, 1); - Matrix_SetGfxMtx(&gMasterDisp); - gSPDisplayList(gMasterDisp++, D_601B640); - Matrix_Pop(&gGfxMatrix); - Matrix_Translate(gGfxMatrix, 0.0f, 0.0f, 3000.0f, 1); - Matrix_Scale(gGfxMatrix, 1.0f, 1.0f, 0.5f, 1); - Matrix_SetGfxMtx(&gMasterDisp); - gSPDisplayList(gMasterDisp++, D_601B640); - } else { - D_80161A88 = 0; - gBgColor = 0x845; - for (i = 0; i < 4; i++) { - Matrix_Push(&gGfxMatrix); - Matrix_Translate(gGfxMatrix, D_800C9E64[i], 0.0f, D_800C9E74[i], 1); - Matrix_SetGfxMtx(&gMasterDisp); - gSPDisplayList(gMasterDisp++, D_601EAA0); - Matrix_Pop(&gGfxMatrix); - } - } - break; - case LEVEL_VENOM_1: - case LEVEL_MACBETH: - RCP_SetupDL_29(gFogRed, gFogGreen, gFogBlue, gFogAlpha, gFogNear, gFogFar); - switch (gCurrentLevel) { - case LEVEL_VENOM_1: - sp1C4 = D_6006750; - sp1C0 = D_60066D0; - gDPLoadTextureBlock(gMasterDisp++, sp1C4, G_IM_FMT_RGBA, G_IM_SIZ_16b, 32, 32, 0, - G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, - G_TX_NOLOD); - break; - case LEVEL_MACBETH: - sp1C4 = D_602DCB8; - sp1C0 = D_60306D0; - gDPLoadTextureBlock(gMasterDisp++, sp1C4, G_IM_FMT_RGBA, G_IM_SIZ_16b, 32, 32, 0, - G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, - G_TX_NOLOD); - break; - } - gDPSetTextureImage(gMasterDisp++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sp1C4); - temp_s0 = fabsf(Math_ModF(2.0f * (D_80177CE8 * 0.2133333f), 128.0f)); - temp_fv0 = Math_ModF((10000.0f - gPlayer[gPlayerNum].unk_0AC) * 0.32f, 128.0f); - gDPTileSync(gMasterDisp++); - gDPSetTile(gMasterDisp++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0x0000, G_TX_RENDERTILE, 0, - G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD); - gDPSetTileSize(gMasterDisp++, G_TX_RENDERTILE, temp_fv0, temp_s0, 124, 124); - Matrix_Push(&gGfxMatrix); - Matrix_Translate(gGfxMatrix, 0.0f, 0.0f, -3000.0f, 1); - Matrix_Scale(gGfxMatrix, 1.0f, 1.0f, 0.5f, 1); - Matrix_SetGfxMtx(&gMasterDisp); - gSPDisplayList(gMasterDisp++, sp1C0); - Matrix_Pop(&gGfxMatrix); - Matrix_Push(&gGfxMatrix); - Matrix_Translate(gGfxMatrix, 0.0f, 0.0f, 3000.0f, 1); - Matrix_Scale(gGfxMatrix, 1.0f, 1.0f, 0.5f, 1); - Matrix_SetGfxMtx(&gMasterDisp); - gSPDisplayList(gMasterDisp++, sp1C0); - Matrix_Pop(&gGfxMatrix); - break; - case LEVEL_TRAINING: - RCP_SetupDL_29(gFogRed, gFogGreen, gFogBlue, gFogAlpha, gFogNear, gFogFar); - if (gLevelMode == LEVELMODE_ON_RAILS) { - if (D_80177CE8 > 290.0f) { - D_80177CE8 -= 290.0f; - } - Matrix_Push(&gGfxMatrix); - Matrix_Translate(gGfxMatrix, 0.0f, 0.0f, -3000.0f + D_80177CE8, 1); - Matrix_Scale(gGfxMatrix, 1.0f, 1.0f, 0.5f, 1); - Matrix_SetGfxMtx(&gMasterDisp); - gSPDisplayList(gMasterDisp++, D_6005880); - Matrix_Pop(&gGfxMatrix); - if (1) {} - Matrix_Push(&gGfxMatrix); - Matrix_Translate(gGfxMatrix, 0.0f, 0.0f, 3000.0f + D_80177CE8, 1); - Matrix_Scale(gGfxMatrix, 1.0f, 1.0f, 0.5f, 1); - Matrix_SetGfxMtx(&gMasterDisp); - gSPDisplayList(gMasterDisp++, D_6005880); - Matrix_Pop(&gGfxMatrix); - } else { - for (i = 0; i < 4; i++) { - Matrix_Push(&gGfxMatrix); - Matrix_Translate(gGfxMatrix, D_800C9E64[i], 0.0f, D_800C9E74[i], 1); - Matrix_Scale(gGfxMatrix, 1.5f, 1.0f, 1.0f, 1); - Matrix_SetGfxMtx(&gMasterDisp); - gSPDisplayList(gMasterDisp++, D_6005880); - Matrix_Pop(&gGfxMatrix); - } - } - break; - case LEVEL_AQUAS: - RCP_SetupDL(&gMasterDisp, 0x14); - gSPFogPosition(gMasterDisp++, gFogNear, gFogFar); - if ((D_8015F964 == 0) && ((D_80177AC8 == 0) || (D_80177AC8 == 2))) { - gDPSetTextureImage(gMasterDisp++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, SEGMENTED_TO_VIRTUAL(D_600AB68)); - gDPTileSync(gMasterDisp++); - gDPSetTile(gMasterDisp++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, G_TX_LOADTILE, 0, - G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, - G_TX_NOLOD); - gDPLoadSync(gMasterDisp++); - gDPLoadBlock(gMasterDisp++, G_TX_LOADTILE, 0, 0, 1023, 256); - gDPSetTextureImage(gMasterDisp++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, SEGMENTED_TO_VIRTUAL(D_600AB68)); - temp_s0 = fabsf(Math_ModF(2.0f * (D_80177CE8 * 0.2133333f), 128.0f)); - temp_fv0 = Math_ModF((10000.0f - gPlayer[gPlayerNum].unk_0AC) * 0.32f, 128.0f); - gDPTileSync(gMasterDisp++); - gDPSetTile(gMasterDisp++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0x0000, G_TX_RENDERTILE, 0, - G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD); - gDPSetTileSize(gMasterDisp++, G_TX_RENDERTILE, temp_fv0, temp_s0, 124, 124); - Matrix_Push(&gGfxMatrix); - Matrix_Translate(gGfxMatrix, 0.0f, 0.0f, -3000.0f, 1); - Matrix_Scale(gGfxMatrix, 1.0f, 1.0f, 0.5f, 1); - Matrix_SetGfxMtx(&gMasterDisp); - gSPDisplayList(gMasterDisp++, D_600AB10); - Matrix_Pop(&gGfxMatrix); - Matrix_Push(&gGfxMatrix); - Matrix_Translate(gGfxMatrix, 0.0f, 0.0f, 3000.0f, 1); - Matrix_Scale(gGfxMatrix, 1.0f, 1.0f, 0.5f, 1); - Matrix_SetGfxMtx(&gMasterDisp); - gSPDisplayList(gMasterDisp++, D_600AB10); - Matrix_Pop(&gGfxMatrix); - } - if ((D_8015F964 != 0) || (D_80177AC8 == 0)) { - gDPSetTextureImage(gMasterDisp++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, SEGMENTED_TO_VIRTUAL(D_602ACC0)); - gDPTileSync(gMasterDisp++); - gDPSetTile(gMasterDisp++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, G_TX_LOADTILE, 0, - G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, - G_TX_NOLOD); - gDPLoadSync(gMasterDisp++); - gDPLoadBlock(gMasterDisp++, G_TX_LOADTILE, 0, 0, 1023, 256); - gDPSetTextureImage(gMasterDisp++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, SEGMENTED_TO_VIRTUAL(D_602ACC0)); - temp_s0 = fabsf(Math_ModF(2.0f * (D_80177CE8 * 0.2133333f), 128.0f)); - temp_fv0 = Math_ModF((10000.0f - gPlayer[gPlayerNum].unk_0AC) * 0.32f, 128.0f); - gDPTileSync(gMasterDisp++); - gDPSetTile(gMasterDisp++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0x0000, G_TX_RENDERTILE, 0, - G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD); - gDPSetTileSize(gMasterDisp++, G_TX_RENDERTILE, temp_fv0, temp_s0, 124, 124); - if (D_80177AC8 != 0) { - RCP_SetupDL(&gMasterDisp, 0x2F); - } else { - RCP_SetupDL(&gMasterDisp, 0x25); - } - if ((gPlayer->state_1C8 == PLAYERSTATE_1C8_2) && (gPlayer->unk_1D0 < 2)) { - gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 255, 255); - } else if (gPlayer->state_1C8 == PLAYERSTATE_1C8_7) { - gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, D_8015F974, D_8015F978, D_8015F97C, D_8015F980); - } else { - gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 255, (s32) D_E16C50_801C4188); - } - Matrix_Push(&gGfxMatrix); - Matrix_Translate(gGfxMatrix, 0.0f, D_8015F970, -3000.0f, 1); - Matrix_Scale(gGfxMatrix, 2.0f, 1.0f, 0.5f, 1); - Matrix_SetGfxMtx(&gMasterDisp); - gSPDisplayList(gMasterDisp++, D_602AC40); - Matrix_Pop(&gGfxMatrix); - Matrix_Translate(gGfxMatrix, 0.0f, D_8015F970, 3000.0f, 1); - Matrix_Scale(gGfxMatrix, 2.0f, 1.0f, 0.5f, 1); - Matrix_SetGfxMtx(&gMasterDisp); - gSPDisplayList(gMasterDisp++, D_602AC40); - } - break; - case LEVEL_FORTUNA: - case LEVEL_KATINA: - case LEVEL_BOLSE: - case LEVEL_VENOM_2: - if ((D_8017812C != 0) || (gCurrentLevel == LEVEL_BOLSE)) { - RCP_SetupDL_29(gFogRed, gFogGreen, gFogBlue, gFogAlpha, gFogNear, gFogFar); - } else { - RCP_SetupDL_20(gFogRed, gFogGreen, gFogBlue, gFogAlpha, gFogNear, gFogFar); - } - for (i = 0; i < 4; i++) { - Matrix_Push(&gGfxMatrix); - Matrix_Translate(gGfxMatrix, D_800C9E64[i], 0.0f, D_800C9E74[i], 1); - Matrix_SetGfxMtx(&gMasterDisp); - if (gCurrentLevel == LEVEL_FORTUNA) { - gSPDisplayList(gMasterDisp++, D_6001360); - } else if (gCurrentLevel == LEVEL_KATINA) { - gSPDisplayList(gMasterDisp++, D_6009250); - } else if (gCurrentLevel == LEVEL_BOLSE) { - gSPDisplayList(gMasterDisp++, D_600A810); - } else if (gCurrentLevel == LEVEL_VENOM_2) { - gSPDisplayList(gMasterDisp++, D_6010700); - } - Matrix_Pop(&gGfxMatrix); - } - break; - case LEVEL_VERSUS: - if (D_8017812C != 0) { - RCP_SetupDL_29(gFogRed, gFogGreen, gFogBlue, gFogAlpha, gFogNear, gFogFar); - } else { - RCP_SetupDL_20(gFogRed, gFogGreen, gFogBlue, gFogAlpha, gFogNear, gFogFar); - } - for (i = 0; i < 4; i++) { - Matrix_Push(&gGfxMatrix); - Matrix_Translate(gGfxMatrix, D_800C9E64[i], 0.0f, D_800C9E74[i], 1); - Matrix_SetGfxMtx(&gMasterDisp); - if (gVersusStage == VS_STAGE_CORNERIA) { - gSPDisplayList(gMasterDisp++, D_3018800); - } else { - gSPDisplayList(gMasterDisp++, D_30160A0); - } - Matrix_Pop(&gGfxMatrix); - } - break; - case LEVEL_SOLAR: - RCP_SetupDL_29(gFogRed, gFogGreen, gFogBlue, gFogAlpha, gFogNear, gFogFar); - Matrix_Translate(gGfxMatrix, 0.0f, 0.0f, -2000.0f, 1); - Matrix_Scale(gGfxMatrix, 3.0f, 2.0f, 3.0f, 1); - Matrix_SetGfxMtx(&gMasterDisp); - if (gFrameCount & 1) { - gSPDisplayList(gMasterDisp++, D_60005B0); - } else { - gSPDisplayList(gMasterDisp++, D_6002E60); - } - break; - case LEVEL_ZONESS: - RCP_SetupDL_29(gFogRed, gFogGreen, gFogBlue, gFogAlpha, gFogNear, gFogFar); - Matrix_Translate(gGfxMatrix, 0.0f, 0.0f, -1500.0f, 1); - Matrix_Scale(gGfxMatrix, 3.0f, 2.0f, 3.0f, 1); - Matrix_SetGfxMtx(&gMasterDisp); - if (gFrameCount & 1) { - gSPDisplayList(gMasterDisp++, D_6008830); - } else { - gSPDisplayList(gMasterDisp++, D_600B0E0); - } - break; - } - Matrix_Pop(&gGfxMatrix); -} -#else -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/fox_bg/func_80040CE4.s") -#endif - -#ifdef NON_MATCHING -void func_80042D38(void) { - Matrix_Push(&gGfxMatrix); - Matrix_Translate(gGfxMatrix, gPlayer[gPlayerNum].camEye.x, 2.0f + D_8017847C, gPlayer[gPlayerNum].camEye.z, 1); - Matrix_Scale(gGfxMatrix, 1.5f, 1.0f, 1.0f, 1); - RCP_SetupDL_37(gFogRed, gFogGreen, gFogBlue, gFogAlpha, gFogNear, gFogFar); - GPC(255, 255, 255, 125); - Matrix_SetGfxMtx(&gMasterDisp); - if (gFrameCount & 1) { - GDL(D_602C030); - } else { - GDL(D_602C088); - } - Matrix_Pop(&gGfxMatrix); -} -#else -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/fox_bg/func_80042D38.s") -#endif diff --git a/src/main/sf_43E80.c b/src/main/sf_43E80.c index 453295a9..b752171f 100644 --- a/src/main/sf_43E80.c +++ b/src/main/sf_43E80.c @@ -1,55 +1,1519 @@ -#include "common.h" +#include "global.h" -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_43E80/func_80043280.s") +void func_80047754(Player* player); +void func_80047D38(Player* player, f32); +void func_80047E7C(Player* player, f32, f32); +void func_80047FBC(Player* player); +void func_800481F4(Player* player); +s32 func_80046E40(Player* player, f32* hitboxData, s32* index, f32 xPos, f32 yPos, f32 zPos, f32 xRot, f32 yRot, + f32 zRot, f32 arg9, f32 argA, f32 argB); -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_43E80/func_80043468.s") +typedef struct { + /* 0x00 */ char pad0[0x54]; + /* 0x54 */ f32 unk_54; + /* 0x58 */ f32 unk_58; + /* 0x5C */ f32 unk_5C; + /* 0x60 */ char pad60[0xC]; + /* 0x6C */ f32 unk_6C; + /* 0x70 */ f32 unk_70; + /* 0x74 */ f32 unk_74; +} UnkStruct_D_E6A810_801BE250; // probably fake. investigate later. +extern UnkStruct_D_E6A810_801BE250 D_E6A810_801BE250; -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_43E80/func_800438E0.s") +static u8 D_800C9F00 = 0; +static u8 D_800C9F04 = 0; +static u8 D_800C9F08 = 0; +static s32 D_800C9F0C = 0; // unused. +static f32 D_800C9F10 = 0.0f; +static s32 D_800C9F14 = 0; +static s32 D_800C9F18[2] = { 0, 0 }; // unused. +static f32 D_800C9F20 = 0.0f; +static f32 D_800C9F24 = 0.0f; +static f32 D_800C9F28 = 0.0f; +Vec3f D_800C9F2C = { 0.0f, 0.0f, 0.0f }; +static s32 D_800C9F38 = 0; // unused -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_43E80/func_80043AA0.s") +extern f32 D_E6A810_801BE258; +extern f32 D_E6A810_801BE25C; +extern f32 D_E6A810_801BE274; +extern f32 D_E6A810_801BE280; +extern f32 D_E6A810_801BE284; +extern f32 D_E6A810_801BE29C; +extern f32 D_E6A810_801BE2A4; +extern s16 D_E6A810_801BE2FA; -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_43E80/func_80043B0C.s") +void func_80189120(f32 x, f32 y, f32 z, f32, f32); +s32 func_801A3C20(f32); +s32 func_801A3300(Player*, f32, f32); +s32 func_801A3790(Player*, f32, f32); -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_43E80/func_80043B18.s") +void func_80043280(u16* text0, u16* text1, f32 zRot) { + s32 py; + s32 px; + s32 i; + s32 j; + f32 dy; + f32 dx; + s32 pad; + Vec3f sp80; + Vec3f sp74; -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_43E80/func_80044120.s") + Matrix_Push(&gCalcMatrix); + text0 = SEGMENTED_TO_VIRTUAL(text0); + text1 = SEGMENTED_TO_VIRTUAL(text1); + Matrix_RotateZ(gCalcMatrix, M_DTOR * zRot, 0); + sp74.z = 0.0f; + for (i = 0, dy = 0.0f; i < 32; i++, dy += 1.0f) { + for (j = 0, dx = 0.0f; j < 32; j++, dx += 1.0f) { + sp74.x = dx - 16.0f; + sp74.y = dy - 16.0f; + Matrix_MultVec3f(gCalcMatrix, &sp74, &sp80); + px = (s32) (sp80.x + 16.0f); + py = (s32) (sp80.y + 16.0f); + if ((px >= 0) && (px < 32) && (py >= 0) && (py < 32)) { + text0[px + 32 * py] = text1[j + 32 * i]; + } + } + } + Matrix_Pop(&gCalcMatrix); +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_43E80/func_800441C8.s") +void func_80043468(Player* player) { + f32 sp54; + f32 sp50; + f32 sp4C; + f32 sp48; + s32 pad44; + f32 sp40; + s32 pad3C; -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_43E80/func_800443DC.s") + sp54 = ((player->pos.x - player->unk_0AC) * player->unk_148) + (player->unk_0E8 * 0.5f); + sp48 = sp54 + (player->unk_0E8 * -5.0f); + sp40 = player->camEye.z - 1000.0f; + sp54 += player->unk_0AC; + sp48 += player->unk_0AC; + if (player->unk_1D4 != 0) { + sp50 = player->pos.y + 100.0f + (-player->unk_0E4 * 5.0f); + sp4C = player->pos.y + player->unk_0E4 * 10.0f; + sp50 += player->unk_17C * 0.5f; + sp4C += player->unk_17C * -5.0f; -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_43E80/func_800444BC.s") + if (0 || (gCurrentLevel == LEVEL_MACBETH) && (D_E6A810_801BA1E8 == 102)) { + sp50 = player->pos.y + 45.0f + (-player->unk_0E4 * 5.0f); + sp4C = player->pos.y + 200.0f + (player->unk_0E4 * 10.0f); + sp50 += player->unk_17C * 0.2f; + sp4C += player->unk_17C * -3.0f; + } + if (D_E6A810_801BA1E8 == 99) { + sp50 = player->pos.y + 40.0f + (-player->unk_0E4 * 5.0f); + sp4C = player->pos.y + 200.0f + (player->unk_0E4 * 10.0f); + sp50 += player->unk_17C * 0.2f; + sp4C += player->unk_17C * -3.0f; + } else if (D_E6A810_801BA1E8 == 98) { + sp50 = player->pos.y + 100.0f; + sp4C = player->pos.y + (player->unk_0E4 * 10.0f); + sp4C += player->unk_17C * -3.0f; + } + } else { + sp50 = player->pos.y + 50.0f; + sp4C = player->pos.y; -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_43E80/func_80044868.s") + if (0 || (gCurrentLevel == LEVEL_MACBETH) && (D_E6A810_801BA1E8 == 102)) { + sp4C = player->pos.y + 150.0f; + } + if (D_E6A810_801BA1E8 == 0x63) { + sp4C = player->pos.y + 150.0f; + } + } + if (player->vel.y < -20.0f) { + Math_SmoothStepToF(&player->camAt.y, sp4C - 100.0f, 0.2f, player->unk_014 * 20.0f, 0.00001f); + } + Math_SmoothStepToF(&player->camEye.x, sp54, 0.1f, player->unk_014 * 20.0f, 0.00001f); + Math_SmoothStepToF(&player->camEye.y, sp50, 0.1f, player->unk_014 * 7.0f, 0.00001f); + Math_SmoothStepToF(&player->camAt.y, sp4C, 0.1f, player->unk_014 * 7.0f, 0.00001f); + Math_SmoothStepToF(&player->camAt.x, sp48, 0.1f, player->unk_014 * 20.0f, 0.00001f); + Math_SmoothStepToF(&player->camEye.z, 200.0f, 0.1f, player->unk_014 * 10.0f, 0.0f); + Math_SmoothStepToF(&player->camAt.z, sp40, 1.0f, player->unk_014 * 10.0f, 0.0f); + Math_SmoothStepToF(&player->unk_034, player->unk_0EC * -0.4f, 0.1f, 1.0f, 0.01f); + Math_SmoothStepToF(&player->unk_014, 1.0f, 1.0f, 0.1f, 0.0f); +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_43E80/func_80045130.s") +void func_800438E0(Object_8C* obj8C, f32 xPos, f32 yPos, f32 zPos, f32 scale) { + f32 pad[12]; -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_43E80/func_80045348.s") + Object_8C_Initialize(obj8C); + obj8C->obj.status = 2; + obj8C->obj.id = OBJ_8C_357; + obj8C->obj.pos.x = xPos; + obj8C->obj.pos.y = yPos; + obj8C->obj.pos.z = zPos; + obj8C->unk_54.x = Rand_ZeroOne() - (2.0f * Rand_ZeroOne()); + obj8C->unk_54.y = ((Rand_ZeroOne() * 3.0f) - (gPlayer->vel.z / 5.0f)) + 3.0f; + obj8C->unk_54.z = ((Rand_ZeroOne() * 3.0f) - (gPlayer->vel.z / 5.0f)) + 2.0f; + obj8C->scale2 = ((Rand_ZeroOne() * 0.8f) + 0.3f) * scale; + obj8C->timer_50 = (s32) (Rand_ZeroOne() * 5.0f) + 8; + obj8C->obj.rot.x = Rand_ZeroOne() * 360.0f; + obj8C->unk_60.x = (Rand_ZeroOne() - 0.5f) * 30.0f; + obj8C->unk_60.y = (Rand_ZeroOne() - 0.5f) * 30.0f; + obj8C->unk_60.z = (Rand_ZeroOne() - 0.5f) * 30.0f; + Object_SetInfo(&obj8C->info, obj8C->obj.id); +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_43E80/func_80045678.s") +void func_80043AA0(f32 xPos, f32 yPos, f32 zPos, f32 scale) { + s32 i; -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_43E80/func_80045E7C.s") + for (i = 50; i >= 0; i--) { + if (gObjects8C[i].obj.status == 0) { + func_800438E0(&gObjects8C[i], xPos, yPos, zPos, scale); + break; + } + } +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_43E80/func_800460E0.s") +void func_80043B0C(s32 arg0) { +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_43E80/func_80046260.s") +void func_80043B18(Player* player) { + f32 pad; + Vec3f sp48; + Vec3f sp3C; + f32 sp38; -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_43E80/func_80046358.s") + Matrix_Translate(gCalcMatrix, 0.0f, player->unk_18C + 30.0f, 0, 0); + Matrix_RotateY(gCalcMatrix, player->unk_114 * M_DTOR, 1); + Matrix_RotateX(gCalcMatrix, player->unk_0E4 * M_DTOR, 1); + Matrix_RotateZ(gCalcMatrix, (player->unk_0EC + player->unk_0F0) * M_DTOR, 1); + Matrix_RotateY(gCalcMatrix, (player->unk_0E8 + 180.0f) * M_DTOR, 1); + Matrix_RotateZ(gCalcMatrix, -player->unk_12C * M_DTOR, 1); + Matrix_Translate(gCalcMatrix, 0.0f, -30.0f, 0, 1); + sp48.y = 0.0f; + sp48.z = -20.0f; + sp38 = player->unk_114; + if (player->unk_1DC != 0) { -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_43E80/func_8004641C.s") + sp48.x = 0.0f; + sp48.z = ((Rand_ZeroOne() - 0.5f) * 50.0f) + -20.0f; + if (player->unk_1EC < 0) { + sp38 -= 65.0f; + } else { + sp38 += 65.0f; + } + Matrix_MultVec3f(gCalcMatrix, &sp48, &sp3C); + if (gCurrentLevel == LEVEL_MACBETH) { + func_80043AA0(player->pos.x + sp3C.x, player->pos.y + sp3C.y, player->unk_138 + sp3C.z, 0.2f); + } else { + if (!(gFrameCount & 1)) { + func_80189120(player->pos.x + sp3C.x, player->pos.y + sp3C.y, player->unk_138 + sp3C.z, + player->unk_0E8 + sp38, 1.3f); + } + if (!(gFrameCount & 3)) { + func_8007A900(player->pos.x + sp3C.x, player->pos.y + sp3C.y + 20.0f, player->unk_138 + sp3C.z, 2.0f, + 0xFF, 0xF, 0); + } + } + } else { + sp38 += player->unk_12C; + if (player->unk_12C > -5.0f) { + sp48.x = 36.0f; + Matrix_MultVec3f(gCalcMatrix, &sp48, &sp3C); + if (gCurrentLevel == 0xB) { + if (gFrameCount & 1) { + func_80043AA0(player->pos.x + sp3C.x, player->pos.y + sp3C.y, player->unk_138 + sp3C.z, 0.2f); + } + } else { + if (!(gFrameCount & 1)) { + func_80189120(player->pos.x + sp3C.x, player->pos.y + sp3C.y, player->unk_138 + sp3C.z, + player->unk_0E8 + sp38, 1.0f); + } + if (!(gFrameCount & 3) && (player->unk_0D0 >= 5.0f)) { + func_8007A900(player->pos.x + sp3C.x, player->pos.y + sp3C.y + 20.0f, player->unk_138 + sp3C.z, + 2.0f, 0xFF, 0xF, 0); + } + } + } + if (player->unk_12C < 5.0f) { + sp48.x = -36.0f; + Matrix_MultVec3f(gCalcMatrix, &sp48, &sp3C); + if (gCurrentLevel == 0xB) { + if (!(gFrameCount & 1)) { + func_80043AA0(player->pos.x + sp3C.x, player->pos.y + sp3C.y, player->unk_138 + sp3C.z, 0.2f); + } + } else { + if (!(gFrameCount & 1)) { + func_80189120(player->pos.x + sp3C.x, player->pos.y + sp3C.y, player->unk_138 + sp3C.z, + player->unk_0E8 + sp38, 1.0f); + } + if (!(gFrameCount & 3) && (player->unk_0D0 >= 5.0f)) { + func_8007A900(player->pos.x + sp3C.x, player->pos.y + sp3C.y + 20.0f, player->unk_138 + sp3C.z, + 2.0f, 0xFF, 0xF, 0); + } + } + } + } +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_43E80/func_80046704.s") +s32 func_80044120(Hitbox* hitbox, f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5, f32 arg6) { + Vec3f sp34; + Vec3f sp28; -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_43E80/func_80046E40.s") + sp34.x = arg1 - arg4; + sp34.y = arg2 - arg5; + sp34.z = arg3 - arg6; + Matrix_MultVec3fNoTranslate(gCalcMatrix, &sp34, &sp28); + return func_800A78C4(hitbox, arg4, arg5, arg6, sp28.x + arg4, sp28.y + arg5, sp28.z + arg6); +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_43E80/func_80047504.s") +void func_800441C8(Player* player, f32* hitboxData, f32 xPos, f32 yPos, f32 zPos, f32 xRot, f32 yRot, f32 zRot) { + Hitbox* hitbox; + s32 count; + s32 i; + f32 x; + f32 y; + f32 z; -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_43E80/func_80047754.s") + Matrix_RotateY(gCalcMatrix, -yRot * M_DTOR, 0); + count = *hitboxData++; + if (count != 0) { + for (i = 0; i < count; i++, hitboxData += 6) { + hitbox = (Hitbox*) hitboxData; -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_43E80/func_80047D38.s") + if (player->vel.y <= 0.0f) { + x = player->pos.x; + y = player->pos.y - 10.0f; + z = player->unk_138; + if (func_80044120(hitbox, x, y, z, xPos, yPos, zPos)) { + player->unk_1D4 = 1; + if (player->vel.y < -20.0f) { + player->unk_1F4 = 20; + } + player->vel.y = 0.0f; + player->pos.y = yPos + 20.0f; + Math_SmoothStepToF(&player->unk_0E4, 0.0f, 0.3f, 5.0f, 0.0f); + Math_SmoothStepToF(&player->unk_0EC, 0.0f, 0.3f, 5.0f, 0.0f); + } + } else { + x = player->pos.x; + y = player->pos.y + 30.0f; + z = player->unk_138; + if (func_80044120(hitbox, x, y, z, xPos, yPos, zPos)) { + player->vel.y = 0.0f; + player->pos.y = yPos - 75.0f; + } + } + } + } +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_43E80/func_80047E7C.s") +void func_800443DC(Player* player) { + Object_80* obj80; + s32 i; -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_43E80/func_80047FBC.s") + for (i = 0, obj80 = gObjects80; i < ARRAY_COUNT(gObjects80); i++, obj80++) { + if ((obj80->obj.status == 2) && (obj80->obj.id == OBJ_80_58) && + ((player->unk_138 - 2000.0f) < obj80->obj.pos.z)) { + func_800441C8(player, obj80->info.hitbox, obj80->obj.pos.x, obj80->obj.pos.y, obj80->obj.pos.z, + obj80->obj.rot.x, obj80->obj.rot.y, obj80->obj.rot.z); + } + } +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_43E80/func_800481F4.s") +void func_800444BC(Player* player) { + f32 pad; + f32 sp40; + f32 sp3C; + f32 sp38; + f32 sp34; + f32 sp30; + + sp30 = 5.0f; + player->unk_1D4 = 0; + if (player->unk_0D4 < 0.0f) { + sp30 = 0.0f; + } + sp40 = sp3C = 0.0f; + sp38 = D_80177940; + if (D_801784AC == 4) { + func_E6A810_801B6E20(player->pos.x, player->unk_138 + player->unk_144, &sp40, &sp38, &sp3C); + } + if (gCurrentLevel == 0xB) { + D_E6A810_801BE250.unk_6C = D_80177940; + D_E6A810_801BE250.unk_70 = D_E6A810_801BE250.unk_74 = 0.0f; + D_800C9F10 = 0.0f; + func_80047754(player); + sp38 = D_E6A810_801BE250.unk_6C; + sp40 = D_E6A810_801BE250.unk_70; + sp3C = D_E6A810_801BE250.unk_74; + } + if ((player->pos.y - sp30) < sp38) { + if (player->vel.y < -10.0f) { + Audio_PlaySfx(0x09008015, &player->unk_460, 0, &D_800C5D34, &D_800C5D34, &D_800C5D3C); + } + player->unk_1D4 = 1; + if (player->vel.y < -20.0f) { + player->unk_1F4 = 20; + } + if (D_80177BAC != 0) { + D_80177BAC = 0; + func_8001D444(0, 0x8004, 0, 0xFF); + func_8001C8B8(0); + } + + player->pos.y = sp38 - 3.0f; + sp34 = (player->unk_0D0 * 0.2f) + 0.2f; + player->vel.y = -3.0f; + + if ((player->unk_104 > 0.0f) && (sp40 <= 0.0f)) { + player->vel.y = player->unk_104 * 0.5f * player->unk_0D0 * 0.035f; + player->unk_0E4 = player->unk_104; + } + if (player->unk_0D4 < 0.0f) { + player->vel.y = 2.0f; + if (player->vel.y) {} // fake? + player->pos.y += 7.0f; + } + player->unk_104 = (sp40 * 180.0f) / M_PI; + player->unk_10C = (sp3C * 180.0f) / M_PI; + if (gCurrentLevel == LEVEL_MACBETH) { + if (player->unk_104 > 90.0f) { + player->unk_104 = -(180 - player->unk_104); + } + if (player->unk_10C > 90.0f) { + player->unk_10C = -(180 - player->unk_10C); + } + } + if (player->unk_0E4 < player->unk_104) { + player->unk_0E4 += sp34; + } + if (player->unk_0E4 > player->unk_104) { + player->unk_0E4 -= sp34; + } + if (player->unk_0EC < player->unk_10C) { + player->unk_0EC += sp34; + } + if (player->unk_0EC > player->unk_10C) { + player->unk_0EC -= sp34; + } + } + if (gCurrentLevel == LEVEL_TITANIA) { + func_800443DC(player); + } +} + +void func_80044868(Player* player) { + f32 pad; + f32 var_fv1; + f32 sp2C; + + var_fv1 = (gInputPress->stick_y * 0.7f) - 8.0f; + if (var_fv1 < -40.0f) { + var_fv1 = -40.0f; + } + if (var_fv1 > 0.0f) { + var_fv1 = 0.0f; + } + if (player->unk_17C < var_fv1) { + player->unk_17C += 3.0f; + } + if (var_fv1 < player->unk_17C) { + player->unk_17C -= 3.0f; + } + if (player->unk_180 < 0.0f) { + player->unk_180 += 3.0f; + } + if (player->unk_180 > 0.0f) { + player->unk_180 -= 3.0f; + } + D_80177968 = 3.0f; + D_80177970 = 0.66f; + var_fv1 = gInputPress->stick_x; + if (var_fv1 == 0.0f) { + Math_SmoothStepToF(&player->unk_0E8, -var_fv1 * D_80177970, 0.1f, D_80177968 * 0.5f, 0.1f); + } else { + Math_SmoothStepToF(&player->unk_0E8, -var_fv1 * D_80177970, 0.1f, D_80177968, 0.1f); + } + player->unk_108 = player->unk_0E8; + sp2C = player->unk_0D0; + + if ((gCurrentLevel == LEVEL_MACBETH) && (sp2C < 3.0f)) { + sp2C = 3.0f; + } + if (player->unk_16C > 0.2f) { + Math_SmoothStepToF(&player->unk_184, player->unk_0D0 * 0.5f, 1.0f, 1.0f, 0.0f); + } + if (player->unk_170 > 0.2f) { + Math_SmoothStepToF(&player->unk_184, -player->unk_0D0 * 0.5f, 1.0f, 1.0f, 0.0f); + } + if (!(player->unk_170 > 0.2f) && !(player->unk_16C > 0.2f) && (player->unk_1D4 != 0)) { + Math_SmoothStepToF(&player->unk_184, 0.0f, 1.0f, 0.75f, 0.0f); + } + if (player->unk_1DC != 0) { + if (player->unk_1EC < 0) { + player->unk_184 = 15.0f; + } + if (player->unk_1EC > 0) { + player->unk_184 = -15.0f; + } + } + player->vel.z = -(__cosf(player->unk_108 * M_DTOR) * __cosf(player->unk_104 * M_DTOR) * sp2C); + if ((player->vel.x < 20.0f) && (player->unk_10C < -30.0f)) { + Math_SmoothStepToF(&player->vel.x, -player->unk_10C * 0.5f, 0.2f, 3.0f, 0.0f); + player->unk_184 = 0.0f; + } else if ((player->vel.x > -20.0f) && (player->unk_10C > 30.0f)) { + Math_SmoothStepToF(&player->vel.x, -player->unk_10C * 0.5f, 0.2f, 3.0f, 0.0f); + player->unk_184 = 0.0f; + } else { + Math_SmoothStepToF(&player->vel.x, player->unk_184 - (__sinf(player->unk_108 * M_DTOR) * sp2C), 0.5f, 5.0f, + 0.0f); + } + player->vel.z += fabsf((player->unk_184 * 0.4f * player->unk_0D0) / 15.0f); + if (player->unk_000 == 0) { + player->vel.z += __sinf(player->unk_0E4 * M_DTOR) * player->unk_110; + } + if (D_800C9F00 != 0) { + player->vel.z = 2.0f * D_800C9F00; + } + player->pos.x += player->vel.x; + if ((player->unk_0AC + (player->unk_09C - 100.0f)) < player->pos.x) { + player->unk_228 = 1; + } + if (player->pos.x < (player->unk_0AC - (player->unk_09C - 100.0f))) { + player->unk_228 = 2; + } + if (player->unk_09C + player->unk_0AC < player->pos.x) { + player->pos.x = player->unk_09C + player->unk_0AC; + player->vel.x = 0.0f; + } + if (player->pos.x < player->unk_0AC - player->unk_09C) { + player->pos.x = player->unk_0AC - player->unk_09C; + player->vel.x = 0.0f; + } + player->pos.y += player->vel.y; + player->vel.y -= player->unk_0D4; + + if (player->vel.y < -50.0f) { + player->vel.y = -50.0f; + } + if (player->vel.y > 20.0f) { + player->vel.y = 20.0f; + } + player->pos.z += player->vel.z; + if (player->unk_1D4 != 0) { + player->unk_0A0 = 0.0f; + player->unk_0F4 += player->unk_0D0 * 5.0f; + player->unk_0F0 = __sinf(player->unk_0F4 * M_DTOR) * 0.7f; + if (D_800C9F04 == 0) { + if (player->unk_0D0 != 0.0f) { + func_80043B18(player); + } + if (player->unk_1DC != 0.0f) { + func_80043B18(player); + } + } + } + if (player->unk_0D0 > 0.0f) { + Texture_Scroll(D_3002E80, 0x20, 0x20, 0); + if ((gCurrentLevel == LEVEL_TITANIA) && (D_80178284 == 0)) { + func_80043280(D_3005EA8, D_6009BB8, gFrameCount * -55.0f); + } + if ((gCurrentLevel == LEVEL_MACBETH) && (player->state_1C8 == 7)) { + func_80043280(D_3005EA8, *D_Unk_800DACB8, gFrameCount * -55.0f); + } + } + if (player->unk_0D0 > 10.0f) { + Texture_Scroll(D_3002E80, 0x20, 0x20, 0); + if ((gCurrentLevel == LEVEL_TITANIA) && (D_80178284 == 0)) { + func_80043280(D_3005EA8, D_6009BB8, gFrameCount * -55.0f); + } + } + func_800A46A0(player); +} + +void func_80045130(Player* player) { + Math_SmoothStepToF(&player->unk_170, 0.0f, 1.0f, 0.2f, 0.0f); + Math_SmoothStepToF(&player->unk_16C, 0.0f, 1.0f, 0.2f, 0.0f); + if (gInputPress->button & Z_TRIG) { + player->unk_48C = 1; + if ((player->timer_1E0 != 0) && (player->unk_12C > 0.0f) && (player->unk_2BC < 10.0f)) { + player->unk_1DC = 1; + player->timer_1E8 = 15; + player->unk_1F0 = 20; + player->unk_1EC = 20; + player->unk_494 = 1; + Audio_PlaySfx(0x1100000A, &player->unk_460, 0, &D_800C5D34, &D_800C5D34, &D_800C5D3C); + } else { + player->timer_1E0 = 10; + } + } + if (gInputPress->button & R_TRIG) { + player->unk_48C = 1; + if ((player->timer_1E4 != 0) && (player->unk_12C < 0.0f) && (player->unk_2BC < 10.0f)) { + player->unk_1DC = 1; + player->timer_1E8 = 15; + player->unk_1F0 = -20; + player->unk_1EC = -20; + player->unk_494 = 1; + Audio_PlaySfx(0x1100000A, &player->unk_460, 0, &D_800C5D34, &D_800C5D34, &D_800C5D3C); + } else { + player->timer_1E4 = 10; + } + } + player->unk_18C = fabsf(__sinf(player->unk_12C * M_DTOR) * 25.0f); + player->unk_18C += fabsf(__sinf(player->unk_130 * M_DTOR) * 20.0f); +} + +void func_80045348(Player* player) { + f32 sp44 = 15.0f; + f32 sp40 = 0; + f32 sp3C = 0.1f; + f32 sp38 = 3.5f; + f32 pad1; + f32 pad2; + s16 sp2E = false; + + if (player->unk_19C >= 0) { + if ((gBoostButton[player->num] & gInputHold->button) && !player->unk_2B4) { + D_800C9F14++; + sp2E = true; + if (D_800C9F24 == 0.0f) { + player->unk_190 = player->unk_194 = 4.0f; + Audio_PlaySfx(0x0900402F, &player->unk_460, 0, &D_800C5D34, &D_800C5D34, &D_800C5D3C); + } else { + player->unk_190 = 2.0f; + } + sp44 = 25.0f; + sp40 = -200.0f; + sp3C = 0.2f; + sp38 = 6.0f; + + D_800C9F24 += 1.0f; + if (D_801779A8[player->num] < 25.0f) { + D_801779A8[player->num] = 25.0f; + } + + Math_SmoothStepToF(&D_801779A8[player->num], 50.0f, 1.0f, 10.0f, 0.0f); + } else { + D_800C9F24 = 0.0f; + } + if ((gBrakeButton[player->num] & gInputHold->button) && !player->unk_2B4 && !sp2E) { + D_800C9F14++; + sp44 = 5.0f; + sp40 = 100.0f; + sp3C = 0.2f; + D_800C9F28 += 1.0f; + Math_SmoothStepToF(&D_801779A8[player->num], 25.0f, 1.0f, 5.0f, 0.0f); + } else { + D_800C9F28 = 0.0f; + } + Math_SmoothStepToF(&player->unk_0D0, sp44, sp3C, sp38, 0.001f); + Math_SmoothStepToF(&player->unk_08C, sp40, sp3C, sp38, 0.001f); + } else if (player->unk_19C == -1) { + Math_SmoothStepToF(&player->unk_0D0, player->unk_000, 0.1f, 2.0f, 0.01f); + } +} + +void func_80045678(Player* player) { + static u8 D_800C9F3C = 0; + f32 temp; + f32 pad; + + player->unk_0D4 = 3.0f; + if (!(gInputHold->button & Z_TRIG)) { + func_8001A55C(&player->unk_460, 0x01008016); + func_8001A55C(&player->unk_460, 0x1100000A); + } + if ((gInputHold->button & Z_TRIG) && !player->unk_2B4) { + D_800C9F14++; + if (D_800C9F20 == 0.0f) { + Audio_PlaySfx(0x01004024, &player->unk_460, 0, &D_800C5D34, &D_800C5D34, &D_800C5D3C); + } + player->unk_188 = 0.0f; + player->unk_12C += 4.0f; + if (player->unk_12C > 50.0f) { + player->unk_12C = 50.0f; + } + Math_SmoothStepToF(&player->unk_170, 1.0f, 1.0f, 0.4f, 0.0f); + D_800C9F20 += 1.0f; + } else { + if (player->unk_12C > 0) { + player->unk_188 += 1.5f; + player->unk_12C -= player->unk_188; + if (player->unk_12C <= 0.0f) { + player->unk_12C = 0.0f; + if (player->unk_188 > 3.0f) { + player->unk_188 *= -0.4f; + player->unk_12C -= player->unk_188; + } + } + } + D_800C9F20 = 0.0f; + } + if (!(gInputHold->button & R_TRIG)) { + func_8001A55C(&player->unk_460, 0x01008016); + func_8001A55C(&player->unk_460, 0x1100000A); + } + if ((gInputHold->button & R_TRIG) && !player->unk_2B4) { + D_800C9F14++; + if (player->unk_2C0 == 0.0f) { + Audio_PlaySfx(0x01004024, &player->unk_460, 0, &D_800C5D34, &D_800C5D34, &D_800C5D3C); + } + player->unk_188 = 0.0f; + player->unk_12C -= 4.0f; + if (player->unk_12C < -50.0f) { + player->unk_12C = -50.0f; + } + Math_SmoothStepToF(&player->unk_16C, 1.0f, 1.0f, 0.4f, 0.0f); + player->unk_2C0 += 1.0f; + } else { + if (player->unk_12C < 0.0f) { + player->unk_188 += 1.5f; + player->unk_12C += player->unk_188; + if (player->unk_12C >= 0.0f) { + player->unk_12C = 0.0f; + if (player->unk_188 > 3.0f) { + player->unk_188 *= -0.4f; + player->unk_12C += player->unk_188; + } + } + } + player->unk_2C0 = 0.0f; + } + Math_SmoothStepToF(&player->unk_110, 0.0f, 0.1f, 1.0f, 0); + if ((player->unk_16C > 0.2f) && (player->unk_170 > 0.2f) && (player->timer_220 == 0)) { + if (D_800C9F3C == 0) { + D_800C9F3C = 1; + func_8001A55C(&player->unk_460, 0x1100000A); + func_8001A55C(&player->unk_460, 0x01004024); + Audio_PlaySfx(0x01008016, &player->unk_460, 0, &D_800C5D34, &D_800C5D34, &D_800C5D3C); + } + player->unk_12C += ((__cosf(gFrameCount * M_DTOR * 8.0f) * 10.0f) - player->unk_12C) * 0.1f; + temp = -gInputPress->stick_y; + Math_SmoothStepToF(&player->unk_0E4, temp * 0.3f, 0.05f, 5.0f, 0.00001f); + Math_SmoothStepToF(&player->unk_110, 15.0f, 0.5f, 5.0f, 0.0f); + Math_SmoothStepToF(&player->unk_0EC, 0.0f, 0.1f, 5.0f, 0.00001f); + player->unk_0D4 = -0.4f; + player->unk_0A0 += player->vel.y; + + if (player->unk_0A0 > 300.0f) { + player->unk_0D4 = 0.0f; + Math_SmoothStepToF(&player->vel.y, 0.0f, 0.1f, 2.0f, 0); + } + if ((gCamCount == 1) && !(gFrameCount & 1)) { + func_8007A900(((Rand_ZeroOne() - 0.5f) * 20.0f) + player->pos.x, player->unk_068 + 10.0f, + player->unk_138 - 10.0f, (2.0f * Rand_ZeroOne()) + 3.5f, 0xFF, 0x10, 1); + } + } else { + D_800C9F3C = 0; + if ((gCamCount == 1) && !(gFrameCount & 3) && (player->unk_1DC == 0)) { + if ((player->unk_16C > 0.2f) && (player->timer_220 == 0)) { + func_8007A900(((Rand_ZeroOne() - 0.5f) * 10.0f) + (player->pos.x - 57.0f), player->unk_068 + 10.0f, + player->unk_138 - 10.0f, Rand_ZeroOne() + 1.5f, 0xFF, 0xF, 0); + } + if ((player->unk_170 > 0.2f) && (player->timer_220 == 0)) { + func_8007A900(((Rand_ZeroOne() - 0.5f) * 10.0f) + (player->pos.x + 57.0f), player->unk_068 + 10.0f, + player->unk_138 - 10.0f, Rand_ZeroOne() + 1.5f, 0xFF, 0xF, 0); + } + } + } +} + +void func_80045E7C(Player* player) { + player->unk_130 = Math_ModF(player->unk_130, 360.0f); + if (player->unk_1DC == 0) { + if (player->unk_130 > 0.0f) { + player->unk_130 -= player->unk_130 * 0.1f; + if (player->unk_130 < 0.1f) { + player->unk_130 = 0.0f; + } + } + if (player->unk_130 < 0.0f) { + player->unk_130 -= player->unk_130 * 0.1f; + if (player->unk_130 > -0.1f) { + player->unk_130 = 0.0f; + } + } + } + if (player->timer_1E0 != 0) { + player->timer_1E0--; + } + if (player->timer_1E4 != 0) { + player->timer_1E4--; + } + if (player->timer_1E8 != 0) { + player->timer_1E8--; + } + if (player->unk_1DC != 0) { + player->timer_1E4 = 0; + player->timer_1E0 = 0; + player->unk_130 += player->unk_1EC; + if (player->unk_12C > 0.0f) { + player->unk_12C -= 8.0f; + if (player->unk_12C < 0.0f) { + player->unk_12C = 0.0f; + } + } + if (player->unk_12C < 0.0f) { + player->unk_12C += 8.0f; + if (player->unk_12C > 0.0f) { + player->unk_12C = 0.0f; + } + } + if (player->timer_1E8 == 0) { + D_801779A8[player->num] = 25.0f; + if (player->unk_1EC > 0) { + player->unk_1EC -= 2; + } + if (player->unk_1EC < 0) { + player->unk_1EC += 2; + } + if (player->unk_1EC == 0) { + player->unk_1DC = 0; + func_8001A55C(&player->unk_460, 0x1100000A); + } + } + if ((player->timer_1E8 >= 5) && (player->unk_1F4 == 0) && (player->unk_1DC != 9)) { + if (player->unk_1EC > 0) { + player->unk_170 = 1.3f; + } + if (player->unk_1EC < 0) { + player->unk_16C = 1.3f; + } + } + } +} + +void func_800460E0(Player* player, f32* hitboxData, f32 arg2, f32 arg3, f32 arg4, f32 arg5, f32 arg6, f32 arg7) { + s32 i; + s32 count; + + Matrix_RotateY(gCalcMatrix, -arg6 * M_DTOR, 0); + count = *hitboxData++; + if (count != 0) { + for (i = 0; i < count; i++, hitboxData += 6) { + Vec3f spf94; + Vec3f sp88; + Vec3f sp7C; + Hitbox* hitbox = (Hitbox*) hitboxData; + + spf94.x = player->pos.x; + spf94.y = arg3; + spf94.z = player->unk_138; + + sp88.x = spf94.x - arg2; + sp88.y = spf94.y - arg3; + sp88.z = spf94.z - arg4; + Matrix_MultVec3fNoTranslate(gCalcMatrix, &sp88, &sp7C); + if (func_800A78C4(hitbox, arg2, arg3, arg4, sp7C.x + arg2, sp7C.y + arg3, sp7C.z + arg4)) { + player->unk_068 = arg3 + 20.0f + 3.0f; + } + } + } +} + +void func_80046260(Player* player) { + Object_80* obj80; + s32 i; + + for (i = 0, obj80 = gObjects80; i < ARRAY_COUNT(gObjects80); i++, obj80++) { + if ((obj80->obj.status == 2) && (obj80->obj.id == OBJ_80_58) && + ((player->unk_138 - 2000.0f) < obj80->obj.pos.z) && (obj80->obj.pos.y < player->pos.y)) { + func_800460E0(player, obj80->info.hitbox, obj80->obj.pos.x, obj80->obj.pos.y, obj80->obj.pos.z, + obj80->obj.rot.x, obj80->obj.rot.y, obj80->obj.rot.z); + } + } +} + +void func_80046358(Player* player) { + f32 spD4; + f32 spD0; + f32 spCC; + s32 pad[35]; + Vec3f sp34 = { 0.0f, -10.0f, 0.0f }; + s32 pad1; + s32 pad2; + + player->unk_064 = player->pos.x; + player->unk_06C = player->unk_138 + -20.0f; + player->unk_068 = D_80177940 + 3.0f; + player->unk_248 = 0.0f; + player->unk_24C = 0.0f; + player->unk_070 = 0.0f; + func_E6A810_801B6E20(player->unk_064, player->unk_06C + player->unk_144, &spD4, &spD0, &spCC); + player->unk_068 = spD0 + 2.0f; + player->unk_248 = spD4; + player->unk_24C = spCC; +} + +void func_8004641C(Player* player, s32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5, f32 arg6, f32 arg7) { + s32 pad1; + s32 pad2; + f32 sp84; + f32 sp80; + f32 sp7C; + Vec3f sp70; + Vec3f sp64; + Vec3f sp58; + Vec3f sp4C; + + Matrix_RotateY(gCalcMatrix, -arg6 * M_DTOR, 0); + sp70.x = player->vel.x; + sp70.y = player->vel.y; + sp70.z = player->vel.z; + Matrix_MultVec3fNoTranslate(gCalcMatrix, &sp70, &sp4C); + sp70.x = player->pos.x - arg2; + sp70.y = player->pos.y - arg3; + sp70.z = player->unk_138 - arg4; + Matrix_MultVec3fNoTranslate(gCalcMatrix, &sp70, &sp64); + sp84 = sp64.x + arg2; + sp80 = sp64.y + arg3; + sp7C = sp64.z + arg4; + if (func_800A8054(arg1, arg2, arg3, arg4, sp84, sp80, sp7C, &sp58, &sp4C)) { + if (D_E6A810_801BE250.unk_6C < arg3 + sp58.y) { + D_E6A810_801BE250.unk_6C = arg3 + sp58.y; + if (arg1 == OBJ_80_67) { + player->unk_1DC = 0; + D_800C9F04 = 1; + } + } + D_E6A810_801BE250.unk_70 = sp58.x; + D_E6A810_801BE250.unk_74 = sp58.z; + } else if ((arg1 == OBJ_80_67) && (D_E6A810_801BE250.unk_6C == 0.0f) && + (func_800A8054(arg1, arg2 + 20.0f, arg3, arg4, sp84, sp80, sp7C, &sp58, &sp4C) != 0)) { + player->unk_1DC = 9; + player->timer_1E8 = 15; + if ((arg6 > 90.0f) && (arg6 < 270.0f)) { + player->unk_1EC = player->unk_1F0 = 20; + } else { + player->unk_1EC = player->unk_1F0 = -20; + } + } + if (func_800A8054(arg1, arg2, arg3, arg4, sp84, arg3, sp7C, &sp58, &sp4C) && (D_800C9F10 <= arg3 + sp58.y)) { + D_800C9F10 = arg3 + sp58.y; + player->unk_064 = player->pos.x; + player->unk_068 = D_800C9F10 - 2.0f; + player->unk_248 = sp58.x; + player->unk_24C = sp58.z; + } +} + +static f32 D_800C9F4C[5] = { 0.0f, -1.0f, 1.0f, 0.5f, -0.5f }; + +void func_80046704(Player* player) { + s32 pad[7]; + s16 i; + Object_80* obj80; + f32 temp1; + f32 temp2; + + if (D_800C9F00 > 0) { + D_800C9F00--; + } + if (1) {} + for (i = 0, obj80 = gObjects80; i < ARRAY_COUNT(gObjects80); i++, obj80++) { + if ((obj80->obj.status == 2) && ((player->unk_138 - 2000.0f) < obj80->obj.pos.z)) { + if ((obj80->obj.id == OBJ_80_69) || (obj80->obj.id == OBJ_80_70) || (obj80->obj.id == OBJ_80_71) || + (obj80->obj.id == OBJ_80_72) || (obj80->obj.id == OBJ_80_73) || (obj80->obj.id == OBJ_80_67)) { + temp1 = obj80->obj.pos.x - player->pos.x; + temp2 = obj80->obj.pos.z - player->unk_138; + + if (sqrtf(SQ(temp1) + SQ(temp2)) < 2000.0f) { + func_8004641C(player, obj80->obj.id, obj80->obj.pos.x, obj80->obj.pos.y, obj80->obj.pos.z, + obj80->obj.rot.x, obj80->obj.rot.y, obj80->obj.rot.z); + } + } else if (obj80->obj.id == OBJ_80_74) { + if (((player->pos.x - 820.0f) <= obj80->obj.pos.x) && (obj80->obj.pos.x <= (player->pos.x + 820.0f)) && + ((player->pos.y - 50.0f) <= obj80->obj.pos.y) && (obj80->obj.pos.y <= (player->pos.y + 50.0f)) && + (player->unk_138 <= obj80->obj.pos.z) && (obj80->obj.pos.z <= (player->unk_138 + 960.0f))) { + D_E6A810_801BE250.unk_6C = obj80->obj.pos.y; + player->unk_064 = player->pos.x; + player->unk_068 = D_E6A810_801BE250.unk_6C - 3.0f; + } + } + if ((obj80->obj.id == OBJ_80_59) || (obj80->obj.id == OBJ_80_60) || (obj80->obj.id == OBJ_80_61) || + (obj80->obj.id == OBJ_80_63) || (obj80->obj.id == OBJ_80_105) || (obj80->obj.id == OBJ_80_66) || + (obj80->obj.id == OBJ_80_67) || (obj80->obj.id == OBJ_80_68)) { + s32 temp_v0; + s32 sp94; + + temp_v0 = func_80046E40(player, obj80->info.hitbox, &sp94, obj80->obj.pos.x, obj80->obj.pos.y, + obj80->obj.pos.z, obj80->obj.rot.x, obj80->obj.rot.y, obj80->obj.rot.z, 0.0f, + 0.0f, 0.0f); + switch (temp_v0) { + case 0: + break; + case 1: + case 2: + Math_SmoothStepToF(&player->unk_0D0, 15.0f, 0.3f, 3.5f, 0.001f); + Math_SmoothStepToF(&player->unk_08C, 0, 0.3f, 3.5f, 0.001f); + if (temp_v0 == 1) { + player->vel.x = -10.0f; + } else { + player->vel.x = 10.0f; + } + player->pos.x = player->unk_090.x; + player->unk_0D8.x = 2.0f * D_800C9F4C[temp_v0]; + player->pos.x += (D_800C9F4C[temp_v0] * 5.0f); + break; + case 3: + if ((obj80->obj.id == OBJ_80_59) || (obj80->obj.id == OBJ_80_60) || + (obj80->obj.id == OBJ_80_63) || (obj80->obj.id == OBJ_80_66) || + (obj80->obj.id == OBJ_80_68)) { + Player_ApplyDamage(player, temp_v0, 5); + } + player->unk_0D0 = -(D_800C9F00 * 1.5f); + player->vel.z = D_800C9F00 * 1.5f; + D_800C9F00 = 12; + Audio_PlaySfx(0x09008015, &player->unk_460, 0, &D_800C5D34, &D_800C5D34, &D_800C5D3C); + break; + } + if (obj80->obj.id == OBJ_80_59) { + if (((player->pos.x - 230.0f) <= obj80->obj.pos.x) && + (obj80->obj.pos.x <= (player->pos.x + 230.0f)) && + ((80.0f <= player->pos.y - obj80->obj.pos.y)) && + ((player->pos.y - obj80->obj.pos.y) < 210.0f) && + ((player->unk_138 - 220.0f) <= obj80->obj.pos.z) && + (obj80->obj.pos.z <= (player->unk_138 + 220.0f))) { + + if (!(((player->pos.x - 210.0f) <= obj80->obj.pos.x) && + (obj80->obj.pos.x <= (player->pos.x + 210.0f))) && + (D_E6A810_801BE250.unk_6C == 0.f) && (player->vel.y < 0.f)) { + player->unk_1DC = 9; + player->timer_1E8 = 15; + if ((player->pos.x - 200.0f) <= obj80->obj.pos.x) { + player->unk_1EC = player->unk_1F0 = 20; + } else { + player->unk_1EC = player->unk_1F0 = -20; + } + } else { + D_800C9F04 = 1; + D_E6A810_801BE250.unk_6C = obj80->obj.pos.y + 206.0f; + player->unk_1DC = 0; + } + } + if (((player->pos.x - 220.0f) <= obj80->obj.pos.x) && + (obj80->obj.pos.x <= (player->pos.x + 220.0f)) && + ((player->unk_138 - 220.0f) <= obj80->obj.pos.z) && + (obj80->obj.pos.z <= (player->unk_138 + 220.0f)) && (player->pos.y >= 200.0f)) { + player->unk_068 = obj80->obj.pos.y + 204.0f; + } + } else if ((obj80->obj.id == OBJ_80_105) && (func_801A3C20(player->unk_138) != 0)) { + if (((player->pos.x - 200.0f) < D_E6A810_801BE250.unk_54) && + (D_E6A810_801BE250.unk_54 < (player->pos.x + 200.0f))) { + player->unk_068 = D_E6A810_801BE250.unk_58 - 1.0f; + } + } + } + } + } +} + +s32 func_80046E40(Player* player, f32* hitboxData, s32* index, f32 xPos, f32 yPos, f32 zPos, f32 xRot, f32 yRot, + f32 zRot, f32 arg9, f32 argA, f32 argB) { + s32 spB4; + s32 i; + f32 var_fa0; + f32 var_fv0; + f32 var_fv1; + f32 spA0; + Vec3f sp94; + Vec3f sp88; + + spB4 = *hitboxData++; + if (spB4 != 0) { + for (i = 0; i < spB4; i++, hitboxData += 6) { + spA0 = 0; + if (hitboxData[0] == HITBOX_UNK_2) { + Matrix_RotateZ(gCalcMatrix, -hitboxData[3] * M_DTOR, 0); + Matrix_RotateX(gCalcMatrix, -hitboxData[1] * M_DTOR, 1); + Matrix_RotateY(gCalcMatrix, -hitboxData[2] * M_DTOR, 1); + Matrix_RotateZ(gCalcMatrix, -zRot * M_DTOR, 1); + Matrix_RotateX(gCalcMatrix, -xRot * M_DTOR, 1); + Matrix_RotateY(gCalcMatrix, -yRot * M_DTOR, 1); + hitboxData += 4; + spA0 = 1.0f; + } else { + if (hitboxData[0] == HITBOX_UNK_3) { + hitboxData++; + } + Matrix_RotateZ(gCalcMatrix, -zRot * M_DTOR, 0); + Matrix_RotateX(gCalcMatrix, -xRot * M_DTOR, 1); + Matrix_RotateY(gCalcMatrix, -yRot * M_DTOR, 1); + } + if ((arg9 != 0) || (argA != 0) || (argB != 0)) { + Matrix_RotateZ(gCalcMatrix, -argB * M_DTOR, 1); + Matrix_RotateX(gCalcMatrix, -arg9 * M_DTOR, 1); + Matrix_RotateY(gCalcMatrix, -argA * M_DTOR, 1); + } + if ((yRot == 0.0f) && (zRot == 0.0f) && (xRot == 0.0f) && (spA0 == 0)) { + var_fv0 = player->hit1.x; + var_fv1 = player->hit1.y; + var_fa0 = player->hit1.z; + } else { + sp94.x = player->hit1.x - xPos; + sp94.y = player->hit1.y - yPos; + sp94.z = player->hit1.z - zPos; + Matrix_MultVec3fNoTranslate(gCalcMatrix, &sp94, &sp88); + var_fv0 = sp88.x + xPos; + var_fv1 = sp88.y + yPos; + var_fa0 = sp88.z + zPos; + } + if (func_800A78C4((Hitbox*) hitboxData, xPos, yPos, zPos, var_fv0, var_fv1, var_fa0)) { + *index = i + 1; + return 1; + } + if ((yRot == 0.0f) && (zRot == 0.0f) && (xRot == 0.0f) && (spA0 == 0)) { + var_fv0 = player->hit2.x; + var_fv1 = player->hit2.y; + var_fa0 = player->hit2.z; + } else { + sp94.x = player->hit2.x - xPos; + sp94.y = player->hit2.y - yPos; + sp94.z = player->hit2.z - zPos; + Matrix_MultVec3fNoTranslate(gCalcMatrix, &sp94, &sp88); + var_fv0 = sp88.x + xPos; + var_fv1 = sp88.y + yPos; + var_fa0 = sp88.z + zPos; + } + if (func_800A78C4((Hitbox*) hitboxData, xPos, yPos, zPos, var_fv0, var_fv1, var_fa0)) { + *index = i + 1; + return 2; + } + if ((yRot == 0.0f) && (zRot == 0.0f) && (xRot == 0.0f) && (spA0 == 0)) { + var_fv0 = player->hit4.x; + var_fv1 = player->hit4.y; + var_fa0 = player->hit4.z; + } else { + sp94.x = player->hit4.x - xPos; + sp94.y = player->hit4.y - yPos; + sp94.z = player->hit4.z - zPos; + Matrix_MultVec3fNoTranslate(gCalcMatrix, &sp94, &sp88); + var_fv0 = sp88.x + xPos; + var_fv1 = sp88.y + yPos; + var_fa0 = sp88.z + zPos; + } + if (func_800A78C4((Hitbox*) hitboxData, xPos, yPos, zPos, var_fv0, var_fv1, var_fa0)) { + *index = i + 1; + if (hitboxData[-1] == HITBOX_UNK_3) { + return -1; + } else { + return 3; + } + } + if (hitboxData[-1] == HITBOX_UNK_3) { + return 0; + } + if ((yRot == 0.0f) && (zRot == 0.0f) && (xRot == 0.0f) && (spA0 == 0)) { + var_fv0 = player->hit3.x; + var_fv1 = player->hit3.y; + var_fa0 = player->hit3.z; + } else { + sp94.x = player->hit3.x - xPos; + sp94.y = player->hit3.y - yPos; + sp94.z = player->hit3.z - zPos; + Matrix_MultVec3fNoTranslate(gCalcMatrix, &sp94, &sp88); + var_fv0 = sp88.x + xPos; + var_fv1 = sp88.y + yPos; + var_fa0 = sp88.z + zPos; + } + if (func_800A78C4((Hitbox*) hitboxData, xPos, yPos, zPos, var_fv0, var_fv1, var_fa0)) { + *index = i + 1; + return 4; + } + } + } + return 0; +} + +void func_80047504(Player* player) { + s32 pad; + + player->unk_204 = 1; + func_80045130(player); + D_800C9F14 = 0; + func_80045678(player); + func_80045348(player); + if (!player->unk_2B4) { + if (D_800C9F14 != 0) { + if (D_800C9F14 >= 2) { + player->unk_2BC += 2.0f; + } else { + player->unk_2BC += 1.0f; + } + if (player->unk_2BC > 90.0f) { + player->unk_2BC = 90.0f; + player->unk_2B4 = true; + func_8001A55C(&player->unk_460, 0x01004024); + func_8001A55C(&player->unk_460, 0x01008016); + } + } else { + if (player->unk_2BC > 0.0f) { + player->unk_2B4 = true; + func_8001A55C(&player->unk_460, 0x01004024); + func_8001A55C(&player->unk_460, 0x01008016); + } + } + } else { + player->unk_2BC -= 1.0f; + if (player->unk_2BC <= 0.0f) { + player->unk_2B4 = false; + player->unk_2BC = 0.0f; + } + } + func_800B41E0(player); + func_80045E7C(player); + func_80044868(player); + D_800C9F04 = 0; + func_800ADF58(player); + func_800AD7F0(player); + if (gCurrentLevel != LEVEL_MACBETH) { + func_800A8BA4(player); + } else { + player->unk_064 = player->pos.x; + player->unk_06C = player->unk_138 + -10.0f; + player->unk_068 = D_80177940 - 4.0f; + player->unk_248 = 0.0f; + player->unk_24C = 0.0f; + player->unk_070 = 0.0f; + func_800481F4(player); + } + if (gCurrentLevel == LEVEL_TITANIA) { + func_80046358(player); + func_80046260(player); + } + func_800B415C(player); + if ((player->shields <= 0) && (player->timer_220 != 0)) { + func_800B41EC(player); + } +} + +void func_80047754(Player* player) { + u8 sp2F = false; + + if ((D_E6A810_801BE2FA == 0) && (func_801A3300(player, player->unk_138, player->unk_0E8) == 0)) { + if (((player->pos.x - 110.0f) < D_E6A810_801BE274) && (D_E6A810_801BE274 < (player->pos.x + 110.0f)) && + ((player->pos.y - 60.0f) < (D_E6A810_801BE258 + 30.0f)) && + ((D_E6A810_801BE258 + 30.0f) < (player->pos.y + 60.f))) { + func_80047D38(player, D_E6A810_801BE258 + 29.0f); + player->unk_0E4 = D_E6A810_801BE25C; + func_80047FBC(player); + sp2F = true; + } else if (((player->pos.x - 150.0f) < D_E6A810_801BE274) && (D_E6A810_801BE274 < (player->pos.x + 150.0f)) && + ((player->pos.y - 60.0f) < (D_E6A810_801BE258 + 30.0f)) && + ((D_E6A810_801BE258 + 30.0f) < (player->pos.y + 60.0f))) { + func_80047E7C(player, D_E6A810_801BE274, D_E6A810_801BE258 + 30.0f); + } + } + if (func_801A3C20(player->unk_138) != 0) { + player->unk_0E4 = D_E6A810_801BE250.unk_5C; + if (((player->pos.x - 200.0f) < D_E6A810_801BE250.unk_54) && + (D_E6A810_801BE250.unk_54 < (player->pos.x + 200.0f))) { + if (((player->pos.y - 60.0f) < D_E6A810_801BE250.unk_58) && + (D_E6A810_801BE250.unk_58 < (player->pos.y + 60.0f))) { + func_80047D38(player, D_E6A810_801BE250.unk_58); + } else { + if ((100.0f < (D_E6A810_801BE250.unk_58 - player->pos.y)) && + ((D_E6A810_801BE250.unk_58 - player->pos.y) < 130.0f)) { + player->unk_0A0 = 999.0f; + player->pos.y = player->unk_090.y - 1.0f; + } + goto label_29; + } + if (!(((player->pos.x - 65.0f) < D_E6A810_801BE250.unk_54) && + (D_E6A810_801BE250.unk_54 < (player->pos.x + 65.0f)))) { + if (!(((player->pos.x - 100.0f) < D_E6A810_801BE250.unk_54) && + (D_E6A810_801BE250.unk_54 < (player->pos.x + 100.0f)))) { + player->unk_1D4 = 9; + Math_SmoothStepToF(&player->pos.y, D_E6A810_801BE250.unk_58 + 100.0f, 0.5f, 20.0f, 0); + player->vel.y = 2.0f; + Math_SmoothStepToF(&player->unk_0E8, 0.0f, 0.5f, 20.0f, 0); + Math_SmoothStepToF(&player->pos.x, D_E6A810_801BE2A4, 0.02f, 30.0f, 0); + Math_SmoothStepToF(&player->unk_12C, -30.0f, 1.0f, 10.0f, 0); + D_E6A810_801BE284 += 0; // fake? + } + player->unk_188 = 0; + if (player->pos.x < D_E6A810_801BE250.unk_54) { + player->vel.x = 0.0f; + player->pos.x += 8.0f; + } else { + player->vel.x = 0.0f; + player->pos.x -= 8.0f; + } + } + } + } +label_29: + + if (((D_E6A810_801BE2FA == 1) || (player->unk_138 < -116467.875f)) && + (func_801A3790(player, player->unk_138, player->unk_0E8) == 0)) { + if (((player->pos.x - 110.0f) < D_E6A810_801BE29C) && (D_E6A810_801BE29C < (player->pos.x + 110.0f)) && + ((player->pos.y - 60.0f) < (D_E6A810_801BE280 + 30.0f)) && + ((D_E6A810_801BE280 + 30.0f) < (player->pos.y + 60.0f))) { + sp2F = true; + func_80047D38(player, D_E6A810_801BE280 + 29.0f); + player->unk_0E4 = D_E6A810_801BE284; // not fake, but weird + player->unk_0E4 = D_E6A810_801BE284; + func_80047FBC(player); + } else { + if (((player->pos.x - 150.0f) < D_E6A810_801BE29C) && (D_E6A810_801BE29C < (player->pos.x + 150.0f)) && + ((player->pos.y - 60.0f) < (D_E6A810_801BE280 + 30.0f)) && + ((D_E6A810_801BE280 + 30.0f) < (player->pos.y + 60.0f))) { + func_80047E7C(player, D_E6A810_801BE29C, D_E6A810_801BE280 + 30.0f); + } + } + } + if (!sp2F) { + func_80046704(player); + } +} + +void func_80047D38(Player* player, f32 arg1) { + if ((player->unk_16C > 0.2f) && (player->unk_170 > 0.2f) && (player->timer_220 == 0) && (player->vel.y >= 0.0f)) { + return; + } + if ((player->pos.y - 5.0f) < arg1) { + if (player->vel.y < -10.0f) { + Audio_PlaySfx(0x09008015, &player->unk_460, 0, &D_800C5D34, &D_800C5D34, &D_800C5D3C); + player->unk_1F4 = 10; + } + D_800C9F04 = 1; + player->unk_1D4 = 1; + Math_SmoothStepToF(&player->pos.y, arg1, 0.5f, 30.0f, 0.02f); + player->unk_068 = arg1 - 1.0f; + D_800C9F00 = 0; + player->vel.y = 0.0f; + } +} + +void func_80047E7C(Player* player, f32 arg1, f32 arg2) { + player->unk_188 = 0.0f; + if (player->pos.x < arg1) { + if (player->unk_12C >= -10.0f) { + Math_SmoothStepToF(&player->unk_12C, 30.0f, 0.5f, 20.0f, 0); + } else { + Math_SmoothStepToF(&player->pos.y, arg2, 0.5f, 30.0f, 0); + if (player->unk_1DC == 0) { + player->unk_1DC = 9; + player->timer_1E8 = 15; + player->unk_1EC = player->unk_1F0 = -20; + } + } + } else { + if (player->unk_12C <= 10.0f) { + Math_SmoothStepToF(&player->unk_12C, -30.0f, 0.5f, 20.0f, 0); + } else { + Math_SmoothStepToF(&player->pos.y, arg2, 0.5f, 30.0f, 0); + if (player->unk_1DC == 0) { + player->unk_1DC = 9; + player->timer_1E8 = 15; + player->unk_1EC = player->unk_1F0 = 20; + } + } + } +} + +void func_80047FBC(Player* player) { + f32 temp_fv0; + f32 temp_fv0_2; + + if (!(D_800C9F08 & 1)) { + Math_SmoothStepToF(&player->unk_0EC, -((player->vel.z / 5.0f) * 4.0f), 0.4f, 8.0f, 0.01f); + if (player->unk_0EC >= 3.0f) { + if (gPlayer->state_1C8 != 7) { + Audio_PlaySfx(0x19000065, &player->unk_460, 0, &D_800C5D34, &D_800C5D34, &D_800C5D3C); + } + D_800C9F08 |= 1; + } + } else { + Math_SmoothStepToF(&player->unk_0EC, (player->vel.z / 5.0f) * 4.0f, 0.4f, 8.0f, 0.01f); + if (player->unk_0EC <= -3.0f) { + D_800C9F08 &= (u8) ~1; + } + } + if (!(D_800C9F08 & 8)) { + if (-player->vel.z / 5.0f > 3.0f) { + player->pos.y += 3.0f; + } else { + player->pos.y += -player->vel.z / 5.0f; + } + D_800C9F08 |= 8; + } else { + if (-player->vel.z / 5.0f > 2.0f) { + player->pos.y -= 2.0f; + } else { + player->pos.y -= -player->vel.z / 5.0f; + } + D_800C9F08 &= (u8) ~8; + } +} + +void func_800481F4(Player* player) { + s32 pad[17]; + s32 i; + s32 temp_v0; + Object_2F4* obj2F4; + Object_408* obj408; + Object_4C* obj4C; + Object_80* obj80; + s32 sp98; + s32 pad2; + f32 var_fv1; + + func_800A887C(player); + func_800444BC(player); + if (player->timer_498 == 0) { + for (i = 0, obj80 = gObjects80; i < ARRAY_COUNT(gObjects80); i++, obj80++) { + if ((obj80->obj.status == 2) && (obj80->obj.id != OBJ_80_58) && (obj80->obj.id != OBJ_80_105) && + (obj80->obj.id != OBJ_80_59) && (obj80->obj.id != OBJ_80_60) && (obj80->obj.id != OBJ_80_63) && + (obj80->obj.id != OBJ_80_66) && (obj80->obj.id != OBJ_80_67) && (obj80->obj.id != OBJ_80_68) && + (obj80->obj.id != OBJ_80_70) && (obj80->obj.id != OBJ_80_72) && (obj80->obj.id != OBJ_80_71) && + (obj80->obj.id != OBJ_80_73) && (obj80->obj.id != OBJ_80_74) && (obj80->obj.id != OBJ_80_69) && + ((player->unk_138 - 2000.0f) < obj80->obj.pos.z)) { + var_fv1 = obj80->obj.rot.y; + if (obj80->info.action == (ObjectFunc) func_80066EA8) { + var_fv1 = 0.0f; + } + temp_v0 = + func_800A7974(player, obj80->info.hitbox, &sp98, obj80->obj.pos.x, obj80->obj.pos.y, + obj80->obj.pos.z, obj80->obj.rot.x, var_fv1, obj80->obj.rot.z, 0.0f, 0.0f, 0.0f); + if (temp_v0 != 0) { + if (temp_v0 < 0) { + if (temp_v0 == -1) { + D_80178540 = 40; + D_80178570 = 20; + D_80178574 = 20; + D_80178578 = 20; + player->unk_23C = 80; + if (player->unk_22C == 0) { + Audio_PlaySfx(0x19000001, &player->unk_460, 0, &D_800C5D34, &D_800C5D34, &D_800C5D3C); + } + player->unk_22C += 2; + if (player->unk_22C >= 4) { + player->unk_22C = 4; + } + } else if (temp_v0 == -2) { + Audio_PlaySfx(0x19000001, &player->unk_460, 0, &D_800C5D34, &D_800C5D34, &D_800C5D3C); + } + } else { + Player_ApplyDamage(player, temp_v0, obj80->info.damage); + } + } + } + } + + for (i = 0, obj408 = gObjects408; i < ARRAY_COUNT(gObjects408); i++, obj408++) { + if (obj408->obj.status == 2) { + temp_v0 = func_800A7974(player, obj408->info.hitbox, &sp98, obj408->obj.pos.x, obj408->obj.pos.y, + obj408->obj.pos.z, obj408->obj.rot.x, obj408->obj.rot.y, obj408->obj.rot.z, + 0.0f, 0.0f, 0.0f); + if (temp_v0 != 0) { + Player_ApplyDamage(player, temp_v0, obj408->info.damage); + } + } + } + + for (i = 0, obj2F4 = gObjects2F4; i < ARRAY_COUNT(gObjects2F4); i++, obj2F4++) { + if ((obj2F4->obj.status == 2) && (obj2F4->timer_0C2 == 0)) { + if (obj2F4->obj.id == OBJ_2F4_200) { + temp_v0 = + func_800A7974(player, obj2F4->info.hitbox, &sp98, obj2F4->obj.pos.x, obj2F4->obj.pos.y, + obj2F4->obj.pos.z, obj2F4->obj.rot.x, obj2F4->obj.rot.y, obj2F4->obj.rot.z, + obj2F4->unk_2E8.x, obj2F4->unk_2E8.y, obj2F4->unk_2E8.z + obj2F4->unk_0F4.z); + if (temp_v0 != 0) { + Player_ApplyDamage(player, temp_v0, obj2F4->info.damage); + obj2F4->unk_0D0 = 3; + obj2F4->unk_0D4 = player->num + 1; + } + } else if (obj2F4->obj.id == OBJ_2F4_207) { + if (func_80046E40(player, obj2F4->info.hitbox, &sp98, obj2F4->obj.pos.x, obj2F4->obj.pos.y, + obj2F4->obj.pos.z, obj2F4->obj.rot.x, obj2F4->obj.rot.y, obj2F4->obj.rot.z, 0.0f, + 0.0f, 0.0f) != 0) { + if (player->pos.x < obj2F4->obj.pos.x) { + player->unk_0D8.x = (obj2F4->unk_0E8.z > 5.0f) ? -5.0f : -1.5f; + player->unk_1DC = 8; + player->timer_1E8 = 15; + player->unk_1EC = player->unk_1F0 = 20; + } else { + player->unk_0D8.x = (obj2F4->unk_0E8.z > 5.0f) ? 5.0f : 1.5f; + player->unk_1DC = 8; + player->timer_1E8 = 15; + player->unk_1EC = player->unk_1F0 = -20; + } + Math_SmoothStepToF(&player->unk_0D0, 15.0f, 0.3f, 3.5f, 0.001f); + Math_SmoothStepToF(&player->unk_08C, 0, 0.3f, 3.5f, 0.001f); + player->vel.x = 0.0f; + player->vel.y = 30.0f; + player->pos.x = player->unk_090.x; + obj2F4->unk_0D0 = 3; + Player_ApplyDamage(player, 0, 5); + player->timer_498 = 1; + } + } else if ((obj2F4->obj.id >= 205) && (obj2F4->obj.id < 214)) { + if (func_80046E40(player, obj2F4->info.hitbox, &sp98, obj2F4->unk_178 + obj2F4->obj.pos.x, + obj2F4->unk_134 + obj2F4->obj.pos.y + 25.0f, obj2F4->obj.pos.z, obj2F4->unk_188, + obj2F4->unk_17C, obj2F4->obj.rot.z, 0.0f, 0.0f, 0.0f) != 0) { + Math_SmoothStepToF(&player->unk_0D0, 15.0f, 0.3f, 3.5f, 0.001f); + Math_SmoothStepToF(&player->unk_08C, 0, 0.3f, 3.5f, 0.001f); + if (player->pos.x < (obj2F4->unk_170 + obj2F4->obj.pos.x)) { + player->unk_0D8.x = (obj2F4->unk_0E8.z > 5.0f) ? -5.0f : -1.5f; + player->unk_1DC = 8; + player->timer_1E8 = 15; + player->unk_1EC = player->unk_1F0 = 20; + } else { + player->unk_0D8.x = (obj2F4->unk_0E8.z > 5.0f) ? 5.0f : 1.5f; + player->unk_1DC = 8; + player->timer_1E8 = 15; + player->unk_1EC = player->unk_1F0 = -20; + } + player->vel.x = 0.0f; + player->vel.y = 30.0f; + player->pos.x = player->unk_090.x; + obj2F4->unk_0D0 = 3; + if (obj2F4->info.damage != 0) { + Player_ApplyDamage(player, 0, 20); + } else { + obj2F4->unk_0D0 = -1; + } + } + } else { + temp_v0 = func_800A7974(player, obj2F4->info.hitbox, &sp98, obj2F4->obj.pos.x, obj2F4->obj.pos.y, + obj2F4->obj.pos.z, obj2F4->obj.rot.x, obj2F4->obj.rot.y, obj2F4->obj.rot.z, + 0.0f, 0.0f, 0.0f); + if (temp_v0 != 0) { + obj2F4->unk_0D0 = 3; + if ((obj2F4->obj.id == OBJ_2F4_225) || (obj2F4->obj.id == OBJ_2F4_190)) { + obj2F4->unk_0D0 = -1; + } + if (obj2F4->info.damage) { + Player_ApplyDamage(player, temp_v0, obj2F4->info.damage); + if (obj2F4->obj.id == OBJ_2F4_225) { + player->unk_0D8.y = 0.0f; + } + } else { + obj2F4->unk_0D0 = -1; + } + } + } + } + } + for (i = 0, obj4C = gObjects4C; i < ARRAY_COUNT(gObjects4C); i++, obj4C++) { + if (obj4C->obj.status == 2) { + if ((player->unk_138 - 200.0f) < obj4C->obj.pos.z) { + temp_v0 = func_800A7974(player, obj4C->info.hitbox, &sp98, obj4C->obj.pos.x, obj4C->obj.pos.y, + obj4C->obj.pos.z, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f); + if (temp_v0 != 0) { + if ((obj4C->obj.id == OBJ_4C_163) || (obj4C->obj.id == OBJ_4C_161) || + (obj4C->obj.id == OBJ_4C_162)) { + obj4C->unk_46 = 1; + player->unk_1F4 = 6; + player->unk_21C = 0; + } else if (obj4C->obj.id == OBJ_4C_169) { + obj4C->unk_46 = 1; + } else { + Player_ApplyDamage(player, temp_v0, obj4C->info.damage); + } + } + } + } + } + } + func_800A86E4(player); +} diff --git a/src/main/sf_hud.c b/src/main/sf_hud.c index 8e9a5695..b1396e79 100644 --- a/src/main/sf_hud.c +++ b/src/main/sf_hud.c @@ -899,7 +899,7 @@ void func_8008B2F0(void) { D_800D1EBC = 0; } - if ((D_801617B0 == 0) && ((s32) gGoldRingCount[0] >= 3)) { + if ((D_801617B0 == 0) && (gGoldRingCount[0] >= 3)) { D_801617A4 = 1.5f; } else { D_801617A4 = 1.0f; @@ -1198,7 +1198,7 @@ void func_8008D4F0(f32 arg0, f32 arg1) { temp_fv0 = 1.0f - temp_fs0; temp2 = sp68 * temp_fs0; - if (gPlayer[gPlayerNum].unk_2B4 == 0) { + if (!gPlayer[gPlayerNum].unk_2B4) { Math_SmoothStepToF(&D_800D19AC[var_v1], 255.0f, 0.4f, 100.0f, 0.01f); } else { Math_SmoothStepToF(&D_800D19AC[var_v1], 100.0f, 0.4f, 100.0f, 0.01f); @@ -1394,11 +1394,11 @@ void func_8008E2C8(f32 arg0, f32 arg1, s32* arg2, f32 arg3) { for (i = 0; i != 5; i++) { if ((i == 0) || (i == 2)) { - var_s2 = (s32) arg2[i / 2] % 60; + var_s2 = arg2[i / 2] % 60; } if (i == 4) { - var_s2 = (s32) arg2[i / 2] % 100; + var_s2 = arg2[i / 2] % 100; } if (i & 1) { diff --git a/src/overlays/ovl_DF4260/DF4260.c b/src/overlays/ovl_DF4260/DF4260.c index 6123b698..dc362957 100644 --- a/src/overlays/ovl_DF4260/DF4260.c +++ b/src/overlays/ovl_DF4260/DF4260.c @@ -28,7 +28,7 @@ void func_DF4260_80187530(Object_80* obj80) { #pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_DF4260/DF4260/func_DF4260_80187A38.s") f32 func_DF4260_80187A88(s32 arg0) { - f32 ret = (f32) arg0 * 0.5f; + f32 ret = arg0 * 0.5f; if (ret > 8.0f) { ret = 8.0f; diff --git a/src/overlays/ovl_EBFBE0/EBFBE0.c b/src/overlays/ovl_EBFBE0/EBFBE0.c index a71445ec..f3f438ed 100644 --- a/src/overlays/ovl_EBFBE0/EBFBE0.c +++ b/src/overlays/ovl_EBFBE0/EBFBE0.c @@ -11,35 +11,35 @@ void func_EBFBE0_801A01A8(void); void func_EBFBE0_80187520(s32 arg0, s32 arg1) { switch (arg0) { - case 0x67: + case 103: func_EBFBE0_80187754(); break; - case 0x68: + case 104: func_EBFBE0_801878D8(); break; - case 0x69: + case 105: func_EBFBE0_8019E8D0(); break; - case 0x6A: + case 106: func_EBFBE0_801A01A8(); break; - case 0x6B: + case 107: func_EBFBE0_801920C4(); break; - case 0x6C: + case 108: func_EBFBE0_80192340(); break; - case 0x6D: + case 109: func_EBFBE0_8019E85C(); break; - case 0x6E: + case 110: func_EBFBE0_8019E8C8(); default: diff --git a/src/overlays/ovl_EBFBE0/ED6EC0.c b/src/overlays/ovl_EBFBE0/ED6EC0.c index 0958e2d8..fb92421c 100644 --- a/src/overlays/ovl_EBFBE0/ED6EC0.c +++ b/src/overlays/ovl_EBFBE0/ED6EC0.c @@ -1045,9 +1045,6 @@ f32 func_EBFBE0_801A25C8(s32 arg0) { return sp4; } -// Doesn't match for some reason, related to "D_EBFBE0_801CEA64 *= 1.04f;" -// 1.04f gets put in rodata for some reason. Maybe it needs Data imported? / -#ifdef NON_MATCHING void func_EBFBE0_801A2674(void) { s32 i; @@ -1055,7 +1052,7 @@ void func_EBFBE0_801A2674(void) { func_EBFBE0_801A4A38(D_EBFBE0_801CEA64); - D_EBFBE0_801CEA64 *= 1.04f; + D_EBFBE0_801CEA64 *= 1.03f; for (i = 0; i < 15; i++) { D_EBFBE0_801CD900[i] -= 16; @@ -1103,9 +1100,6 @@ void func_EBFBE0_801A2674(void) { func_800182F4(0x102D00FF); func_800182F4(0x112D00FF); } -#else -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ED6EC0/func_EBFBE0_801A2674.s") -#endif #pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ED6EC0/func_EBFBE0_801A281C.s") diff --git a/src/overlays/ovl_EBFBE0/fox_option.c b/src/overlays/ovl_EBFBE0/fox_option.c index 628ff404..f3a79b6a 100644 --- a/src/overlays/ovl_EBFBE0/fox_option.c +++ b/src/overlays/ovl_EBFBE0/fox_option.c @@ -3770,7 +3770,7 @@ s32 func_EBFBE0_8019C66C(f32* arg0, f32 arg1, f32 arg2, UnkStruct_D_EBFBE0_801B9 if (arg3->unk_4 == 0) { if (x != 0) { - var_fv1 = (f32) x / 20.0f; + var_fv1 = x / 20.0f; arg3->unk_4 = arg3->unk_0; if (arg3->unk_0 != 0) { diff --git a/src/overlays/ovl_EBFBE0/fox_title.c b/src/overlays/ovl_EBFBE0/fox_title.c index a1e46da4..a6306762 100644 --- a/src/overlays/ovl_EBFBE0/fox_title.c +++ b/src/overlays/ovl_EBFBE0/fox_title.c @@ -2478,7 +2478,7 @@ void func_EBFBE0_8018E67C(s32 arg0) { Matrix_Pop(&gGfxMatrix); - temp_fv1 = __sinf((f32) sp5C * 12.0f * M_DTOR) * 15.0f; + temp_fv1 = __sinf(sp5C * 12.0f * M_DTOR) * 15.0f; if (temp_fv1 >= 0) { D_EBFBE0_801B8350[arg0].unk_0C = temp_fv1; @@ -2955,7 +2955,7 @@ void func_EBFBE0_801903B8(void) { Matrix_SetGfxMtx(&gMasterDisp); - temp = (f32) D_EBFBE0_801AE528[i] * var_fs1; + temp = D_EBFBE0_801AE528[i] * var_fs1; if (i != 10) { gDPSetPrimColor(gMasterDisp++, 0, 0, 255, 255, D_EBFBE0_801AE51C[i], (s32) temp); diff --git a/yamls/us/main.yaml b/yamls/us/main.yaml index b82897cc..66d2c615 100644 --- a/yamls/us/main.yaml +++ b/yamls/us/main.yaml @@ -263,12 +263,11 @@ - [0xCA650, rodata, ../libultra/rmon/rmonrcp] # DATA - game engine - - [0xCA690, .data, fox_360] - [0xCA7C0, data, sf_beam] - - [0xCA830, data, fox_bg] + - [0xCA830, .data, fox_bg] - [0xCAA90, .data, fox_43AC0] - - [0xCAB00, data, sf_43E80] + - [0xCAB00, .data, sf_43E80] - [0xCAB60, data, sf_496C0] - [0xCAE20, .data, fox_display] - [0xCAFB0, .data, fox_load] @@ -330,7 +329,6 @@ - { start: 0xDE480, type: .bss, vram: 0x80145360, name: sys_fault } - { start: 0xDE480, type: bss, vram: 0x80145D40, name: sys_audio } - # Libultra bss - { start: 0xDE480, type: bss, vram: 0x80156620, name: ../libultra/io/controller } - { start: 0xDE480, type: bss, vram: 0x801566B0, name: ../libultra/io/motor } @@ -360,7 +358,7 @@ # Game engine bss - { start: 0xDE480, type: .bss, vram: 0x8015F900, name: fox_360 } - { start: 0xDE480, type: bss, vram: 0x8015F950, name: sf_beam } - - { start: 0xDE480, type: bss, vram: 0x8015F960, name: fox_bg } + - { start: 0xDE480, type: .bss, vram: 0x8015F960, name: fox_bg } - { start: 0xDE480, type: .bss, vram: 0x801613A0, name: fox_43AC0 } - { start: 0xDE480, type: .bss, vram: 0x801613B0, name: fox_display } - { start: 0xDE480, type: .bss, vram: 0x801615D0, name: fox_edisplay }