Index: src/atmos.c
===================================================================
--- src/atmos.c	(revision 3712)
+++ src/atmos.c	(working copy)
@@ -101,18 +101,22 @@
 	UDWORD	numberToAdd;
 	Vector3i pos;
 
-	for(i=0; i<MAX_ATMOS_PARTICLES; i++)
+	// we don't want to do any of this while paused.
+	if(!gamePaused() && weather!=WT_NONE)
 	{
-		/* See if it's active */
-		if(asAtmosParts[i].status == APS_ACTIVE)
+
+		// FIX ME:  The below routine is a *HUGE* CPU hog.
+		for(i=0; i<MAX_ATMOS_PARTICLES; i++)
 		{
-			processParticle(&asAtmosParts[i]);
+			/* See if it's active */
+			if(asAtmosParts[i].status == APS_ACTIVE)
+			{
+				processParticle(&asAtmosParts[i]);
+			}
 		}
-	}
 
 	/* This bit below needs to go into a "precipitation function" */
-	if(!gamePaused() && weather!=WT_NONE)
-	{
+
 		numberToAdd = ((weather==WT_SNOWING) ? 2 : 4);
 		/* Temporary stuff - just adds a few particles! */
 		for(i=0; i<numberToAdd; i++)
Index: src/loop.c
===================================================================
--- src/loop.c	(revision 3712)
+++ src/loop.c	(working copy)
@@ -498,6 +498,7 @@
 				}
 			}
 		}
+	SDL_Delay(30);	// Only executes when PAUSE menu is up.
 	}
 
 	/* Check for quit */
