aboutsummaryrefslogtreecommitdiff
path: root/Src/resources/data/milk2_img.ini
diff options
context:
space:
mode:
authorJean-Francois Mauguit <jfmauguit@mac.com>2024-09-24 09:03:25 -0400
committerGitHub <noreply@github.com>2024-09-24 09:03:25 -0400
commitbab614c421ed7ae329d26bf028c4a3b1d2450f5a (patch)
tree12f17f78986871dd2cfb0a56e5e93b545c1ae0d0 /Src/resources/data/milk2_img.ini
parent4bde6044fddf053f31795b9eaccdd2a5a527d21f (diff)
parent20d28e80a5c861a9d5f449ea911ab75b4f37ad0d (diff)
downloadwinamp-bab614c421ed7ae329d26bf028c4a3b1d2450f5a.tar.gz
Merge pull request #5 from WinampDesktop/community
Merge to main
Diffstat (limited to 'Src/resources/data/milk2_img.ini')
-rw-r--r--Src/resources/data/milk2_img.ini277
1 files changed, 277 insertions, 0 deletions
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;