Crazy Marbles

Requirments:
	-3dfx voodoo card
	-glide (I wrote this with 2.42, but I would suspect other versions would work too. If you don't have it get it at www.3dfx.com)
	-p90 or above (you could try lower i guess :)

	I don't know about memory. I have 48meg of memory and I know it ran of 32megs too.
	I don't know if anyone tested it with less than 32megs, but I don't see why it
	wounldn't run on 24 or 16 megs. If you figure out the minimum drop me a email.
	I don't know how windows handles aduio commands on machines that don't have a
	sound card, so a sound card may also be required. This shouldn't be much of a problem
	to most of you out there. Again drop me a email and let me know about the machines
	without sound cards.

Description:
	There are five levels in which you try to guide your marble though a number of
	obsticles to safety. You will have 45 seconds for each level to accomplish this.
	The object is to complete all the levels in as little time as possible. If
	you complete all five maps you will be given your total times.

	The maps consist of holes and hills. You should try to avoid the holes. The hills
	may help or hinder you.  If you fall into a hole or run off the playing field you
	will lose 5 seconds of your time(4 right away and 1 second pause to reorientate
	yourself). After falling into a hole you will be placed in a "safe" location.  
	Sometimes it will be nessecary to back up so you can gain enough momentum to make
	it over a hill.

	I'd like to give thanks to a good friend of mine, Rich Ryder, for the title screen.
	I'll also give credit to a old online friend of mine for a small amount of midi code
	I used of his. I only knew him as Ricardo on Kali. Ricardo if your reading this drop
	me a email :)

Controls:
	-arrow keys: apply a force to the marble
	-F1: start/continue
	-F2: show performace stats (default off)
	-F3: show normal and tangent (default off)
	-F4: toggles "far see" on and off (default off)
	-F12: pause/unpause (game also pauses if you alt+tab)
	-ESC: exit

Things to do / misc.:
	1) Improve physics of marble
		I don't think this would be too difficult, but who wants to study physics? :)
	2) Fix a small glitch in the rendering engine. A row or two might not be rendered
		under certain circumstance(when a hill top goes off the edge of the screen).
	3) Network play. It would be nice to race against others. This would require a little
		work. Not only would you have to code the network you would also have to add
		the physics for when the marbles collide. Eight marbles on the same map would be
		interesting. Maybe i'll find time to do it :)
	4) Add a high score and save the high scores to file. First thing i'd probably do.
	5) Make a file that contains all the names of each level. Right now they are set in stone
		in the code.

	At first I thought this project was due March 1st, then I learned I had been mistaken
	and it was due on March 16th I used my new found time to optimize the engine. I was
	able to increase the speed by around 10fps. On my ppro200 I mantain 30fps as a minimum,
	with it often being in the 40s and 50s. A guy with a p90 said he maintained around 20 fps.
	Sorry I didn't add all the above stuff to this release, but I go to school :) If any
	of you would be interested in coding any of the above or are just curious I would be
	happy to send you my source code. Just drop me a email.

	If you are interested in making levels it isn't too difficult. While I didn't make
	an editor it can still be done with a simple text editor. The file format is as follows:

------------------------------------------------
	r1	g1	b1			//color of playing field (even)
	r2	g2	b2			//color of playing field (odd)
	r3	g3	b3			//marble color

	numberholes				//actually holes + hills

	x	y	radius	height		//radius should be positive. If height is negative you have a hill - positive you have a hole.
	.					// x should be -700 to +700
	.					// y should be -6000 to +6000
	.
------------------------------------------------
	The x and y coordinates can be slightly larger or smaller if you would like the center
	of the hill or hole off the playing field. Typical values of radius is 50 to 200 and
	height -1000 to 1000. To give you an idea of what these values mean - the marble has a
	radius of 20, or a diameter of 40. The file should have a .dat extension.

	Right now the names of the files are set in stone within the code. If you would like to
	play your own level you will have to replace one of the existing maps. BTW the comments
	used above are not allowed in real map files :)

	I'd be happy to hear from you. If you have any comments, complaints, or problems just
	drop me a email. This is really my first attempt at writing a win32 progarm.  I'd
	appreciate it if you would let me know if I am doing something stupid or if there
	is somethings I could be doing better. Oh and sorry for that huge bmp...

	Michael Boyko
	boykom@andrews.edu