From 20d28e80a5c861a9d5f449ea911ab75b4f37ad0d Mon Sep 17 00:00:00 2001 From: Jef Date: Tue, 24 Sep 2024 14:54:57 +0200 Subject: Initial community commit --- Src/resources/data/milk2_img.ini | 277 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 277 insertions(+) create mode 100644 Src/resources/data/milk2_img.ini (limited to 'Src/resources/data/milk2_img.ini') diff --git a/Src/resources/data/milk2_img.ini b/Src/resources/data/milk2_img.ini new file mode 100644 index 00000000..0a863173 --- /dev/null +++ b/Src/resources/data/milk2_img.ini @@ -0,0 +1,277 @@ +/* + +NOTE: AS OF MilkDrop v1.04, the functionality of the 'burn' variable + has changed. See below. + +NOTES/TIPS + -sprites range from 00-99 + -'img=' line is mandatory. File types currently supported (as of v1.04): + JPG + PNG + BMP + TGA + DDS + PPM + DIB + -valid filenames are: + relative: img=billy.jpg (loads winamp\plugins\milkdrop2\billy.jpg) + img=..\billy.jpg (loads winamp\plugins\billy.jpg) + img=images\billy.jpg (loads winamp\plugins\milkdrop2\images\billy.jpg) + absolute: img=c:\blah\billy.jpg + NOT ok: img=c:billy.jpg -must specify path + NOT ok: img=\billy.jpg -must specify drive + -textures can be as large as 2048x2048 and do not have to be square. + -texture dims in memory will be next power of 2 higher for w, h. + ex: 500x60 texture will be stored in memory as a 512x64 texture. + -big textures can take up a lot of video memory and seriously + drop the frame rate; recommend sprites be no larger than 512x512. + 256x256 is even more preferable. + -if there isn't enough video memory for the texture, it will downsample + the texture (to as low as 16x16 pixels) trying to fit it into video + memory. + -IMPORTANT: to terminate a sprite from within its own code, set the + 'done' variable to a nonzero value (such as 1). For example, + "done=above(frame,500);" would make the sprite auto-self-terminate + after 500 frames. To make this framerate-independent, based it on + 'time' or 'frame/fps' (they are equivalent). + -there is currently a maximum of 16 sprites that can be on the screen + at one time. + -the sprite manager supports instancing, so if you load two sprites + that access the same image on disk, only one texture will exist + in video memory. + -the sprite manager frees textures immediately when all the sprites + using that texture (all instances) expire or finish. + -all of the mathematical functions available for milkdrop's per-frame + and per-pixel equations are available here for doing funky things + with the sprites; see milkdrop_preset_authoring.html for a complete + list of all the functions available. + -you can define your own variables in the init_ code just by setting + them to some value (like in the per-frame or per-pixel code of a + milkdrop preset). You can then access this value later in the + per-frame (regular) sprite code. If you change its value, the + change will be remembered from frame to frame. Also, if you + change the value of a built-in (read/write) variable, this change + will also be remembered from frame to frame. + + + READ-ONLY VARIABLES + ------------------- + time + the amount of time that has elapsed since the sprite + was launched (in seconds). + frame + the # of frames that have elapsed since the sprite + was launched. + fps + the current fps (frames-per-second) the MilkDrop is running at. + progress + the progress (0=start .. 1=end) through the current MilkDrop preset. + bass, mid, treb + the relative amount of each audio band being heard this frame. + 1 is normal; a number less than one (say, 0.5 .. 1) means + the band is quiet; and a number greater than one (say, 1..2) + means the band is loud. + bass_att, mid_att, treb_att + the same, but attenuated to be relative to the average band levels + over a longer period of time (i.e. more heavily attenuated/damped). + + READ/WRITE VARIABLES + -------------------- + x,y + the x and y position of the sprite's center on the screen. + x is 0 at the left, 1 at the right; y is 0 at the top, 1 at the bottom. + r,g,b + the red, green, and blue color brightness of the sprite. 0..1. + a + the opacity (alpha) of the sprite. 0=transparent, 1=opaque. + note that the effect of this variable depends on the blendmode + (see below), and that sometimes, due to the blendmode, the value + of 'a' has no effect. + sx, sy + the size (stretching) of the sprite, in the X and Y directions. + if these are both 1, then the image will be scaled up just large + enough so that no part of it goes off the screen. If these are + both 0.5, the image will be half that size; 2, and it's doubled. + If sx and sy are not equal, the image will be stretched + appropriately. + rot + the angle of rotation, in radians, of the sprite. The unit circle + goes from 0 to PI*2 (6.28) radians. At zero radians there is no + rotation; PI/2 is like a 90-degree counter-clockwise rotation; + PI, 180 degrees; PI*3/2, 270 degrees; and PI*2 radians (the same + as zero radians): 0 degrees. + blendmode + determines the manner in which the sprite image is blended onto + the screen. + 0=blend: the image is multiplied by (r,g,b) and then blended, + where 'a' decides the amount to blend. + 1=decal: the image is multiplied by (r*a,g*a,b*a) and then pasted + onto the background, with no transparency. 'a' values + below 1 will modulate the color of the sprite, making + it darker. + 2=additive: the image is multipled by (r*a,g*a,b*a) and then added + onto the background, making it brighter. Again, 'a' values + below 1 will make the sprite darker. + 3=srccolor: the amount to blend each pixel with the background + is equal to the inverse of the pixel's color. White texels + in the sprite will be fully drawn, while black texels will + be transparent; in-between texels will be blended partially + based on their brightness. Requires hardware support. + The alpha value ('a') has no effect when this blendmode + is set; the alpha value is taken from the R,G,B color in + the image at evert point. + 4=colorkey: + pixels that match the color specified in the colorkey are + drawn transparently, and all other pixels are drawn opaquely, + much like a television bluescreen. When using this blendmode, + a line like the following is required to be present in the + sprite: + colorkey=0x000000 + where the value is some 24-bit hexadecimal color. The first + two digits are 00 through FF hexadecimal (0-255 decimal) + and are the red value; the third and fourth digits are the + green value; and the last two digits are the blue value. + So, 0x000000 makes black the see-through color; 0xFFFFFF + makes white pixels transparent; 0x0000FF makes blue pixels + transparent; and so on. + + When the blendmode is not 4, the colorkey setting will have + no effect. + + When blendmode is 4, the alpha value ('a') still works, too; + it simply modulates the overall opacity of the sprite. + + NOTE that this effect does not work on all video cards, and + also tends to hiccup when running in 16-bit color. Try it + in 32-bit color for best chances for it to work. + + NOTE that prior to MilkDrop v1.04, this feature worked + slightly differently; there was a range of color key values + (and you specified 'colorkey_lo' and 'colorkey_hi') + instead of just one single colorkey value ('colorkey'). + My apologies for any confusion this change might cause. + flipx + if nonzero, the sprite will be flipped horizontally. + flipy + if nonzero, the sprite will be flipped vertically. + repeatx + the number of times to repeat the texture over the surface of the + sprite, in the x direction. A value of 1 is the default; a value of + 2 will cause the texture to tile twice in the x direction; and so on. + + **NOTE that if the width or height of the source image is not a + power of two (16,32,64,128,256,512,1024,2048) then repeating the + image could cause strange bands to appear (on some poorly-written + display drivers or older video cards). If using repeating, pre- + stretch the source image to be a power of 2 to alleviate this + problem.** + repeaty + like repeatx, but in the y-direction. + done + set this to some nonzero value to make the sprite self-terminate. + frees up resources associated with the sprite. + burn + if set to a nonzero value, then the sprite will burn into MilkDrop's + background and become part of the animation. If set to zero, there + will be no burn-in. You can set this to 1 for a long time to make + cool trails of the sprite, or you can set it to 1 just on the last frame + (at the same time that you set 'done' to 1), to make the sprite burn into + the background and die off, much like song titles and custom messages do. + ( NOTE: prior to v1.04, 'burn' only worked on the last frame, when done + was set to 1. With v1.04 and later, 'burn' works on any frame. ) + + + + /end of critical info + + +*/ + +[img00] +// testing color keying... this is probably best with TGA's (exact colors), not JPG's. +img=textures\kaite.jpg +colorkey=0xFFFFFF +init_1=blendmode = 4; +code_1=rot = time*0.27; +code_2=new_scale = 0.75 + 0.1*sin(time*0.6); +code_3=sx = new_scale; +code_4=sy = new_scale; +code_5=r=0.5+sin(time*0.9); +code_6=a=0.5+sin(time*1.3); + +[img01] +// this tests the 'done' function, and burns into the screen @ the end +img=textures\heart.jpg +init_1=blendmode = 3; +init_2=x = 1; +init_3=orig_y = 0.5; +code_1=time_to_reset = below(x,-0.5); +code_2=x = x*(1-time_to_reset) + time_to_reset*(1.5 + 0.01*rand(100) + 1); +code_3=orig_y = orig_y*(1-time_to_reset) + time_to_reset*(0.3 + 0.4*0.01*rand(100)); +code_4=sx = sx*(1-time_to_reset) + time_to_reset*(0.25 + 0.4*0.01*rand(100)); +code_5=sy = sx; +code_6=x = x - 0.008 + 0.0033*sin(time*1.371); +code_7=y = orig_y + 0.12*sin(time*1.9); +code_8=done=above(frame,80); +code_9=burn=done; // burn into screen @ end + +[img02] +// this burns into the screen *every frame* +img=textures\cells.jpg +init_1=blendmode = 3; +init_2=x = 1; +init_3=orig_y = 0.5; +code_1=time_to_reset = below(x,-0.5); +code_2=x = x*(1-time_to_reset) + time_to_reset*(1.5 + 0.01*rand(100) + 1); +code_3=orig_y = orig_y*(1-time_to_reset) + time_to_reset*(0.3 + 0.4*0.01*rand(100)); +code_4=sx = sx*(1-time_to_reset) + time_to_reset*(0.25 + 0.4*0.01*rand(100)); +code_5=sy = sx; +code_6=x = x - 0.008 + 0.0033*sin(time*1.371); +code_7=y = orig_y + 0.12*sin(time*1.9); +code_8=done=above(frame,80); +code_9=burn=1; // burn into screen every frame + +[img03] +// for testing: show a large (nova2) or large+skinny (nova3) texture +img=textures\smalltiled_lizard_scales.jpg +init_1=blendmode = 2; +code_1=rot = time*0.27; +code_2=new_scale = 1.0 + 0.1*sin(time*0.6); +code_3=sx = new_scale; +code_4=sy = new_scale; +code_5=new_alpha = min(0.9,max(0.2, 2*max(bass-.05,bass_att)-1.1 )); +code_6=a = a*0.83 + 0.17*new_alpha; + +[img04] +desc="cool: an 'osapien' drifts across the screen every so often." +img=textures\smalltiled_electric_nebula.jpg +init_1=blendmode = 3; +init_2=x = -100; +init_3=orig_y = 0.5; +code_1=time_to_reset = below(x,-0.5); +code_2=x = x*(1-time_to_reset) + time_to_reset*(1.5 + 0.01*rand(100) + 3); +code_3=orig_y = orig_y*(1-time_to_reset) + time_to_reset*(0.3 + 0.4*0.01*rand(100)); +code_4=sx = sx*(1-time_to_reset) + time_to_reset*(0.25 + 0.4*0.01*rand(100)); +code_5=sy = sx; +code_6=x = x - 0.008 + 0.0033*sin(time*1.371); +code_7=y = orig_y + 0.12*sin(time*1.9); + +[img10] +img=textures\manyfish.jpg +init_1=blendmode = 3; +code_1=rot = time*0.27; +code_2=new_scale = 0.9 + 0.2*sin(time*0.6); +code_3=sx = new_scale; +code_4=sy = new_scale; +code_5=new_alpha = min(0.9,max(0.2, 2*max(bass-.05,bass_att)-1.1 )); +code_6=a = 1;//a*0.9 + 0.1*new_alpha; + +[img11] +img=textures\onefish.jpg +init_1=blendmode = 3; +code_1=rot = -time*0.2; +code_2=new_scale = 0.7 + 0.2*sin(time*0.6); +code_3=sx = new_scale; +code_4=sy = new_scale; +code_5=new_alpha = .4*min(0.9,max(0.2, 2*max(treb-.05,treb_att)-1.1 )); +code_6=a = a*0.03 + 0.10*new_alpha; -- cgit