varscreen=document.getElementById('screen');varctx=screen.getContext('2d');functionfizzle_pixel(x,y){setTimeout(function(){ctx.fillStyle='rgb(255,0,0)';ctx.fillRect(x,y,1,1);},10);}functionfizzlefade(){varrandomValue=1;varx,y;do{// Y = low 8 bitsy=randomValue&0x000FF;// X = High 9 bitsx=(randomValue&0x1FF00)>>8;// Get the output bit.varleastSignificantBit=randomValue&1;// Shift registerrandomValue>>=1;// If the output is 0, the xor can be skippedif(leastSignificantBit!==0){randomValue^=0x00012000;}// If x,y coordinate within the screen width/height, fizzle it!if(x<320&&y<200){fizzle_pixel(x,y);}}while(randomValue!=1);}fizzlefade();

A live example of the code below.

Note: Mobile Safari is not liking the setTimeout, and instead jumps right to the end. Perhaps if I’d used requestAnimationFrame it would be more fluid.