This commit is contained in:
Sonic Dreamcaster 2025-01-06 04:11:01 -03:00
parent 34c94df42d
commit c490c100a7

View File

@ -684,6 +684,97 @@ void Display_ArwingWings(ArwingInfo* arwing) {
FrameInterpolation_RecordCloseChild();
}
void Display_ArwingWings_Katt(ArwingInfo* arwing) {
Vec3f frameTable[30];
s32 drawFace;
Matrix_Push(&gGfxMatrix);
arwing->laserGunsXpos = 0.0f;
if (arwing->laserGunsYpos < -7.0f) {
arwing->laserGunsXpos = (-arwing->laserGunsYpos - 7.0f) * 2.5f;
}
if (gGameState == GSTATE_PLAY) {
// Animation_DrawSkeleton(1, D_arwing_3016610, gPlayer[0].jointTable, Display_ArwingWingsOverrideLimbDraw, NULL,
// arwing, &gIdentityMatrix);
gSPDisplayList(gMasterDisp++, aKattShipDL);
} else {
if (gGameState == GSTATE_MENU) {
Animation_GetFrameData(&D_arwing_3015AF4, 0, frameTable);
} else {
Animation_GetFrameData(&D_arwing_3015C28, 0, frameTable);
}
//Animation_DrawSkeleton(1, D_arwing_3016610, frameTable, Display_ArwingWingsOverrideLimbDraw, NULL, arwing,
// &gIdentityMatrix);
gSPDisplayList(gMasterDisp++, aKattShipDL);
}
D_display_800CA22C = false;
drawFace = arwing->drawFace;
if (D_display_800CA220 != 0) {
drawFace = true;
}
// @port: Tag the transform.
FrameInterpolation_RecordOpenChild(arwing, 0);
if (drawFace != 0) {
Matrix_Push(&gGfxMatrix);
// @port: Tag the transform.
FrameInterpolation_RecordOpenChild("ArwingCharFace", arwing->drawFace);
Matrix_Translate(gGfxMatrix, 0.0f, 6.4f, -16.5f, MTXF_APPLY);
Matrix_RotateY(gGfxMatrix, arwing->teamFaceYrot * M_DTOR, MTXF_APPLY);
Matrix_RotateX(gGfxMatrix, arwing->teamFaceXrot * M_DTOR, MTXF_APPLY);
Matrix_Scale(gGfxMatrix, 1.0f / 70.925f, 1.0f / 70.925f, 1.0f / 70.925f, MTXF_APPLY);
if (gGameState == GSTATE_ENDING) {
Matrix_Scale(gGfxMatrix, 0.95f, 0.95f, 0.95f, MTXF_APPLY);
}
Matrix_SetGfxMtx(&gMasterDisp);
if (gExpertMode) {
gSPDisplayList(gMasterDisp++, sExpertFaceDL[drawFace - 1]);
} else {
gSPDisplayList(gMasterDisp++, sFaceDL[drawFace - 1]);
}
Matrix_Pop(&gGfxMatrix);
// @port Pop the transform id.
FrameInterpolation_RecordCloseChild();
}
Matrix_Translate(gGfxMatrix, 0.0f, 17.2f, -25.8f, MTXF_APPLY);
Matrix_RotateX(gGfxMatrix, arwing->cockpitGlassXrot * M_DTOR, MTXF_APPLY);
Matrix_SetGfxMtx(&gMasterDisp);
RCP_SetupDL_64_2();
if ((gGameState == GSTATE_PLAY) && (gPlayer[0].state == PLAYERSTATE_LEVEL_INTRO) &&
(gCurrentLevel == LEVEL_CORNERIA)) {
gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 255, 120);
gSPClearGeometryMode(gMasterDisp++, G_CULL_BACK);
gSPDisplayList(gMasterDisp++, D_arwing_30194E0);
RCP_SetupDL_46();
gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 255, 100);
gSPDisplayList(gMasterDisp++, D_arwing_30183D0);
} else {
RCP_SetupDL_46();
gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 255, 140);
gSPClearGeometryMode(gMasterDisp++, G_CULL_BACK);
gSPDisplayList(gMasterDisp++, D_arwing_30194E0);
}
gSPSetGeometryMode(gMasterDisp++, G_CULL_BACK);
Matrix_Pop(&gGfxMatrix);
// @port Pop the transform id.
FrameInterpolation_RecordCloseChild();
}
void Display_Unused(f32 arg0, f32 arg1, UNK_TYPE arg2, UNK_TYPE arg3) {
/* Unimplemented. */
}
@ -758,7 +849,7 @@ void Display_Arwing(Player* player, s32 reflectY) {
}
D_display_800CA22C = true;
gReflectY = reflectY;
Display_ArwingWings(&player->arwing);
Display_ArwingWings_Katt(&player->arwing);
}
}
}