diff --git a/src/d_main.c b/src/d_main.c
index 36377049d08531ec1f25b84e07ed163a623f65c1..bbc5f532108d2279365ee43ba3c031b340626368 100644
--- a/src/d_main.c
+++ b/src/d_main.c
@@ -742,6 +742,7 @@ void D_StartTitle(void)
 		CV_SetValue(&cv_usemouse, tutorialusemouse);
 		CV_SetValue(&cv_alwaysfreelook, tutorialfreelook);
 		CV_SetValue(&cv_mousemove, tutorialmousemove);
+		CV_SetValue(&cv_analog, tutorialanalog);
 		M_StartMessage("Do you want to \x82save the recommended \x82movement controls?\x80\n\nPress 'Y' or 'Enter' to confirm\nPress 'N' or any key to keep \nyour current controls",
 			M_TutorialSaveControlResponse, MM_YESNO);
 	}
diff --git a/src/d_netcmd.c b/src/d_netcmd.c
index 0aaace49f831239febcd68c2929d0f4bcfc65722..526c1d736bdd956e97814ae624b2b402705fd507 100644
--- a/src/d_netcmd.c
+++ b/src/d_netcmd.c
@@ -1814,6 +1814,7 @@ static void Command_Map_f(void)
 		CV_SetValue(&cv_usemouse, tutorialusemouse);
 		CV_SetValue(&cv_alwaysfreelook, tutorialfreelook);
 		CV_SetValue(&cv_mousemove, tutorialmousemove);
+		CV_SetValue(&cv_analog, tutorialanalog);
 	}
 	tutorialmode = false; // warping takes us out of tutorial mode
 
diff --git a/src/doomstat.h b/src/doomstat.h
index 94ccf111ae926c6659ff9983e264fdf66d58861b..7660547685426bd01cfb84ef5aa5f28b49b6fad2 100644
--- a/src/doomstat.h
+++ b/src/doomstat.h
@@ -135,6 +135,7 @@ extern INT32 tutorialgcs; // which control scheme is loaded?
 extern INT32 tutorialusemouse; // store cv_usemouse user value
 extern INT32 tutorialfreelook; // store cv_alwaysfreelook user value
 extern INT32 tutorialmousemove; // store cv_mousemove user value
+extern INT32 tutorialanalog; // store cv_analog user value
 
 extern boolean looptitle;
 
diff --git a/src/g_game.c b/src/g_game.c
index 0112ec104748d0a0fcc2fd0df8d2e1faa9b153d8..4fb56abaf95e1a5e12d9eb748120e10e478dc04f 100644
--- a/src/g_game.c
+++ b/src/g_game.c
@@ -133,6 +133,7 @@ INT32 tutorialgcs = gcs_custom; // which control scheme is loaded?
 INT32 tutorialusemouse = 0; // store cv_usemouse user value
 INT32 tutorialfreelook = 0; // store cv_alwaysfreelook user value
 INT32 tutorialmousemove = 0; // store cv_mousemove user value
+INT32 tutorialanalog = 0; // store cv_analog user value
 
 boolean looptitle = false;
 
diff --git a/src/m_menu.c b/src/m_menu.c
index b51d07fd21678afc03e4126ea8095b67f26548e3..ada9ffb7a96c2b3817ce03ff9bc8f332070e8dcb 100644
--- a/src/m_menu.c
+++ b/src/m_menu.c
@@ -6139,9 +6139,10 @@ void M_TutorialSaveControlResponse(INT32 ch)
 	if (ch == 'y' || ch == KEY_ENTER)
 	{
 		G_CopyControls(gamecontrol, gamecontroldefault[tutorialgcs], gclist_tutorial, num_gclist_tutorial);
-		CV_SetValue(&cv_usemouse, 1);
-		CV_SetValue(&cv_alwaysfreelook, 0);
-		CV_SetValue(&cv_mousemove, 0);
+		CV_Set(&cv_usemouse, cv_usemouse->defaultvalue);
+		CV_Set(&cv_alwaysfreelook, cv_alwaysfreelook->defaultvalue);
+		CV_Set(&cv_mousemove, cv_mousemove->defaultvalue);
+		CV_Set(&cv_analog, cv_analog->defaultvalue);
 		S_StartSound(NULL, sfx_itemup);
 	}
 	else
@@ -6159,11 +6160,13 @@ static void M_TutorialControlResponse(INT32 ch)
 			tutorialusemouse = cv_usemouse.value;
 			tutorialfreelook = cv_alwaysfreelook.value;
 			tutorialmousemove = cv_mousemove.value;
+			tutorialanalog = cv_analog.value;
 
 			G_CopyControls(gamecontrol, gamecontroldefault[tutorialgcs], gclist_tutorial, num_gclist_tutorial);
 			CV_Set(&cv_usemouse, cv_usemouse->defaultvalue);
 			CV_Set(&cv_alwaysfreelook, cv_alwaysfreelook->defaultvalue);
 			CV_Set(&cv_mousemove, cv_mousemove->defaultvalue);
+			CV_Set(&cv_analog, cv_analog->defaultvalue);
 
 			//S_StartSound(NULL, sfx_itemup);
 		}
diff --git a/src/m_misc.c b/src/m_misc.c
index 622d65776f873f519e7d1bd4f3930d4d83ea980c..353443df0df2a28de2fcd222bf5cc6dc56aba7d7 100644
--- a/src/m_misc.c
+++ b/src/m_misc.c
@@ -544,10 +544,12 @@ void M_SaveConfig(const char *filename)
 		CV_SetValue(&cv_usemouse, tutorialusemouse);
 		CV_SetValue(&cv_alwaysfreelook, tutorialfreelook);
 		CV_SetValue(&cv_mousemove, tutorialmousemove);
+		CV_SetValue(&cv_analog, tutorialanalog);
 		CV_SaveVariables(f);
 		CV_Set(&cv_usemouse, cv_usemouse->defaultvalue);
 		CV_Set(&cv_alwaysfreelook, cv_alwaysfreelook->defaultvalue);
 		CV_Set(&cv_mousemove, cv_mousemove->defaultvalue);
+		CV_Set(&cv_analog, cv_analog->default);
 	}
 	else
 		CV_SaveVariables(f);