mirror of
https://github.com/HarbourMasters/SpaghettiKart
synced 2026-07-10 23:22:33 -04:00
More Interp Fixes (#673)
* Update render_player.c * Update render.inc.c * Update render.inc.c * Fix kart interp * Remove feature * Fix error
This commit is contained in:
@@ -3973,110 +3973,10 @@ void render_object_neon(s32 cameraId) {
|
||||
}
|
||||
}
|
||||
|
||||
Vec3iu D_800E46F8A[] = {
|
||||
{ 255, 255, 255 },
|
||||
{ 255, 255, 0 },
|
||||
{ 255, 0, 0 },
|
||||
};
|
||||
u8 D_800E471CA[] = {
|
||||
0, 1, 2, 3, 2, 1, 0,
|
||||
};
|
||||
|
||||
void func_800562E4(s32 arg0, s32 arg1, s32 arg2) {
|
||||
|
||||
// Vec3iu *A_800E46F8 = LOAD_ASSET(D_800E46F8);
|
||||
|
||||
D_80165860 = D_800E46F8A[arg0][0];
|
||||
D_8016586C = D_800E46F8A[arg0][1];
|
||||
D_80165878 = D_800E46F8A[arg0][2];
|
||||
func_8004B138(D_80165860, D_8016586C, D_80165878, arg2);
|
||||
rsp_set_matrix_transformation(D_80183E40, D_80183E80, 0.2f);
|
||||
func_80044BF8(common_texture_particle_spark[arg1], 32, 32);
|
||||
gSPVertex(gDisplayListHead++, D_0D005AE0, 4, 0);
|
||||
gSPDisplayList(gDisplayListHead++, common_rectangle_display);
|
||||
}
|
||||
|
||||
void func_800563DC(s32 objectIndex, 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;
|
||||
rsp_set_matrix_transformation(D_80183E40, D_80183E80, 0.2f);
|
||||
gSPDisplayList(gDisplayListHead++, 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++, D_0D007B00);
|
||||
func_8004B414(0, 0, 0, arg2);
|
||||
D_80183E40[1] = D_80183E40[1] + 4.0;
|
||||
D_80183E80[2] = 0;
|
||||
func_800562E4(temp_s0 % 3, temp_s0 % 4, arg2);
|
||||
temp_v0 = temp_s0 + 1;
|
||||
D_80183E80[2] = 0x6000;
|
||||
func_800562E4(temp_v0 % 3, temp_v0 % 4, arg2);
|
||||
temp_v0 = temp_s0 + 2;
|
||||
D_80183E80[2] = 0xA000;
|
||||
func_800562E4(temp_v0 % 3, temp_v0 % 4, arg2);
|
||||
gSPTexture(gDisplayListHead++, 1, 1, 0, G_TX_RENDERTILE, G_OFF);
|
||||
}
|
||||
|
||||
void func_8005669C(s32 objectIndex, UNUSED s32 arg1, s32 arg2) {
|
||||
gSPDisplayList(gDisplayListHead++, D_0D0079E8);
|
||||
func_8004B310(arg2);
|
||||
load_texture_block_rgba16_mirror((u8*) D_0D02AA58, 0x00000010, 0x00000010);
|
||||
D_80183E40[1] = gObjectList[objectIndex].pos[1] - 2.0;
|
||||
D_80183E40[0] = gObjectList[objectIndex].pos[0] + 2.0;
|
||||
D_80183E40[2] = gObjectList[objectIndex].pos[2] + 2.0;
|
||||
func_800431B0(D_80183E40, D_80183E80, 0.15f, common_vtx_rectangle);
|
||||
D_80183E40[0] = gObjectList[objectIndex].pos[0] + 2.0;
|
||||
D_80183E40[2] = gObjectList[objectIndex].pos[2] - 2.0;
|
||||
func_800431B0(D_80183E40, D_80183E80, 0.15f, common_vtx_rectangle);
|
||||
D_80183E40[0] = gObjectList[objectIndex].pos[0] - 2.0;
|
||||
D_80183E40[2] = gObjectList[objectIndex].pos[2] - 2.0;
|
||||
func_800431B0(D_80183E40, D_80183E80, 0.15f, common_vtx_rectangle);
|
||||
D_80183E40[0] = gObjectList[objectIndex].pos[0] - 2.0;
|
||||
D_80183E40[2] = gObjectList[objectIndex].pos[2] + 2.0;
|
||||
func_800431B0(D_80183E40, D_80183E80, 0.15f, common_vtx_rectangle);
|
||||
gSPTexture(gDisplayListHead++, 1, 1, 0, G_TX_RENDERTILE, G_OFF);
|
||||
}
|
||||
|
||||
Mat4 mtx;
|
||||
void func_800568A0(s32 objectIndex, s32 playerId) {
|
||||
Player* player;
|
||||
|
||||
player = &gPlayerOne[playerId];
|
||||
D_80183E50[0] = gObjectList[objectIndex].pos[0];
|
||||
D_80183E50[1] = gObjectList[objectIndex].surfaceHeight + 0.8;
|
||||
D_80183E50[2] = gObjectList[objectIndex].pos[2];
|
||||
set_transform_matrix(mtx, player->collision.orientationVector, D_80183E50, 0U, 0.5f);
|
||||
// convert_to_fixed_point_matrix(&gGfxPool->mtxHud[gMatrixHudCount], mtx);
|
||||
// gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxHud[gMatrixHudCount++]),
|
||||
// G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||
|
||||
AddHudMatrix(mtx, G_MTX_LOAD | G_MTX_NOPUSH | G_MTX_MODELVIEW);
|
||||
gSPDisplayList(gDisplayListHead++, D_0D007B98);
|
||||
}
|
||||
|
||||
void func_800569F4(s32 playerIndex) {
|
||||
CM_DisplayBattleBombKart(playerIndex, 0);
|
||||
}
|
||||
@@ -4090,151 +3990,6 @@ void func_80056A94(s32 playerIndex) {
|
||||
CM_DisplayBattleBombKart(playerIndex, 0);
|
||||
}
|
||||
|
||||
void render_battle_bomb_karts(s32 cameraId) {
|
||||
Player* temp_v0;
|
||||
s32 temp_s1;
|
||||
s32 temp_s0;
|
||||
s32 payerId;
|
||||
Object* object;
|
||||
|
||||
for (payerId = 0; payerId < NUM_BOMB_KARTS_BATTLE; payerId++) {
|
||||
temp_s0 = gIndexObjectBombKart[payerId];
|
||||
object = &gObjectList[temp_s0];
|
||||
if (object->state != 0) {
|
||||
temp_s1 = object->primAlpha;
|
||||
temp_v0 = &gPlayerOne[payerId];
|
||||
object->pos[0] = temp_v0->pos[0];
|
||||
object->pos[1] = temp_v0->pos[1] - 2.0;
|
||||
object->pos[2] = temp_v0->pos[2];
|
||||
object->surfaceHeight = temp_v0->unk_074;
|
||||
func_800563DC(temp_s0, cameraId, temp_s1);
|
||||
func_8005669C(temp_s0, cameraId, temp_s1);
|
||||
func_800568A0(temp_s0, cameraId);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void func_80056BF0(s32 bombIndex) {
|
||||
UNUSED s32 stackPadding;
|
||||
u8 thing;
|
||||
s32 temp_s0;
|
||||
s32 temp_v0;
|
||||
u8* bombFrame;
|
||||
BombKart sp40 = gBombKarts[bombIndex];
|
||||
|
||||
temp_v0 = D_801655CC % 6U;
|
||||
thing = D_800E471CA[temp_v0];
|
||||
bombFrame = common_texture_bomb[thing];
|
||||
D_80183E40[0] = sp40.bombPos[0];
|
||||
D_80183E40[1] = sp40.bombPos[1] + 1.0;
|
||||
D_80183E40[2] = sp40.bombPos[2];
|
||||
|
||||
rsp_set_matrix_transformation(D_80183E40, D_80183E80, 0.25f);
|
||||
gSPDisplayList(gDisplayListHead++, D_0D007D78);
|
||||
gDPLoadTLUT_pal256(gDisplayListHead++, (u8*) common_tlut_bomb);
|
||||
rsp_load_texture(bombFrame, 0x20, 0x20);
|
||||
gSPVertex(gDisplayListHead++, D_0D005AE0, 4, 0);
|
||||
gSPDisplayList(gDisplayListHead++, common_rectangle_display);
|
||||
gSPTexture(gDisplayListHead++, 1, 1, 0, G_TX_RENDERTILE, G_OFF);
|
||||
|
||||
temp_s0 = D_8018D400;
|
||||
gSPDisplayList(gDisplayListHead++, D_0D007B00);
|
||||
func_8004B414(0, 0, 0, 0xFF);
|
||||
D_80183E40[1] = sp40.bombPos[1] + 5.0;
|
||||
D_80183E80[2] = 0;
|
||||
func_800562E4((s32) temp_s0 % 3, temp_s0 % 4, 0xFFU);
|
||||
temp_v0 = temp_s0 + 1;
|
||||
D_80183E80[2] = 0x6000;
|
||||
func_800562E4(temp_v0 % 3, temp_v0 % 4, 0xFFU);
|
||||
temp_v0 = temp_s0 + 2;
|
||||
D_80183E80[2] = 0xA000;
|
||||
func_800562E4(temp_v0 % 3, temp_v0 % 4, 0xFFU);
|
||||
}
|
||||
|
||||
void func_80056E24(s32 bombIndex, Vec3f arg1) {
|
||||
UNUSED s32 stackPadding[2];
|
||||
BombKart sp2C = gBombKarts[bombIndex];
|
||||
|
||||
D_80183E80[0] = 0;
|
||||
D_80183E80[2] = 0x8000;
|
||||
gSPDisplayList(gDisplayListHead++, D_0D0079C8);
|
||||
load_texture_block_rgba16_mirror((u8*) D_0D02AA58, 0x00000010, 0x00000010);
|
||||
D_80183E80[1] = func_800418AC(sp2C.wheel1Pos[0], sp2C.wheel1Pos[2], arg1);
|
||||
func_800431B0(sp2C.wheel1Pos, D_80183E80, 0.15f, common_vtx_rectangle);
|
||||
D_80183E80[1] = func_800418AC(sp2C.wheel2Pos[0], sp2C.wheel2Pos[2], arg1);
|
||||
func_800431B0(sp2C.wheel2Pos, D_80183E80, 0.15f, common_vtx_rectangle);
|
||||
D_80183E80[1] = func_800418AC(sp2C.wheel3Pos[0], sp2C.wheel3Pos[2], arg1);
|
||||
func_800431B0(sp2C.wheel3Pos, D_80183E80, 0.15f, common_vtx_rectangle);
|
||||
D_80183E80[1] = func_800418AC(sp2C.wheel4Pos[0], sp2C.wheel4Pos[2], arg1);
|
||||
func_800431B0(sp2C.wheel4Pos, D_80183E80, 0.15f, common_vtx_rectangle);
|
||||
gSPTexture(gDisplayListHead++, 1, 1, 0, G_TX_RENDERTILE, G_OFF);
|
||||
}
|
||||
|
||||
void func_80056FCC(s32 bombIndex) {
|
||||
Mat4 mat;
|
||||
BombKart* temp_v0;
|
||||
|
||||
temp_v0 = &gBombKarts[bombIndex];
|
||||
D_80183E50[0] = temp_v0->bombPos[0];
|
||||
D_80183E50[1] = temp_v0->yPos + 1.0;
|
||||
D_80183E50[2] = temp_v0->bombPos[2];
|
||||
set_transform_matrix(mat, gBombKartCollision[bombIndex].orientationVector, D_80183E50, 0U, 0.5f);
|
||||
// convert_to_fixed_point_matrix(&gGfxPool->mtxHud[gMatrixHudCount], mat);
|
||||
// gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxHud[gMatrixHudCount++]),
|
||||
// G_MTX_LOAD | G_MTX_NOPUSH | G_MTX_MODELVIEW);
|
||||
AddHudMatrix(mat, G_MTX_LOAD | G_MTX_NOPUSH | G_MTX_MODELVIEW);
|
||||
gSPDisplayList(gDisplayListHead++, D_0D007B98);
|
||||
}
|
||||
|
||||
void render_bomb_karts(s32 cameraId) {
|
||||
Camera* camera;
|
||||
s32 objectIndex;
|
||||
s32 temp_s4;
|
||||
s32 i;
|
||||
s32 state;
|
||||
BombKart* var_s1_2;
|
||||
|
||||
if (gGamestate == 5) {
|
||||
cameraId = 0;
|
||||
}
|
||||
camera = &camera1[cameraId];
|
||||
if (cameraId == PLAYER_ONE) {
|
||||
for (i = 0; i < NUM_BOMB_KARTS_VERSUS; i++) {
|
||||
objectIndex = gIndexObjectBombKart[i];
|
||||
if (is_obj_flag_status_active(objectIndex, 0x00200000) != 0) {
|
||||
gBombKarts[i].unk_4A = 0;
|
||||
} else if (gGamestate != 5) {
|
||||
gBombKarts[i].unk_4A = 1;
|
||||
}
|
||||
clear_object_flag(objectIndex, 0x00200000);
|
||||
}
|
||||
}
|
||||
|
||||
for (i = 0; i < NUM_BOMB_KARTS_VERSUS; i++) {
|
||||
var_s1_2 = &gBombKarts[i];
|
||||
// huh???
|
||||
state = var_s1_2->state;
|
||||
if (var_s1_2->state != BOMB_STATE_INACTIVE) {
|
||||
objectIndex = gIndexObjectBombKart[i];
|
||||
gObjectList[objectIndex].pos[0] = var_s1_2->bombPos[0];
|
||||
gObjectList[objectIndex].pos[1] = var_s1_2->bombPos[1];
|
||||
gObjectList[objectIndex].pos[2] = var_s1_2->bombPos[2];
|
||||
temp_s4 = func_8008A364(objectIndex, cameraId, 0x31C4U, 0x000001F4);
|
||||
if (is_obj_flag_status_active(objectIndex, VISIBLE) != 0) {
|
||||
set_object_flag(objectIndex, 0x00200000);
|
||||
D_80183E80[0] = 0;
|
||||
D_80183E80[1] = func_800418AC(var_s1_2->bombPos[0], var_s1_2->bombPos[2], camera->pos);
|
||||
D_80183E80[2] = 0x8000;
|
||||
func_800563DC(objectIndex, cameraId, 0x000000FF);
|
||||
func_80056E24(i, camera->pos);
|
||||
if (((u32) temp_s4 < 0x4E21U) && (state != BOMB_STATE_EXPLODED)) {
|
||||
func_80056FCC(i);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
UNUSED void func_80057330(void) {
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user