You should talk more of what witchcraft you are doing to the screen.
Or if it's really witches I guess I don't wanna hear about it.
you're the second person to ask so i'll dive into the concepts behind the effects. i'll avoid an acutal tutorial because that would take way too much time and people using other languages will be left out. andrew brophy got me into this stuff and it's actually super easy.
basically, i have a View class that takes a picture of the screen every frame, applies a blendmode to that image, then redraws the treated image at an offset connected to a sin wave to give it that flow.
here's a stripped down version of my View class.
http://pastebin.com/bcTyVjtgif you're using gm, a class is an object.
here's the screen w/o any effects applied
-set up a canvas(flashpunk), surface(gm), or bitmap(everything else), to display your treated image on. it's like a frame that you're going to set your image into.
-apply a blendmode to your bitmap, surface, or canvas. with as3/flashpunk, it's as easy as
canvas.blend = Blendmode.HARDLIGHT
this is like putting colored saran wrap over your frame
-set up a bitmapData the size of the screen. bitmapData is an array that contains color information. i'm not sure what the gm equivalent is. imagine it as an unused polaroid at this point.
-copy the image currently drawn on the screen (in my case FP.buffer) to your bitmapData
bmpData.copyPixels(FP.buffer, rect, rect.topLeft);
-apply an offset on a sin wave to the bitmapdata
bmpData.scroll(flowX, 0);
the 2 arguments in this function are x and y. flowX is the number i'm applying the sin wave to
-stick that bitmapData into your bitmap/surface/canvas
canvas.fillTexture(rect, bmpData);
-draw it on the screen
canvas.render(FP.buffer, 0, 0);
shakzam