summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMegaMech <MegaMech@users.noreply.github.com>2026-02-04 17:18:33 -0700
committerGitHub <noreply@github.com>2026-02-04 17:18:33 -0700
commitddd47126ecc19841cd7fb7adb89767475dbcd707 (patch)
treef7c753b1f2d48ce6e49460a08eefb7fdc561e0e8
parenta59dcc1e75a525ab825b237077ba2a06350b0029 (diff)
Maybe fix some interpolation (#637)
* Update render_player.c * Refactor FrameInterpolation_RecordOpenChild calls * Update GrandPrixBalloons.cpp * Modify func_80053D74 to include an additional parameter
-rw-r--r--src/code_80057C60.c11
-rw-r--r--src/engine/objects/GrandPrixBalloons.cpp10
-rw-r--r--src/engine/objects/GrandPrixBalloons.h2
-rw-r--r--src/render_player.c8
4 files changed, 14 insertions, 17 deletions
diff --git a/src/code_80057C60.c b/src/code_80057C60.c
index ec2f6f59a..7e820f65b 100644
--- a/src/code_80057C60.c
+++ b/src/code_80057C60.c
@@ -5785,8 +5785,7 @@ void render_battle_balloon(Player* player, s8 arg1, s16 arg2, s8 arg3) {
sp12C[2] = D_8018D7D0[arg1][arg2] - (D_8018D860[arg1][arg2] * coss(temp_t1)) -
((D_8018D890[arg1][arg2] * 8) * sins(temp_t1));
- // @port: Tag the transform.
- FrameInterpolation_RecordOpenChild((uintptr_t) player, arg1 | arg2 << 16);
+ FrameInterpolation_RecordOpenChild("battle_balloon", (arg1 << 8) | (arg3 << 4) | arg2);
mtxf_translate_rotate(mtx, sp134, sp12C);
mtxf_scale(mtx, var_f20);
@@ -6303,7 +6302,7 @@ void func_8006D474(Player* player, s8 playerId, s8 screenId) {
if ((player->unk_002 & (SIDE_OF_KART << (screenId * 4))) == (SIDE_OF_KART << (screenId * 4))) {
for (var_s2 = 0; var_s2 < 10; var_s2++) {
// @port: Tag the transform.
- FrameInterpolation_RecordOpenChild("SmokeDust", TAG_SMOKE_DUST((playerId << 8) + var_s2));
+ FrameInterpolation_RecordOpenChild("smoke_dust", TAG_SMOKE_DUST((playerId << 8) | (screenId << 4) | var_s2));
switch (player->particlePool0[var_s2].type) {
case 1:
if (gActiveScreenMode == SCREEN_MODE_3P_4P_SPLITSCREEN) {
@@ -6325,7 +6324,7 @@ void func_8006D474(Player* player, s8 playerId, s8 screenId) {
break;
}
FrameInterpolation_RecordCloseChild();
- FrameInterpolation_RecordOpenChild("SmokeDust", TAG_SMOKE_DUST((playerId << 8) + var_s2 + 30));
+ FrameInterpolation_RecordOpenChild("smoke_dust2", TAG_SMOKE_DUST((playerId << 8) | (screenId << 4) | var_s2));
switch (player->particlePool3[var_s2].type) {
case 1:
case 9:
@@ -6388,7 +6387,7 @@ void func_8006D474(Player* player, s8 playerId, s8 screenId) {
break;
}
FrameInterpolation_RecordCloseChild();
- FrameInterpolation_RecordOpenChild("SmokeDust", TAG_SMOKE_DUST((playerId << 8) + var_s2 + 10));
+ FrameInterpolation_RecordOpenChild("smoke_dust3", TAG_SMOKE_DUST((playerId << 8) | (screenId << 4) | var_s2));
switch (player->particlePool1[var_s2].type) {
case DRIFT_PARTICLE:
if (gActiveScreenMode == SCREEN_MODE_3P_4P_SPLITSCREEN) {
@@ -6475,7 +6474,7 @@ void func_8006DD3C(Player* player, s8 playerId, s8 arg2) {
}
if (((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) && (arg2 == playerId)) {
- FrameInterpolation_RecordOpenChild("onomatopoeia", TAG_SMOKE_DUST((playerId << 8) + 20));
+ FrameInterpolation_RecordOpenChild("onomatopoeia", TAG_SMOKE_DUST((playerId << 8) | (arg2 << 4)));
switch (player->particlePool2[0].type) {
case 2:
render_player_onomatopoeia_crash(player, playerId, player->particlePool2[0].scale, arg2, 0);
diff --git a/src/engine/objects/GrandPrixBalloons.cpp b/src/engine/objects/GrandPrixBalloons.cpp
index 2180f85c0..91b41bc5f 100644
--- a/src/engine/objects/GrandPrixBalloons.cpp
+++ b/src/engine/objects/GrandPrixBalloons.cpp
@@ -92,19 +92,19 @@ void OGrandPrixBalloons::Draw(s32 cameraId) {
for (var_s1 = 0; var_s1 < _numBalloons; var_s1++) {
objectIndex = gObjectParticle3[var_s1];
if ((objectIndex != NULL_OBJECT_ID) && (gObjectList[objectIndex].state >= 2)) {
- OGrandPrixBalloons::func_80053D74(objectIndex, cameraId, 0);
+ OGrandPrixBalloons::func_80053D74(objectIndex, cameraId, 0, var_s1);
}
}
rsp_load_texture((uint8_t*) gTextureBalloon2, 64, 32);
for (var_s1 = 0; var_s1 < _numBalloons; var_s1++) {
objectIndex = gObjectParticle3[var_s1];
if ((objectIndex != NULL_OBJECT_ID) && (gObjectList[objectIndex].state >= 2)) {
- OGrandPrixBalloons::func_80053D74(objectIndex, cameraId, 4);
+ OGrandPrixBalloons::func_80053D74(objectIndex, cameraId, 4, var_s1);
}
}
}
-void OGrandPrixBalloons::func_80053D74(s32 objectIndex, UNUSED s32 arg1, s32 vertexIndex) {
+void OGrandPrixBalloons::func_80053D74(s32 objectIndex, UNUSED s32 arg1, s32 vertexIndex, s32 index) {
Object* object;
Vtx* vtx = (Vtx*) LOAD_ASSET_RAW(common_vtx_hedgehog);
@@ -113,9 +113,7 @@ void OGrandPrixBalloons::func_80053D74(s32 objectIndex, UNUSED s32 arg1, s32 ver
if (gMatrixHudCount <= MTX_HUD_POOL_SIZE_MAX) {
object = &gObjectList[objectIndex];
- // @port: Tag the transform.
- FrameInterpolation_RecordOpenChild("Balloon",
- TAG_ITEM_ADDR((objectIndex << 32) + i++)); // Not working properly just yet
+ FrameInterpolation_RecordOpenChild("Balloon", TAG_ITEM_ADDR((objectIndex << 7 | index)));
D_80183E80[2] = (s16) (object->unk_084[6] + 0x8000);
rsp_set_matrix_transformation(object->pos, (u16*) D_80183E80, object->sizeScaling);
diff --git a/src/engine/objects/GrandPrixBalloons.h b/src/engine/objects/GrandPrixBalloons.h
index f807fb350..3eb4a1dfa 100644
--- a/src/engine/objects/GrandPrixBalloons.h
+++ b/src/engine/objects/GrandPrixBalloons.h
@@ -39,7 +39,7 @@ public:
virtual void Tick() override;
virtual void Draw(s32 cameraId) override;
- void func_80053D74(s32 objectIndex, UNUSED s32 arg1, s32 vertexIndex);
+ void func_80053D74(s32 objectIndex, UNUSED s32 arg1, s32 vertexIndex, s32 index);
void func_80074924(s32 objectIndex);
void func_80074D94(s32 objectIndex);
diff --git a/src/render_player.c b/src/render_player.c
index 1408e5bc9..2aa5bdbf1 100644
--- a/src/render_player.c
+++ b/src/render_player.c
@@ -1183,7 +1183,7 @@ void render_player_shadow(Player* player, s8 playerId, s8 screenId) {
f32 var_f2;
// @port: Tag the transform.
- FrameInterpolation_RecordOpenChild("Kart Shadow", TAG_ITEM_ADDR(player));
+ FrameInterpolation_RecordOpenChild("kart_shadow", TAG_ITEM_ADDR((playerId << 8) | (screenId << 4)));
temp_t9 = (u16) (player->unk_048[screenId] + player->rotation[1] + player->unk_0C0) / 128; // << 7) & 0xFFFF;
spC0 = -player->rotation[1] - player->unk_0C0;
@@ -1309,7 +1309,7 @@ void render_kart(Player* player, s8 playerId, s8 screenId, s8 flipOffset) {
s16 temp_v1;
s16 thing;
- FrameInterpolation_RecordOpenChild("player_kart", playerId | screenId << 8);
+ FrameInterpolation_RecordOpenChild("player_kart", (playerId << 4) | screenId);
if (player->kartProps & UNUSED_0x2000) {
sp14C[0] = 0;
sp14C[1] = player->unk_048[screenId];
@@ -1505,7 +1505,7 @@ void func_80025DE8(Player* player, s8 playerId, s8 screenId, s8 flipOffset) {
sp94[1] = player->unk_048[screenId];
sp94[2] = player->unk_050[screenId];
- FrameInterpolation_RecordOpenChild("player_boost", playerId | screenId << 8);
+ FrameInterpolation_RecordOpenChild("player_boost", (playerId << 4) | screenId);
mtxf_translate_rotate(mtx, sp9C, sp94);
mtxf_scale(mtx, gCharacterSize[player->characterId] * player->size);
@@ -1554,7 +1554,7 @@ void render_player_ice_reflection(Player* player, s8 playerId, s8 screenId, s8 f
}
// @port: Tag the transform.
- FrameInterpolation_RecordOpenChild("PlayerReflection", playerId | screenId << 8);
+ FrameInterpolation_RecordOpenChild("player_reflection", (playerId << 4) | screenId);
mtxf_translate_rotate(mtx, sp9C, sp94);
mtxf_scale(mtx, gCharacterSize[player->characterId] * player->size);