summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/sf64context.h2
-rw-r--r--src/engine/fox_context.c1
-rw-r--r--src/overlays/ovl_menu/fox_title.c26
3 files changed, 28 insertions, 1 deletions
diff --git a/include/sf64context.h b/include/sf64context.h
index e4bfaf61..fa990dd0 100644
--- a/include/sf64context.h
+++ b/include/sf64context.h
@@ -349,6 +349,6 @@ extern UNK_TYPE F_80178334;
extern UNK_TYPE F_8017833C;
extern UNK_TYPE F_80178344;
extern UNK_TYPE F_8017834C;
-
+extern bool gCamera1Skipped;
#endif
diff --git a/src/engine/fox_context.c b/src/engine/fox_context.c
index 25b1ec72..5b92b875 100644
--- a/src/engine/fox_context.c
+++ b/src/engine/fox_context.c
@@ -397,3 +397,4 @@ UNK_TYPE F_80178334;
UNK_TYPE F_8017833C;
UNK_TYPE F_80178344;
UNK_TYPE F_8017834C;
+bool gCamera1Skipped = false; \ No newline at end of file
diff --git a/src/overlays/ovl_menu/fox_title.c b/src/overlays/ovl_menu/fox_title.c
index 216263fe..5b879175 100644
--- a/src/overlays/ovl_menu/fox_title.c
+++ b/src/overlays/ovl_menu/fox_title.c
@@ -273,7 +273,23 @@ void Title_UpdateEntry(void) {
Title_NextState_Check();
}
+static bool sSkipInterpolation = false;
+
void Title_Draw(void) {
+ static s32 camSkipTimes;
+
+ if (sSkipInterpolation) {
+ // @port Skip interpolation
+ FrameInterpolation_ShouldInterpolateFrame(false);
+ printf("CAMERA 1 SKIPED: %d\n", camSkipTimes++);
+ gCamera1Skipped = true;
+ sSkipInterpolation = false;
+ } else {
+ FrameInterpolation_RecordOpenChild("TitleCam", 0);
+ FrameInterpolation_RecordMarker(__FILE__, __LINE__);
+ gCamera1Skipped = false;
+ }
+
switch (sCutsceneState) {
case TITLE_RANKING:
Title_Ranking_Draw();
@@ -353,6 +369,14 @@ void Title_Draw(void) {
gFillScreenBlue = 0;
Wipe_Draw(WIPE_VERTICAL, sWipeHeight);
}
+
+ if (sSkipInterpolation) {
+ // @port Re-enable Interpolation if it was skipped
+ FrameInterpolation_ShouldInterpolateFrame(true);
+ } else {
+ FrameInterpolation_RecordCloseChild();
+ }
+
#if 0
// @decomp Debug:
RCP_SetupDL(&gMasterDisp, SETUPDL_83);
@@ -1793,6 +1817,7 @@ void Title_CsTakeOff_Update(void) {
gAmbientB = 46;
sSceneState++;
+ sSkipInterpolation = true;
}
sTimer3++;
break;
@@ -1893,6 +1918,7 @@ void Title_CsTakeOff_Update(void) {
Audio_SetEnvSfxReverb(0);
sSceneState = 0;
sCutsceneState = 5; // TITLE_TAKE_OFF_SPACE
+ sSkipInterpolation = true;
}
sTimer3++;
}