diff options
| author | Tyler McGavran <tyler.taggerung@gmail.com> | 2022-11-01 17:07:35 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-11-01 15:07:35 -0600 |
| commit | 4647cdcd7e2a0f5b68265aac82d3a50d42aabfaa (patch) | |
| tree | c2bee6756a8492fa7d7b6b2a3a05162fec2c9134 /src/camera.c | |
| parent | 1483ddaa0343c1614159c8a4e915d9f027abb8bc (diff) | |
Assorted, unrelated matches (#267)
* Assorted matches
Signed-off-by: Taggerung <tyler.taggerung@gmail.com>
Diffstat (limited to 'src/camera.c')
| -rw-r--r-- | src/camera.c | 256 |
1 files changed, 108 insertions, 148 deletions
diff --git a/src/camera.c b/src/camera.c index d768b6562..d8a3ce6e6 100644 --- a/src/camera.c +++ b/src/camera.c @@ -4,6 +4,10 @@ #include <defines.h> #include "camera.h" #include "math_util.h" +#include "memory.h" +#include "waypoints.h" +#include "variables.h" +#include "code_8001F980.h" Camera cameras[4]; Camera *camera1 = &cameras[0]; @@ -11,6 +15,11 @@ Camera *camera2 = &cameras[1]; Camera *camera3 = &cameras[2]; Camera *camera4 = &cameras[3]; +// Future BSS section, replaces unknown amount of stuff in bss_8001C4D0.s +// f32 D_80164A30; +// s32 D_80164A2C; +// f32 D_8016524C; <- could maybe, maybe be part of spawn_players' bss stuff? + #ifdef MIPS_TO_C //generated by m2c commit 3b40ab93768f52ac241c5ae84ef58ef6bc4cb1de void func_80014DE4(s32, s32, s32, Camera *); /* extern */ @@ -67,7 +76,7 @@ void func_8001C4D0(f32 posX, f32 posY, f32 posZ, s16 rot, u32 arg4, s32 cameraId temp_a3->pos[0] = posX; temp_a3->pos[1] = posY; temp_a3->pos[2] = posZ; - temp_a3->rotZ = 0; + temp_a3->someBitFlags = 0; temp_a3->lookAt[2] = 150.0f; temp_a3->lookAt[1] = (f32) ((f64) posY - 3.0); temp_a3->lookAt[0] = 0.0f; @@ -221,74 +230,57 @@ void func_8001CA24(Player *player, f32 arg1) { camera->unk_94 = arg1; } -#ifdef MIPS_TO_C -//generated by m2c commit bece1d6db17040749f77dbbd090363cc6fb926f9 -void func_802B6540(f32 *, ?, f32, ?, s32); /* extern */ -extern f32 D_80164A30; -s16 gCurrentCourseId; /* unable to generate initializer */ - -void func_8001CA78(s32 arg0, Camera *camera, f32 *arg2, f32 *arg3, f32 *arg4, f32 *arg5) { - f32 sp74; - f32 sp70; - f32 sp6C; - f32 sp68; - f32 sp64; - f32 sp60; - f32 sp5C; - f32 sp4C; - f32 sp48; - f32 sp44; - f32 temp_f0; - f32 temp_f12; - f32 temp_f16; - f32 temp_f18; - f32 temp_f2; +void func_8001CA78(Player *player, Camera *camera, Vec3f arg2, f32 *arg3, f32 *arg4, f32 *arg5, s16 huh, s8 wut) { + Mat3 sp74; + Vec3f sp68; + Vec3f sp5C; + f32 posX; + f32 posY; + f32 posZ; f32 var_f14; - f32 var_f14_2; + f32 temp_f18; + f32 temp_f16; + s32 stackPadding0; struct TrackWayPoint *temp_s2; - sp68 = camera->unk_30[0]; - sp6C = camera->unk_30[1]; - sp70 = camera->unk_30[2]; - sp5C = camera->unk_3C[0]; - sp60 = camera->unk_3C[1]; - sp64 = camera->unk_3C[2]; - arg2->unk0 = camera->lookAt[0]; - temp_s2 = &(*D_80164550)[*gWaypointCountByPathIndex - 0xA]; - arg2->unk4 = (f32) camera->lookAt[1]; - arg2->unk8 = (f32) camera->lookAt[2]; - func_802B6540(&sp74, 0, 1.0f, 0, -0x00008000); - func_802B63B8(&sp5C, &sp74); - if (gCurrentCourseId == 0x000A) { - var_f14 = sp5C; + temp_s2 = &D_80164550[0][gWaypointCountByPathIndex[0] - 10]; + sp68[0] = camera->unk_30[0]; + sp68[1] = camera->unk_30[1]; + sp68[2] = camera->unk_30[2]; + sp5C[0] = camera->unk_3C[0]; + sp5C[1] = camera->unk_3C[1]; + sp5C[2] = camera->unk_3C[2]; + arg2[0] = camera->lookAt[0]; + arg2[1] = camera->lookAt[1]; + arg2[2] = camera->lookAt[2]; + func_802B6540(sp74, 0, 1, 0, -0x00008000); + func_802B63B8(sp5C, sp74); + if (gCurrentCourseId == COURSE_TOADS_TURNPIKE) { + var_f14 = sp5C[0]; } else { - var_f14 = sp5C + (f32) temp_s2->wayPointX; + var_f14 = sp5C[0] + temp_s2->wayPointX; } - arg2->unk0 += (var_f14 - camera->lookAt[0]) * 1.0f; - arg2->unk4 = (f32) (arg2->unk4 + (((sp60 + ((f32) temp_s2->wayPointY + D_80164A30)) - camera->lookAt[1]) * 1.0f)); - arg2->unk8 = (f32) (arg2->unk8 + (((sp64 + (bitwise f32) D_8016524C) - camera->lookAt[2]) * 1.0f)); - func_802B63B8(&sp68, &sp74); - if (gCurrentCourseId == 0x000A) { - var_f14_2 = sp68; + temp_f16 = sp5C[2] + D_8016524C; + temp_f18 = sp5C[1] + (temp_s2->wayPointY + D_80164A30); + arg2[0] += (var_f14 - camera->lookAt[0]) * 1; + arg2[1] += (temp_f18 - camera->lookAt[1]) * 1; + arg2[2] += (temp_f16 - camera->lookAt[2]) * 1; + func_802B63B8(sp68, sp74); + if (gCurrentCourseId == COURSE_TOADS_TURNPIKE) { + var_f14 = sp68[0]; } else { - var_f14_2 = sp68 + (f32) temp_s2->wayPointX; + var_f14 = sp68[0] + temp_s2->wayPointX; } - sp4C = var_f14_2; - temp_f16 = sp70 + (bitwise f32) D_8016524C; - sp44 = temp_f16; - temp_f18 = sp6C + ((f32) temp_s2->wayPointY + D_80164A30 + 6.0f); - sp48 = temp_f18; - move_f32_towards(&D_80164A30, 0.0f, 0.02f); - temp_f0 = camera->pos[0]; - *arg3 = ((var_f14_2 - temp_f0) * 1.0f) + temp_f0; - temp_f2 = camera->pos[1]; - *arg4 = ((temp_f18 - temp_f2) * 1.0f) + temp_f2; - temp_f12 = camera->pos[2]; - *arg5 = ((temp_f16 - temp_f12) * 1.0f) + temp_f12; + temp_f16 = sp68[2] + D_8016524C; + temp_f18 = sp68[1] + (temp_s2->wayPointY + D_80164A30 + 6.0f); + move_f32_towards(&D_80164A30, 0, 0.02f); + posX = camera->pos[0]; + *arg3 = ((var_f14 - posX) * 1) + posX; + posY = camera->pos[1]; + *arg4 = ((temp_f18 - posY) * 1) + posY; + posZ = camera->pos[2]; + *arg5 = ((temp_f16 - posZ) * 1) + posZ; } -#else -GLOBAL_ASM("asm/non_matchings/camera/func_8001CA78.s") -#endif #ifdef MIPS_TO_C //generated by m2c commit bece1d6db17040749f77dbbd090363cc6fb926f9 @@ -496,13 +488,11 @@ GLOBAL_ASM("asm/non_matchings/camera/func_8001CCEC.s") #endif #ifdef MIPS_TO_C -//generated by m2c commit 3b40ab93768f52ac241c5ae84ef58ef6bc4cb1de -void func_802B6540(f32 *, f32, ?, f32, s32); /* extern */ +//generated by m2c commit 0927f17aac197848d4ebdf0c6bbad74b01f0851c extern ? D_80164A90; extern ? D_80164AA0; void func_8001D53C(Player *player, Camera *camera, f32 *arg2, f32 *arg3, f32 *arg4, f32 *arg5, s16 arg6, s16 arg7) { - f32 sp74; f32 sp70; f32 sp6C; f32 sp68; @@ -532,12 +522,12 @@ void func_8001D53C(Player *player, Camera *camera, f32 *arg2, f32 *arg3, f32 *ar arg2->unk4 = (f32) camera->lookAt[1]; arg2->unk8 = (f32) camera->lookAt[2]; sp38 = arg7 * 4; - func_802B6540(&sp74, 0.0f, 0x3F800000, 0.0f, (s32) arg6); - func_802B63B8(&sp5C, &sp74); + func_802B6540((f32 (*)[3]) &sp74[0], 0.0f, 1.0f, 0.0f, (s16) (s32) arg6); + func_802B63B8(&sp5C, (f32 (*)[3]) &sp74[0]); arg2->unk0 += ((sp5C + player->pos[0]) - camera->lookAt[0]) * 1.0f; arg2->unk8 = (f32) (arg2->unk8 + (((sp64 + player->pos[2]) - camera->lookAt[2]) * 1.0f)); arg2->unk4 = (f32) (arg2->unk4 + (((sp60 + player->pos[1]) - camera->lookAt[1]) * 1.0f)); - func_802B63B8(&sp68, &sp74); + func_802B63B8(&sp68, (f32 (*)[3]) &sp74[0]); var_f0 = (f32) ((f64) sp6C + ((f64) player->unk_074 + 1.5)); if ((player->unk_0CA & 1) == 1) { var_f0 = sp6C + (sp3C + 10.0f); @@ -776,79 +766,66 @@ void func_8001D944(Player *player, Camera *camera, f32 *arg2, f32 *arg3, f32 *ar GLOBAL_ASM("asm/non_matchings/camera/func_8001D944.s") #endif -#ifdef MIPS_TO_C -//generated by m2c commit 3b40ab93768f52ac241c5ae84ef58ef6bc4cb1de -void func_8001CA78(Player *, Camera *, f32 *, f32 *, f32 *, f32 *, s32, s32); /* extern */ - void func_8001E0C4(Camera *camera, Player *player, s8 arg2) { - f32 sp84; + s32 stackPadding0[6]; + f32 temp_f12; f32 sp80; - f32 sp7C; + f32 temp_f14; + s32 stackPadding1; f32 sp74; f32 sp70; f32 sp6C; - f32 sp60; - f32 temp_f0; - f32 temp_f12; - f32 temp_f14; - f32 temp_f2; - f32 temp_f2_2; - s16 temp_v0; + Vec3f sp60; + s16 temp_t7; s16 var_a2; + s32 stackPadding2[5]; + s32 stackPadding3[3]; + s32 test = 3; - temp_v0 = player->unk_078; - if (temp_v0 == 0) { + if (player->unk_078 == 0) { var_a2 = 0x0064; - } else if (temp_v0 < 0) { - var_a2 = 0x87 - (temp_v0 / 3); + } else if (player->unk_078 < 0) { + var_a2 = 0x87 - (player->unk_078 / 3); } else { - var_a2 = (temp_v0 / 3) + 0x87; + var_a2 = (player->unk_078 / 3) + 0x87; } func_800224F0(&camera->unk_2C, player->unk_02C[1], var_a2); - func_8001CA78(player, camera, &sp60, &sp74, &sp70, &sp6C, (s32) camera->unk_2C, (s32) arg2); - camera->rotZ = (u16) camera->rotZ & 0xFFFB; - func_802ADDC8(&camera->unk_54, (f32) 3, sp74, sp70, sp6C); - temp_f0 = camera->unk_54.unk44; - if (temp_f0 < 0.0f) { - sp74 += -camera->unk_54.unk60[0] * temp_f0 * 1.0f; - sp70 = (f32) ((f64) sp70 + ((f64) (-camera->unk_54.unk60[1] * camera->unk_54.unk44) * 0.5)); - sp6C += -camera->unk_54.unk60[2] * camera->unk_54.unk44 * 1.0f; + func_8001CA78(player, camera, sp60, &sp74, &sp70, &sp6C, camera->unk_2C, arg2); + camera->someBitFlags &= ~0x0004; + temp_t7 = func_802ADDC8(&camera->unk_54, test, sp74, sp70, sp6C); + if (camera->unk_54.unk3C[2] < 0.0f) { + sp74 += -camera->unk_54.unk60[0] * camera->unk_54.unk3C[2] * 1; + sp70 += -camera->unk_54.unk60[1] * camera->unk_54.unk3C[2] * 0.5; + sp6C += -camera->unk_54.unk60[2] * camera->unk_54.unk3C[2] * 1; } - temp_f2 = camera->unk_54.unk3C; - if (temp_f2 < 0.0f) { - camera->rotZ = (u16) camera->rotZ | 6; - sp74 = (f32) ((f64) sp74 + ((f64) (-camera->unk_54.unk48[0] * temp_f2) * 1.5)); - sp70 += -camera->unk_54.unk48[1] * camera->unk_54.unk3C * 1.0f; - sp6C = (f32) ((f64) sp6C + ((f64) (-camera->unk_54.unk48[2] * camera->unk_54.unk3C) * 1.5)); + if (camera->unk_54.unk3C[0] < 0.0f) { + camera->someBitFlags = camera->someBitFlags | 4 | 2; + sp74 += -camera->unk_54.unk48[0] * camera->unk_54.unk3C[0] * 1.5; + sp70 += -camera->unk_54.unk48[1] * camera->unk_54.unk3C[0] * 1; + sp6C += -camera->unk_54.unk48[2] * camera->unk_54.unk3C[0] * 1.5; } - temp_f2_2 = camera->unk_54.unk40; - if (temp_f2_2 < 0.0f) { - camera->rotZ = (u16) camera->rotZ | 6; - sp74 = (f32) ((f64) sp74 + ((f64) (-camera->unk_54.unk54[0] * temp_f2_2) * 1.5)); - sp70 += -camera->unk_54.unk54[1] * camera->unk_54.unk40 * 1.0f; - sp6C = (f32) ((f64) sp6C + ((f64) (-camera->unk_54.unk54[2] * camera->unk_54.unk40) * 1.5)); + if (camera->unk_54.unk3C[1] < 0.0f) { + camera->someBitFlags = camera->someBitFlags | 4 | 2; + sp74 += -camera->unk_54.unk54[0] * camera->unk_54.unk3C[1] * 1.5; + sp70 += -camera->unk_54.unk54[1] * camera->unk_54.unk3C[1] * 1; + sp6C += -camera->unk_54.unk54[2] * camera->unk_54.unk3C[1] * 1.5; } - if (((s16) M2C_ERROR(Read from unset register $v0) == 0) && (((u16) camera->rotZ & 2) != 2)) { + if ((temp_t7 == 0) && ((camera->someBitFlags & 2) != 2)) { camera->unk_AC = camera->unk_2C; } - camera->lookAt[0] = sp60; - camera->lookAt[1] = sp64; - camera->lookAt[2] = sp68; + camera->lookAt[0] = sp60[0]; + camera->lookAt[1] = sp60[1]; + camera->lookAt[2] = sp60[2]; camera->pos[0] = sp74; camera->pos[1] = sp70; - temp_f12 = camera->lookAt[0] - camera->pos[0]; camera->pos[2] = sp6C; + temp_f12 = camera->lookAt[0] - camera->pos[0]; sp80 = camera->lookAt[1] - camera->pos[1]; - sp84 = temp_f12; temp_f14 = camera->lookAt[2] - camera->pos[2]; - sp7C = temp_f14; camera->rot[1] = atan2s(temp_f12, temp_f14); - camera->rot[0] = atan2s(sqrtf((sp84 * sp84) + (temp_f14 * temp_f14)), sp80); + camera->rot[0] = atan2s(sqrtf((temp_f12 * temp_f12) + (temp_f14 * temp_f14)), sp80); camera->rot[2] = 0; } -#else -GLOBAL_ASM("asm/non_matchings/camera/func_8001E0C4.s") -#endif #ifdef MIPS_TO_C //generated by m2c commit 3b40ab93768f52ac241c5ae84ef58ef6bc4cb1de @@ -930,7 +907,7 @@ void func_8001E45C(Camera *camera, Player *player, s8 arg2) { func_800224F0(&camera->unk_2C, (s16) (player->unk_02C[1] + camera->unk_B0), var_a3); func_8001CCEC(player, camera, &sp64, &sp84, &sp80, &sp7C, &sp58, (s32) camera->unk_2C, (s32) arg2); } - camera->rotZ = (u16) camera->rotZ & 0xFFFB; + camera->someBitFlags = (u16) camera->someBitFlags & 0xFFFB; func_802ADDC8(&camera->unk_54, (f32) 3, sp84, sp80, sp7C); camera->pos[0] = sp84; camera->pos[1] = sp80; @@ -1069,7 +1046,7 @@ void func_8001EA0C(Camera *camera, Player *player, s8 arg2) { func_800224F0(&camera->unk_2C, (s16) (player->unk_02C[1] + camera->unk_B0), var_a3); func_8001D944(player, camera, &sp64, &sp84, &sp80, &sp7C, &sp58, (s32) camera->unk_2C, (s32) arg2); } - camera->rotZ = (u16) camera->rotZ & 0xFFFB; + camera->someBitFlags = (u16) camera->someBitFlags & 0xFFFB; func_802ADDC8(&camera->unk_54, (f32) 3, sp84, sp80, sp7C); camera->pos[0] = sp84; camera->pos[1] = sp80; @@ -1417,43 +1394,26 @@ block_66: GLOBAL_ASM("asm/non_matchings/camera/func_8001F394.s") #endif -#ifdef MIPS_TO_C -//generated by m2c commit 3b40ab93768f52ac241c5ae84ef58ef6bc4cb1de -extern u16 D_80152300; -extern s32 D_80164A2C; - void func_8001F87C(s32 cameraId) { - Camera *temp_v0_2; - Player *var_a2; - s32 var_a1; - u16 temp_v0; + s32 playerIndex; + // Why? + s32 test = cameraId; - if (gActiveScreenMode == SCREEN_MODE_1P) { - var_a1 = 0; - var_a2 = gPlayerOne; - if (gModeSelection == GRAND_PRIX) { -loop_3: - temp_v0 = var_a2->unk_000; - if (!(temp_v0 & 0x200) && !(temp_v0 & 0x80)) { - if (var_a1 == 0x60E8) { + if(gPlayerOne){} + if (gActiveScreenMode == 0) { + if (gModeSelection == 0) { + for (playerIndex = 0; playerIndex < 8; playerIndex++) { + if ((gPlayerOne[playerIndex].unk_000 & 0x200) || (gPlayerOne[playerIndex].unk_000 & 0x80)) break; + if (playerIndex == 7) { D_80164A2C += 1; } - if ((var_a1 == 0x60E8) && (D_80164A2C == 0x0000003C)) { + if ((playerIndex == 7) && (D_80164A2C == 0x0000003C)) { D_80164A28 = 2; - *(&D_80152300 + (cameraId * 2)) = 1; - temp_v0_2 = &cameras[cameraId]; - temp_v0_2->rot[1] = var_a2->unk_02E; - temp_v0_2->unk2C = (s16) var_a2->unk_02E; - } - var_a1 += 0xDD8; - var_a2 += 0xDD8; - if (var_a1 != 0x6EC0) { - goto loop_3; + D_80152300[test] = 1; + cameras[test].rot[1] = gPlayerOne[playerIndex].unk_02C[1]; + cameras[test].unk_2C = gPlayerOne[playerIndex].unk_02C[1]; } } } } } -#else -GLOBAL_ASM("asm/non_matchings/camera/func_8001F87C.s") -#endif |
