From 39d80e1cbab2934bee830feebdb2e5eba66062bf Mon Sep 17 00:00:00 2001 From: toaster Date: Wed, 13 Nov 2019 21:52:35 +0000 Subject: [PATCH 1/4] https://cdn.discordapp.com/attachments/244035368595357697/644293089049182218/srb20057.gif * Make the white flash a little easier on the eyes by putting the full-screen fade behind the title wing/ring, then drawing multiple overlaid colormapped versions of them on top of each other. * Darken the pre-flash screen. --- src/f_finale.c | 40 +++++++++++++++++++++++++++++++++------- 1 file changed, 33 insertions(+), 7 deletions(-) diff --git a/src/f_finale.c b/src/f_finale.c index 764825e6f..b55014244 100644 --- a/src/f_finale.c +++ b/src/f_finale.c @@ -2573,6 +2573,8 @@ void F_TitleScreenDrawer(void) { boolean hidepics; fixed_t sc = FRACUNIT / max(1, curttscale); + INT32 whitefade = 0; + UINT8 *whitecol[2] = {NULL, NULL}; if (modeattacking) return; // We likely came here from retrying. Don't do a damn thing. @@ -2658,10 +2660,31 @@ void F_TitleScreenDrawer(void) // if (finalecount <= 29) V_DrawFill(0, 0, BASEVIDWIDTH, BASEVIDHEIGHT, 31); + // Flash at tic 30, timed to O__TITLE percussion. Hold the flash until tic 34. + // After tic 34, fade the flash until tic 44. + else + { + if (finalecount > 29 && finalecount < 35) + V_DrawFadeScreen(0, (whitefade = 9)); + else if (finalecount > 34 && 44-finalecount > 0 && 44-finalecount < 10) + V_DrawFadeScreen(0, 44-finalecount); + if (39-finalecount > 0) + { + whitefade = (9 - (39-finalecount))< 34) + if (finalecount > 29) V_DrawSciencePatch(39< 29 && finalecount < 35) - V_DrawFadeScreen(0, 9); - else if (finalecount > 34 && 44-finalecount > 0 && 44-finalecount < 10) - V_DrawFadeScreen(0, 44-finalecount); + if (finalecount <= 29) + V_DrawFadeScreen(0xFF00, 12); #undef CHARSTART #undef SONICSTART From 3afe152a864af96ae70f33866c0a4441a981c6dd Mon Sep 17 00:00:00 2001 From: toaster Date: Wed, 13 Nov 2019 22:02:06 +0000 Subject: [PATCH 2/4] Sev wanted no darkness during the initial animation... I think this is an acceptible compromise! https://cdn.discordapp.com/attachments/428262628893261828/644295409283497995/srb20058.gif --- src/f_finale.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/f_finale.c b/src/f_finale.c index b55014244..1e82359a1 100644 --- a/src/f_finale.c +++ b/src/f_finale.c @@ -2691,6 +2691,9 @@ void F_TitleScreenDrawer(void) // Ribbon unfurls, revealing SONIC text, from tic 0 to tic 24. SONIC text is pre-baked into this ribbon graphic. V_DrawSciencePatch(39<= 0) V_DrawSciencePatch(89< Date: Wed, 13 Nov 2019 23:26:37 +0000 Subject: [PATCH 3/4] I'm a dumbass who makes extremely consequential typoes (and since the typo is no longer in effect, the supergold can be brightened some more) https://cdn.discordapp.com/attachments/244035368595357697/644316971738857483/srb20060.gif --- src/f_finale.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/f_finale.c b/src/f_finale.c index 1e82359a1..26e1d3848 100644 --- a/src/f_finale.c +++ b/src/f_finale.c @@ -2671,7 +2671,7 @@ void F_TitleScreenDrawer(void) if (39-finalecount > 0) { whitefade = (9 - (39-finalecount))< Date: Thu, 14 Nov 2019 12:52:34 +0000 Subject: [PATCH 4/4] Disable menu input on the title screen for the first second (ie, before the flash), to guarantee people won't start the menu the very first tic after the fade and ruin the animation. (Console and gif/screenshot recording still works, for the impatient.) --- src/f_finale.c | 2 +- src/f_finale.h | 1 + src/g_game.c | 2 +- src/m_menu.c | 3 +++ 4 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/f_finale.c b/src/f_finale.c index 26e1d3848..fc300133d 100644 --- a/src/f_finale.c +++ b/src/f_finale.c @@ -45,7 +45,7 @@ // Stage of animation: // 0 = text, 1 = art screen -static INT32 finalecount; +INT32 finalecount; INT32 titlescrollxspeed = 20; INT32 titlescrollyspeed = 0; UINT8 titlemapinaction = TITLEMAP_OFF; diff --git a/src/f_finale.h b/src/f_finale.h index f75f93c77..3fa7106a9 100644 --- a/src/f_finale.h +++ b/src/f_finale.h @@ -74,6 +74,7 @@ void F_StartContinue(void); void F_ContinueTicker(void); void F_ContinueDrawer(void); +extern INT32 finalecount; extern INT32 titlescrollxspeed; extern INT32 titlescrollyspeed; diff --git a/src/g_game.c b/src/g_game.c index 9677e81c9..0c4ebcc92 100644 --- a/src/g_game.c +++ b/src/g_game.c @@ -1717,7 +1717,7 @@ boolean G_Responder(event_t *ev) if (gameaction == ga_nothing && !singledemo && ((demoplayback && !modeattacking && !titledemo) || gamestate == GS_TITLESCREEN)) { - if (ev->type == ev_keydown && ev->data1 != 301) + if (ev->type == ev_keydown && ev->data1 != 301 && !(gamestate == GS_TITLESCREEN && finalecount < TICRATE)) { M_StartControlPanel(); return true; diff --git a/src/m_menu.c b/src/m_menu.c index 6a0a31bc1..e772c9421 100644 --- a/src/m_menu.c +++ b/src/m_menu.c @@ -2985,6 +2985,9 @@ boolean M_Responder(event_t *ev) || gamestate == GS_CREDITS || gamestate == GS_EVALUATION || gamestate == GS_GAMEEND) return false; + if (gamestate == GS_TITLESCREEN && finalecount < TICRATE) + return false; + if (noFurtherInput) { // Ignore input after enter/escape/other buttons