summaryrefslogtreecommitdiff
path: root/src/engine/fox_display.c
diff options
context:
space:
mode:
authorSonic Dreamcaster <alejandro.asenjo88@gmail.com>2025-01-06 04:11:01 -0300
committerSonic Dreamcaster <alejandro.asenjo88@gmail.com>2025-01-06 04:11:01 -0300
commitc490c100a79b7789b5562b67eab5821556849ddc (patch)
tree8ee00ab2966ee6fed73e21beaed7d7dfc88605a9 /src/engine/fox_display.c
parent34c94df42d3c2075d454c2730abfe548bcacd8ad (diff)
kattkatt
Diffstat (limited to 'src/engine/fox_display.c')
-rw-r--r--src/engine/fox_display.c95
1 files changed, 93 insertions, 2 deletions
diff --git a/src/engine/fox_display.c b/src/engine/fox_display.c
index 51efb9cd..e3884090 100644
--- a/src/engine/fox_display.c
+++ b/src/engine/fox_display.c
@@ -608,7 +608,7 @@ void Display_ArwingWings(ArwingInfo* arwing) {
if (gGameState == GSTATE_PLAY) {
Animation_DrawSkeleton(1, D_arwing_3016610, gPlayer[0].jointTable, Display_ArwingWingsOverrideLimbDraw, NULL,
- arwing, &gIdentityMatrix);
+ arwing, &gIdentityMatrix);
} else {
if (gGameState == GSTATE_MENU) {
Animation_GetFrameData(&D_arwing_3015AF4, 0, frameTable);
@@ -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);
}
}
}