diff --git a/src/f_finale.c b/src/f_finale.c index 0d9ca4d28..04f270de9 100644 --- a/src/f_finale.c +++ b/src/f_finale.c @@ -530,7 +530,6 @@ static boolean dc_ticking = false; static UINT8 dc_bluesegafade = 0; static UINT8 dc_textfade = 9; static UINT8 dc_subtextfade = 9; -static UINT8 dc_screenfade = 9; static void F_DisclaimerAdvanceState(void) { @@ -562,7 +561,6 @@ static void F_DisclaimerDrawScene(void) dc_segaframe = 1; dc_textfade = 9; dc_subtextfade = 9; - dc_screenfade = 9; dc_lasttime = intro_curtime; } @@ -679,17 +677,6 @@ static void F_DisclaimerDrawScene(void) Z_Free(newText); } - // Fade out (would love to use a wipe here, but lmao how the fuck do wipes work) - if (dc_state >= DISCLAIMER_OUT) - { - UINT32 screenalpha = 0; - - if (dc_screenfade > 0) - screenalpha = dc_screenfade << V_ALPHASHIFT; - - V_DrawFill(0, 0, BASEVIDWIDTH, BASEVIDHEIGHT, 31|screenalpha); - } - // ================================= STATE LOGIC if (!dc_ticking) @@ -725,15 +712,6 @@ static void F_DisclaimerDrawScene(void) dc_subtextfade--; } - // Fade out screen - if (dc_state == DISCLAIMER_OUT) - { - if (dc_screenfade > 0) - { - dc_screenfade--; - } - } - // ================================= STATE TRANSITIONS dc_tics++; @@ -758,6 +736,24 @@ static void F_DisclaimerDrawScene(void) if (dc_state == DISCLAIMER_FINAL && timetonext < TICRATE/2) F_DisclaimerAdvanceState(); + + if (dc_state == DISCLAIMER_OUT) + { + F_WipeStartScreen(); + V_DrawFill(0, 0, BASEVIDWIDTH, BASEVIDHEIGHT, 31); + F_WipeEndScreen(); + F_RunWipe(wipe_level_toblack, wipedefs[wipe_level_toblack], false, "FADEMAP0", false, false); + + intro_scenenum++; + timetonext = introscenetime[intro_scenenum]; + animtimer = stoptimer = 0; + intro_curtime = 0; + + F_WipeStartScreen(); + F_IntroDrawScene(); + F_WipeEndScreen(); + F_RunWipe(wipe_level_toblack, wipedefs[wipe_level_toblack], false, "FADEMAP0", true, false); + } } // @@ -831,16 +827,21 @@ void F_IntroTicker(void) { dc_state = DISCLAIMER_OUT; dc_tics = 0; - timetonext = 10; } else if (doskip || timetonext <= 0) { intro_scenenum++; + INT32 destscenenum = NUMINTROSCENES-1; if (M_GameTrulyStarted() == false) + { destscenenum = INTROSCENE_DISCLAIMER; + } else if (doskip) + { destscenenum = INTROSCENE_KREW; + } + if (intro_scenenum > destscenenum) { D_StartTitle(); @@ -848,9 +849,11 @@ void F_IntroTicker(void) //wipetypepre = INT16_MAX; -- however, this breaks the title screen cacheing and I don't know why and I'm tired of fighting it. return; } + //F_NewCutscene(introtext[intro_scenenum]); timetonext = introscenetime[intro_scenenum]; animtimer = stoptimer = 0; + if ( doskip || intro_scenenum == INTROSCENE_DISCLAIMER