summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSonic Dreamcaster <alejandro.asenjo88@gmail.com>2025-05-20 00:44:17 -0300
committerSonic Dreamcaster <alejandro.asenjo88@gmail.com>2025-05-20 00:44:17 -0300
commit07d5640585d4a17a9637721105c3dcf3032797df (patch)
treebb0ea351cffd8eb4961badec7a8486b5f7da89e3 /src
parent23222922e68761c6d2aeeea276afbf8c9c672eb2 (diff)
interpolation tags for various objects
Diffstat (limited to 'src')
-rw-r--r--src/actors/cow/render.inc.c6
-rw-r--r--src/code_80057C60.c26
-rw-r--r--src/engine/objects/GrandPrixBalloons.cpp29
-rw-r--r--src/engine/objects/Mole.cpp105
-rw-r--r--src/port/interpolation/FrameInterpolation.cpp4
-rw-r--r--src/port/interpolation/FrameInterpolation.h2
-rw-r--r--src/racing/actors.c21
7 files changed, 131 insertions, 62 deletions
diff --git a/src/actors/cow/render.inc.c b/src/actors/cow/render.inc.c
index e55154c03..af15363c4 100644
--- a/src/actors/cow/render.inc.c
+++ b/src/actors/cow/render.inc.c
@@ -19,6 +19,9 @@ void render_actor_cow(Camera* camera, Mat4 arg1, struct Actor* arg2) {
return;
}
+ // @port: Tag the transform.
+ FrameInterpolation_RecordOpenChild("render_actor_cow", TAG_OBJECT(arg2));
+
arg1[3][0] = arg2->pos[0];
arg1[3][1] = arg2->pos[1];
arg1[3][2] = arg2->pos[2];
@@ -42,4 +45,7 @@ void render_actor_cow(Camera* camera, Mat4 arg1, struct Actor* arg2) {
break;
}
}
+
+ // @port Pop the transform id.
+ FrameInterpolation_RecordCloseChild();
}
diff --git a/src/code_80057C60.c b/src/code_80057C60.c
index 23293b641..7e609859d 100644
--- a/src/code_80057C60.c
+++ b/src/code_80057C60.c
@@ -5101,6 +5101,13 @@ void func_80065AB0(Player* player, UNUSED s8 arg1, s16 arg2, s8 arg3) {
spAC[0] = 0;
spAC[1] = player->unk_048[arg3];
spAC[2] = 0;
+
+ // // @port: Tag the transform.
+ FrameInterpolation_RecordOpenChild("EEEEEEEEE", player->type << 8 | arg2 | var_s0 << 16);
+
+ // @port Skip interpolation
+ // FrameInterpolation_ShouldInterpolateFrame(false);
+
func_800652D4(spB4, spAC, player->unk_258[10 + arg2].unk_00C * player->size);
if (var_s0 == 0) {
gSPDisplayList(gDisplayListHead++, D_0D008DB8);
@@ -5120,6 +5127,11 @@ void func_80065AB0(Player* player, UNUSED s8 arg1, s16 arg2, s8 arg3) {
gSPDisplayList(gDisplayListHead++, D_0D008E48);
}
gMatrixEffectCount += 1;
+
+ // @port Pop the transform id.
+ FrameInterpolation_RecordCloseChild();
+ // @port renable interpolation
+ // FrameInterpolation_ShouldInterpolateFrame(true);
}
}
#else
@@ -5670,6 +5682,10 @@ void func_800691B8(Player* player, UNUSED s8 arg1, s16 arg2, s8 arg3) {
sp54[1] = player->unk_048[arg3];
player->unk_258[30 + arg2].unk_03A += 0x1C71;
sp54[2] = player->unk_258[30 + arg2].unk_03A;
+
+ // @port: Tag the transform.
+ FrameInterpolation_RecordOpenChild("func_800691B8", TAG_OBJECT(arg2));
+
func_800652D4(sp5C, sp54, player->size * 0.5);
gSPDisplayList(gDisplayListHead++, D_0D008D58);
gDPSetTextureLUT(gDisplayListHead++, G_TT_NONE);
@@ -5681,6 +5697,9 @@ void func_800691B8(Player* player, UNUSED s8 arg1, s16 arg2, s8 arg3) {
gSPVertex(gDisplayListHead++, D_800E87C0, 4, 0);
gSPDisplayList(gDisplayListHead++, D_0D008DA0);
gMatrixEffectCount++;
+
+ // @port Pop the transform id.
+ FrameInterpolation_RecordCloseChild();
}
}
@@ -5774,6 +5793,10 @@ void func_80069938(Player* player, UNUSED s8 arg1, s16 arg2, s8 arg3) {
sp54[0] = 0;
sp54[1] = player->unk_048[arg3];
sp54[2] = player->unk_258[30 + arg2].unk_038;
+
+ // @port: Tag the transform.
+ FrameInterpolation_RecordOpenChild("func_80069938", TAG_OBJECT(arg2));
+
func_800652D4(sp5C, sp54, player->unk_258[30 + arg2].unk_00C * player->size);
gSPDisplayList(gDisplayListHead++, D_0D008D58);
gDPSetTextureLUT(gDisplayListHead++, G_TT_NONE);
@@ -5785,6 +5808,9 @@ void func_80069938(Player* player, UNUSED s8 arg1, s16 arg2, s8 arg3) {
gSPVertex(gDisplayListHead++, D_800E87C0, 4, 0);
gSPDisplayList(gDisplayListHead++, D_0D008DA0);
gMatrixEffectCount += 1;
+
+ // @port Pop the transform id.
+ FrameInterpolation_RecordCloseChild();
}
}
diff --git a/src/engine/objects/GrandPrixBalloons.cpp b/src/engine/objects/GrandPrixBalloons.cpp
index 253c68464..544a3e4d1 100644
--- a/src/engine/objects/GrandPrixBalloons.cpp
+++ b/src/engine/objects/GrandPrixBalloons.cpp
@@ -35,7 +35,7 @@ OGrandPrixBalloons::OGrandPrixBalloons(const FVector& pos) {
find_unused_obj_index(&gObjectParticle3[i]);
init_object(gObjectParticle3[i], 0);
}
- // printf("primAlfa %d\n", object->primAlpha);
+ // printf("primAlfa %d\n", object->primAlpha);
}
void OGrandPrixBalloons::Tick() {
@@ -75,7 +75,7 @@ void OGrandPrixBalloons::Draw(s32 cameraId) {
return;
}
- gSPDisplayList(gDisplayListHead++, (Gfx*)D_0D007E98);
+ gSPDisplayList(gDisplayListHead++, (Gfx*) D_0D007E98);
gDPLoadTLUT_pal256(gDisplayListHead++, gTLUTOnomatopoeia);
func_8004B614(0, 0, 0, 0, 0, 0, 0);
gDPSetAlphaCompare(gDisplayListHead++, G_AC_THRESHOLD);
@@ -86,14 +86,14 @@ void OGrandPrixBalloons::Draw(s32 cameraId) {
GBL_c2(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA));
D_80183E80[0] = 0;
D_80183E80[1] = 0x8000;
- rsp_load_texture((uint8_t*)gTextureBalloon1, 64, 32);
+ rsp_load_texture((uint8_t*) gTextureBalloon1, 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, 0);
}
}
- rsp_load_texture((uint8_t*)gTextureBalloon2, 64, 32);
+ 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)) {
@@ -107,22 +107,25 @@ void OGrandPrixBalloons::func_80053D74(s32 objectIndex, UNUSED s32 arg1, s32 ver
Vtx* vtx = (Vtx*) LOAD_ASSET_RAW(common_vtx_hedgehog);
- // @port: Tag the transform.
size_t i = 0;
if (gMatrixHudCount <= MTX_HUD_POOL_SIZE_MAX) {
object = &gObjectList[objectIndex];
- FrameInterpolation_RecordOpenChild("Balloon", TAG_ITEM_ADDR((objectIndex << 8) + i++)); //Not working properly just yet
+
+ // @port: Tag the transform.
+ FrameInterpolation_RecordOpenChild("Balloon",
+ TAG_ITEM_ADDR((objectIndex << 32) + i++)); // Not working properly just yet
+
D_80183E80[2] = (s16) (object->unk_084[6] + 0x8000);
rsp_set_matrix_transformation(object->pos, (u16*) D_80183E80, object->sizeScaling);
set_color_render((s32) object->unk_084[0], (s32) object->unk_084[1], (s32) object->unk_084[2],
(s32) object->unk_084[3], (s32) object->unk_084[4], (s32) object->unk_084[5],
(s32) object->primAlpha);
- gSPVertex(gDisplayListHead++, (uintptr_t)&vtx[vertexIndex], 4, 0);
- gSPDisplayList(gDisplayListHead++, (Gfx*)common_rectangle_display);
+ gSPVertex(gDisplayListHead++, (uintptr_t) &vtx[vertexIndex], 4, 0);
+ gSPDisplayList(gDisplayListHead++, (Gfx*) common_rectangle_display);
+
+ // @port Pop the transform id.
FrameInterpolation_RecordCloseChild();
}
-
- // @port Pop the transform id.
}
void OGrandPrixBalloons::func_80074924(s32 objectIndex) {
@@ -195,7 +198,8 @@ void OGrandPrixBalloons::func_80074924(s32 objectIndex) {
void OGrandPrixBalloons::func_80074D94(s32 objectIndex) {
if (gObjectList[objectIndex].unk_0AE == 1) {
- //! @warning this fades out the balloons. Original game uses _numBalloons3 here but they disappear before off-screen.
+ //! @warning this fades out the balloons. Original game uses _numBalloons3 here but they disappear before
+ //! off-screen.
// So _numBalloons replaces it for now.
if ((_numBalloons <= gObjectList[objectIndex].offset[1]) &&
(s16_step_down_towards(&gObjectList[objectIndex].primAlpha, 0, 8) != 0)) {
@@ -219,7 +223,8 @@ void OGrandPrixBalloons::func_80074E28(s32 objectIndex) {
case 0:
break;
case 3:
- OGrandPrixBalloons::func_80041480(&gObjectList[objectIndex].unk_084[6], -0x1000, 0x1000, &gObjectList[objectIndex].unk_084[7]);
+ OGrandPrixBalloons::func_80041480(&gObjectList[objectIndex].unk_084[6], -0x1000, 0x1000,
+ &gObjectList[objectIndex].unk_084[7]);
if (gObjectList[objectIndex].unk_0AE == 0) {
func_80072428(objectIndex);
}
diff --git a/src/engine/objects/Mole.cpp b/src/engine/objects/Mole.cpp
index 06bd5f56c..91eeabebf 100644
--- a/src/engine/objects/Mole.cpp
+++ b/src/engine/objects/Mole.cpp
@@ -21,6 +21,7 @@ extern "C" {
#include "sounds.h"
#include "external.h"
}
+#include "port/interpolation/FrameInterpolation.h"
size_t OMole::_count = 0;
@@ -145,7 +146,7 @@ void OMole::func_80081AFC(s32 objectIndex, s32 arg1) {
// sp2C = D_8018D1B8;
// break;
// }
- //sp2C[object->type] = 0;
+ // sp2C[object->type] = 0;
}
break;
case 0:
@@ -179,20 +180,20 @@ void OMole::func_8008153C(s32 objectIndex) {
}
u8* mole = (u8*) LOAD_ASSET_RAW(d_course_moo_moo_farm_mole_dirt);
- init_object(loopObjectIndex, 0);
- gObjectList[loopObjectIndex].activeTLUT = d_course_moo_moo_farm_mole_dirt;
- gObjectList[loopObjectIndex].tlutList = mole;
- gObjectList[loopObjectIndex].sizeScaling = 0.15f;
- gObjectList[loopObjectIndex].velocity[1] = random_int(0x000AU);
- gObjectList[loopObjectIndex].velocity[1] = (gObjectList[loopObjectIndex].velocity[1] * 0.1) + 4.8;
- gObjectList[loopObjectIndex].unk_034 = random_int(5U);
- gObjectList[loopObjectIndex].unk_034 = (gObjectList[loopObjectIndex].unk_034 * 0.01) + 0.8;
- gObjectList[loopObjectIndex].orientation[1] = (0x10000 / sp70) * var_s1;
- gObjectList[loopObjectIndex].origin_pos[0] = gObjectList[objectIndex].origin_pos[0];
- gObjectList[loopObjectIndex].origin_pos[1] = gObjectList[objectIndex].origin_pos[1] - 13.0;
- gObjectList[loopObjectIndex].origin_pos[2] = gObjectList[objectIndex].origin_pos[2];
- break;
- }
+ init_object(loopObjectIndex, 0);
+ gObjectList[loopObjectIndex].activeTLUT = d_course_moo_moo_farm_mole_dirt;
+ gObjectList[loopObjectIndex].tlutList = mole;
+ gObjectList[loopObjectIndex].sizeScaling = 0.15f;
+ gObjectList[loopObjectIndex].velocity[1] = random_int(0x000AU);
+ gObjectList[loopObjectIndex].velocity[1] = (gObjectList[loopObjectIndex].velocity[1] * 0.1) + 4.8;
+ gObjectList[loopObjectIndex].unk_034 = random_int(5U);
+ gObjectList[loopObjectIndex].unk_034 = (gObjectList[loopObjectIndex].unk_034 * 0.01) + 0.8;
+ gObjectList[loopObjectIndex].orientation[1] = (0x10000 / sp70) * var_s1;
+ gObjectList[loopObjectIndex].origin_pos[0] = gObjectList[objectIndex].origin_pos[0];
+ gObjectList[loopObjectIndex].origin_pos[1] = gObjectList[objectIndex].origin_pos[1] - 13.0;
+ gObjectList[loopObjectIndex].origin_pos[2] = gObjectList[objectIndex].origin_pos[2];
+ break;
+ }
}
}
@@ -243,21 +244,15 @@ void OMole::func_80081D34(s32 objectIndex) {
}
static const char* frames[] = {
- gTextureMole1,
- gTextureMole2,
- gTextureMole3,
- gTextureMole4,
- gTextureMole5,
- gTextureMole6,
- gTextureMole7,
- d_course_moo_moo_farm_mole_dirt,
+ gTextureMole1, gTextureMole2, gTextureMole3, gTextureMole4,
+ gTextureMole5, gTextureMole6, gTextureMole7, d_course_moo_moo_farm_mole_dirt,
};
-
void OMole::func_80081848(s32 objectIndex) {
- init_texture_object(objectIndex, (u8*)d_course_moo_moo_farm_mole_tlut, (const char**) frames, 0x20U, (u16) 0x00000040);
- //gObjectList[objectIndex].activeTexture = (const char*)d_course_moo_moo_farm_mole_frames;
- //gObjectList[objectIndex].activeTLUT = (const char*)d_course_moo_moo_farm_mole_tlut;
+ init_texture_object(objectIndex, (u8*) d_course_moo_moo_farm_mole_tlut, (const char**) frames, 0x20U,
+ (u16) 0x00000040);
+ // gObjectList[objectIndex].activeTexture = (const char*)d_course_moo_moo_farm_mole_frames;
+ // gObjectList[objectIndex].activeTLUT = (const char*)d_course_moo_moo_farm_mole_tlut;
gObjectList[objectIndex].sizeScaling = 0.15f;
gObjectList[objectIndex].textureListIndex = 0;
@@ -270,7 +265,6 @@ void OMole::func_80081848(s32 objectIndex) {
object_next_state(objectIndex);
}
-
void OMole::func_80081924(s32 objectIndex) {
switch (gObjectList[objectIndex].unk_0AE) {
case 1:
@@ -307,7 +301,6 @@ void OMole::func_80081924(s32 objectIndex) {
}
}
-
void OMole::func_80081A88(s32 objectIndex) {
switch (gObjectList[objectIndex].unk_0DD) { /* irregular */
case 0:
@@ -333,6 +326,10 @@ void OMole::func_800821AC(s32 objectIndex, s32 arg1) {
void OMole::func_80054E10(s32 objectIndex) {
if (gObjectList[objectIndex].state > 0) {
if (is_obj_flag_status_active(objectIndex, 0x00800000) != 0) {
+
+ // @port: Tag the transform.
+ FrameInterpolation_RecordOpenChild("func_80054E10", TAG_OBJECT(&gObjectList[objectIndex]));
+
D_80183E50[0] = gObjectList[objectIndex].pos[0];
D_80183E50[1] = gObjectList[objectIndex].surfaceHeight + 0.8;
D_80183E50[2] = gObjectList[objectIndex].pos[2];
@@ -340,6 +337,9 @@ void OMole::func_80054E10(s32 objectIndex) {
D_80183E70[1] = gObjectList[objectIndex].velocity[1];
D_80183E70[2] = gObjectList[objectIndex].velocity[2];
func_8004A9B8(gObjectList[objectIndex].sizeScaling);
+
+ // @port Pop the transform id.
+ FrameInterpolation_RecordCloseChild();
}
}
}
@@ -348,8 +348,8 @@ void OMole::func_80054E10(s32 objectIndex) {
void OMole::func_80054EB8() {
s32 someIndex;
- //for (someIndex = 0; someIndex < NUM_TOTAL_MOLES; someIndex++) {
- func_80054E10(_moleIndex);
+ // for (someIndex = 0; someIndex < NUM_TOTAL_MOLES; someIndex++) {
+ func_80054E10(_moleIndex);
//}
}
@@ -360,13 +360,20 @@ void OMole::func_80054D00(s32 objectIndex, s32 cameraId) {
if (gObjectList[objectIndex].state >= 3) {
func_8008A364(objectIndex, cameraId, 0x2AABU, 0x0000012C);
if (is_obj_flag_status_active(objectIndex, VISIBLE) != 0) {
+
+ // @port: Tag the transform.
+ FrameInterpolation_RecordOpenChild("func_80054D00", TAG_OBJECT(&gObjectList[objectIndex]));
+
D_80183E80[0] = (s16) gObjectList[objectIndex].orientation[0];
D_80183E80[1] =
func_800418AC(gObjectList[objectIndex].pos[0], gObjectList[objectIndex].pos[2], camera->pos);
D_80183E80[2] = (u16) gObjectList[objectIndex].orientation[2];
func_80048130(gObjectList[objectIndex].pos, (u16*) D_80183E80, gObjectList[objectIndex].sizeScaling,
- (u8*) gObjectList[objectIndex].activeTLUT, (u8*)gObjectList[objectIndex].activeTexture,
- (Vtx*)LOAD_ASSET_RAW(D_0D0062B0), 0x00000020, 0x00000040, 0x00000020, 0x00000040, 5);
+ (u8*) gObjectList[objectIndex].activeTLUT, (u8*) gObjectList[objectIndex].activeTexture,
+ (Vtx*) LOAD_ASSET_RAW(D_0D0062B0), 0x00000020, 0x00000040, 0x00000020, 0x00000040, 5);
+
+ // @port Pop the transform id.
+ FrameInterpolation_RecordCloseChild();
}
}
}
@@ -374,22 +381,30 @@ void OMole::func_80054D00(s32 objectIndex, s32 cameraId) {
void OMole::func_80054F04(s32 cameraId) {
Camera* camera = &camera1[cameraId];
- gSPDisplayList(gDisplayListHead++, (Gfx*)D_0D0079C8);
+ gSPDisplayList(gDisplayListHead++, (Gfx*) D_0D0079C8);
load_texture_block_rgba16_mirror((u8*) LOAD_ASSET_RAW(d_course_moo_moo_farm_mole_dirt), 0x00000010, 0x00000010);
-if (_idx == 0) {
- for (size_t i = 0; i < gObjectParticle2_SIZE; i++) {
- s32 objectIndex = gObjectParticle2[i];
- Object* object = &gObjectList[objectIndex];
- if (object->state > 0) {
- func_8008A364(objectIndex, cameraId, 0x2AABU, 0x000000C8);
- if ((is_obj_flag_status_active(objectIndex, VISIBLE) != 0) && (gMatrixHudCount <= MTX_HUD_POOL_SIZE_MAX)) {
- object->orientation[1] = func_800418AC(object->pos[0], object->pos[2], camera->pos);
- rsp_set_matrix_gObjectList(objectIndex);
- gSPDisplayList(gDisplayListHead++, (Gfx*)D_0D006980);
+ if (_idx == 0) {
+ for (size_t i = 0; i < gObjectParticle2_SIZE; i++) {
+ s32 objectIndex = gObjectParticle2[i];
+ Object* object = &gObjectList[objectIndex];
+ if (object->state > 0) {
+ func_8008A364(objectIndex, cameraId, 0x2AABU, 0x000000C8);
+ if ((is_obj_flag_status_active(objectIndex, VISIBLE) != 0) &&
+ (gMatrixHudCount <= MTX_HUD_POOL_SIZE_MAX)) {
+
+ // @port: Tag the transform.
+ FrameInterpolation_RecordOpenChild("func_80054F04", TAG_OBJECT(object) | (i << 32));
+
+ object->orientation[1] = func_800418AC(object->pos[0], object->pos[2], camera->pos);
+ rsp_set_matrix_gObjectList(objectIndex);
+ gSPDisplayList(gDisplayListHead++, (Gfx*) D_0D006980);
+
+ // @port Pop the transform id.
+ FrameInterpolation_RecordCloseChild();
+ }
}
}
}
-}
gSPTexture(gDisplayListHead++, 1, 1, 0, G_TX_RENDERTILE, G_OFF);
}
diff --git a/src/port/interpolation/FrameInterpolation.cpp b/src/port/interpolation/FrameInterpolation.cpp
index 767b83316..3d1512f55 100644
--- a/src/port/interpolation/FrameInterpolation.cpp
+++ b/src/port/interpolation/FrameInterpolation.cpp
@@ -76,7 +76,7 @@ enum class Op {
SetTranslateRotate
};
-typedef pair<const void*, int> label;
+typedef pair<const void*, uintptr_t> label;
union Data {
Data() {
@@ -575,7 +575,7 @@ void FrameInterpolation_StopRecord(void) {
is_recording = false;
}
-void FrameInterpolation_RecordOpenChild(const void* a, int b) {
+void FrameInterpolation_RecordOpenChild(const void* a, uintptr_t b) {
if (!is_recording)
return;
label key = { a, b };
diff --git a/src/port/interpolation/FrameInterpolation.h b/src/port/interpolation/FrameInterpolation.h
index debb5b890..06a7cf3d4 100644
--- a/src/port/interpolation/FrameInterpolation.h
+++ b/src/port/interpolation/FrameInterpolation.h
@@ -29,7 +29,7 @@ void FrameInterpolation_StopRecord(void);
void FrameInterpolation_RecordMarker(const char* file, int line);
-void FrameInterpolation_RecordOpenChild(const void* a, int b);
+void FrameInterpolation_RecordOpenChild(const void* a, uintptr_t b);
void FrameInterpolation_RecordCloseChild(void);
diff --git a/src/racing/actors.c b/src/racing/actors.c
index 65c734be3..d6fd2ade1 100644
--- a/src/racing/actors.c
+++ b/src/racing/actors.c
@@ -510,6 +510,7 @@ void render_cows(Camera* camera, Mat4 arg1) {
gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_TEX_EDGE, G_RM_AA_ZB_TEX_EDGE2);
var_s5 = NULL;
var_s1 = var_t1;
+
while (var_s1->pos[0] != END_OF_SPAWN_DATA) {
sp88[0] = var_s1->pos[0] * gCourseDirection;
sp88[1] = var_s1->pos[1];
@@ -524,6 +525,12 @@ void render_cows(Camera* camera, Mat4 arg1) {
arg1[3][0] = sp88[0];
arg1[3][1] = sp88[1];
arg1[3][2] = sp88[2];
+
+ // @port: Tag the transform.
+ FrameInterpolation_RecordOpenChild("render_actor_cow", ((var_s1->pos[0] & 0xFFFF) << 32) |
+ ((var_s1->pos[1] & 0xFFFF) << 16) |
+ (var_s1->pos[2] & 0xFFFF));
+
if ((gMatrixObjectCount < MTX_OBJECT_POOL_SIZE) && (render_set_position(arg1, 0) != 0)) {
switch (var_s1->someId) {
case 0:
@@ -545,6 +552,9 @@ void render_cows(Camera* camera, Mat4 arg1) {
} else {
return;
}
+
+ // @port Pop the transform id.
+ FrameInterpolation_RecordCloseChild();
}
var_s1++;
}
@@ -655,6 +665,11 @@ void render_palm_trees(Camera* camera, Mat4 arg1) {
continue;
}
+ // @port: Tag the transform.
+ FrameInterpolation_RecordOpenChild("render_actor_cow", ((var_s1->pos[0] & 0xFFFF) << 32) |
+ ((var_s1->pos[1] & 0xFFFF) << 16) |
+ (var_s1->pos[2] & 0xFFFF));
+
test &= 0xF;
test = (s16) test;
if (test == 6) {
@@ -691,6 +706,8 @@ void render_palm_trees(Camera* camera, Mat4 arg1) {
}
var_s1++;
}
+ // @port Pop the transform id.
+ FrameInterpolation_RecordCloseChild();
}
}
@@ -708,7 +725,7 @@ void render_actor_shell(Camera* camera, Mat4 matrix, struct ShellActor* shell) {
//! @todo Is this making the shell spin?
// Is it doing this by modifying a an address?
uintptr_t phi_t3;
-
+
// @port: Tag the transform.
FrameInterpolation_RecordOpenChild("Shell", TAG_ITEM_ADDR(shell));
@@ -2657,7 +2674,7 @@ void update_course_actors(void) {
}
const char* get_actor_name(s32 id) {
- switch(id) {
+ switch (id) {
case ACTOR_FALLING_ROCK:
return "Falling Rock";
case ACTOR_GREEN_SHELL: