diff --git a/src/f_finale.c b/src/f_finale.c
index a8b27bb807499f44b2855526f33e119a8cf1db4f..0a448692835012819c1204ab7c211b3a94f93a3d 100644
--- a/src/f_finale.c
+++ b/src/f_finale.c
@@ -1733,7 +1733,7 @@ static void F_AdvanceToNextScene(void)
 
 void F_EndCutScene(void)
 {
-	cutsceneover = true; // do this first, just in case Y_EndGame or something wants to turn it back false later
+	cutsceneover = true; // do this first, just in case G_EndGame or something wants to turn it back false later
 	if (runningprecutscene)
 	{
 		if (server)
@@ -1748,7 +1748,7 @@ void F_EndCutScene(void)
 		else if (nextmap < 1100-1)
 			G_NextLevel();
 		else
-			Y_EndGame();
+			G_EndGame();
 	}
 }
 
diff --git a/src/g_game.c b/src/g_game.c
index 4f1c49b428bdb7165146518e5387f8496b44bfc1..25730ce7d75a9a48d1627e4f89c236dba1ee3c00 100644
--- a/src/g_game.c
+++ b/src/g_game.c
@@ -2911,7 +2911,7 @@ void G_AfterIntermission(void)
 		if (nextmap < 1100-1)
 			G_NextLevel();
 		else
-			Y_EndGame();
+			G_EndGame();
 	}
 }
 
@@ -2997,6 +2997,38 @@ static void G_DoContinued(void)
 	gameaction = ga_nothing;
 }
 
+//
+// G_EndGame (formerly Y_EndGame)
+// Franky this function fits better in g_game.c than it does in y_inter.c
+//
+// ...Gee, (why) end the game?
+// Because Y_FollowIntermission and F_EndCutscene would
+// both do this exact same thing *in different ways* otherwise,
+// which made it so that you could only unlock Ultimate mode
+// if you had a cutscene after the final level and crap like that.
+// This function simplifies it so only one place has to be updated
+// when something new is added.
+void G_EndGame(void)
+{
+	// Only do evaluation and credits in coop games.
+	if (gametype == GT_COOP)
+	{
+		if (nextmap == 1102-1) // end game with credits
+		{
+			F_StartCredits();
+			return;
+		}
+		if (nextmap == 1101-1) // end game with evaluation
+		{
+			F_StartGameEvaluation();
+			return;
+		}
+	}
+
+	// 1100 or competitive multiplayer, so go back to title screen.
+	D_StartTitle();
+}
+
 //
 // G_LoadGameSettings
 //
diff --git a/src/g_game.h b/src/g_game.h
index ada82404c9e3e9f97ff4940d5daa8799fef7f2fc..196ba2ea11700dd30b5766de03ca167893ec4226 100644
--- a/src/g_game.h
+++ b/src/g_game.h
@@ -171,6 +171,7 @@ void G_NextLevel(void);
 void G_Continue(void);
 void G_UseContinue(void);
 void G_AfterIntermission(void);
+void G_EndGame(void); // moved from y_inter.c/h and renamed
 
 void G_Ticker(boolean run);
 boolean G_Responder(event_t *ev);
diff --git a/src/y_inter.c b/src/y_inter.c
index e7df165bfc71e666bf5b064495f154fdaa9c53d8..37c597305642f0879db3564770838af042925cfa 100644
--- a/src/y_inter.c
+++ b/src/y_inter.c
@@ -1794,37 +1794,6 @@ void Y_EndIntermission(void)
 	usebuffer = false;
 }
 
-//
-// Y_EndGame
-//
-// Why end the game?
-// Because Y_FollowIntermission and F_EndCutscene would
-// both do this exact same thing *in different ways* otherwise,
-// which made it so that you could only unlock Ultimate mode
-// if you had a cutscene after the final level and crap like that.
-// This function simplifies it so only one place has to be updated
-// when something new is added.
-void Y_EndGame(void)
-{
-	// Only do evaluation and credits in coop games.
-	if (gametype == GT_COOP)
-	{
-		if (nextmap == 1102-1) // end game with credits
-		{
-			F_StartCredits();
-			return;
-		}
-		if (nextmap == 1101-1) // end game with evaluation
-		{
-			F_StartGameEvaluation();
-			return;
-		}
-	}
-
-	// 1100 or competitive multiplayer, so go back to title screen.
-	D_StartTitle();
-}
-
 //
 // Y_FollowIntermission
 //
@@ -1850,7 +1819,7 @@ static void Y_FollowIntermission(void)
 		return;
 	}
 
-	Y_EndGame();
+	G_EndGame();
 }
 
 #define UNLOAD(x) Z_ChangeTag(x, PU_CACHE); x = NULL
diff --git a/src/y_inter.h b/src/y_inter.h
index 9fe95fcc4868bbc065f666ea0d97c6445c0551fb..26f7dc390fc183de68873b435c6add42dc2cbd69 100644
--- a/src/y_inter.h
+++ b/src/y_inter.h
@@ -15,7 +15,6 @@ void Y_IntermissionDrawer(void);
 void Y_Ticker(void);
 void Y_StartIntermission(void);
 void Y_EndIntermission(void);
-void Y_EndGame(void);
 
 typedef enum
 {