diff --git a/fs2_open/code/mission/missionparse.cpp b/fs2_open/code/mission/missionparse.cpp
index 0e6c1f3..7703a46 100644
--- a/fs2_open/code/mission/missionparse.cpp
+++ b/fs2_open/code/mission/missionparse.cpp
@@ -4418,6 +4418,27 @@ void post_process_ships_wings()
 		Error(LOCATION, "The first starting wing and the first team-versus-team wing must have the same wing name.\n");
 	}
 
+	// niffiwan - sanity check starting wings
+	if (wing_name_lookup(Starting_wing_names[0], 1) == -1)
+	{
+		Error(LOCATION, "You must define the first starting wing '%s'. If you don't want this wing name, use '$Starting wing names' in the mission file.\n",Starting_wing_names[0]);
+	}
+	int last_wing_ok = 1;
+	for (i = 1; i < MAX_STARTING_WINGS; i++ )
+	{
+		if (wing_name_lookup(Starting_wing_names[i], 1) == -1)
+		{
+			last_wing_ok = 0;
+		}
+		else
+		{
+			if (last_wing_ok == 0)
+			{
+				Error(LOCATION, "You skipped defining starting wing '%s'. Create the wing, or use/fix '$Starting wing names' in the mission file.\n",Starting_wing_names[i-1]);
+			}
+		}
+	}
+
 	// Goober5000 - for FRED, the ships are initialized after the wings, so we must now tell the wings
 	// where their ships are
 	if (Fred_running)
