Thu Jul  8 21:59:26 PDT 1999

Added fractal background, defaults to cloud palette. Change with 'f' key.
Added various palettes for fractal background, change with 'c' key.
Added 'h' option for hiding everything but the balls.
Added 'r' option to make the hoses spin, the idea came from
brig6320@kennedy.ecn.ou.edu.

Wed Jun 30 21:18:42 PDT 1999

Added presets by using keys 1-9 or shift 1-9 to store. 'x' key deletes
all the hoses and blocks. Stores to $HOME/.fountspreset#. Doesn't write
under win32, probably because name begins with '.'.

Changed 'm' option so mixing still draws spheres instead of solid colored
disk.

Set up to use SDL_SetTimer() so speed is the same across machines. The
balls move at a virtual speed of 100 frames/second. I was using the
friendly pause() function in case the cpu finished drawing before the
interrupt, but that doesn't port well. Instead I switched to an ugly
busy wait, which is portable but wasteful. Oh well...There was no need
to use threads to get the fixed virtual speed. After rendering a frame,
I count how may interrupts occured and run the ball movement that many
times. So on average the balls move at 100 frames/second, but are only
rendered as fast as the machine can handle, up to 100 frames/second.


Mon Jun 28 10:23:35 PDT 1999

Lots of changes. I got rid of the data/ directory (and the ants and font
stuff). The balls are now rendered and can be scaled on the fly. I also
added the 'e' eye demo, where an array of human looking eyeballs look at
the cursor. Kind of like xeyes. The balls are bigger in the founts part and
I think they look better. Also more colors to choose from, and a different
mechanism for coloring the balls. At startup the game figures out the
ball size based on the window resolution. Then it renders 512 balls in
all hues, 3 bits per gun (RGB). Then when the program wants a ball of a
specific color, it chooses the correct rendered one.

The rendering also does 8 or 16 bits directly. Doesn't work for other
bits/pixel. It used to rely on SDL mapping 8 bits -> other resolutions,
but I wanted more colors so I began writing the 16 bit code directly. Then
I went back and dealt with the 8 bit rendering just for completeness. Now
I'm too lazy to deal with 24 or 32 bits/pixel...

I want the color selection to be different, perhaps right clicking on a
hose will bring up a color wheel. I don't like having to drag the hoses
down to the bottom colors to change their color, and it doesn't allow for
enough colors.

I also want to change the math so there are 2 threads, one which does the
ball movement, and one that renders to the screen. The movement one I want
to be fixed at 60 hz. So slower machines will just get a lower framerate
but the balls will average out to the same speed. I haven't used the thread
library yet. Probably I'll look at SDL code to see how they used it. Cool
concept, niftier than fork().
