diff --git a/src/d_clisrv.c b/src/d_clisrv.c index 5676d1633..e3c281d0f 100644 --- a/src/d_clisrv.c +++ b/src/d_clisrv.c @@ -6090,6 +6090,11 @@ boolean TryRunTics(tic_t realtics) ps_tictime = I_GetPreciseTime() - ps_tictime; + if (D_IsDeferredStartTitle()) + { + D_StartTitle(); + } + // Leave a certain amount of tics present in the net buffer as long as we've ran at least one tic this frame. if (client && gamestate == GS_LEVEL && leveltime > 1 && neededtic <= gametic + cv_netticbuffer.value) { diff --git a/src/d_main.cpp b/src/d_main.cpp index 074897dae..793c14013 100644 --- a/src/d_main.cpp +++ b/src/d_main.cpp @@ -1128,7 +1128,7 @@ void D_StartTitle(void) D_ClearState(); F_StartTitleScreen(); M_ClearMenus(false); - g_deferredtitle = true; + g_deferredtitle = false; } void D_SetDeferredStartTitle(boolean deferred) diff --git a/src/g_demo.cpp b/src/g_demo.cpp index 4c089acec..fea181a6a 100644 --- a/src/g_demo.cpp +++ b/src/g_demo.cpp @@ -3920,11 +3920,9 @@ boolean G_CheckDemoStatus(void) else if (demo.attract == DEMO_ATTRACT_CREDITS) F_ContinueCredits(); else - D_StartTitle(); + D_SetDeferredStartTitle(true); } - demo.attract = DEMO_ATTRACT_OFF; - return true; } diff --git a/src/k_credits.cpp b/src/k_credits.cpp index fc09f04e1..76037fd3b 100644 --- a/src/k_credits.cpp +++ b/src/k_credits.cpp @@ -366,6 +366,9 @@ static void F_InitCreditsSlide(void) } } #endif + + // Clear the console hud just to avoid anything getting in the way. + CON_ClearHUD(); } void F_StartCredits(void) diff --git a/src/p_tick.c b/src/p_tick.c index 2815f16b7..1d273e328 100644 --- a/src/p_tick.c +++ b/src/p_tick.c @@ -12,6 +12,7 @@ /// \brief Archiving: SaveGame I/O, Thinker, Ticker #include "doomstat.h" +#include "d_main.h" #include "g_game.h" #include "g_input.h" #include "p_local.h" @@ -1252,5 +1253,10 @@ void P_Ticker(boolean run) { G_CopyTiccmd(&players[i].oldcmd, &players[i].cmd, 1); } + + if (D_IsDeferredStartTitle()) + { + D_StartTitle(); + } // Z_CheckMemCleanup(); }