Basically, after thinking about this for quite a while, I've created a new combo attribute. Almost.
So; the Snow Combo is a script which, when assigned to the screen via an ffc, and given a combo type, plays a sound effect when Link walks on the given type, and leaves a trail of footprints which slowly fade away after a few seconds. So great for snow or fallen leaves, or whatever your imagination is not tied to.

It also requires very minimal set-up, which I was quite pleased with really.
You'll need some footprint tiles:

You could use those, or make your own or whatever.
They do have to be arranged in the order however: 5 tile animation for up-facing footprints, 5 tile animation for left-facing footprints. If you want a shorter animation, leave a blank tile, don't just miss them out.

And you'll also need a sound effect that you want to play whilst Link walks in the snow.

Code:
ffc script snow_combo{
	void run(){
		int combotype = 12; //set the type of combo you want to be 'snow' or 'fallen leaves' here
		int tile = 0; //set the first tile of your footprint animation here
		int cset = 0; // set the cset of your footprint animation here
		int sfx = 0; // set the sound effect you want to play while link walks on a 'snow' combo here
		int sfxdelay = 25; // set the delay between playing the sound effect here. 2
		// the above integers are to be user defined. All declared integers below this are utility integers. DON'T mess with them (unless you know what you're doing :P)
		int walkcounter = 1;
		int switch1 = 0; int switch1_2 = 0;
		int delay1 = 0;	
		int switch2 = 0; int switch22 = 0;
		int delay2 = 0;
		int switch3 = 0; int switch32 = 0;
		int delay3 =0;
		int switch4 = 0; int switch42 = 0;
		int delay4 = 0;
		int switch5 = 0; int switch52 = 0;
		int delay5 = 0;
		int switch6 = 0; int switch62 = 0;
		int delay6 = 0;
		int switch7 = 0; int switch72 = 0;
		int delay7 = 0;
		int switch8 = 0; int switch82 = 0;
		int delay8 = 0;
		int switch9 = 0; int switch92 = 0;
		int delay9 = 0;
		int switch10 = 0; int switch102 = 0;
		int delay10 = 0;
		int switch11 = 0; int switch112 = 0;
		int delay11 = 0;
		int switch12 = 0; int switch122 = 0;
		int delay12 = 0;
		int upcounter = 0;
		int downcounter = 0;
		int leftcounter = 0;
		int rightcounter = 0;
		int x1 = 0; int y1 = 0;
		int x2 = 0; int y2 = 0;
		int x3 = 0; int y3 = 0;
		int x4 = 0; int y4 = 0;
		int x5 = 0; int y5 = 0;
		int x6 = 0; int y6 = 0;
		int x7 = 0; int y7 = 0;
		int x8 = 0; int y8 = 0;
		int x9 = 0; int y9 = 0;
		int x10 = 0; int y10 = 0;
		int x11 = 0; int y11 = 0;
		int x12 = 0; int y12 = 0;
		while(true){
			sfxdelay--;
			upcounter++;
			downcounter ++;
			leftcounter ++;
			rightcounter ++;
			walkcounter --;
			if(upcounter == 60){upcounter = 0;}
			if(downcounter == 60){downcounter = 0;}
			if(leftcounter == 60){leftcounter = 0;}
			if(rightcounter == 60){rightcounter = 0;}
			if(Link->Action == LA_WALKING){walkcounter = 1;}
			if(walkcounter == 0){switch1 = 0; switch2 = 0; switch3 = 0; switch4 = 0; switch5 = 0; int switch6 = 0; switch7 = 0; switch8 = 0; switch9 = 0; switch10 = 0; switch11 = 0; int switch12 = 0;}

			if(Screen->ComboT[ComboAt(Link->X,Link->Y)] == combotype && sfxdelay == 20 && Link->Action == LA_WALKING && Link->Z == 0){Game -> PlaySound(sfx);}
			if(sfxdelay == 0){sfxdelay = 25;}

				if(Screen->ComboT[ComboAt(Link->X,Link->Y)] == combotype && Link->Action == LA_WALKING && Link->Dir == DIR_UP && Link->Z == 0){
					if(switch1 == 0 && upcounter < 20){x1 = Link->X; y1 = Link->Y; switch1 = 1;}
					if(switch2 == 0 && upcounter < 40 && upcounter >= 20){x2 = Link->X; y2 = Link->Y; switch2 = 1;}
					if(switch3 == 0 && upcounter < 60 && upcounter >= 40){x3 = Link->X; y3 = Link->Y; switch3 = 1;}
				}
				if(Screen->ComboT[ComboAt(Link->X,Link->Y)] == combotype && Link->Action == LA_WALKING && Link->Dir == DIR_DOWN && Link->Z == 0){
					if(switch4 == 0 && downcounter < 20){x4 = Link->X; y4 = Link->Y; switch4 = 1;}
					if(switch5 == 0 && downcounter < 40 && downcounter >= 20){x5 = Link->X; y5 = Link->Y; switch5 = 1;}
					if(switch6 == 0 && downcounter < 60 && downcounter >= 40){x6 = Link->X; y6 = Link->Y; switch6 = 1;}
				}
				if(Screen->ComboT[ComboAt(Link->X,Link->Y)] == combotype && Link->Action == LA_WALKING && Link->Dir == DIR_LEFT && Link->Z == 0){
					if(switch7 == 0 && leftcounter < 20){x7 = Link->X; y7 = Link->Y; switch7 = 1;}
					if(switch8 == 0 && leftcounter < 40 && leftcounter >= 20){x8 = Link->X; y8 = Link->Y; switch8 = 1;}
					if(switch9 == 0 && leftcounter < 60 && leftcounter >= 40){x9 = Link->X; y9 = Link->Y; switch9 = 1;}
				}
				if(Screen->ComboT[ComboAt(Link->X,Link->Y)] == combotype && Link->Action == LA_WALKING && Link->Dir == DIR_RIGHT && Link->Z == 0){
					if(switch10 == 0 && rightcounter < 20){x10 = Link->X; y10 = Link->Y; switch10 = 1;}
					if(switch11 == 0 && rightcounter < 40 && rightcounter >= 20){x11 = Link->X; y11 = Link->Y; switch11 = 1;}
					if(switch12 == 0 && rightcounter < 60 && rightcounter >= 40){x12 = Link->X; y12 = Link->Y; switch12 = 1;}
				}
				if(switch1 == 1){switch1_2 = 1;} if(switch2 == 1){switch22 = 1;}
				if(switch3 == 1){switch32 = 1;} if(switch4 == 1){switch42 = 1;}
				if(switch5 == 1){switch52 = 1;} if(switch6 == 1){switch62 = 1;}
				if(switch7 == 1){switch72 = 1;} if(switch8 == 1){switch82 = 1;}
				if(switch9 == 1){switch92 = 1;} if(switch10 == 1){switch102 = 1;}
				if(switch11 == 1){switch112 = 1;} if(switch12 == 1){switch122 = 1;}
				if(switch1_2 == 1){
					delay1 ++;
	 				if(delay1>=0 && delay1<=10){Screen->DrawTile(2, x1, y1, tile, 1, 1, cset, 1, 0, 0, 0, 0, true, 128);}
					if(delay1>10 && delay1<=20){Screen->DrawTile(2, x1, y1, tile+1, 1, 1, cset, 1, 0, 0, 0, 0, true, 128);}
					if(delay1>20 && delay1<=30){Screen->DrawTile(2, x1, y1, tile+2, 1, 1, cset, 1, 0, 0, 0, 0, true, 128);}
					if(delay1>30 && delay1<=40){Screen->DrawTile(2, x1, y1, tile+3, 1, 1, cset, 1, 0, 0, 0, 0, true, 128);}
					if(delay1>40 && delay1<=50){Screen->DrawTile(2, x1, y1, tile+4, 1, 1, cset, 1, 0, 0, 0, 0, true, 128);}
					if(delay1 == 50){delay1 = 0; switch1 = 0; switch1_2 = 0;}
				}
				if(switch22 == 1){
					delay2 ++;
	 				if(delay2>=0 && delay2<=10){Screen->DrawTile(2, x2, y2, tile, 1, 1, cset, 1, 0, 0, 0, 0, true, 128);}
					if(delay2>10 && delay2<=20){Screen->DrawTile(2, x2, y2, tile+1, 1, 1, cset, 1, 0, 0, 0, 0, true, 128);}
					if(delay2>20 && delay2<=30){Screen->DrawTile(2, x2, y2, tile+2, 1, 1, cset, 1, 0, 0, 0, 0, true, 128);}
					if(delay2>30 && delay2<=40){Screen->DrawTile(2, x2, y2, tile+3, 1, 1, cset, 1, 0, 0, 0, 0, true, 128);}
					if(delay2>40 && delay2<=50){Screen->DrawTile(2, x2, y2, tile+4, 1, 1, cset, 1, 0, 0, 0, 0, true, 128);}
					if(delay2 == 50){delay2 = 0; switch2 = 0; switch22 = 0;}
				}
				if(switch32 == 1){
					delay3 ++;
	 				if(delay3>=0 && delay3<=10){Screen->DrawTile(2, x3, y3, tile, 1, 1, cset, 1, 0, 0, 0, 0, true, 128);}
					if(delay3>10 && delay3<=20){Screen->DrawTile(2, x3, y3, tile+1, 1, 1, cset, 1, 0, 0, 0, 0, true, 128);}
					if(delay3>20 && delay3<=30){Screen->DrawTile(2, x3, y3, tile+2, 1, 1, cset, 1, 0, 0, 0, 0, true, 128);}
					if(delay3>30 && delay3<=40){Screen->DrawTile(2, x3, y3, tile+3, 1, 1, cset, 1, 0, 0, 0, 0, true, 128);}
					if(delay3>40 && delay3<=50){Screen->DrawTile(2, x3, y3, tile+4, 1, 1, cset, 1, 0, 0, 0, 0, true, 128);}
					if(delay3 == 50){delay3 = 0; switch3 = 0; switch32 = 0;}
				}
				if(switch42 == 1){
					delay4 ++;
	 				if(delay4>=0 && delay4<=10){Screen->DrawTile(2, x4, y4, tile, 1, 1, cset, 1, 0, 0, 0, 3, true, 128);}
					if(delay4>10 && delay4<=20){Screen->DrawTile(2, x4, y4, tile+1, 1, 1, cset, 1, 0, 0, 0, 3, true, 128);}
					if(delay4>20 && delay4<=30){Screen->DrawTile(2, x4, y4, tile+2, 1, 1, cset, 1, 0, 0, 0, 3, true, 128);}
					if(delay4>30 && delay4<=40){Screen->DrawTile(2, x4, y4, tile+3, 1, 1, cset, 1, 0, 0, 0, 3, true, 128);}
					if(delay4>40 && delay4<=50){Screen->DrawTile(2, x4, y4, tile+4, 1, 1, cset, 1, 0, 0, 0, 3, true, 128);}
					if(delay4 == 50){delay4 = 0; switch4 = 0; switch42 = 0;}
				}
				if(switch52 == 1){
					delay5 ++;
	 				if(delay5>=0 && delay5<=10){Screen->DrawTile(2, x5, y5, tile, 1, 1, cset, 1, 0, 0, 0, 3, true, 128);}
					if(delay5>10 && delay5<=20){Screen->DrawTile(2, x5, y5, tile+1, 1, 1, cset, 1, 0, 0, 0, 3, true, 128);}
					if(delay5>20 && delay5<=30){Screen->DrawTile(2, x5, y5, tile+2, 1, 1, cset, 1, 0, 0, 0, 3, true, 128);}
					if(delay5>30 && delay5<=40){Screen->DrawTile(2, x5, y5, tile+3, 1, 1, cset, 1, 0, 0, 0, 3, true, 128);}
					if(delay5>40 && delay5<=50){Screen->DrawTile(2, x5, y5, tile+4, 1, 1, cset, 1, 0, 0, 0, 3, true, 128);}
					if(delay5 == 50){delay5 = 0; switch5 = 0; switch52 = 0;}
				}
				if(switch62 == 1){
					delay6 ++;
	 				if(delay6>=0 && delay6<=10){Screen->DrawTile(2, x6, y6, tile, 1, 1, cset, 1, 0, 0, 0, 3, true, 128);}
					if(delay6>10 && delay6<=20){Screen->DrawTile(2, x6, y6, tile+1, 1, 1, cset, 1, 0, 0, 0, 3, true, 128);}
					if(delay6>20 && delay6<=30){Screen->DrawTile(2, x6, y6, tile+2, 1, 1, cset, 1, 0, 0, 0, 3, true, 128);}
					if(delay6>30 && delay6<=40){Screen->DrawTile(2, x6, y6, tile+3, 1, 1, cset, 1, 0, 0, 0, 3, true, 128);}
					if(delay6>40 && delay6<=50){Screen->DrawTile(2, x6, y6, tile+4, 1, 1, cset, 1, 0, 0, 0, 3, true, 128);}
					if(delay6 == 50){delay6 = 0; switch6 = 0; switch62 = 0;}
				}
				if(switch72 == 1){
					delay7 ++;
	 				if(delay7>=0 && delay7<=10){Screen->DrawTile(2, x7, y7, tile+5, 1, 1, cset, 1, 0, 0, 0, 0, true, 128);}
					if(delay7>10 && delay7<=20){Screen->DrawTile(2, x7, y7, tile+6, 1, 1, cset, 1, 0, 0, 0, 0, true, 128);}
					if(delay7>20 && delay7<=30){Screen->DrawTile(2, x7, y7, tile+7, 1, 1, cset, 1, 0, 0, 0, 0, true, 128);}
					if(delay7>30 && delay7<=40){Screen->DrawTile(2, x7, y7, tile+8, 1, 1, cset, 1, 0, 0, 0, 0, true, 128);}
					if(delay7>40 && delay7<=50){Screen->DrawTile(2, x7, y7, tile+9, 1, 1, cset, 1, 0, 0, 0, 0, true, 128);}
					if(delay7 == 50){delay7 = 0; switch7 = 0; switch72 = 0;}
				}
				if(switch82 == 1){
					delay8 ++;
	 				if(delay8>=0 && delay8<=10){Screen->DrawTile(2, x8, y8, tile+5, 1, 1, cset, 1, 0, 0, 0, 0, true, 128);}
					if(delay8>10 && delay8<=20){Screen->DrawTile(2, x8, y8, tile+6, 1, 1, cset, 1, 0, 0, 0, 0, true, 128);}
					if(delay8>20 && delay8<=30){Screen->DrawTile(2, x8, y8, tile+7, 1, 1, cset, 1, 0, 0, 0, 0, true, 128);}
					if(delay8>30 && delay8<=40){Screen->DrawTile(2, x8, y8, tile+8, 1, 1, cset, 1, 0, 0, 0, 0, true, 128);}
					if(delay8>40 && delay8<=50){Screen->DrawTile(2, x8, y8, tile+9, 1, 1, cset, 1, 0, 0, 0, 0, true, 128);}
					if(delay8 == 50){delay8 = 0; switch8 = 0; switch82 = 0;}
				}
				if(switch92 == 1){
					delay9 ++;
	 				if(delay9>=0 && delay9<=10){Screen->DrawTile(2, x9, y9, tile+5, 1, 1, cset, 1, 0, 0, 0, 0, true, 128);}
					if(delay9>10 && delay9<=20){Screen->DrawTile(2, x9, y9, tile+6, 1, 1, cset, 1, 0, 0, 0, 0, true, 128);}
					if(delay9>20 && delay9<=30){Screen->DrawTile(2, x9, y9, tile+7, 1, 1, cset, 1, 0, 0, 0, 0, true, 128);}
					if(delay9>30 && delay9<=40){Screen->DrawTile(2, x9, y9, tile+8, 1, 1, cset, 1, 0, 0, 0, 0, true, 128);}
					if(delay9>40 && delay9<=50){Screen->DrawTile(2, x9, y9, tile+9, 1, 1, cset, 1, 0, 0, 0, 0, true, 128);}
					if(delay9 == 50){delay9 = 0; switch9 = 0; switch92 = 0;}
				}
				if(switch102 == 1){
					delay10 ++;
	 				if(delay10>=0 && delay10<=10){Screen->DrawTile(2, x10, y10, tile+5, 1, 1, cset, 1, 0, 0, 0, 3, true, 128);}
					if(delay10>10 && delay10<=20){Screen->DrawTile(2, x10, y10, tile+6, 1, 1, cset, 1, 0, 0, 0, 3, true, 128);}
					if(delay10>20 && delay10<=30){Screen->DrawTile(2, x10, y10, tile+7, 1, 1, cset, 1, 0, 0, 0, 3, true, 128);}
					if(delay10>30 && delay10<=40){Screen->DrawTile(2, x10, y10, tile+8, 1, 1, cset, 1, 0, 0, 0, 3, true, 128);}
					if(delay10>40 && delay10<=50){Screen->DrawTile(2, x10, y10, tile+9, 1, 1, cset, 1, 0, 0, 0, 3, true, 128);}
					if(delay10 == 50){delay10 = 0; switch10 = 0; switch102 = 0;}
				}
				if(switch112 == 1){
					delay11 ++;
	 				if(delay11>=0 && delay11<=10){Screen->DrawTile(2, x11, y11, tile+5, 1, 1, cset, 1, 0, 0, 0, 3, true, 128);}
					if(delay11>10 && delay11<=20){Screen->DrawTile(2, x11, y11, tile+6, 1, 1, cset, 1, 0, 0, 0, 3, true, 128);}
					if(delay11>20 && delay11<=30){Screen->DrawTile(2, x11, y11, tile+7, 1, 1, cset, 1, 0, 0, 0, 3, true, 128);}
					if(delay11>30 && delay11<=40){Screen->DrawTile(2, x11, y11, tile+8, 1, 1, cset, 1, 0, 0, 0, 3, true, 128);}
					if(delay11>40 && delay11<=50){Screen->DrawTile(2, x11, y11, tile+9, 1, 1, cset, 1, 0, 0, 0, 3, true, 128);}
					if(delay11 == 50){delay11 = 0; switch11 = 0; switch112 = 0;}
				}
				if(switch122 == 1){
					delay12 ++;
	 				if(delay12>=0 && delay12<=10){Screen->DrawTile(2, x12, y12, tile+5, 1, 1, cset, 1, 0, 0, 0, 3, true, 128);}
					if(delay12>10 && delay12<=20){Screen->DrawTile(2, x12, y12, tile+6, 1, 1, cset, 1, 0, 0, 0, 3, true, 128);}
					if(delay12>20 && delay12<=30){Screen->DrawTile(2, x12, y12, tile+7, 1, 1, cset, 1, 0, 0, 0, 3, true, 128);}
					if(delay12>30 && delay12<=40){Screen->DrawTile(2, x12, y12, tile+8, 1, 1, cset, 1, 0, 0, 0, 3, true, 128);}
					if(delay12>40 && delay12<=50){Screen->DrawTile(2, x12, y12, tile+9, 1, 1, cset, 1, 0, 0, 0, 3, true, 128);}
					if(delay12 == 50){delay12 = 0; switch12 = 0; switch122 = 0;}
				}
		Waitframe();
		}
	}
}
Right, so, here's the script. I'm afraid it's rather large, due to having 12 independant sets of pseudo-animation drawtile functions. Anyway, don't be put off by that beacuse it doesn't really have any effect on how easy it is to use.

Once you have those tiles set up on your tilesheet then, stick that in your .z file, and go to the top 6 lines of the script where there are a few 'variable' integers declared, which you'll want to change to fit you, and which I've also pointed out in the script.

The first one is the combo type that you're attaching snow to. This will only be applicable on screens with the script attached, so it doesn't disable them for the rest of the game or anything like that. The default is combo ID 12 - Left statue. Mostly due to the fact that it doesn't do anything unless it really has to, and I can't see that much use for it anyway. Slow Walk might also be a good one for snow, although that would meant that you couldn't use it anywhere else on the screen.
The second integer is the number of the first tile in your 10x1 block of footprint animation.
The third integer is the Cset you want the animation to be in
And the fourth is the number of the sound effect that you want to play.

And that's all there is to it. Set it up like that, load it into ZQuest and stick it on an ffc on a screen with the given combo type as snow on the floor or whatever.

Example Video
Here's an example video that I threw together for it. Please don't judge this on the screen, I know it's not very good, I made it quickly for the video. And apparently it doesn't work while the sword is being charged, but I think this is to do with a ZC bug.

And thankfully the character limit here is somewhat higher than at PureZC, I couldn't fit the script onto one post there :)