diff --git a/src/d_netcmd.c b/src/d_netcmd.c
index a113460f5e086fa8feaa6770d0c98249e7dfdc2c..6f4675e4adf7d79ba71082e7c3b31b5b7b4ddadb 100644
--- a/src/d_netcmd.c
+++ b/src/d_netcmd.c
@@ -374,6 +374,7 @@ consvar_t cv_sleep = CVAR_INIT ("cpusleep", "1", CV_SAVE, sleeping_cons_t, NULL)
 static CV_PossibleValue_t perfstats_cons_t[] = {
 	{0, "Off"}, {1, "Rendering"}, {2, "Logic"}, {3, "ThinkFrame"}, {0, NULL}};
 consvar_t cv_perfstats = CVAR_INIT ("perfstats", "Off", 0, perfstats_cons_t, NULL);
+consvar_t cv_freedemocamera = CVAR_INIT("freedemocamera", "Off", CV_SAVE, CV_OnOff, NULL);
 
 char timedemo_name[256];
 boolean timedemo_csv;
diff --git a/src/d_netcmd.h b/src/d_netcmd.h
index 841f71acd6692341af29928b117b36699e295080..7ecdd4e122b10c4e37a6d3461991189a29838e7d 100644
--- a/src/d_netcmd.h
+++ b/src/d_netcmd.h
@@ -121,6 +121,8 @@ extern boolean timedemo_csv;
 extern char timedemo_csv_id[256];
 extern boolean timedemo_quit;
 
+extern consvar_t cv_freedemocamera;
+
 typedef enum
 {
 	XD_NAMEANDCOLOR = 1,
diff --git a/src/p_tick.c b/src/p_tick.c
index 24d5005e119a1f7add9f78fcfe593e09746a1717..da2a980c480a54f22d2dc2c3ef2904e96c07a1e8 100644
--- a/src/p_tick.c
+++ b/src/p_tick.c
@@ -39,7 +39,6 @@ tic_t leveltime;
 
 // The entries will behave like both the head and tail of the lists.
 thinker_t thlist[NUM_THINKERLISTS];
-consvar_t cv_freedemocamera = {"freedemocamera", "Off", CV_SAVE, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL};
 
 void Command_Numthinkers_f(void)
 {
diff --git a/src/p_tick.h b/src/p_tick.h
index 3b04a427aab99d13b2cd989be69af6815ec2b4c6..1fb88f3f20a33f3319fd29af2634c2dd46a88417 100644
--- a/src/p_tick.h
+++ b/src/p_tick.h
@@ -19,7 +19,6 @@
 #endif
 
 extern tic_t leveltime;
-extern consvar_t cv_freedemocamera;
 
 // Called by G_Ticker. Carries out all thinking of enemies and players.
 void Command_Numthinkers_f(void);