To celebrate the fact that Winter is nearly done, I present the dynamic snow script!

Code:
const int screenHeight = 176;
const int screenWidth = 256;

ffc script Snow {
	void run(int flakes, int wind) {
		
		//I do not know how big this can be safely increased.
		//However, 200 flakes should be fine for most situations
		int snow[200];
		flakes = Floor(flakes);
		wind = Floor(wind);
		
		if(flakes > 200) flakes = 200;
		
		//if the wind isn't very strong, let's thin out the snowfall
		//a bit. It looks much better this way.
		if(Abs(wind) < 4) {
			flakes -= 45 - Abs(wind) * 15;
		}
		
		//Calculating the size and position of a paralellogram of
		//snow hurt my brain :(
		int xmod = 0;
		
		//And, it took me an hour to determine this block
		if(wind > 0) {
			xmod = wind * -160;
		} else {
			xmod = 0;
		}
		
		//Give each flake an initial position on screen, as
		//though it's been snowing the whole time ;)
		for(int i = 0; i < flakes; i++) {
			snow[i] = Rand(screenWidth + Abs(wind) * 160) + xmod + 3000 + (Rand(screenHeight - 1) + 1) / 1000;
		}
		
		int x; int y;
		//main loop
		while(true) {
			
			//for each snow flake...
			for(int i = 0; i < flakes; i++) {
				//I pack the snow flake like: x . y
				x = Floor(snow[i]);
				y = (snow[i] - x) * 1000;
				
				//the 3000 is simply to prevent negative values in the snow[] array
				//3000 is insufficient for wind strengths > 18
				//(but, that's already stronger than any wind on earth!)
				x -= 3000;
				
				//move the snow
				y += 1;
				x += Rand(3) - 1;
				x += wind;
				
				//if the snow goes off the bottom, remove it and regenerate it
				//also, if there's wind, clip the snow that blows off the side
				if(y > screenHeight || (wind > 0 && x > screenWidth + 5) || (wind < 0 && x < -5)) {
					x = Rand(screenWidth + Abs(wind) * 160) + xmod;
					
					y = 1;
				}
				
				//draw the on-screen flakes
				if(x >= 0 && x < screenWidth) Screen->Circle(6, x, y, 1, 1, 1, 0, 0, 0, true, 128); //Screen->PutPixel(6, x, y, 1, 0, 0, 0, 128);
				
				//pack the snow again :P
				snow[i] = x + 3000 + y / 1000;
				
			}
			
			Waitframe();
		}
	}
}
It's really easy: Just set the script to an invisible FFC, set D0 to the number of desired snowflakes on screen at once (current max is 200, but that's easily raised if necessary), and even add a bit of wind by setting D1 (max is +/-18, but the snow is almost horizontal at that speed!).

Let me know what you think!