summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSonic Dreamcaster <alejandro.asenjo88@gmail.com>2026-02-23 02:58:42 -0300
committerSonic Dreamcaster <alejandro.asenjo88@gmail.com>2026-02-23 02:58:42 -0300
commit60d9ea940e6c1673b196df35901c1ee5ba4420cd (patch)
treef2df1c1378499cbb75bae9bc1eb7d2ac61589740
parent5019c5a644bfe6b104531723e6abe6b0d6743ede (diff)
Interpolation: Camera Skipping for Title Cutscene
-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++;
}