From 6224b1f52b3514545720a965f5cf4252689bff76 Mon Sep 17 00:00:00 2001 From: Thomas Rohloff Date: Fri, 18 Jul 2025 17:21:47 +0200 Subject: [PATCH 1/7] Remove dupes from ceremony_and_credits.c Signed-off-by: Thomas Rohloff --- src/ending/ceremony_and_credits.c | 66 ++++++++++--------------------- src/ending/ceremony_and_credits.h | 4 -- 2 files changed, 21 insertions(+), 49 deletions(-) diff --git a/src/ending/ceremony_and_credits.c b/src/ending/ceremony_and_credits.c index 6f6a5756ee..45e555bbe0 100644 --- a/src/ending/ceremony_and_credits.c +++ b/src/ending/ceremony_and_credits.c @@ -49,18 +49,6 @@ s16 sCutsceneSplineSegment; s16 D_80287B1E; s8 D_80287B20; -void vec3f_set_dupe(Vec3f dest, f32 arg1, f32 arg2, f32 arg3) { - dest[0] = arg1; - dest[1] = arg2; - dest[2] = arg3; -} - -void vec3s_set_dupe(Vec3s dest, s16 arg1, s16 arg2, s16 arg3) { - dest[0] = arg1; - dest[1] = arg2; - dest[2] = arg3; -} - void vec3f_clear(Vec3f arg0) { arg0[0] = arg0[1] = arg0[2] = 0.0f; } @@ -69,18 +57,6 @@ void vec3s_clear(Vec3s arg0) { arg0[0] = arg0[1] = arg0[2] = 0; } -void vec3f_copy_return_dupe(Vec3f dest, Vec3f src) { - dest[0] = src[0]; - dest[1] = src[1]; - dest[2] = src[2]; -} - -void vec3s_copy_dupe(Vec3s dest, Vec3s src) { - dest[0] = src[0]; - dest[1] = src[1]; - dest[2] = src[2]; -} - void func_80282040(void) { } @@ -90,7 +66,7 @@ void func_80282048(void) { UNUSED void rotate_y_vec3f(Vec3f dest, Vec3f src, s16 angle) { Vec3f sp2C; - vec3f_copy_return_dupe(sp2C, src); + vec3f_copy(sp2C, src); dest[0] = (sp2C[2] * sins(angle)) + (sp2C[0] * coss(angle)); dest[1] = sp2C[1]; dest[2] = (sp2C[2] * coss(angle)) - (sp2C[0] * sins(angle)); @@ -99,7 +75,7 @@ UNUSED void rotate_y_vec3f(Vec3f dest, Vec3f src, s16 angle) { UNUSED void rotate_x_vec3f(Vec3f dest, Vec3f src, s16 angle) { Vec3f sp2C; - vec3f_copy_return_dupe(sp2C, src); + vec3f_copy(sp2C, src); dest[2] = (sp2C[2] * coss(angle)) - (sp2C[1] * sins(angle)); dest[1] = (sp2C[2] * sins(angle)) + (sp2C[1] * coss(angle)); dest[0] = sp2C[0]; @@ -234,7 +210,7 @@ UNUSED void aborting_cinematic_function(Vec3f arg0, Vec3f arg1, Vec3f arg2, Vec3 Vec3f sp30; // What's up with this? Why do we copy arg1 to an unused local variable? - vec3f_copy_return_dupe(sp3C, arg1); + vec3f_copy(sp3C, arg1); sp30[2] = -((arg2[2] * coss(arg3[0])) - (arg2[1] * sins(arg3[0]))); sp30[1] = (arg2[2] * sins(arg3[0])) + (arg2[1] * coss(arg3[0])); sp30[0] = arg2[0]; @@ -427,8 +403,8 @@ void func_80282F44(s32 arg0, CinematicCamera* arg1, Camera* camera) { Vec3f pos; Vec3f lookat; - vec3f_set_dupe(pos, camera->pos[0], camera->pos[1], camera->pos[2]); - vec3f_set_dupe(lookat, camera->lookAt[0], camera->lookAt[1], camera->lookAt[2]); + vec3f_set(pos, camera->pos[0], camera->pos[1], camera->pos[2]); + vec3f_set(lookat, camera->lookAt[0], camera->lookAt[1], camera->lookAt[2]); if ((arg0 == 0) || (arg0 == 1)) { if ((arg1->unk48[0] != 0) || (arg1->unk48[1] != 0)) { calculate_distance_angle_y_and_angle_y_to_xz(pos, lookat, &distance, &angleCam[0], &angleCam[1]); @@ -533,10 +509,10 @@ void init_cinematic_camera(void) { camera->cutscene = 0; D_802856C4 = (s32) D_800DC5E4; vec3f_clear(camera->lookAt); - vec3f_set_dupe(camera->pos, 0.0f, 0.0f, 500.0f); + vec3f_set(camera->pos, 0.0f, 0.0f, 500.0f); vec3f_clear(camera->unk30); - vec3f_set_dupe(camera->unk24, 0.0f, 0.0f, 500.0f); - vec3f_set_dupe(camera->unk3C, 0.0f, 1.0f, 0.0f); + vec3f_set(camera->unk24, 0.0f, 0.0f, 500.0f); + vec3f_set(camera->unk3C, 0.0f, 1.0f, 0.0f); camera->unk18 = 0.0f; vec3s_clear(camera->unk48); vec3s_clear(camera->unk4E); @@ -588,13 +564,13 @@ s32 func_80283648(Camera* camera) { CinematicCamera* cinematicCamera = &D_802876E0; cinematic_stub(); - vec3f_copy_return_dupe(pos, camera->pos); - vec3f_copy_return_dupe(lookAt, camera->lookAt); - vec3f_copy_return_dupe(up, camera->up); + vec3f_copy(pos, camera->pos); + vec3f_copy(lookAt, camera->lookAt); + vec3f_copy(up, camera->up); cinematicCamera->cutscene = func_8028336C(cinematicCamera, camera); if (cinematicCamera->cutscene != 0) { - vec3f_copy_return_dupe(cinematicCamera->lookAt, camera->pos); - vec3f_copy_return_dupe(cinematicCamera->pos, camera->lookAt); + vec3f_copy(cinematicCamera->lookAt, camera->pos); + vec3f_copy(cinematicCamera->pos, camera->lookAt); play_cutscene(cinematicCamera); calculate_distance_angle_y_and_angle_y_to_xz(cinematicCamera->lookAt, cinematicCamera->pos, &distance, &angleYToXZ, &angleY); @@ -624,8 +600,8 @@ s32 func_80283648(Camera* camera) { camera->up[0] = sins(var_f2) * coss(angleY); camera->up[1] = coss(var_f2); camera->up[2] = -sins(var_f2) * sins(angleY); - vec3f_copy_return_dupe(camera->pos, cinematicCamera->lookAt); - vec3f_copy_return_dupe(camera->lookAt, cinematicCamera->pos); + vec3f_copy(camera->pos, cinematicCamera->lookAt); + vec3f_copy(camera->lookAt, cinematicCamera->pos); if ((gGamestate == CREDITS_SEQUENCE) && (gIsMirrorMode != 0)) { camera->pos[0] = -camera->pos[0]; camera->lookAt[0] = -camera->lookAt[0]; @@ -634,9 +610,9 @@ s32 func_80283648(Camera* camera) { func_80282F44(0, cinematicCamera, camera); func_80282F44(1, cinematicCamera, camera); func_80283100(cinematicCamera, gCameraZoom); - vec3f_copy_return_dupe(cinematicCamera->unk30, camera->pos); - vec3f_copy_return_dupe(cinematicCamera->unk24, camera->lookAt); - vec3f_copy_return_dupe(cinematicCamera->unk3C, camera->up); + vec3f_copy(cinematicCamera->unk30, camera->pos); + vec3f_copy(cinematicCamera->unk24, camera->lookAt); + vec3f_copy(cinematicCamera->unk3C, camera->up); return D_802876D8; } @@ -943,7 +919,7 @@ void func_80283EA0(CinematicCamera* camera) { } void copy_player_two_in_camera(CinematicCamera* camera) { - vec3f_copy_return_dupe(camera->pos, gPlayerTwo->pos); + vec3f_copy(camera->pos, gPlayerTwo->pos); } void lerp_player_two_in_camera(CinematicCamera* camera) { @@ -959,7 +935,7 @@ void func_80283F6C(CinematicCamera* camera) { } void copy_player_three_in_camera(CinematicCamera* camera) { - vec3f_copy_return_dupe(camera->pos, gPlayerThree->pos); + vec3f_copy(camera->pos, gPlayerThree->pos); } void lerp_player_three_in_camera(CinematicCamera* camera) { @@ -1006,7 +982,7 @@ void func_80284184(CinematicCamera* camera) { void func_802841E8(CinematicCamera* camera) { func_80282E58(camera, (struct struct_80282C40*) D_80285940, 0); - vec3f_set_dupe(camera->pos, -3202.0f, 90.0f, -478.0f); + vec3f_set(camera->pos, -3202.0f, 90.0f, -478.0f); } void func_8028422C(CinematicCamera* camera) { diff --git a/src/ending/ceremony_and_credits.h b/src/ending/ceremony_and_credits.h index 201c953e0a..4f3ceb7bc5 100644 --- a/src/ending/ceremony_and_credits.h +++ b/src/ending/ceremony_and_credits.h @@ -111,12 +111,8 @@ typedef CameraEvent CutsceneShot; void init_cinematic_camera(void); s32 func_80283648(Camera*); -void vec3f_set_dupe(Vec3f, f32, f32, f32); -void vec3s_set_dupe(Vec3s, s16, s16, s16); void vec3f_clear(Vec3f); void vec3s_clear(Vec3s); -void vec3f_copy_return_dupe(Vec3f, Vec3f); -void vec3s_copy_dupe(Vec3s, Vec3s); void func_80282040(void); void func_80282048(void); void rotate_y_vec3f(Vec3f, Vec3f, s16); From 01fca4468c93cabdaad89b06949467a87dd09664 Mon Sep 17 00:00:00 2001 From: Thomas Rohloff Date: Fri, 18 Jul 2025 17:26:35 +0200 Subject: [PATCH 2/7] Fix functions returning local variables in math_util Signed-off-by: Thomas Rohloff --- src/math_util_2.c | 6 ------ src/racing/actors.c | 4 ++-- src/racing/actors_extended.c | 6 +++--- src/racing/math_util.c | 25 ++----------------------- src/racing/math_util.h | 3 +-- 5 files changed, 8 insertions(+), 36 deletions(-) diff --git a/src/math_util_2.c b/src/math_util_2.c index 7d1bc638ea..f9e42c3425 100644 --- a/src/math_util_2.c +++ b/src/math_util_2.c @@ -54,12 +54,6 @@ UNUSED s32 func_80040EA4(s32* arg0, s32 arg1) { return phi_v1; } -void vec3f_copy(Vec3f dest, Vec3f arg1) { - dest[0] = arg1[0]; - dest[1] = arg1[1]; - dest[2] = arg1[2]; -} - s32 f32_step_up_towards(f32* value, f32 target, f32 step) { s32 targetReached = 0; diff --git a/src/racing/actors.c b/src/racing/actors.c index 05a56d68bd..e5392033e5 100644 --- a/src/racing/actors.c +++ b/src/racing/actors.c @@ -137,9 +137,9 @@ void cleanup_red_and_green_shells(struct ShellActor* shell) { // Sets introductory values for a new actor (ex. Banana). void actor_init(struct Actor* actor, Vec3f startingPos, Vec3s startingRot, Vec3f startingVelocity, s16 actorType) { - vec3f_copy_return(actor->pos, startingPos); + vec3f_copy(actor->pos, startingPos); vec3s_copy(actor->rot, startingRot); - vec3f_copy_return(actor->velocity, startingVelocity); + vec3f_copy(actor->velocity, startingVelocity); actor->type = actorType; actor->flags = -0x8000; actor->unk_04 = 0; diff --git a/src/racing/actors_extended.c b/src/racing/actors_extended.c index c21eb69188..52765c5175 100644 --- a/src/racing/actors_extended.c +++ b/src/racing/actors_extended.c @@ -28,9 +28,9 @@ void copy_collision(Collision* src, Collision* dest) { dest->surfaceDistance[1] = src->surfaceDistance[1]; dest->surfaceDistance[2] = src->surfaceDistance[2]; - vec3f_copy_return(dest->unk48, src->unk48); - vec3f_copy_return(dest->unk54, src->unk54); - vec3f_copy_return(dest->orientationVector, src->orientationVector); + vec3f_copy(dest->unk48, src->unk48); + vec3f_copy(dest->unk54, src->unk54); + vec3f_copy(dest->orientationVector, src->orientationVector); } void triple_shell_actor_collide_with_player(struct ShellActor* shell, s32 shellType) { diff --git a/src/racing/math_util.c b/src/racing/math_util.c index 05baecf3f7..012f1d5868 100644 --- a/src/racing/math_util.c +++ b/src/racing/math_util.c @@ -27,7 +27,7 @@ UNUSED s32 func_802B4F60(UNUSED s32 arg0, Vec3f arg1, UNUSED s32 arg2, UNUSED f3 f32 sp2C; f32 sp28; Vec3f sp1C; - vec3f_copy_return(sp1C, arg1); + vec3f_copy(sp1C, arg1); sp28 = sp1C[0]; sp2C = sp1C[1]; // wut? @@ -123,24 +123,10 @@ void vec3s_set(Vec3s arg0, s16 arg1, s16 arg2, s16 arg3) { arg0[2] = arg3; } -// These functions have bogus return values. -// Disable the compiler warning. -#pragma GCC diagnostic push - -#ifdef __GNUC__ -#if defined(__clang__) -#pragma GCC diagnostic ignored "-Wreturn-stack-address" -#else -#pragma GCC diagnostic ignored "-Wreturn-local-addr" -#endif -#endif - -void* vec3f_copy_return(Vec3f dest, Vec3f src) { +void vec3f_copy(Vec3f dest, Vec3f src) { dest[0] = src[0]; dest[1] = src[1]; dest[2] = src[2]; - //! @warning function returns address of local variable - return &dest; } void vec3s_copy(Vec3s dest, Vec3s src) { @@ -149,13 +135,6 @@ void vec3s_copy(Vec3s dest, Vec3s src) { dest[2] = src[2]; } -UNUSED void* vec3f_set_return(Vec3f dest, f32 x, f32 y, f32 z) { - dest[0] = x; - dest[1] = y; - dest[2] = z; - return &dest; -} - // Copy mat1 to mat2 void mtxf_copy(Mat4 mat1, Mat4 mat2) { s32 row; diff --git a/src/racing/math_util.h b/src/racing/math_util.h index e20b1400a2..e17a384b7e 100644 --- a/src/racing/math_util.h +++ b/src/racing/math_util.h @@ -28,9 +28,8 @@ u32 func_802B5258(Vec3f, Vec3s); void func_802B5794(Mat4, Vec3f, Vec3f); void vec3f_set(Vec3f, f32, f32, f32); void vec3s_set(Vec3s, s16, s16, s16); -void* vec3f_copy_return(Vec3f, Vec3f); +void vec3f_copy(Vec3f, Vec3f); void vec3s_copy(Vec3s, Vec3s); -void* vec3f_set_return(Vec3f, f32, f32, f32); void mtxf_copy(Mat4, Mat4); void mtxf_copy_n_element(s32*, s32*, s32); void mtxf_identity(Mat4); From ccfbd9a4264a986c3c1bd31661105d3097ee7fff Mon Sep 17 00:00:00 2001 From: Thomas Rohloff Date: Fri, 18 Jul 2025 18:32:16 +0200 Subject: [PATCH 3/7] Add option to use modern pseudo random number generator Signed-off-by: Thomas Rohloff --- src/port/Engine.cpp | 5 +++++ src/port/ui/PortMenu.cpp | 2 ++ src/racing/math_util.c | 45 +++++++++++++++++++++++++--------------- 3 files changed, 35 insertions(+), 17 deletions(-) diff --git a/src/port/Engine.cpp b/src/port/Engine.cpp index 93c67487c3..dc1078c8e9 100644 --- a/src/port/Engine.cpp +++ b/src/port/Engine.cpp @@ -32,6 +32,9 @@ // #include #include +#include +#include + #include #ifdef __SWITCH__ @@ -121,6 +124,8 @@ GameEngine::GameEngine() { } } + srand(time(NULL)); + this->context = Ship::Context::CreateUninitializedInstance("Spaghetti Kart", "spaghettify", "spaghettify.cfg.json"); this->context->InitConfiguration(); // without this line InitConsoleVariables fails at Config::Reload() diff --git a/src/port/ui/PortMenu.cpp b/src/port/ui/PortMenu.cpp index ba180d5b97..f4de0c55b6 100644 --- a/src/port/ui/PortMenu.cpp +++ b/src/port/ui/PortMenu.cpp @@ -383,6 +383,8 @@ void PortMenu::AddEnhancements() { .CVar("gShowSpaghettiVersion") .Options(CheckboxOptions().Tooltip("Show the Spaghetti Kart version on the Mario Kart menu").DefaultValue(true)); + AddWidget(path, "Use modern PRNG", WIDGET_CVAR_CHECKBOX).CVar("gModernPRNG"); + path = { "Enhancements", "Cheats", SECTION_COLUMN_1 }; AddSidebarEntry("Enhancements", "Cheats", 3); AddWidget(path, "Moon Jump", WIDGET_CVAR_CHECKBOX).CVar("gEnableMoonJump"); diff --git a/src/racing/math_util.c b/src/racing/math_util.c index 012f1d5868..88a7d10ec3 100644 --- a/src/racing/math_util.c +++ b/src/racing/math_util.c @@ -12,6 +12,7 @@ #include "port/Game.h" #include #include +#include #pragma intrinsic(sqrtf, fabs) s32 D_802B91C0[2] = { 13, 13 }; @@ -990,35 +991,45 @@ UNUSED s16 func_802B7D28(f32 arg0) { } u16 random_u16(void) { - u16 temp1, temp2; + if (CVarGetInteger("gModernPRNG", false) == false) + { + u16 temp1, temp2; - if (gRandomSeed16 == 22026) { - gRandomSeed16 = 0; - } + if (gRandomSeed16 == 22026) { + gRandomSeed16 = 0; + } - temp1 = (gRandomSeed16 & 0x00FF) << 8; - temp1 = temp1 ^ gRandomSeed16; + temp1 = (gRandomSeed16 & 0x00FF) << 8; + temp1 = temp1 ^ gRandomSeed16; - gRandomSeed16 = ((temp1 & 0x00FF) << 8) + ((temp1 & 0xFF00) >> 8); + gRandomSeed16 = ((temp1 & 0x00FF) << 8) + ((temp1 & 0xFF00) >> 8); - temp1 = ((temp1 & 0x00FF) << 1) ^ gRandomSeed16; - temp2 = (temp1 >> 1) ^ 0xFF80; + temp1 = ((temp1 & 0x00FF) << 1) ^ gRandomSeed16; + temp2 = (temp1 >> 1) ^ 0xFF80; - if ((temp1 & 1) == 0) { - if (temp2 == 43605) { - gRandomSeed16 = 0; + if ((temp1 & 1) == 0) { + if (temp2 == 43605) { + gRandomSeed16 = 0; + } else { + gRandomSeed16 = temp2 ^ 0x1FF4; + } } else { - gRandomSeed16 = temp2 ^ 0x1FF4; + gRandomSeed16 = temp2 ^ 0x8180; } - } else { - gRandomSeed16 = temp2 ^ 0x8180; + + return gRandomSeed16; } - return gRandomSeed16; + return (rand() % (UINT16_MAX + 1)); } u16 random_int(u16 arg0) { - return arg0 * (((f32) random_u16()) / 65535.0); + if (CVarGetInteger("gModernPRNG", false) == false) + { + return arg0 * (((f32) random_u16()) / 65535.0); + } + + return (rand() % (arg0 + 1)); } s16 func_802B7F34(f32 arg0, f32 arg1, f32 arg2, f32 arg3) { From 486ebb5f62bcaaea137a58ae7cf6b5fa5f7a47ed Mon Sep 17 00:00:00 2001 From: Thomas Rohloff Date: Fri, 18 Jul 2025 19:18:55 +0200 Subject: [PATCH 4/7] random_int(): 65535.0 -> (f32)UINT_MAX Signed-off-by: Thomas Rohloff --- src/racing/math_util.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/racing/math_util.c b/src/racing/math_util.c index 88a7d10ec3..d652d100ef 100644 --- a/src/racing/math_util.c +++ b/src/racing/math_util.c @@ -1026,7 +1026,7 @@ u16 random_u16(void) { u16 random_int(u16 arg0) { if (CVarGetInteger("gModernPRNG", false) == false) { - return arg0 * (((f32) random_u16()) / 65535.0); + return arg0 * (((f32) random_u16()) / (f32)UINT16_MAX); } return (rand() % (arg0 + 1)); From f27af1b4ffdfb4b6067d00c4df1a7d7aafac1605 Mon Sep 17 00:00:00 2001 From: Thomas Rohloff Date: Fri, 18 Jul 2025 19:55:31 +0200 Subject: [PATCH 5/7] clang-format Signed-off-by: Thomas Rohloff --- src/racing/math_util.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/racing/math_util.c b/src/racing/math_util.c index d652d100ef..17510feaac 100644 --- a/src/racing/math_util.c +++ b/src/racing/math_util.c @@ -1026,7 +1026,7 @@ u16 random_u16(void) { u16 random_int(u16 arg0) { if (CVarGetInteger("gModernPRNG", false) == false) { - return arg0 * (((f32) random_u16()) / (f32)UINT16_MAX); + return arg0 * (((f32) random_u16()) / (f32) UINT16_MAX); } return (rand() % (arg0 + 1)); From cbfb0295cc1a4ca97968b7a3f0022f198bf2d1bc Mon Sep 17 00:00:00 2001 From: Thomas Rohloff Date: Sat, 19 Jul 2025 10:46:56 +0200 Subject: [PATCH 6/7] Reset podium PRNG and make it replaceable with cstd rand(), too Signed-off-by: Thomas Rohloff --- src/ending/podium_ceremony_actors.c | 40 +++++++++++++++++------------ 1 file changed, 23 insertions(+), 17 deletions(-) diff --git a/src/ending/podium_ceremony_actors.c b/src/ending/podium_ceremony_actors.c index 28884b9972..3b5fb6aaa7 100644 --- a/src/ending/podium_ceremony_actors.c +++ b/src/ending/podium_ceremony_actors.c @@ -18,6 +18,7 @@ #include "code_80281C40.h" #include "math_util.h" #include +#include #include "port/interpolation/FrameInterpolation.h" #include "src/port/Game.h" @@ -137,35 +138,39 @@ void clear_D_802874D8_actors() { } u16 random_u16_credits(void) { - u16 temp1, temp2; + if (CVarGetInteger("gModernPRNG", false) == false) + u16 temp1, temp2; - if (sRandomSeed16 == 22026) { - sRandomSeed16 = 0; - } + if (sRandomSeed16 == 22026) { + sRandomSeed16 = 0; + } - temp1 = (sRandomSeed16 & 0x00FF) << 8; - temp1 = temp1 ^ sRandomSeed16; + temp1 = (sRandomSeed16 & 0x00FF) << 8; + temp1 = temp1 ^ sRandomSeed16; - sRandomSeed16 = ((temp1 & 0x00FF) << 8) + ((temp1 & 0xFF00) >> 8); + sRandomSeed16 = ((temp1 & 0x00FF) << 8) + ((temp1 & 0xFF00) >> 8); - temp1 = ((temp1 & 0x00FF) << 1) ^ sRandomSeed16; - temp2 = (temp1 >> 1) ^ 0xFF80; + temp1 = ((temp1 & 0x00FF) << 1) ^ sRandomSeed16; + temp2 = (temp1 >> 1) ^ 0xFF80; - if ((temp1 & 1) == 0) { - if (temp2 == 43605) { - sRandomSeed16 = 0; + if ((temp1 & 1) == 0) { + if (temp2 == 43605) { + sRandomSeed16 = 0; + } else { + sRandomSeed16 = temp2 ^ 0x1FF4; + } } else { - sRandomSeed16 = temp2 ^ 0x1FF4; + sRandomSeed16 = temp2 ^ 0x8180; } - } else { - sRandomSeed16 = temp2 ^ 0x8180; + + return sRandomSeed16; } - return sRandomSeed16; + return random_u16(); } f32 random_float_between_0_and_1(void) { - return random_u16_credits() / 65536.0f; + return random_u16_credits() / (f32) UINT16_MAX; } f32 random_who_knows(f32 arg0) { @@ -309,6 +314,7 @@ void unused_80280FA8(UNUSED CeremonyActor* actor) { } void balloons_and_fireworks_init(void) { + sRandomSeed16 = 0; D_802874D8.actorTimer = 0; sPodiumActorList = (CeremonyActor*) get_next_available_memory_addr(sizeof(CeremonyActor) * 200); bzero(sPodiumActorList, (sizeof(CeremonyActor) * 200)); From 27bfbc3b9b2e7f3f1eae895802b2918bc541a97b Mon Sep 17 00:00:00 2001 From: Thomas Rohloff Date: Fri, 8 Aug 2025 09:08:23 +0200 Subject: [PATCH 7/7] Fix copy&paste error Signed-off-by: Thomas Rohloff --- src/ending/podium_ceremony_actors.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/ending/podium_ceremony_actors.c b/src/ending/podium_ceremony_actors.c index 3b5fb6aaa7..c88c133e51 100644 --- a/src/ending/podium_ceremony_actors.c +++ b/src/ending/podium_ceremony_actors.c @@ -139,6 +139,7 @@ void clear_D_802874D8_actors() { u16 random_u16_credits(void) { if (CVarGetInteger("gModernPRNG", false) == false) + { u16 temp1, temp2; if (sRandomSeed16 == 22026) {