mirror of
https://github.com/HarbourMasters/SpaghettiKart
synced 2026-08-08 19:03:11 -04:00
Big Interpolation Overhaul (#674)
* Fix FI * FI statue * Intepr fixes * Improve * More interp * Fix compile * More interp * Fix text
This commit is contained in:
@@ -25,7 +25,15 @@ void render_actor_fake_item_box(Camera* camera, struct FakeItemBox* fakeItemBox)
|
||||
f32 temp_f2_2;
|
||||
f32 someMultiplier;
|
||||
|
||||
FrameInterpolation_RecordOpenChild("Fake Item Box", TAG_ITEM_ADDR((((struct Actor*)fakeItemBox) - gActorList) << 5) | (camera - cameras));
|
||||
size_t actorIdx = CM_FindActorIndex((struct Actor*)fakeItemBox);
|
||||
if (-1 == actorIdx) {
|
||||
printf("[render_actor_fake_item_box] Could not find fake item box for FI, skipping!\n");
|
||||
return;
|
||||
}
|
||||
|
||||
u32 uniqueIdentifier = TAG_ITEM_ADDR((actorIdx << 4) | (camera - cameras));
|
||||
|
||||
FrameInterpolation_RecordOpenChild("fake_item_box", uniqueIdentifier);
|
||||
|
||||
if (is_within_render_distance(camera->pos, fakeItemBox->pos, camera->rot[1], 2500.0f, camera->fieldOfView,
|
||||
1000000.0f) < 0 &&
|
||||
@@ -58,7 +66,7 @@ void render_actor_fake_item_box(Camera* camera, struct FakeItemBox* fakeItemBox)
|
||||
gSPDisplayList(gDisplayListHead++, common_model_fake_itembox);
|
||||
FrameInterpolation_RecordCloseChild();
|
||||
|
||||
FrameInterpolation_RecordOpenChild("fake_item_box_part2", TAG_ITEM_ADDR((((struct Actor*)fakeItemBox) - gActorList) << 5) | (camera - cameras));
|
||||
FrameInterpolation_RecordOpenChild("fake_item_box_part2", uniqueIdentifier);
|
||||
|
||||
mtxf_pos_rotation_xyz(someMatrix2, fakeItemBox->pos, fakeItemBox->rot);
|
||||
mtxf_scale(someMatrix2, fakeItemBox->sizeScaling);
|
||||
@@ -129,7 +137,7 @@ void render_actor_fake_item_box(Camera* camera, struct FakeItemBox* fakeItemBox)
|
||||
someVec[0] = temp_f2_2;
|
||||
someVec[1] = 2.3f * thing;
|
||||
someVec[2] = temp_f12;
|
||||
FrameInterpolation_RecordOpenChild("fake_item_box_part3", TAG_ITEM_ADDR((((struct Actor*)fakeItemBox) - gActorList) << 5) | (camera - cameras));
|
||||
FrameInterpolation_RecordOpenChild("fake_item_box_part3", uniqueIdentifier);
|
||||
|
||||
add_translate_mat4_vec3f(someMatrix2, someMatrix3, someVec);
|
||||
|
||||
@@ -144,7 +152,7 @@ void render_actor_fake_item_box(Camera* camera, struct FakeItemBox* fakeItemBox)
|
||||
someVec[0] = temp_f2_2;
|
||||
someVec[1] = 1.2f * thing;
|
||||
someVec[2] = temp_f0_2;
|
||||
FrameInterpolation_RecordOpenChild("fake_item_box_part4", TAG_ITEM_ADDR((((struct Actor*)fakeItemBox) - gActorList) << 5) | (camera - cameras));
|
||||
FrameInterpolation_RecordOpenChild("fake_item_box_part4", uniqueIdentifier);
|
||||
add_translate_mat4_vec3f(someMatrix2, someMatrix3, someVec);
|
||||
|
||||
if (!render_set_position(someMatrix3, 0)) {
|
||||
@@ -163,7 +171,7 @@ void render_actor_fake_item_box(Camera* camera, struct FakeItemBox* fakeItemBox)
|
||||
someVec[0] = 0.0f;
|
||||
someVec[1] = 1.8f * thing;
|
||||
someVec[2] = -1.0f * thing;
|
||||
FrameInterpolation_RecordOpenChild("fake_item_box_part5", TAG_ITEM_ADDR((((struct Actor*)fakeItemBox) - gActorList) << 5) | (camera - cameras));
|
||||
FrameInterpolation_RecordOpenChild("fake_item_box_part5", uniqueIdentifier);
|
||||
|
||||
add_translate_mat4_vec3f(someMatrix2, someMatrix3, someVec);
|
||||
|
||||
@@ -173,7 +181,7 @@ void render_actor_fake_item_box(Camera* camera, struct FakeItemBox* fakeItemBox)
|
||||
}
|
||||
gSPDisplayList(gDisplayListHead++, D_0D0031E8);
|
||||
FrameInterpolation_RecordCloseChild();
|
||||
FrameInterpolation_RecordOpenChild("fake_item_box_part6", TAG_ITEM_ADDR((((struct Actor*)fakeItemBox) - gActorList) << 5) | (camera - cameras));
|
||||
FrameInterpolation_RecordOpenChild("fake_item_box_part6", uniqueIdentifier);
|
||||
|
||||
temp_f0_3 = -0.8f * thing;
|
||||
someVec[0] = temp_f0_3;
|
||||
@@ -188,7 +196,7 @@ void render_actor_fake_item_box(Camera* camera, struct FakeItemBox* fakeItemBox)
|
||||
|
||||
gSPDisplayList(gDisplayListHead++, D_0D003188);
|
||||
FrameInterpolation_RecordCloseChild();
|
||||
FrameInterpolation_RecordOpenChild("fake_item_box_part7", TAG_ITEM_ADDR((((struct Actor*)fakeItemBox) - gActorList) << 5) | (camera - cameras));
|
||||
FrameInterpolation_RecordOpenChild("fake_item_box_part7", uniqueIdentifier);
|
||||
|
||||
someVec[0] = temp_f0_3;
|
||||
someVec[1] = temp_f2;
|
||||
|
||||
@@ -17,6 +17,8 @@ void render_actor_falling_rock(Camera* camera, struct FallingRock* rock) {
|
||||
f32 height;
|
||||
UNUSED s32 pad[4];
|
||||
|
||||
return; // No longer used. Use the C++ actor!
|
||||
|
||||
if (rock->respawnTimer != 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -58,6 +58,8 @@ void update_actor_falling_rocks(struct FallingRock* rock) {
|
||||
f32 pad0;
|
||||
f32 pad1;
|
||||
|
||||
return; // No longer used! Use C++ actor
|
||||
|
||||
if (rock->respawnTimer != 0) {
|
||||
rock->respawnTimer -= 1;
|
||||
return;
|
||||
|
||||
@@ -27,6 +27,14 @@ void render_actor_item_box(Camera* camera, struct ItemBox* item_box) {
|
||||
f32 temp_f2_2;
|
||||
f32 someMultiplier;
|
||||
|
||||
size_t actorIdx = CM_FindActorIndex((struct Actor*)item_box);
|
||||
if (-1 == actorIdx) {
|
||||
printf("[render_actor_item_box] Could not find item box for FI, skipping!\n");
|
||||
return;
|
||||
}
|
||||
|
||||
u32 uniqueIdentifier = TAG_ITEM_ADDR((actorIdx << 4) | (camera - cameras));
|
||||
|
||||
temp_f0 = is_within_render_distance(camera->pos, item_box->pos, camera->rot[1], 0.0f, camera->fieldOfView,
|
||||
4000000.0f);
|
||||
if (CVarGetInteger("gNoCulling", 0) == 1) {
|
||||
@@ -41,7 +49,7 @@ void render_actor_item_box(Camera* camera, struct ItemBox* item_box) {
|
||||
someVec2[1] = item_box->resetDistance + 2.0f;
|
||||
someVec2[2] = item_box->pos[2];
|
||||
|
||||
FrameInterpolation_RecordOpenChild("itembox", TAG_ITEM_ADDR((((struct Actor*)item_box) - gActorList) << 5) | (camera - cameras));
|
||||
FrameInterpolation_RecordOpenChild("itembox", uniqueIdentifier);
|
||||
mtxf_pos_rotation_xyz(someMatrix1, someVec2, someRot);
|
||||
|
||||
if (!render_set_position(someMatrix1, 0)) {
|
||||
@@ -51,7 +59,7 @@ void render_actor_item_box(Camera* camera, struct ItemBox* item_box) {
|
||||
|
||||
gSPDisplayList(gDisplayListHead++, D_0D002EE8);
|
||||
FrameInterpolation_RecordCloseChild();
|
||||
FrameInterpolation_RecordOpenChild("itembox2", TAG_ITEM_ADDR((((struct Actor*)item_box) - gActorList) << 5) | (camera - cameras));
|
||||
FrameInterpolation_RecordOpenChild("itembox2", uniqueIdentifier);
|
||||
|
||||
|
||||
someRot[1] = item_box->rot[1] * 2;
|
||||
@@ -68,7 +76,7 @@ void render_actor_item_box(Camera* camera, struct ItemBox* item_box) {
|
||||
FrameInterpolation_RecordCloseChild();
|
||||
}
|
||||
if (item_box->state == 5) {
|
||||
FrameInterpolation_RecordOpenChild("itembox3", TAG_ITEM_ADDR((((struct Actor*)item_box) - gActorList) << 5) | (camera - cameras));
|
||||
FrameInterpolation_RecordOpenChild("itembox3", uniqueIdentifier);
|
||||
mtxf_pos_rotation_xyz(someMatrix1, item_box->pos, item_box->rot);
|
||||
|
||||
if (!render_set_position(someMatrix1, 0)) {
|
||||
@@ -80,7 +88,7 @@ void render_actor_item_box(Camera* camera, struct ItemBox* item_box) {
|
||||
FrameInterpolation_RecordCloseChild();
|
||||
}
|
||||
if (item_box->state != 3) {
|
||||
FrameInterpolation_RecordOpenChild("itembox4", TAG_ITEM_ADDR((((struct Actor*)item_box) - gActorList) << 5) | (camera - cameras));
|
||||
FrameInterpolation_RecordOpenChild("itembox4", uniqueIdentifier);
|
||||
mtxf_pos_rotation_xyz(someMatrix1, item_box->pos, item_box->rot);
|
||||
|
||||
if (!render_set_position(someMatrix1, 0)) {
|
||||
@@ -121,7 +129,7 @@ void render_actor_item_box(Camera* camera, struct ItemBox* item_box) {
|
||||
gDPSetBlendMask(gDisplayListHead++, 0xFF);
|
||||
thing = item_box->someTimer;
|
||||
|
||||
FrameInterpolation_RecordOpenChild("itembox5", TAG_ITEM_ADDR((((struct Actor*)item_box) - gActorList) << 5) | (camera - cameras));
|
||||
FrameInterpolation_RecordOpenChild("itembox5", uniqueIdentifier);
|
||||
mtxf_pos_rotation_xyz(someMatrix1, item_box->pos, item_box->rot);
|
||||
if (thing < 10.0f) {
|
||||
someMultiplier = 1.0f;
|
||||
@@ -147,7 +155,7 @@ void render_actor_item_box(Camera* camera, struct ItemBox* item_box) {
|
||||
|
||||
gSPDisplayList(gDisplayListHead++, D_0D003158);
|
||||
FrameInterpolation_RecordCloseChild();
|
||||
FrameInterpolation_RecordOpenChild("itembox6", TAG_ITEM_ADDR((((struct Actor*)item_box) - gActorList) << 5) | (camera - cameras));
|
||||
FrameInterpolation_RecordOpenChild("itembox6", uniqueIdentifier);
|
||||
|
||||
temp_f2_2 = 0.8f * thing;
|
||||
temp_f12 = 0.5f * thing;
|
||||
@@ -163,7 +171,7 @@ void render_actor_item_box(Camera* camera, struct ItemBox* item_box) {
|
||||
|
||||
gSPDisplayList(gDisplayListHead++, D_0D0031B8);
|
||||
FrameInterpolation_RecordCloseChild();
|
||||
FrameInterpolation_RecordOpenChild("itembox7", TAG_ITEM_ADDR((((struct Actor*)item_box) - gActorList) << 5) | (camera - cameras));
|
||||
FrameInterpolation_RecordOpenChild("itembox7", uniqueIdentifier);
|
||||
|
||||
temp_f0_2 = -0.5f * thing;
|
||||
someVec1[0] = temp_f2_2;
|
||||
@@ -179,7 +187,7 @@ void render_actor_item_box(Camera* camera, struct ItemBox* item_box) {
|
||||
|
||||
gSPDisplayList(gDisplayListHead++, D_0D003128);
|
||||
FrameInterpolation_RecordCloseChild();
|
||||
FrameInterpolation_RecordOpenChild("itembox8", TAG_ITEM_ADDR((((struct Actor*)item_box) - gActorList) << 5) | (camera - cameras));
|
||||
FrameInterpolation_RecordOpenChild("itembox8", uniqueIdentifier);
|
||||
|
||||
|
||||
if (!(item_box->someTimer & 1)) {
|
||||
@@ -200,7 +208,7 @@ void render_actor_item_box(Camera* camera, struct ItemBox* item_box) {
|
||||
|
||||
gSPDisplayList(gDisplayListHead++, D_0D0031E8);
|
||||
FrameInterpolation_RecordCloseChild();
|
||||
FrameInterpolation_RecordOpenChild("itembox9", TAG_ITEM_ADDR((((struct Actor*)item_box) - gActorList) << 5) | (camera - cameras));
|
||||
FrameInterpolation_RecordOpenChild("itembox9", uniqueIdentifier);
|
||||
|
||||
temp_f0_3 = -0.8f * thing;
|
||||
someVec1[0] = temp_f0_3;
|
||||
@@ -216,7 +224,7 @@ void render_actor_item_box(Camera* camera, struct ItemBox* item_box) {
|
||||
|
||||
gSPDisplayList(gDisplayListHead++, D_0D003188);
|
||||
FrameInterpolation_RecordCloseChild();
|
||||
FrameInterpolation_RecordOpenChild("itembox10", TAG_ITEM_ADDR((((struct Actor*)item_box) - gActorList) << 5) | (camera - cameras));
|
||||
FrameInterpolation_RecordOpenChild("itembox10", uniqueIdentifier);
|
||||
|
||||
someVec1[0] = temp_f0_3;
|
||||
someVec1[1] = temp_f2;
|
||||
|
||||
@@ -19,6 +19,12 @@ void render_actor_yoshi_egg(Camera* camera, Mat4 arg1, struct YoshiValleyEgg* eg
|
||||
Vec3f sp54;
|
||||
f32 temp_f0;
|
||||
|
||||
size_t actorIdx = CM_FindActorIndex((struct Actor*) egg);
|
||||
if (-1 == actorIdx) {
|
||||
printf("[render_actor_yoshi_egg] Could not find actor for FI, skipping\n");
|
||||
return;
|
||||
}
|
||||
|
||||
if (gGamestate != CREDITS_SEQUENCE) {
|
||||
temp_f0 = is_within_render_distance(camera->pos, egg->pos, camera->rot[1], 200.0f, camera->fieldOfView,
|
||||
16000000.0f);
|
||||
@@ -53,7 +59,7 @@ void render_actor_yoshi_egg(Camera* camera, Mat4 arg1, struct YoshiValleyEgg* eg
|
||||
sp5C[1] = egg->eggRot;
|
||||
sp5C[2] = 0;
|
||||
|
||||
FrameInterpolation_RecordOpenChild("yoshi_egg", TAG_OBJECT(egg));
|
||||
FrameInterpolation_RecordOpenChild("yoshi_egg", TAG_OBJECT((actorIdx << 4) | camera->cameraId));
|
||||
|
||||
mtxf_pos_rotation_xyz(sp60, egg->pos, sp5C);
|
||||
if (render_set_position(sp60, 0) == 0) {
|
||||
@@ -68,7 +74,7 @@ void render_actor_yoshi_egg(Camera* camera, Mat4 arg1, struct YoshiValleyEgg* eg
|
||||
arg1[3][1] = egg->pos[1];
|
||||
arg1[3][2] = egg->pos[2];
|
||||
|
||||
FrameInterpolation_RecordOpenChild("yoshi_egg2", TAG_OBJECT(egg));
|
||||
FrameInterpolation_RecordOpenChild("yoshi_egg2", TAG_OBJECT((actorIdx << 4) | camera->cameraId));
|
||||
|
||||
if (render_set_position(arg1, 0) != 0) {
|
||||
gSPClearGeometryMode(gDisplayListHead++, G_LIGHTING);
|
||||
|
||||
+3
-3
@@ -153,11 +153,11 @@ f32 gWaterLevel;
|
||||
f32 gWaterVelocity;
|
||||
s16 gPlayerPositionLUT[8]; // Player index at each position
|
||||
u16 gNumPermanentActors;
|
||||
s32 code_800029B0_bss_pad2[44];
|
||||
//s32 code_800029B0_bss_pad2[44];
|
||||
|
||||
struct Actor gActorList[100];
|
||||
//struct Actor gActorList[100]; use CM_FindActorIndex(actor) instead
|
||||
//! @warning todo: Is this apart of the actor array?
|
||||
UNUSED u8 D_80162578[sizeof(struct Actor)];
|
||||
//UNUSED u8 D_80162578[sizeof(struct Actor)];
|
||||
|
||||
s16 gDebugPathCount;
|
||||
s16 sIsController1Unplugged;
|
||||
|
||||
+26
-22
@@ -562,18 +562,18 @@ void render_object_for_player(s32 cameraId) {
|
||||
}
|
||||
}
|
||||
|
||||
void render_snowing_effect(s32 playerId) {
|
||||
void render_snowing_effect(s32 cameraId) {
|
||||
if (IsFrappeSnowland()) {
|
||||
if (gGamestate != 9) {
|
||||
if ((D_8015F894 == 0) && (gPlayerCountSelection1 == 1)) {
|
||||
render_object_snowflakes_particles();
|
||||
render_object_snowflakes_particles(cameraId);
|
||||
}
|
||||
} else {
|
||||
render_object_snowflakes_particles();
|
||||
render_object_snowflakes_particles(cameraId);
|
||||
}
|
||||
}
|
||||
if (CM_GetProps()->LakituTowType == 1) {
|
||||
render_ice_block(playerId);
|
||||
render_ice_block(cameraId);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4765,7 +4765,7 @@ void func_8006538C(Player* player, s8 arg1, s16 arg2, s8 arg3) {
|
||||
}
|
||||
}
|
||||
|
||||
void func_800658A0(Player* player, UNUSED s8 arg1, s16 arg2, s8 arg3) {
|
||||
void func_800658A0(Player* player, s8 playerId, s16 idx, s8 screenId) {
|
||||
Vec3f sp54;
|
||||
Vec3s sp4C;
|
||||
s16 red;
|
||||
@@ -4773,24 +4773,26 @@ void func_800658A0(Player* player, UNUSED s8 arg1, s16 arg2, s8 arg3) {
|
||||
s16 blue;
|
||||
s16 alpha;
|
||||
|
||||
if (player->particlePool0[arg2].isAlive == 1) {
|
||||
red = player->particlePool0[arg2].red;
|
||||
green = player->particlePool0[arg2].green;
|
||||
blue = player->particlePool0[arg2].blue;
|
||||
alpha = player->particlePool0[arg2].alpha;
|
||||
sp54[0] = player->particlePool0[arg2].pos[0];
|
||||
sp54[1] = player->particlePool0[arg2].pos[1];
|
||||
sp54[2] = player->particlePool0[arg2].pos[2];
|
||||
if (player->particlePool0[idx].isAlive == 1) {
|
||||
red = player->particlePool0[idx].red;
|
||||
green = player->particlePool0[idx].green;
|
||||
blue = player->particlePool0[idx].blue;
|
||||
alpha = player->particlePool0[idx].alpha;
|
||||
sp54[0] = player->particlePool0[idx].pos[0];
|
||||
sp54[1] = player->particlePool0[idx].pos[1];
|
||||
sp54[2] = player->particlePool0[idx].pos[2];
|
||||
sp4C[0] = 0;
|
||||
sp4C[1] = player->unk_048[arg3];
|
||||
sp4C[1] = player->unk_048[screenId];
|
||||
sp4C[2] = 0;
|
||||
func_800652D4(sp54, sp4C, player->particlePool0[arg2].scale * player->size);
|
||||
FrameInterpolation_RecordOpenChild("some_ply_part4", (idx << 8) | (playerId << 4) | screenId);
|
||||
func_800652D4(sp54, sp4C, player->particlePool0[idx].scale * player->size);
|
||||
gSPDisplayList(gDisplayListHead++, D_0D008DB8);
|
||||
gDPLoadTextureBlock(gDisplayListHead++, D_8018D48C, G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, 0,
|
||||
G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD,
|
||||
G_TX_NOLOD);
|
||||
func_8004B35C(red, green, blue, alpha);
|
||||
gSPDisplayList(gDisplayListHead++, D_0D008E48);
|
||||
FrameInterpolation_RecordCloseChild();
|
||||
gMatrixEffectCount += 1;
|
||||
}
|
||||
}
|
||||
@@ -4958,7 +4960,7 @@ void func_800664E0(Player* player, UNUSED s8 arg1, s16 arg2, s8 arg3) {
|
||||
}
|
||||
}
|
||||
|
||||
void func_80066714(Player* player, UNUSED s32 arg1, s16 arg2, s8 arg3) {
|
||||
UNUSED void func_80066714(Player* player, UNUSED s32 arg1, s16 arg2, s8 arg3) {
|
||||
Vec3f sp5C;
|
||||
Vec3s sp54;
|
||||
s16 red;
|
||||
@@ -5147,7 +5149,7 @@ void func_80067280(Player* player, UNUSED s8 arg1, s16 arg2, s8 arg3) {
|
||||
}
|
||||
}
|
||||
|
||||
void render_player_boost_spark_particles(Player* player, UNUSED s8 arg1, s16 arg2, s8 arg3) {
|
||||
void render_player_boost_spark_particles(Player* player, s8 playerId, s16 arg2, s8 screenId) {
|
||||
Vec3f sp8C;
|
||||
Vec3s sp84;
|
||||
UNUSED s32 stackPadding[4];
|
||||
@@ -5157,8 +5159,9 @@ void render_player_boost_spark_particles(Player* player, UNUSED s8 arg1, s16 arg
|
||||
sp8C[1] = player->particlePool3[arg2].pos[1];
|
||||
sp8C[2] = player->particlePool3[arg2].pos[2];
|
||||
sp84[0] = 0;
|
||||
sp84[1] = player->unk_048[arg3];
|
||||
sp84[1] = player->unk_048[screenId];
|
||||
sp84[2] = 0;
|
||||
FrameInterpolation_RecordOpenChild("boost_spark_particle", TAG_SMOKE_DUST((arg2 << 8) | (playerId << 4) | screenId));
|
||||
func_800652D4(sp8C, sp84, player->particlePool3[arg2].scale * player->size);
|
||||
if (player->particlePool3[arg2].unk_010 == 1) {
|
||||
gSPDisplayList(gDisplayListHead++, D_0D008DB8);
|
||||
@@ -5175,6 +5178,7 @@ void render_player_boost_spark_particles(Player* player, UNUSED s8 arg1, s16 arg
|
||||
func_8004B72C(0x000000FF, 0x000000FF, 0x000000DF, 0x000000FF, 0x0000005F, 0, 0x00000060);
|
||||
gSPDisplayList(gDisplayListHead++, D_0D008E48);
|
||||
}
|
||||
FrameInterpolation_RecordCloseChild();
|
||||
gMatrixEffectCount += 1;
|
||||
}
|
||||
}
|
||||
@@ -5964,7 +5968,7 @@ void render_balloon(Vec3f arg0, f32 arg1, s16 arg2, s16 arg3) {
|
||||
gMatrixEffectCount += 1;
|
||||
}
|
||||
|
||||
void func_8006C0C8(Vec3f arg0, f32 arg1, s32 rgb, s16 alpha) {
|
||||
UNUSED void func_8006C0C8(Vec3f arg0, f32 arg1, s32 rgb, s16 alpha) {
|
||||
Vec3f sp4C;
|
||||
Vec3s sp44;
|
||||
s16 red;
|
||||
@@ -6454,15 +6458,15 @@ void func_8006D474(Player* player, s8 playerId, s8 screenId) {
|
||||
}
|
||||
}
|
||||
|
||||
void func_8006DC54(Player* player, s8 arg1, s8 arg2) {
|
||||
void func_8006DC54(Player* player, s8 playerId, s8 screenId) {
|
||||
s16 i;
|
||||
s32 bitwiseMask;
|
||||
|
||||
bitwiseMask = SIDE_OF_KART << (arg2 * 4);
|
||||
bitwiseMask = SIDE_OF_KART << (screenId * 4);
|
||||
if (bitwiseMask == (player->unk_002 & bitwiseMask)) {
|
||||
for (i = 0; i < 10; i++) {
|
||||
if (player->particlePool0[i].type == 7) {
|
||||
func_800658A0(player, arg1, i, arg2);
|
||||
func_800658A0(player, playerId, i, screenId);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -89,7 +89,7 @@ void TrainSmokeDraw(s32 cameraId) {
|
||||
|
||||
if ((train->SomeFlags != 0) && (is_particle_on_screen(train->Locomotive.position, camera, 0x4000U) != 0)) {
|
||||
for (size_t i = 0; i < 128; i++) {
|
||||
FrameInterpolation_RecordOpenChild("TrainSmokeParticle", train->SmokeParticles[i]);
|
||||
FrameInterpolation_RecordOpenChild("train_smoke_particle", (train->SmokeParticles[i] << 4) | camera->cameraId);
|
||||
render_object_train_smoke_particle(train->SmokeParticles[i], cameraId);
|
||||
FrameInterpolation_RecordCloseChild();
|
||||
}
|
||||
@@ -103,7 +103,7 @@ void TrainSmokeDraw(s32 cameraId) {
|
||||
D_80183E80[2] = 0x8000;
|
||||
if ((boat->SomeFlags != 0) && (is_particle_on_screen(boat->Position, camera, 0x4000U) != 0)) {
|
||||
for (size_t i = 0; i < gObjectParticle2_SIZE; i++) {
|
||||
FrameInterpolation_RecordOpenChild("BoatSmokeParticle", boat->SmokeParticles[i]);
|
||||
FrameInterpolation_RecordOpenChild("boat_smoke_particle", (boat->SmokeParticles[i] << 4) | camera->cameraId);
|
||||
render_object_paddle_boat_smoke_particle(boat->SmokeParticles[i], cameraId);
|
||||
FrameInterpolation_RecordCloseChild();
|
||||
}
|
||||
|
||||
@@ -14,6 +14,8 @@ extern "C" {
|
||||
Vtx gBowserStatueVtx[717];
|
||||
Gfx gBowserStatueGfx[162];
|
||||
|
||||
size_t ABowserStatue::_count = 0;
|
||||
|
||||
ABowserStatue::ABowserStatue(const SpawnParams& params) {
|
||||
Name = "Bowser Statue";
|
||||
ResourceName = "mk:bowser_statue";
|
||||
@@ -26,6 +28,8 @@ ABowserStatue::ABowserStatue(const SpawnParams& params) {
|
||||
Scale = params.Scale.value_or(FVector(1.0f, 1.0f, 1.0f));
|
||||
|
||||
mBehaviour = static_cast<ABowserStatue::Behaviour>(params.Behaviour.value_or(0));
|
||||
_idx = _count;
|
||||
_count += 1;
|
||||
}
|
||||
|
||||
void ABowserStatue::Tick() {
|
||||
@@ -44,7 +48,7 @@ void ABowserStatue::Draw(Camera *camera) {
|
||||
|
||||
FVector pos = FVector(Pos[0] + 76, Pos[1], Pos[2] + 1846);
|
||||
|
||||
FrameInterpolation_RecordOpenChild("mk:bowser_statue", TAG_OBJECT(this));
|
||||
FrameInterpolation_RecordOpenChild("mk:bowser_statue", TAG_OBJECT((_idx << 4) | camera->cameraId));
|
||||
ApplyMatrixTransformations(mtx, pos, *(IRotator*)Rot, Scale);
|
||||
AddObjectMatrix(mtx, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||
gDPSetCombineMode(gDisplayListHead++,G_CC_MODULATEIA, G_CC_MODULATEIA);
|
||||
|
||||
@@ -30,4 +30,6 @@ public:
|
||||
virtual bool IsMod() override;
|
||||
private:
|
||||
ABowserStatue::Behaviour mBehaviour;
|
||||
static size_t _count;
|
||||
size_t _idx;
|
||||
};
|
||||
|
||||
@@ -24,6 +24,7 @@ AFallingRock::AFallingRock(SpawnParams params) : AActor(params) {
|
||||
Type = ACTOR_FALLING_ROCK;
|
||||
Name = "Falling Rock";
|
||||
ResourceName = "mk:falling_rock";
|
||||
_idx = _count;
|
||||
|
||||
FVector pos = params.Location.value_or(FVector(0, 0, 0));
|
||||
TimerLength = params.Behaviour.value_or(80);
|
||||
@@ -179,7 +180,7 @@ void AFallingRock::Draw(Camera* camera) {
|
||||
sp98[2] = 0;
|
||||
sp8C[1] = height + 2.0f;
|
||||
|
||||
FrameInterpolation_RecordOpenChild("rock_shadow", (uintptr_t) this);
|
||||
FrameInterpolation_RecordOpenChild("rock_shadow", (_idx << 4) | camera->cameraId);
|
||||
mtxf_pos_rotation_xyz(mtx, sp8C, sp98);
|
||||
if (render_set_position(mtx, 0) == 0) {
|
||||
FrameInterpolation_RecordCloseChild();
|
||||
@@ -190,18 +191,15 @@ void AFallingRock::Draw(Camera* camera) {
|
||||
}
|
||||
}
|
||||
|
||||
// @port: Tag the transform.
|
||||
FrameInterpolation_RecordOpenChild("rock", (uintptr_t) this);
|
||||
FrameInterpolation_RecordOpenChild("rock", (_idx << 4) | camera->cameraId);
|
||||
|
||||
mtxf_pos_rotation_xyz(mtx, Pos, Rot);
|
||||
if (render_set_position(mtx, 0) == 0) {
|
||||
// @port Pop the transform id.
|
||||
FrameInterpolation_RecordCloseChild();
|
||||
return;
|
||||
}
|
||||
gSPDisplayList(gDisplayListHead++, (Gfx*)d_course_choco_mountain_dl_falling_rock);
|
||||
|
||||
// @port Pop the transform id.
|
||||
FrameInterpolation_RecordCloseChild();
|
||||
}
|
||||
|
||||
|
||||
@@ -37,7 +37,8 @@ public:
|
||||
virtual void DrawEditorProperties() override;
|
||||
void Reset();
|
||||
|
||||
private:
|
||||
private:
|
||||
uint32_t RespawnTimer = 0;
|
||||
static size_t _count;
|
||||
size_t _idx;
|
||||
};
|
||||
|
||||
@@ -24,6 +24,7 @@ size_t AFinishline::_count = 0;
|
||||
AFinishline::AFinishline(const SpawnParams& params) : AActor(params) {
|
||||
Name = "Finishline";
|
||||
ResourceName = "mk:finishline";
|
||||
_idx = _count;
|
||||
|
||||
if (params.Location.has_value()) {
|
||||
FVector pos = params.Location.value_or(FVector(0, 0, 0));
|
||||
@@ -47,6 +48,8 @@ AFinishline::AFinishline(const SpawnParams& params) : AActor(params) {
|
||||
Flags = -0x8000 | 0x4000;
|
||||
|
||||
BoundingBoxSize = 0.0f;
|
||||
|
||||
_count +=1;
|
||||
}
|
||||
|
||||
void AFinishline::BeginPlay() {
|
||||
@@ -70,7 +73,7 @@ void AFinishline::Draw(Camera *camera) {
|
||||
return;
|
||||
}
|
||||
|
||||
FrameInterpolation_RecordOpenChild("Finishline", _count);
|
||||
FrameInterpolation_RecordOpenChild("finishline", (_idx << 4) | (camera->cameraId));
|
||||
|
||||
mtxf_pos_rotation_xyz(mtx, Pos, Rot);
|
||||
|
||||
|
||||
@@ -49,6 +49,7 @@ public:
|
||||
bool bIsFinishline = false;
|
||||
|
||||
static size_t _count;
|
||||
size_t _idx;
|
||||
bool PickedUp = false;
|
||||
uint32_t Timer = 0;
|
||||
|
||||
|
||||
@@ -14,12 +14,15 @@ extern "C" {
|
||||
#include "collision.h"
|
||||
}
|
||||
|
||||
size_t AMarioSign::_count = 0;
|
||||
|
||||
AMarioSign::AMarioSign(const SpawnParams& params) : AActor(params) {
|
||||
Name = "Mario Sign";
|
||||
ResourceName = "mk:mario_sign";
|
||||
Model = d_course_mario_raceway_dl_sign;
|
||||
|
||||
Speed = params.Speed.value_or(182);
|
||||
_idx = _count;
|
||||
|
||||
FVector pos = params.Location.value_or(FVector(0, 0, 0));
|
||||
Pos[0] = pos.x * gTrackDirection;
|
||||
@@ -36,6 +39,8 @@ AMarioSign::AMarioSign(const SpawnParams& params) : AActor(params) {
|
||||
func_802AAAAC(&Unk30);
|
||||
Flags = -0x8000;
|
||||
Flags |= 0x4000;
|
||||
|
||||
_count += 1;
|
||||
}
|
||||
|
||||
bool AMarioSign::IsMod() {
|
||||
@@ -73,7 +78,7 @@ void AMarioSign::Draw(Camera *camera) {
|
||||
unk = MAX(unk, 0.0f);
|
||||
}
|
||||
if (!(unk < 0.0f)) {
|
||||
FrameInterpolation_RecordOpenChild("mk:mario_sign", TAG_OBJECT(this));
|
||||
FrameInterpolation_RecordOpenChild("mk:mario_sign", TAG_OBJECT((_idx << 4) | camera->cameraId));
|
||||
gSPSetGeometryMode(gDisplayListHead++, G_SHADING_SMOOTH);
|
||||
gSPClearGeometryMode(gDisplayListHead++, G_LIGHTING);
|
||||
mtxf_pos_rotation_xyz(sp40, Pos, Rot);
|
||||
|
||||
@@ -13,7 +13,9 @@ extern "C" {
|
||||
class AMarioSign : public AActor {
|
||||
public:
|
||||
|
||||
virtual ~AMarioSign() = default;
|
||||
virtual ~AMarioSign() {
|
||||
_count -= 1;
|
||||
};
|
||||
explicit AMarioSign(const SpawnParams& params);
|
||||
|
||||
// This is simply a helper function to keep Spawning code clean
|
||||
@@ -33,4 +35,7 @@ public:
|
||||
virtual void SetSpawnParams(SpawnParams& params) override;
|
||||
virtual void Tick() override;
|
||||
virtual void Draw(Camera*) override;
|
||||
private:
|
||||
static size_t _count;
|
||||
size_t _idx;
|
||||
};
|
||||
|
||||
@@ -357,6 +357,7 @@ void AText::SetupVtx() {
|
||||
void AText::DrawText3D(Camera* camera) { // Based on func_80095BD0
|
||||
Mat4 mtx;
|
||||
|
||||
FrameInterpolation_RecordOpenChild("actor_text", (_idx << 4) | camera->cameraId);
|
||||
if (FaceCamera) {
|
||||
ApplySphericalBillBoard(mtx, *(FVector*)Pos, Scale, camera->cameraId);
|
||||
} else {
|
||||
@@ -365,7 +366,6 @@ void AText::DrawText3D(Camera* camera) { // Based on func_80095BD0
|
||||
|
||||
AddObjectMatrix(mtx, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||
|
||||
FrameInterpolation_RecordOpenChild("actor_text", ((uintptr_t)_idx << 6) | camera->cameraId);
|
||||
gSPDisplayList(gDisplayListHead++, (Gfx*)D_020077A8);
|
||||
|
||||
for (CharacterList& tex : TextureList) {
|
||||
|
||||
@@ -13,6 +13,8 @@ extern "C" {
|
||||
#include "collision.h"
|
||||
}
|
||||
|
||||
size_t AWarioSign::_count = 0;
|
||||
|
||||
AWarioSign::AWarioSign(const SpawnParams& params) : AActor(params) {
|
||||
Type = ACTOR_WARIO_SIGN;
|
||||
Name = "Wario Sign";
|
||||
@@ -20,6 +22,7 @@ AWarioSign::AWarioSign(const SpawnParams& params) : AActor(params) {
|
||||
Model = d_course_wario_stadium_dl_sign;
|
||||
|
||||
Speed = params.Speed.value_or(182);
|
||||
_idx = _count;
|
||||
|
||||
FVector pos = params.Location.value_or(FVector(0, 0, 0));
|
||||
Pos[0] = pos.x * gTrackDirection;
|
||||
@@ -35,6 +38,8 @@ AWarioSign::AWarioSign(const SpawnParams& params) : AActor(params) {
|
||||
|
||||
func_802AAAAC(&Unk30);
|
||||
Flags = -0x8000;
|
||||
|
||||
_count += 1;
|
||||
}
|
||||
|
||||
bool AWarioSign::IsMod() {
|
||||
@@ -54,7 +59,7 @@ void AWarioSign::Draw(Camera *camera) {
|
||||
unk = MAX(unk, 0.0f);
|
||||
}
|
||||
if (!(unk < 0.0f)) {
|
||||
FrameInterpolation_RecordOpenChild("mk:mario_sign", TAG_OBJECT(this));
|
||||
FrameInterpolation_RecordOpenChild("mk:mario_sign", TAG_OBJECT((_idx << 4) | camera->cameraId));
|
||||
gSPSetGeometryMode(gDisplayListHead++, G_SHADING_SMOOTH);
|
||||
gSPClearGeometryMode(gDisplayListHead++, G_LIGHTING);
|
||||
|
||||
|
||||
@@ -8,7 +8,9 @@
|
||||
class AWarioSign : public AActor {
|
||||
public:
|
||||
|
||||
virtual ~AWarioSign() = default;
|
||||
virtual ~AWarioSign() {
|
||||
_count -= 1;
|
||||
};
|
||||
explicit AWarioSign(const SpawnParams& params);
|
||||
|
||||
// This is simply a helper function to keep Spawning code clean
|
||||
@@ -27,4 +29,7 @@ public:
|
||||
virtual bool IsMod() override;
|
||||
virtual void Tick() override;
|
||||
virtual void Draw(Camera*) override;
|
||||
private:
|
||||
static size_t _count;
|
||||
size_t _idx;
|
||||
};
|
||||
|
||||
@@ -126,7 +126,7 @@ void OBat::Draw(s32 cameraId) {
|
||||
|
||||
if ((gObjectList[objectIndex].state >= 2) && (gMatrixHudCount < 0x2EF)) {
|
||||
// @port: Tag the transform.
|
||||
FrameInterpolation_RecordOpenChild("Bat set 1", (uintptr_t) &gObjectList[objectIndex]);
|
||||
FrameInterpolation_RecordOpenChild("bat_1", (objectIndex << 4) | cameraId);
|
||||
|
||||
D_80183E80[1] =
|
||||
func_800418AC(gObjectList[objectIndex].pos[0], gObjectList[objectIndex].pos[2], cam->pos);
|
||||
@@ -149,7 +149,7 @@ void OBat::Draw(s32 cameraId) {
|
||||
|
||||
if ((gObjectList[objectIndex].state >= 2) && (gMatrixHudCount < 0x2EF)) {
|
||||
// @port: Tag the transform.
|
||||
FrameInterpolation_RecordOpenChild("Bat set 2", (uintptr_t) &gObjectList[objectIndex]);
|
||||
FrameInterpolation_RecordOpenChild("bat_2", (objectIndex << 4) | cameraId);
|
||||
|
||||
D_80183E80[1] =
|
||||
func_800418AC(gObjectList[objectIndex].pos[0], gObjectList[objectIndex].pos[2], cam->pos);
|
||||
|
||||
@@ -104,30 +104,30 @@ void OBoos::Draw(s32 cameraId) {
|
||||
temp_s2 = MIN(temp_s2, 0x15F91U);
|
||||
}
|
||||
|
||||
// @port: Tag the transform.
|
||||
FrameInterpolation_RecordOpenChild("Boo", (uintptr_t)&gObjectList[objectIndex]);
|
||||
FrameInterpolation_RecordOpenChild("boo", (objectIndex << 4) | cameraId);
|
||||
|
||||
if (is_obj_flag_status_active(objectIndex, VISIBLE) != 0) {
|
||||
func_800523B8(objectIndex, cameraId, temp_s2);
|
||||
}
|
||||
|
||||
// @port Pop the transform id.
|
||||
FrameInterpolation_RecordCloseChild();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void OBoos::func_800523B8(s32 objectIndex, s32 arg1, u32 arg2) {
|
||||
void OBoos::func_800523B8(s32 objectIndex, s32 cameraId, u32 arg2) {
|
||||
UNUSED s32 pad[2];
|
||||
Object* object;
|
||||
Camera* camera = &camera1[arg1];
|
||||
Camera* camera = &camera1[cameraId];
|
||||
|
||||
object = &gObjectList[objectIndex];
|
||||
object->orientation[1] = func_800418AC(object->pos[0], object->pos[2], camera->pos);
|
||||
func_800484BC(object->pos, object->orientation, object->sizeScaling, object->primAlpha, (u8*) object->activeTLUT,
|
||||
(u8*) object->activeTexture, object->vertex, 0x00000030, 0x00000028, 0x00000030, 0x00000028);
|
||||
if ((is_obj_flag_status_active(objectIndex, 0x00000020) != 0) && (arg2 < 0x15F91U)) {
|
||||
FrameInterpolation_RecordOpenChild("boo_hoo", (objectIndex << 4) | cameraId);
|
||||
func_8004A630(&D_8018C830, object->pos, 0.4f);
|
||||
FrameInterpolation_RecordCloseChild();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -63,7 +63,7 @@ public:
|
||||
virtual void Tick() override;
|
||||
virtual void Draw(s32 cameraId) override;
|
||||
virtual void DrawEditorProperties() override;
|
||||
void func_800523B8(s32 objectIndex, s32 arg1, u32 arg2);
|
||||
void func_800523B8(s32 objectIndex, s32 cameraId, u32 arg2);
|
||||
|
||||
void func_8007CA70(void);
|
||||
void func_8007C5B4(s32 objectIndex);
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
#include "CheepCheep.h"
|
||||
#include "port/Game.h"
|
||||
#include "port/interpolation/FrameInterpolation.h"
|
||||
|
||||
#include "assets/models/tracks/banshee_boardwalk/banshee_boardwalk_data.h"
|
||||
#include "assets/models/common_data.h"
|
||||
@@ -64,6 +65,7 @@ void OCheepCheep::Draw(s32 cameraId) { // func_8005217C
|
||||
object = &gObjectList[temp_a3];
|
||||
if (object->state >= 2) {
|
||||
if (is_obj_flag_status_active(temp_a3, 0x10) != 0) {
|
||||
FrameInterpolation_RecordOpenChild("cheep_cheep", (temp_a3 << 4) | cameraId);
|
||||
rsp_set_matrix_transformation(object->pos, object->direction_angle, object->sizeScaling);
|
||||
func_800520C0(temp_a3);
|
||||
|
||||
@@ -80,6 +82,7 @@ void OCheepCheep::Draw(s32 cameraId) { // func_8005217C
|
||||
gSPLight(gDisplayListHead++, &D_800E45C0l[3].l[0], LIGHT_1);
|
||||
gSPLight(gDisplayListHead++, &D_800E45C0l[3].a, LIGHT_2);
|
||||
gSPDisplayList(gDisplayListHead++, (Gfx*) d_course_banshee_boardwalk_dl_7650);
|
||||
FrameInterpolation_RecordCloseChild();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -104,7 +104,7 @@ void OGrandPrixBalloons::Draw(s32 cameraId) {
|
||||
}
|
||||
}
|
||||
|
||||
void OGrandPrixBalloons::func_80053D74(s32 objectIndex, UNUSED s32 arg1, s32 vertexIndex, s32 index) {
|
||||
void OGrandPrixBalloons::func_80053D74(s32 objectIndex, s32 cameraId, s32 vertexIndex, s32 index) {
|
||||
Object* object;
|
||||
|
||||
Vtx* vtx = (Vtx*) LOAD_ASSET_RAW(common_vtx_hedgehog);
|
||||
@@ -113,7 +113,7 @@ void OGrandPrixBalloons::func_80053D74(s32 objectIndex, UNUSED s32 arg1, s32 ver
|
||||
if (gMatrixHudCount <= MTX_HUD_POOL_SIZE_MAX) {
|
||||
object = &gObjectList[objectIndex];
|
||||
|
||||
FrameInterpolation_RecordOpenChild("Balloon", TAG_ITEM_ADDR((objectIndex << 7 | index)));
|
||||
FrameInterpolation_RecordOpenChild("balloon", TAG_ITEM_ADDR((objectIndex << 11 | (cameraId << 7) | index)));
|
||||
|
||||
D_80183E80[2] = (s16) (object->unk_084[6] + 0x8000);
|
||||
rsp_set_matrix_transformation(object->pos, (u16*) D_80183E80, object->sizeScaling);
|
||||
|
||||
@@ -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, s32 index);
|
||||
void func_80053D74(s32 objectIndex, s32 cameraId, s32 vertexIndex, s32 index);
|
||||
|
||||
void func_80074924(s32 objectIndex);
|
||||
void func_80074D94(s32 objectIndex);
|
||||
|
||||
@@ -118,8 +118,6 @@ void OLakitu::Draw(s32 cameraId) {
|
||||
return;
|
||||
}
|
||||
|
||||
FrameInterpolation_RecordOpenChild("Lakitu", (uintptr_t) this);
|
||||
|
||||
objectIndex = mLakituId;
|
||||
camera = &cameras[cameraId];
|
||||
if (is_obj_flag_status_active(objectIndex, 0x00000010) != 0) {
|
||||
@@ -130,6 +128,7 @@ void OLakitu::Draw(s32 cameraId) {
|
||||
if (func_80072354(objectIndex, 2) != 0) {
|
||||
s32 width = object->textureWidth;
|
||||
s32 height = object->textureHeight;
|
||||
FrameInterpolation_RecordOpenChild("lakitu", (_idx << 4) | cameraId);
|
||||
rsp_set_matrix_transformation(object->pos, object->orientation, object->sizeScaling);
|
||||
gSPDisplayList(gDisplayListHead++, (Gfx*) D_0D007D78);
|
||||
s32 heightIndex;
|
||||
@@ -140,10 +139,12 @@ void OLakitu::Draw(s32 cameraId) {
|
||||
G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD);
|
||||
gSPVertex(gDisplayListHead++, (uintptr_t) object->vertex, 4, 0);
|
||||
gSPDisplayList(gDisplayListHead++, (Gfx*) common_rectangle_display);
|
||||
FrameInterpolation_RecordCloseChild();
|
||||
gSPTexture(gDisplayListHead++, 1, 1, 0, G_TX_RENDERTILE, G_OFF);
|
||||
} else {
|
||||
s32 width = object->textureWidth;
|
||||
s32 height = object->textureHeight;
|
||||
FrameInterpolation_RecordOpenChild("lakitu2", (_idx << 4) | cameraId);
|
||||
rsp_set_matrix_transformation(object->pos, object->orientation, object->sizeScaling);
|
||||
gSPDisplayList(gDisplayListHead++, (Gfx*) D_0D007E98);
|
||||
gDPSetAlphaCompare(gDisplayListHead++, G_AC_DITHER);
|
||||
@@ -156,6 +157,7 @@ void OLakitu::Draw(s32 cameraId) {
|
||||
rsp_load_texture((u8*) object->activeTexture, width, height);
|
||||
gSPVertex(gDisplayListHead++, (uintptr_t) object->vertex, 4, 0);
|
||||
gSPDisplayList(gDisplayListHead++, (Gfx*) common_rectangle_display);
|
||||
FrameInterpolation_RecordCloseChild();
|
||||
gSPTexture(gDisplayListHead++, 1, 1, 0, G_TX_RENDERTILE, G_OFF);
|
||||
|
||||
gDPSetAlphaCompare(gDisplayListHead++, G_AC_NONE);
|
||||
@@ -170,11 +172,12 @@ void OLakitu::Draw(s32 cameraId) {
|
||||
var_f2 = -var_f2;
|
||||
}
|
||||
if ((var_f0 + var_f2) <= 200.0) {
|
||||
FrameInterpolation_RecordOpenChild("lakitu3", (_idx << 4) | cameraId);
|
||||
func_8004A630(&D_8018C0B0[cameraId], object->pos, 0.35f);
|
||||
FrameInterpolation_RecordCloseChild();
|
||||
}
|
||||
}
|
||||
}
|
||||
FrameInterpolation_RecordCloseChild();
|
||||
}
|
||||
|
||||
void OLakitu::func_80079114(s32 objectIndex, s32 playerId, s32 arg2) {
|
||||
|
||||
@@ -137,7 +137,7 @@ void OPenguin::Draw(s32 cameraId) {
|
||||
//}
|
||||
temp_s1 = func_8008A364(objectIndex, cameraId, var_s1, drawDistance);
|
||||
if (is_obj_flag_status_active(objectIndex, VISIBLE) != 0) {
|
||||
func_800557B4(objectIndex, (u32) temp_s1, var_s3);
|
||||
func_800557B4(objectIndex, cameraId, (u32) temp_s1, var_s3);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -170,8 +170,6 @@ void OThwomp::Tick60fps() { // func_80081210
|
||||
|
||||
if (_idx == 0) {
|
||||
for (var_s4 = 0; var_s4 < gObjectParticle2_SIZE; var_s4++) {
|
||||
FrameInterpolation_RecordOpenChild("Thwomp_smoke", (uintptr_t) (var_s4 << 5));
|
||||
|
||||
objectIndex = gObjectParticle2[var_s4];
|
||||
if (objectIndex == DELETED_OBJECT_ID) {
|
||||
continue;
|
||||
@@ -184,9 +182,6 @@ void OThwomp::Tick60fps() { // func_80081210
|
||||
continue;
|
||||
}
|
||||
delete_object_wrapper(&gObjectParticle2[var_s4]);
|
||||
|
||||
// @port Pop the transform id.
|
||||
FrameInterpolation_RecordCloseChild();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -732,9 +727,11 @@ void OThwomp::Draw(s32 cameraId) {
|
||||
if (objectIndex != NULL_OBJECT_ID) {
|
||||
object = &gObjectList[objectIndex];
|
||||
if ((object->state > 0) && (Behaviour == States::MOVE_FAR)) {
|
||||
FrameInterpolation_RecordOpenChild("thwomp_particle2", (_idx << 12) | (i << 4) | cameraId);
|
||||
rsp_set_matrix_transformation(object->pos, object->orientation, object->sizeScaling);
|
||||
gSPVertex(gDisplayListHead++, (uintptr_t) D_0D005C00, 3, 0);
|
||||
gSPDisplayList(gDisplayListHead++, (Gfx*) D_0D006930);
|
||||
FrameInterpolation_RecordCloseChild();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -753,7 +750,7 @@ void OThwomp::Draw(s32 cameraId) {
|
||||
if ((object->state >= 2) && (Behaviour == States::MOVE_AND_ROTATE)) {
|
||||
func_8004B138(0x000000FF, 0x000000FF, 0x000000FF, (s32) object->primAlpha);
|
||||
D_80183E80[1] = func_800418AC(object->pos[0], object->pos[2], camera->pos);
|
||||
FrameInterpolation_RecordOpenChild("thwomp_particle", (i << 16) | (_idx << 6) | cameraId);
|
||||
FrameInterpolation_RecordOpenChild("thwomp_particle", (_idx << 12) | (i << 4) | cameraId);
|
||||
func_800431B0(object->pos, D_80183E80, object->sizeScaling, (Vtx*) D_0D005AE0);
|
||||
FrameInterpolation_RecordCloseChild();
|
||||
}
|
||||
|
||||
@@ -64,8 +64,7 @@ void OTrashBin::Draw(s32 cameraId) {
|
||||
Vec3f Pos = { _pos.x + 63, _pos.y + 12, _pos.z + 25 };
|
||||
Vec3s Rot = { 0, 0x4000, 0 };
|
||||
|
||||
// @port: Tag the transform.
|
||||
FrameInterpolation_RecordOpenChild("OTrashBin", (uintptr_t) object);
|
||||
FrameInterpolation_RecordOpenChild("OTrashBin", (_objectIndex << 4) | cameraId);
|
||||
|
||||
mtxf_pos_rotation_xyz(mtx, Pos, Rot);
|
||||
//mtxf_scale(mtx, 1.0f);
|
||||
@@ -73,7 +72,6 @@ void OTrashBin::Draw(s32 cameraId) {
|
||||
gSPDisplayList(gDisplayListHead++, BinMod);
|
||||
}
|
||||
|
||||
// @port Pop the transform id.
|
||||
FrameInterpolation_RecordCloseChild();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -108,13 +108,11 @@ void StarEmitter::Draw(s32 cameraId) { // func_80054BE8
|
||||
D_80183E80[0] = 0;
|
||||
for (var_s0 = 0; var_s0 < gObjectParticle3_SIZE; var_s0++) {
|
||||
temp_a0 = ObjectIndex[var_s0];
|
||||
// @port: Tag the transform.
|
||||
FrameInterpolation_RecordOpenChild("Ceremony Stars", (uintptr_t) &ObjectIndex[var_s0]);
|
||||
if ((temp_a0 != -1) && (gObjectList[temp_a0].state >= 2)) {
|
||||
FrameInterpolation_RecordOpenChild("trophy_stars", (var_s0 << 4) | cameraId);
|
||||
StarEmitter::func_80054AFC(temp_a0, camera->pos);
|
||||
FrameInterpolation_RecordCloseChild();
|
||||
}
|
||||
// @port Pop the transform id.
|
||||
FrameInterpolation_RecordCloseChild();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -95,7 +95,7 @@ void SkyCloud::Draw(ScreenContext* screen, s32 arg0) { // render_clouds
|
||||
return;
|
||||
}
|
||||
if (mVisible) {
|
||||
FrameInterpolation_RecordOpenChild("render_clouds", TAG_CLOUDS((_idx << 4) | (mScreen - gScreenOneCtx)));
|
||||
FrameInterpolation_RecordOpenChild("render_clouds", TAG_CLOUDS((_idx << 4) | (mScreen - gScreenContexts)));
|
||||
|
||||
if (D_8018D228 != mCloudVariant) {
|
||||
D_8018D228 = mCloudVariant;
|
||||
|
||||
@@ -85,7 +85,7 @@ void SkySnow::Draw(ScreenContext* screen, s32 arg0) { // render_clouds
|
||||
}
|
||||
|
||||
if (mVisible) {
|
||||
FrameInterpolation_RecordOpenChild("render_snow", TAG_CLOUDS((_idx << 4) | (screen - gScreenOneCtx)));
|
||||
FrameInterpolation_RecordOpenChild("render_snow", TAG_CLOUDS((_idx << 4) | (screen - gScreenContexts)));
|
||||
|
||||
if (D_8018D228 != mCloudVariant) {
|
||||
D_8018D228 = mCloudVariant;
|
||||
|
||||
@@ -107,7 +107,7 @@ void SkyStar::Draw(ScreenContext* screen, s32 arg0) { // render_stars
|
||||
s32 posY = arg0 - mY;
|
||||
func_8004B414(255, 255, 255, 255);
|
||||
if (mVisible) {
|
||||
FrameInterpolation_RecordOpenChild("render_stars", TAG_CLOUDS((_idx << 4) | (screen - gScreenOneCtx)));
|
||||
FrameInterpolation_RecordOpenChild("render_stars", TAG_CLOUDS((_idx << 4) | (screen - gScreenContexts)));
|
||||
|
||||
func_80044DA0((u8*)mTexture, mTextureWidth, mTextureHeight);
|
||||
|
||||
|
||||
@@ -290,7 +290,7 @@ void CustomTrack::DrawTransparency(ScreenContext* screen, uint16_t pathCounter,
|
||||
for (TrackSections& item : mTranslucentItems) {
|
||||
Mat4 matrix;
|
||||
FVector pos = {item.location[0], item.location[1], item.location[2]};
|
||||
FrameInterpolation_RecordOpenChild("translucent_obj", item.crc);
|
||||
FrameInterpolation_RecordOpenChild("translucent_obj", (item.crc << 4) | screen - gScreenContexts);
|
||||
ApplyMatrixTransformations(matrix, pos, IRotator(0, 0, 0), FVector(1, 1, 1));
|
||||
AddObjectMatrix(matrix, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||
gSPDisplayList(gDisplayListHead++, (Gfx*) ResourceGetDataByCrc(item.crc));
|
||||
@@ -301,9 +301,11 @@ void CustomTrack::DrawTransparency(ScreenContext* screen, uint16_t pathCounter,
|
||||
for (TrackSections& item : mTranslucentNoZBufferItems) {
|
||||
Mat4 matrix;
|
||||
FVector pos = {item.location[0], item.location[1], item.location[2]};
|
||||
FrameInterpolation_RecordOpenChild("translucent_no_z", (item.crc << 4) | screen - gScreenContexts);
|
||||
ApplyMatrixTransformations(matrix, pos, IRotator(0, 0, 0), FVector(1, 1, 1));
|
||||
AddObjectMatrix(matrix, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||
gSPDisplayList(gDisplayListHead++, (Gfx*) ResourceGetDataByCrc(item.crc));
|
||||
FrameInterpolation_RecordCloseChild();
|
||||
}
|
||||
gSPSetGeometryMode(gDisplayListHead++, G_ZBUFFER);
|
||||
}
|
||||
|
||||
+9
-3
@@ -547,7 +547,7 @@ void render_cows(Camera* camera, Mat4 arg1) {
|
||||
arg1[3][1] = sp88[1];
|
||||
arg1[3][2] = sp88[2];
|
||||
|
||||
FrameInterpolation_RecordOpenChild("render_actor_cow", TAG_ITEM_ADDR((i << 5) | (camera - cameras)));
|
||||
FrameInterpolation_RecordOpenChild("render_actor_cow", TAG_ITEM_ADDR((i << 4) | (camera - cameras)));
|
||||
|
||||
if ((gMatrixObjectCount < MTX_OBJECT_POOL_SIZE) && (render_set_position(arg1, 0) != 0)) {
|
||||
switch (var_s1->someId) {
|
||||
@@ -684,7 +684,7 @@ void render_palm_trees(Camera* camera, Mat4 arg1) {
|
||||
var_s1++;
|
||||
continue;
|
||||
}
|
||||
FrameInterpolation_RecordOpenChild("render_palm_tree", TAG_ITEM_ADDR((i << 5) | (camera - cameras)));
|
||||
FrameInterpolation_RecordOpenChild("render_palm_tree", TAG_ITEM_ADDR((i << 4) | (camera - cameras)));
|
||||
|
||||
test &= 0xF;
|
||||
test = (s16) test;
|
||||
@@ -737,7 +737,13 @@ void render_actor_shell(Camera* camera, Mat4 matrix, struct ShellActor* shell) {
|
||||
char* phi_t3;
|
||||
bool reverseShell = false;
|
||||
|
||||
FrameInterpolation_RecordOpenChild("shell", TAG_ITEM_ADDR(((( (struct Actor*)shell ) - gActorList) << 5) | (camera - cameras)));
|
||||
size_t actorIdx = CM_FindActorIndex((struct Actor*)shell);
|
||||
if (-1 == actorIdx) {
|
||||
printf("[render_actor_shell] Could not find actor index for FI, skipping!\n");
|
||||
return;
|
||||
}
|
||||
|
||||
FrameInterpolation_RecordOpenChild("shell", TAG_ITEM_ADDR(((actorIdx << 4) | (camera - cameras))));
|
||||
|
||||
f32 temp_f0 =
|
||||
is_within_render_distance(camera->pos, shell->pos, camera->rot[1], 0, camera->fieldOfView, 490000.0f);
|
||||
|
||||
@@ -664,7 +664,7 @@ void render_screens(ScreenContext* screen, s32 mode, s32 someId, s32 playerId) {
|
||||
CM_SetViewProjection(camera);
|
||||
|
||||
// Create a matrix for the track and game objects
|
||||
FrameInterpolation_RecordOpenChild("track", TAG_TRACK((camera->cameraId | (playerId << 2))));
|
||||
FrameInterpolation_RecordOpenChild("track", TAG_TRACK(((playerId << 4) | camera->cameraId)));
|
||||
Mat4 trackMatrix;
|
||||
mtxf_identity(trackMatrix);
|
||||
if (gIsMirrorMode != 0) {
|
||||
|
||||
+29
-36
@@ -2635,7 +2635,6 @@ void draw_simplified_lap_count(s32 playerId) {
|
||||
}
|
||||
|
||||
void func_8004E800(s32 playerId) {
|
||||
// @port: Tag the transform.
|
||||
FrameInterpolation_RecordOpenChild("Player place HUD", playerId);
|
||||
if (playerHUD[playerId].unk_81 != 0) {
|
||||
if (playerHUD[playerId].lapCount != 3) {
|
||||
@@ -2652,7 +2651,6 @@ void func_8004E800(s32 playerId) {
|
||||
0x00000040, 0x00000080, 0x00000040);
|
||||
}
|
||||
}
|
||||
// @port Pop the transform id.
|
||||
FrameInterpolation_RecordCloseChild();
|
||||
}
|
||||
|
||||
@@ -3099,8 +3097,7 @@ void func_80050320(void) {
|
||||
var_a0 = 1;
|
||||
}
|
||||
|
||||
// @port: Tag the transform.
|
||||
FrameInterpolation_RecordOpenChild("ranking portraits", i | var_a0 << 16);
|
||||
FrameInterpolation_RecordOpenChild("ranking_portraits", (var_a0 << 4) | i);
|
||||
|
||||
temp_v0 = gGPCurrentRacePlayerIdByRank[i];
|
||||
characterId = gGPCurrentRaceCharacterIdByRank[i];
|
||||
@@ -3111,7 +3108,6 @@ void func_80050320(void) {
|
||||
func_8004FDB4(D_8018D028[i], D_8018D050[i], i, lapCount, characterId, D_8018D3E0, 0, var_a0, 0);
|
||||
}
|
||||
|
||||
// @port Pop the transform id.
|
||||
FrameInterpolation_RecordCloseChild();
|
||||
}
|
||||
}
|
||||
@@ -3123,8 +3119,7 @@ void func_80050320(void) {
|
||||
var_a0 = 1;
|
||||
}
|
||||
|
||||
// @port: Tag the transform.
|
||||
FrameInterpolation_RecordOpenChild("ranking portraits 2", i | var_a0 << 16);
|
||||
FrameInterpolation_RecordOpenChild("ranking_portraits2", (var_a0 << 4) | i);
|
||||
|
||||
temp_v0 = gGPCurrentRacePlayerIdByRank[i];
|
||||
// ????
|
||||
@@ -3136,7 +3131,6 @@ void func_80050320(void) {
|
||||
func_8004FDB4(D_8018D028[i], D_8018D050[i], i, lapCount, characterId, 0x000000FF, 0, var_a0, 1);
|
||||
}
|
||||
|
||||
// @port Pop the transform id.
|
||||
FrameInterpolation_RecordCloseChild();
|
||||
}
|
||||
}
|
||||
@@ -3435,8 +3429,7 @@ void render_object_leaf_particle(UNUSED s32 cameraId) {
|
||||
for (i = 0; i < gLeafParticle_SIZE; i++) {
|
||||
leafIndex = gLeafParticle[i];
|
||||
|
||||
// @port: Tag the transform.
|
||||
FrameInterpolation_RecordOpenChild("Leaves", leafIndex);
|
||||
FrameInterpolation_RecordOpenChild("leaves", (leafIndex << 4) | cameraId);
|
||||
|
||||
if (leafIndex != -1) {
|
||||
object = &gObjectList[leafIndex];
|
||||
@@ -3446,14 +3439,13 @@ void render_object_leaf_particle(UNUSED s32 cameraId) {
|
||||
}
|
||||
}
|
||||
|
||||
// @port Pop the transform id.
|
||||
FrameInterpolation_RecordCloseChild();
|
||||
}
|
||||
gSPSetGeometryMode(gDisplayListHead++, G_CULL_BACK);
|
||||
gSPTexture(gDisplayListHead++, 1, 1, 0, G_TX_RENDERTILE, G_OFF);
|
||||
}
|
||||
|
||||
void render_object_snowflakes_particles(void) {
|
||||
void render_object_snowflakes_particles(s32 cameraId) {
|
||||
size_t i;
|
||||
s32 snowflakeIndex;
|
||||
|
||||
@@ -3463,15 +3455,13 @@ void render_object_snowflakes_particles(void) {
|
||||
for (i = 0; i < NUM_SNOWFLAKES; i++) {
|
||||
snowflakeIndex = gObjectParticle1[i];
|
||||
|
||||
// @port: Tag the transform.
|
||||
FrameInterpolation_RecordOpenChild("SnowFlakes", snowflakeIndex);
|
||||
FrameInterpolation_RecordOpenChild("snowFlakes", (snowflakeIndex << 4) | cameraId);
|
||||
|
||||
if (gObjectList[snowflakeIndex].state >= 2) {
|
||||
rsp_set_matrix_gObjectList(snowflakeIndex);
|
||||
gSPDisplayList(gDisplayListHead++, D_0D006980);
|
||||
}
|
||||
|
||||
// @port Pop the transform id.
|
||||
FrameInterpolation_RecordCloseChild();
|
||||
}
|
||||
gSPTexture(gDisplayListHead++, 1, 1, 0, G_TX_RENDERTILE, G_OFF);
|
||||
@@ -3578,20 +3568,22 @@ void func_800520C0(s32 arg0) {
|
||||
}
|
||||
}
|
||||
|
||||
void func_8005285C(s32 arg0) {
|
||||
void func_8005285C(s32 cameraId, s32 playerId) {
|
||||
Player* temp_v0;
|
||||
|
||||
temp_v0 = &gPlayerOne[arg0];
|
||||
temp_v0 = &gPlayerOne[playerId];
|
||||
D_80183E40[0] = temp_v0->pos[0];
|
||||
D_80183E40[1] = temp_v0->pos[1];
|
||||
D_80183E40[2] = temp_v0->pos[2];
|
||||
D_80183E80[0] = 0;
|
||||
D_80183E80[1] = 0;
|
||||
D_80183E80[2] = 0;
|
||||
FrameInterpolation_RecordOpenChild("ice_block", (playerId << 4) | cameraId);
|
||||
func_80043500(D_80183E40, D_80183E80, 0.02f, d_course_sherbet_land_dl_ice_block);
|
||||
FrameInterpolation_RecordCloseChild();
|
||||
}
|
||||
|
||||
void func_800528EC(s32 playerId) {
|
||||
void func_800528EC(s32 cameraId) {
|
||||
s32 var_s3;
|
||||
s32 objectIndex;
|
||||
Object* object;
|
||||
@@ -3614,9 +3606,11 @@ void func_800528EC(s32 playerId) {
|
||||
if (objectIndex != NULL_OBJECT_ID) {
|
||||
object = &gObjectList[objectIndex];
|
||||
if (object->state > 0) {
|
||||
FrameInterpolation_RecordOpenChild("ice_block2", (var_s3 << 4) | cameraId);
|
||||
rsp_set_matrix_transformation(object->pos, D_80183E80, object->sizeScaling);
|
||||
gSPVertex(gDisplayListHead++, D_0D005BD0, 3, 0);
|
||||
gSPDisplayList(gDisplayListHead++, D_0D006930);
|
||||
FrameInterpolation_RecordCloseChild();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -3625,11 +3619,13 @@ void func_800528EC(s32 playerId) {
|
||||
objectIndex = gObjectParticle2[var_s3];
|
||||
if (objectIndex != NULL_OBJECT_ID) {
|
||||
object = &gObjectList[objectIndex];
|
||||
if ((object->state > 0) && (playerId == object->unk_084[7]) &&
|
||||
if ((object->state > 0) && (cameraId == object->unk_084[7]) &&
|
||||
(gMatrixHudCount <= MTX_HUD_POOL_SIZE_MAX)) {
|
||||
FrameInterpolation_RecordOpenChild("ice_block3", (var_s3 << 4) | cameraId);
|
||||
rsp_set_matrix_transformation(object->pos, D_80183E80, object->sizeScaling);
|
||||
gSPVertex(gDisplayListHead++, D_0D005BD0, 3, 0);
|
||||
gSPDisplayList(gDisplayListHead++, D_0D006930);
|
||||
FrameInterpolation_RecordCloseChild();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -3639,7 +3635,7 @@ void func_800528EC(s32 playerId) {
|
||||
gSPTexture(gDisplayListHead++, 0x0001, 0x0001, 0, G_TX_RENDERTILE, G_OFF);
|
||||
}
|
||||
|
||||
void render_ice_block(s32 playerId) {
|
||||
void render_ice_block(s32 cameraId) {
|
||||
s32 objectIndex;
|
||||
// Lights1 D_800E4620l = *(Lights1 *) LOAD_ASSET(D_800E4620);
|
||||
D_800E4620.l[0].l.dir[0] = D_80165840[0];
|
||||
@@ -3651,14 +3647,14 @@ void render_ice_block(s32 playerId) {
|
||||
objectIndex = gIndexLakituList[i];
|
||||
if (objectIndex) {}
|
||||
if (func_80072320(objectIndex, 4) != false) {
|
||||
func_8005285C(i);
|
||||
func_8005285C(cameraId, i);
|
||||
}
|
||||
func_80072320(objectIndex, 0x00000010);
|
||||
}
|
||||
func_800528EC(playerId);
|
||||
func_800528EC(cameraId);
|
||||
}
|
||||
|
||||
void func_80052D70(s32 playerId) {
|
||||
void func_80052D70(s32 cameraId, s32 playerId) {
|
||||
s32 test;
|
||||
Player* temp_v1;
|
||||
|
||||
@@ -3668,11 +3664,13 @@ void func_80052D70(s32 playerId) {
|
||||
D_80183E40[0] = temp_v1->pos[0];
|
||||
D_80183E40[1] = temp_v1->unk_074 - 6.5;
|
||||
D_80183E40[2] = temp_v1->pos[2];
|
||||
FrameInterpolation_RecordOpenChild("some_snow_thing", (playerId << 4) | cameraId);
|
||||
func_800435A0(D_80183E40, (u16*) D_80183E80, 0.02f, d_course_sherbet_land_dl_ice_block, 0x000000FF);
|
||||
FrameInterpolation_RecordCloseChild();
|
||||
}
|
||||
}
|
||||
|
||||
void func_80052E30(UNUSED s32 arg0) {
|
||||
void func_80052E30(s32 cameraId) {
|
||||
s32 var_s0;
|
||||
D_800E4620.l[0].l.dir[0] = D_80165840[0];
|
||||
D_800E4620.l[0].l.dir[1] = D_80165840[1];
|
||||
@@ -3684,7 +3682,7 @@ void func_80052E30(UNUSED s32 arg0) {
|
||||
D_80183E80[2] = 0;
|
||||
if (gPlayerCount == 1) {
|
||||
for (var_s0 = 0; var_s0 < gPlayerCountSelection1; var_s0++) {
|
||||
func_80052D70(var_s0);
|
||||
func_80052D70(cameraId, var_s0);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -3800,8 +3798,7 @@ void render_object_bowser_flame_particle(s32 objectIndex, s32 cameraId) {
|
||||
if (gMatrixHudCount <= MTX_HUD_POOL_SIZE_MAX) {
|
||||
object = &gObjectList[objectIndex];
|
||||
|
||||
// @port: Tag the transform.
|
||||
FrameInterpolation_RecordOpenChild("Bowser Statue Flame", TAG_ITEM_ADDR(object));
|
||||
FrameInterpolation_RecordOpenChild("bowser_statue_flame", TAG_ITEM_ADDR((objectIndex << 4) | cameraId));
|
||||
if (object->unk_0D5 == 9) {
|
||||
func_8004B72C(0xFF, (s32) object->type, 0, (s32) object->unk_0A2, 0, 0, (s32) object->primAlpha);
|
||||
} else {
|
||||
@@ -3810,7 +3807,6 @@ void render_object_bowser_flame_particle(s32 objectIndex, s32 cameraId) {
|
||||
D_80183E80[1] = func_800418AC(object->pos[0], object->pos[2], camera->pos);
|
||||
func_800431B0(object->pos, D_80183E80, object->sizeScaling, D_0D005AE0);
|
||||
|
||||
// @port Pop the transform id.
|
||||
FrameInterpolation_RecordCloseChild();
|
||||
}
|
||||
}
|
||||
@@ -3873,8 +3869,8 @@ void render_object_smoke_particles(s32 cameraId) {
|
||||
objectIndex = gObjectParticle4[i];
|
||||
if (objectIndex != NULL_OBJECT_ID) {
|
||||
object = &gObjectList[objectIndex];
|
||||
// @port: Tag the transform.
|
||||
FrameInterpolation_RecordOpenChild("SmokeParticles", (uintptr_t) object);
|
||||
|
||||
FrameInterpolation_RecordOpenChild("smokes_particles", (uintptr_t) (objectIndex << 4) | cameraId);
|
||||
if (object->state >= 2) {
|
||||
if (object->unk_0D8 == 3) {
|
||||
func_8008A364(objectIndex, cameraId, 0x4000U, 0x00000514);
|
||||
@@ -3885,7 +3881,6 @@ void render_object_smoke_particles(s32 cameraId) {
|
||||
func_8005477C(objectIndex, object->unk_0D8, sp54->pos);
|
||||
}
|
||||
}
|
||||
// @port Pop the transform id.
|
||||
FrameInterpolation_RecordCloseChild();
|
||||
}
|
||||
}
|
||||
@@ -3894,14 +3889,13 @@ void render_object_smoke_particles(s32 cameraId) {
|
||||
UNUSED void func_800557AC() {
|
||||
}
|
||||
|
||||
void func_800557B4(s32 objectIndex, u32 arg1, u32 arg2) {
|
||||
void func_800557B4(s32 objectIndex, s32 cameraId, u32 arg1, u32 arg2) {
|
||||
Vec3f sp34;
|
||||
Object* object;
|
||||
|
||||
object = &gObjectList[objectIndex];
|
||||
|
||||
// @port: Tag the transform.
|
||||
FrameInterpolation_RecordOpenChild("Penguin", (uintptr_t) object);
|
||||
FrameInterpolation_RecordOpenChild("penguin", (objectIndex << 4) | cameraId);
|
||||
if (object->state >= 2) {
|
||||
if (is_obj_flag_status_active(objectIndex, 0x00000020) != 0) {
|
||||
if (func_80072320(objectIndex, 4) != 0) {
|
||||
@@ -3925,7 +3919,6 @@ void func_800557B4(s32 objectIndex, u32 arg1, u32 arg2) {
|
||||
(s16) object->textureListIndex);
|
||||
}
|
||||
|
||||
// @port Pop the transform id.
|
||||
FrameInterpolation_RecordCloseChild();
|
||||
}
|
||||
|
||||
@@ -3956,7 +3949,7 @@ void render_object_neon(s32 cameraId) {
|
||||
objectIndex = indexObjectList1[i];
|
||||
if (D_8018E838[cameraId] == 0) {
|
||||
object = &gObjectList[objectIndex];
|
||||
FrameInterpolation_RecordOpenChild(object, TAG_OBJECT((objectIndex << 8) + i));
|
||||
FrameInterpolation_RecordOpenChild("neon_sign", TAG_OBJECT((objectIndex << 8) | (cameraId << 4) | i));
|
||||
if ((object->state >= 2) && (is_obj_index_flag_status_inactive(objectIndex, 0x00080000) != 0) &&
|
||||
(is_object_visible_on_camera(objectIndex, camera, 0x2AABU) != 0)) {
|
||||
object->orientation[1] = angle_between_object_camera(objectIndex, camera);
|
||||
|
||||
@@ -317,7 +317,7 @@ void func_80050E34(s32, s32);
|
||||
|
||||
void func_800514BC(void);
|
||||
void render_object_leaf_particle(s32);
|
||||
void render_object_snowflakes_particles(void);
|
||||
void render_object_snowflakes_particles(s32 cameraId);
|
||||
void func_80051ABC(ScreenContext* screen, s16, s32);
|
||||
void func_80051C60(ScreenContext* screen, s16, s32);
|
||||
void func_80051EBC(ScreenContext* screen);
|
||||
@@ -327,10 +327,10 @@ void func_80052044(ScreenContext* screen);
|
||||
void func_80052080(ScreenContext* screen);
|
||||
|
||||
void func_800520C0(s32);
|
||||
void func_8005285C(s32);
|
||||
void func_8005285C(s32, s32);
|
||||
void func_800528EC(s32);
|
||||
void render_ice_block(s32);
|
||||
void func_80052D70(s32);
|
||||
void func_80052D70(s32, s32);
|
||||
void func_80052E30(s32);
|
||||
void render_object_snowmans_list_2(s32);
|
||||
|
||||
@@ -359,7 +359,7 @@ void func_80055228(s32);
|
||||
void render_object_seagulls(s32);
|
||||
void render_object_crabs(s32);
|
||||
void func_800557AC(void);
|
||||
void func_800557B4(s32, u32, u32);
|
||||
void func_800557B4(s32, s32, u32, u32);
|
||||
void func_80055AB8(s32, s32);
|
||||
void render_object_chain_chomps(s32);
|
||||
void func_80055EF4(s32, s32);
|
||||
|
||||
Reference in New Issue
Block a user