diff options
| author | MegaMech <MegaMech@users.noreply.github.com> | 2026-03-06 01:14:44 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-03-06 01:14:44 -0700 |
| commit | 25d49df90fe1ab2c95c962d45ef146cb5cf0c794 (patch) | |
| tree | e74caf587e90be8467ba806ed5642746db7b9a66 /src/engine/objects/BombKart.cpp | |
| parent | 89cd738955bf4cbbcb3f50c4a678b8baeeb75bcb (diff) | |
More Interp Fixes (#673)
* Update render_player.c
* Update render.inc.c
* Update render.inc.c
* Fix kart interp
* Remove feature
* Fix error
Diffstat (limited to 'src/engine/objects/BombKart.cpp')
| -rw-r--r-- | src/engine/objects/BombKart.cpp | 67 |
1 files changed, 66 insertions, 1 deletions
diff --git a/src/engine/objects/BombKart.cpp b/src/engine/objects/BombKart.cpp index fd8d65efd..8009effef 100644 --- a/src/engine/objects/BombKart.cpp +++ b/src/engine/objects/BombKart.cpp @@ -380,7 +380,7 @@ void OBombKart::Draw(s32 cameraId) { D_80183E80[0] = 0; D_80183E80[1] = func_800418AC(Pos[0], Pos[2], camera->pos); D_80183E80[2] = 0x8000; - func_800563DC(_objectIndex, cameraId, 0x000000FF); + OBombKart::func_800563DC(cameraId, 0x000000FF); OBombKart::SomeRender(cameraId, camera->pos); if (((u32) temp_s4 < 0x4E21U) && (state != OBombKart::States::EXPLODE)) { OBombKart::LoadMtx(cameraId); @@ -393,6 +393,71 @@ void OBombKart::DrawBattle(s32 cameraId) { } +void OBombKart::func_800563DC(s32 cameraId, s32 arg2) { + s32 temp_s0; + s32 temp_v0; + s32 residue; + Camera* camera; + Object* object; + + camera = &camera1[cameraId]; + object = &gObjectList[_objectIndex]; + residue = D_801655CC % 4U; + D_80183E40[0] = object->pos[0]; + D_80183E40[1] = object->pos[1] + 1.0; + D_80183E40[2] = object->pos[2]; + D_80183E80[0] = 0; + D_80183E80[1] = func_800418AC(object->pos[0], object->pos[2], camera->pos); + D_80183E80[2] = 0x8000; + FrameInterpolation_RecordOpenChild("bomb_kart2", (_idx << 4) | cameraId); + rsp_set_matrix_transformation(D_80183E40, D_80183E80, 0.2f); + gSPDisplayList(gDisplayListHead++, (Gfx*)D_0D007E98); + func_8004B310(arg2); + + int heigh = 32; + int width = 32; + + gDPLoadTLUT_pal256(gDisplayListHead++, common_tlut_bomb); + rsp_load_texture((u8*) common_texture_bomb[residue], width, heigh); + gSPVertex(gDisplayListHead++, (uintptr_t) D_0D005AE0, 4, 0); + gSPDisplayList(gDisplayListHead++, (Gfx*) common_rectangle_display); + gSPTexture(gDisplayListHead++, 1, 1, 0, G_TX_RENDERTILE, G_OFF); + + temp_s0 = D_8018D400; + gSPDisplayList(gDisplayListHead++, (Gfx*)D_0D007B00); + FrameInterpolation_RecordCloseChild(); + func_8004B414(0, 0, 0, arg2); + D_80183E40[1] = D_80183E40[1] + 4.0; + D_80183E80[2] = 0; + OBombKart::func_800562E4(cameraId, temp_s0 % 3, temp_s0 % 4, arg2, 0); + temp_v0 = temp_s0 + 1; + D_80183E80[2] = 0x6000; + OBombKart::func_800562E4(cameraId, temp_v0 % 3, temp_v0 % 4, arg2, 1); + temp_v0 = temp_s0 + 2; + D_80183E80[2] = 0xA000; + OBombKart::func_800562E4(cameraId, temp_v0 % 3, temp_v0 % 4, arg2, 2); + gSPTexture(gDisplayListHead++, 1, 1, 0, G_TX_RENDERTILE, G_OFF); +} + +u32 OBombKart::vec[3][3] = { + { 255, 255, 255 }, + { 255, 255, 0 }, + { 255, 0, 0 }, +}; + +void OBombKart::func_800562E4(s32 cameraId, s32 arg0, s32 arg1, s32 arg2, s32 id) { + D_80165860 = vec[arg0][0]; // used to be D_800E46F8A + D_8016586C = vec[arg0][1]; + D_80165878 = vec[arg0][2]; + func_8004B138(D_80165860, D_8016586C, D_80165878, arg2); + FrameInterpolation_RecordOpenChild("bomb_kart_spark", (id << 12) | (_idx << 5) | cameraId); + rsp_set_matrix_transformation(D_80183E40, D_80183E80, 0.2f); + func_80044BF8((uint8_t*)common_texture_particle_spark[arg1], 32, 32); + gSPVertex(gDisplayListHead++, (uintptr_t)D_0D005AE0, 4, 0); + gSPDisplayList(gDisplayListHead++, (Gfx*)common_rectangle_display); + FrameInterpolation_RecordCloseChild(); +} + void OBombKart::SomeRender(s32 cameraId, Vec3f arg1) { D_80183E80[0] = 0; D_80183E80[2] = 0x8000; |
