home *** CD-ROM | disk | FTP | other *** search
/ Dream 52 / Amiga_Dream_52.iso / Linux / Divers / bomb.tar.gz / bomb.tar / bomb / README < prev    next >
Text File  |  1998-03-08  |  18KB  |  387 lines

  1. bomb - automatic interactive visual stimulation
  2. Scott Draves <spot@cs.cmu.edu>
  3. http://www.cs.cmu.edu/~spot
  4. see the file COPYING for the license covering this software.
  5.  
  6. this program is for svgalib (on linux), with working ports to X11,
  7. OpenGL, the Power Mac, and win32 (with ddraw).
  8.  
  9. the file manual.txt documents how to run and use bomb.
  10.  
  11. see http://www.cs.cmu.edu/bomb/index.html and
  12. http://www.cs.cmu.edu/nab/nab.html for online documentation,
  13. explanation, and discussion.
  14.  
  15.  
  16. -----------------------
  17.  
  18.  
  19. you are encouraged to exhibit the output of this software publicly as
  20. long as this software is credited as the source of the images.
  21.  
  22. i also encourage you to let me know what you make with it, what you
  23. dis/like about it, and how it can be improved.
  24.  
  25.  
  26. -----------------------
  27.  
  28.  
  29. THE GPLed source code is included.
  30.  
  31. i apologize for the quality of this code.  it is very low.  i use this
  32. project as a garbage dump for my worst coding impulses.  this helps
  33. keep the rest of my code cleaner.  no kidding.
  34.  
  35. chunks of code and various rules have been taken from various sources
  36. (i'm always looking for more stuff, so email if you have something
  37. that you think fits). contributors/sources include:
  38.  
  39. jepler@herbie.unl.edu  originally derived from vga_eyecandy
  40. tcl@sgi.com            rotor idea
  41. nix@cs.cmu.edu         wisps, waves, fade2cmap, many suck/*.gif
  42. ehn@cs.cmu.edu         gifs
  43. Jim Frost              xli header file (copyright below)
  44. Kirk L. Johnson        gif code (copyright below)
  45. Torben Mogensen        idea for symmetric life (=~? anneal)
  46. ajw@cs.cmu.edu         lots of help for all sorts of mac things
  47. rus@apple.com          mac sound code originally from cthugha
  48. Peter Broadwell        showed me coupled quadratic maps
  49. Jamie Zawinski         bits of X code (copyright below)
  50. David Zicarelli        bug fix and max version
  51.  
  52. thanks to nix for many interesting discussions and don
  53. hopkins@interval.com for inspiration.  thanks to toffoli and margolus
  54. for their excellent book _cellular automata machines_ (isbn
  55. 0-262-20060-0, or see http://www.im.lcs.mit.edu/cam8).  thanks to
  56. the graphics lab at CMU SCS for the use of their fine hardware.
  57.  
  58. -----------------------
  59.  
  60. release 1.18, as of Mar 8, 1998
  61. fixed X code, works in 8, 16, and 32 bpp.  integrated svga and X
  62. versions into same executable.  added new variant of the rug rule (on
  63. 'a') which makes circular impressions.  fixed mod by zero bug in
  64. image_to_heat (found by David Zicarelli).
  65.  
  66. release 1.17, as of Jan 15, 1998
  67. smoothed use of rhythm in dancing flames.  changed license.  added
  68. guile.  sorted contents of suck-dir.  began to add 16/32 bpp X, but
  69. not finished.  xbomb from prev release included instead.
  70.  
  71. release 1.16, as of July 22, 1997
  72. added fastflip (on ^E) and auto-cooling to fuse mode.  added
  73. splatter-blitting to fuse mode.  moved right mirror of quad mode over
  74. by one pixel to eliminate double middle pixel.  removed climbing
  75. drift-mode from fuse mode.  fixed OBO in match.c.  made cmap_plain
  76. more likely.  adjusted self play for fuse mode.  '?' displays
  77. manual.txt in vga/linux version.  included X windows version.
  78.  
  79. release 1.15, as of Thu Jun 26 1997
  80. added quad mode.  in rotor, made quickly rotating flame change slowly
  81. in addition to rotating quickly.  in rotor, made pen size depend on
  82. sound power.  in linux version, made cheaper small random number
  83. routine.  added brain=0 to 'V'.  added creeping edges to spiral slip
  84. mode.
  85.  
  86. release 1.14, as of Apr 25 1997
  87. autoplay doesn't fill the screen when in rd mode.  in initial
  88. parameters, enable audio input by default (if present).  also, made
  89. use of audio more likely if present (~3/4 instead of 1/3).  added
  90. schwa and yugung to suck; removed centipedes.  adjusted rd2 to only
  91. throw away low 7 bits instead of 8.  John E. Pearson reports that the
  92. equations for the original RD are from his paper "Complex Patterns in
  93. a Simple System" Science, 261,189, 9 July 1993.  added sound to linux
  94. version. added santafe, acoma, and chilkat to suck.  changed rd2 to
  95. use 15 bits, so now it basically works, but ther is still a problem.
  96.  
  97. release 1.13, as of Dec 6, 1996
  98. added MPEG output with code from the MPEG Software Simulation Group
  99. (http://www.mpeg.org/MSSG/) (SGI version only).
  100. preliminary release for win32 API.  second win32 release 10/5.
  101. third win32 release 10/21---included are bomb.exe and the screen-saver
  102. bomb.scr.  fourth win32 release 11/21---direct draw version.  still
  103. no sound input.  removed screen saver.  added new mode:  RD2.
  104. release 12/1 sound input mostly working.  added image-driven masking
  105. to static.  12/5 sound input apparently working.  added about five
  106. more eskimo masks and two islamic patterns.  adjusts speed of
  107. drifting and controls according to frame rate.  only released on win32
  108. and mac.
  109.  
  110. release 1.12, as of Sep 18, 1996
  111. added several new suck/*, especially masks.  added sound input to SGI
  112. and Mac (mac code from cthugha), hooked up to diffusion-speed and
  113. flame-drift.  it can't yet tell if the device is present but no music
  114. is playing, so it doesn't always use the sound input on the
  115. diffusion-speed, since it is also good without it.  use 'n' to toggle
  116. this.  added triangular tilings for RD textures.  blocks on title page
  117. waiting for keystroke.  implemented mac version of fname2fnum to fix
  118. 'Z'. (released on mac only)
  119.  
  120.  
  121. release 1.11, as of May  6 1996
  122. location of data files now a variable in makefile as requested by
  123. joey@kite.preferred.com.  'm' in image rule like 'b' but follows image
  124. sequence.  in Makefile, added tiff.h tiffio.h, and dependencies to
  125. DIST, made linux version link statically.  autorule fixed (was
  126. starting at 3 not 4), fiddled with auto_mode basically to make rule_rd
  127. work better.  changed how rhythm is used by the flame/rotor.  mac
  128. version in cludes `big bomb' which runs at 640x400.
  129.  
  130. release 1.10, as of Mar 25 1996
  131. added cmap_path, added rule_rd to preferred list.  added rotating
  132. spiral to rd and slip.  added new image2grad, used in rd and slip..
  133. fill_board in slip works.  adjusted hist to ignore edges of screen, so
  134. it detects empty slip board from expansion.  fixed board doubling.
  135. added pixel replication on the mac, but it's much too slow, and the
  136. cmaps are broken.  added v simple mouse input on mac.
  137.  
  138. release 1.9, as of Mar 10 1996
  139. handles tiff images via libtiff, converted suck/* and title* to tiff.
  140. it only accepts tiff images in IBM-PC order (i think this is a fault of
  141. TIFFReadRGBAImage).  libtiff is the work of Sam Leffler    (sam@engr.sgi.com)
  142. and can be found at ftp://ftp.sgi.com/graphics/tiff.  various
  143. new diffusion patterns for RD textures, including prototype gradient
  144. mode.  properly refresh screen on exit on mac.
  145.  
  146. release 1.8, as of Feb 7 1996
  147. parameterized RD to various diffusion patterns, including driving by
  148. image.  RD dithers between kernels to allow any angle (eigenvectors)
  149. (try `dP6 RET |1 RET Sx'), but 1) even/odd zones due to rotated kernel
  150. 2) eigenvalues sometimes wrong because we don't mix in circular
  151. component. fixed waves (wasn't initializing because before it wasn't
  152. static so it was sharing values with shade).  added color, shape, and
  153. mood organs.  defined a-n on the mood organ.  (on the mac: fixed colors
  154. (had exchanged blue and green channels).  fixed keyboard handling (use
  155. GetOSEvent), added handling of command-q.  moved suck files into
  156. subdirectory.  hides cursor. R is 32 bits not just 16.)
  157.  
  158. release 1.7, as of Jan 30 1996
  159. added reaction diffusion textures, as per
  160. http://www.ccsf.caltech.edu/ismap/image.html.  lots more to do with
  161. these.  moved RD to 'd', various updates to manual.txt.
  162.  
  163. release 1.6, as of Jan 25 1996
  164. merged in version from laptop (exchanged rotor shapes `rectangular'
  165. and `vertical'.  added 'H' (horizontal) and 'J' (vertical) double heat
  166. buffer (though i think they're broken), added to auto_mode.)  mac
  167. version flushes events before it exits.  if not in emacs, then use CR
  168. to keep ticks on one line.  added delay with feedback control to keep
  169. frames per second near 15.  moved cmap pulse code into procedures.
  170.  
  171. release 1.5, as of Jan 15 1996
  172. improved Mac port: it basically works, though the keyboard handling is
  173. a mess.  it's based on polling so a quick key press-release is missed.
  174. i'm not sure how to get events without handing over control to other
  175. threads.  the mac version can only load ppm files, and for some reason
  176. i can't load files in a subdirectory.  various bug fixes.  added a
  177. bunch of new colormaps from paintings.  added image2cmap.c, which
  178. computes the colormaps.
  179.  
  180. release 1.4, as of Jan 10 1996
  181. flipped OpenGL version right-side-up, boosted pixel replication to
  182. 3x3.  note that some implementations of OpenGL perform terribly on
  183. pixel replication (eg a GU1-Extreme); in this situation try setting
  184. pix_rep to 1.  added flush to title screen display, added mac port,
  185. replaced missing title.gif file.
  186.  
  187. release 1.3, as of Dec 22 1995
  188. added ports to X windows and OpenGL (i was hoping it would be faster,
  189. but instead it's slower.  still upside down anyway).  fixed bug in
  190. slip (it was writing off the edge of the fb).  until my laptop
  191. recovers a bunch of other changes are lost on its disk.  in the
  192. meantime i reimplemented 'S' which toggles smooth/plain cmaps, cuz i
  193. like it so much.
  194.  
  195. release 1.2, as of 
  196. added manual.txt.  sometimes screen activity stops but still accepts
  197. key input, has the rule gone bad???.  reduced chance of using
  198. image_to_heat() in slip automode by 10x.  added symmetric life from
  199. torben, added fredkin rule and special filling for it (controlled by
  200. brain parameter 'v'). these still need some work.  adjusted edge
  201. conditions for all the acidlife rules.  doesn't overwrite files in
  202. dribble directory (write_fb_ppm).  displays any titleN.gif files (N =
  203. 0,1,2,...) on startup with keypress to go to next.  added pop_back to
  204. automode.  added 'D' permute colormap by bits, and incorporated into
  205. automode.  added angular slugs (shade.c). added ticking and fps
  206. (frames per second) printout.
  207.  
  208. release 1.1, as of Aug 14 1995
  209. adjusted how overdrive and rule_lock work in automode.  ' ' disables
  210. auto_mode.  added 'B' fade to black.  added quick startup option.
  211. adjusted bsize for the rotor (reduced the high end).  fixed clearing
  212. buffers with driving image.
  213.  
  214. release 1.0, as of Jul 14 1995
  215. auto_rule makes sure it starts out well.  on transition to
  216. rule_rug_image, clear the buffers with the driving image, too often we
  217. have noise, which looks bad.
  218.  
  219. release 0.20, as of Jul 12 1995
  220. fixed bad scanline bug in multi_rug.  redid many of the kbd controls
  221. so that shift and control are not needed for common controls, more
  222. context sensitive keys in general.  zxcvbn cause events, asdfghjkl;'
  223. switch modes, qwertyuiop[]| pick a parameter to vary, ,.1234567890 and
  224. return vary the parameter.  if you repeated hit a parameter key, it
  225. varies that parameter.  added lissajous and oscilloscope-oid to rotor,
  226. added pens to rotor (draws bsize rects instead of just dots), added
  227. image sequences, rearranged all sorts of image controls, wrote some
  228. sequences.  wrote manual.txt, explaining the ui.  fixed bug in initial
  229. parameters (wasn't setting speed_base).
  230.  
  231. release 0.19, as of Jun 18 1995
  232. added more images, cropped and tuned existing images.  tracks variance
  233. of pixels in fb, if it's too low, then randomized the fb.  improved
  234. next_contrasting_color, seems ok now.  in auto-mode, reduced chance of
  235. filling.  uses a checkerboard if no images are found in the suck dir.
  236. in rotorug, drift-mode is more likely to be chosen.  added mode-lock
  237. on 'L'.  added rug_multi mode.  more images in the suck dir.  added
  238. title page (need a better one though).  fixed %0 bug in
  239. image_random_tile().  added optional underflow to shade mode.  removed
  240. night-blue-sky and mauve-splat cmaps (too often result in
  241. near-blackness).  split off fast.c from bomb.c, and disabled
  242. optimization of bomb.c.  added blitting image tiles into the heat on
  243. '^I' and into the game board on '^U', '^Y' cycles auto-blit rate.
  244. added speed beat (rate on '}', size on '{').  reads cmaps at runtime.
  245. wrote image2cmap.  fixed uninitialized driver plane bug.
  246.  
  247. release 0.18, as of May 25 1995
  248. quick-flip auto-mode, redid interpretation of driving function in
  249. brain mode to include asymmetric diffusion kernels, added fuse mode
  250. (still needs work), fixed bug in writing ppm files.  when leaving
  251. modes that operate directly on the fb (eg slip, fuse), pixel values
  252. are interpreted as heat.  bsize made variable.
  253.  
  254. release 0.17, as of Apr 25 1995
  255. removed contents of dribble directory. added more auto-mode features.
  256. added rhythmic flames.
  257.  
  258.  
  259. release 0.16, as of Apr 21 1995
  260. added 'C' (invert driver) '^B' (load random image) 'Z' (combined zx
  261. and ^B), all basically for rug_image mode.  included a bunch of
  262. images. added 'X' = zcm for flame/rotor.  enabled `bent' flame
  263. variation (?).  reads gif files (code taken from xli, see copyright
  264. notices below).  '=' writes current screen into dribble
  265. directory. brain chooses random shift bits, and includes PHASE_ZAP
  266. code to prevent strobing (somewhat effective).  'P' modifies these
  267. shift bits, should build a different sub_brain_table for different
  268. shift bits.  added 'E', 'W', 'R' colormap pulsers.  added 'T' colormap
  269. brightener. added 'Q' which enters auto-mode immediately (instead of
  270. waiting for the time delay), made auto-mode fancier.  added some
  271. variations to slip. '^Q' speeds up auto-mode.  added many gif files to
  272. suck directory.
  273.  
  274. release 0.15, as of Feb 16 1995
  275. put drift_mode into distrib now that flame is fixed.  removed
  276. mode_life since it was never implemented and was causing a bug.  added
  277. terrible hacks so that random mode can get display images.  smoothed
  278. over transitions.  loading of files less hacked, holds 5 of them in
  279. memory for fast access, 'B' rotates through them.  code really getting
  280. cruddy.  moved rule_rug_image and support into image_rule.c.  included
  281. a ppm file in the release.
  282.  
  283. release 0.14, as of Feb 15 1995
  284. 'R' pulse_gparam (not quite right, i think), suck.ppm replaced by
  285. suck/$(p1).ppm (p1 still under 'o').  new drift modes for flames:
  286. rotation, and none (ie the flame stays still).  bug fix from
  287. bcsaller@mailbox.syr.edu (call vga_init()).  flames finally fixed by
  288. resetting point if it strays outside 1e10.  reads library of flames in
  289. at startup, 'M' sets to p1.
  290.  
  291. release 0.13, as of Feb 10 1995
  292. 'z' no longer resets flame coefs, 'm' does instead.  smooth colormap
  293. transition (though the whole cmap is reset every frame producing
  294. an icky video artifact on my display) from nix.  image mode on 'S'
  295. (reads from suck.ppm on '/') and wispy waves on 'A' from nix.  both of
  296. these are still quite rough.
  297.  
  298. release 0.12, as of Feb  7 1995
  299. mostly fixed flames.  nice!
  300.  
  301. release 0.11, as of Feb  7 1995
  302. used most of the brain parameters (p key), handles changing symmetry
  303. more smoothly, brain remaps heat, new compiler flags, flame option in
  304. rotor code (v key) (though still somewhat broken), pulsing (b
  305. key). generalized brain some more (see XXY), though still not
  306. used. twiddled constants, batched flame movement, added drift controls
  307. (\[, - keys).
  308.  
  309. release 0.10, as of Jan 23 1995
  310. memory maps frame buffer (still usually ignores width/height though),
  311. renamed the whole thing `bomb'.  redid the makefile.
  312.  
  313. release 0.9, as of Jan 19 1995
  314. kbd commands redone, new rules brain (lots of unused parameters here)
  315. and shade, broke rules into separate files
  316.  
  317. release 0.8, as of Jan 13 1995
  318. more kbd commands (including simple scripting), bugs fixed
  319.  
  320. release 0.7, as of Jan 10 1995
  321. keyboard input, life/rug variants are mirrored
  322.  
  323. release 0.6, as of Jan  3 1995
  324.  
  325. -----------------------
  326.  
  327. the following is for gif.h and gif.c
  328.  
  329. /****
  330.   Copyright 1989, 1990 Kirk L. Johnson
  331.  
  332.   Permission to use, copy, modify, distribute, and sell this
  333.   software and its documentation for any purpose is hereby granted
  334.   without fee, provided that the above copyright notice appear in
  335.   all copies and that both that copyright notice and this
  336.   permission notice appear in supporting documentation. The
  337.   author makes no representations about the suitability of this
  338.   software for any purpose. It is provided "as is" without express
  339.   or implied warranty.
  340.  
  341.   THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
  342.   INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS,
  343.   IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, INDIRECT
  344.   OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
  345.   LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
  346.   NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
  347.   CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  348. ****/
  349.  
  350. the following is for xli-image.h
  351.  
  352. /*
  353.  * Copyright 1989, 1993 Jim Frost
  354.  *
  355.  * Permission to use, copy, modify, distribute, and sell this software
  356.  * and its documentation for any purpose is hereby granted without fee,
  357.  * provided that the above copyright notice appear in all copies and
  358.  * that both that copyright notice and this permission notice appear
  359.  * in supporting documentation.  The author makes no representations
  360.  * about the suitability of this software for any purpose.  It is
  361.  * provided "as is" without express or implied warranty.
  362.  *
  363.  * THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
  364.  * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN
  365.  * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, INDIRECT OR
  366.  * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
  367.  * OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
  368.  * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE
  369.  * USE OR PERFORMANCE OF THIS SOFTWARE.
  370.  */
  371.  
  372.  
  373. the following is for the code taken from xscreensaver:
  374.  
  375. /* xscreensaver, Copyright (c) 1993, 1994, 1995, 1996, 1997
  376.  *  by Jamie Zawinski <jwz@netscape.com>
  377.  *
  378.  * Permission to use, copy, modify, distribute, and sell this software and its
  379.  * documentation for any purpose is hereby granted without fee, provided that
  380.  * the above copyright notice appear in all copies and that both that
  381.  * copyright notice and this permission notice appear in supporting
  382.  * documentation.  No representations are made about the suitability of this
  383.  * software for any purpose.  It is provided "as is" without express or 
  384.  * implied warranty.
  385.  */
  386.  
  387.