OpenGL ssystem 1.4 Sep-13-1998
------------------------------


What is ssystem:
----------------

	ssystem is an OpenGL Solar System simulator. Visit the Sun, the
  nine planets and a few major satellites (catalog based background stars are
  also supported) with four camera modes.


Accuracy:
---------

	Although ssystem is not 100% accurate I've tried to keep it as close
  to reality as possible. However, ssystem goal has always been visual
  appearence rather than accuracy, so you may find many bugs in positioning
  algorithms.

	Only planets and Moon positions are within a range of real
  positions, all other satellites (and though their orbits are, more or less,
  correct) aren't in their real positions.


System requeriments:
--------------------

	-Linux/UNIX or Windows 95/NT OS
	-OpenGL library (tested with Mesa 3.0 and Microsoft DLLs)
	-GLUT library (tested with 3.7)
	-JPEG library (tested with 6.0.1)
	-3D card (NOT REQUIRED but HIGHLY RECOMENDED) tested on:
		Voodoo Graphics (linux and win95)
		Voodoo Rush	(linux and win95)
		Riva 128	(win95)
		Permedia	(win95)

	If your 3d chipset is not listed above and ssystem runs hardware
  accelerated let me know.

	See Makefile for compile time options.


Installation notes:
-------------------

	LINUX:
		-Get OPENGL/GLU/GLUT compliant libraries.
		 (Mesa includes all these and it's easy to compile, get it
		  here --> http://www.ssec.wisc.edu/~brianp/Mesa.html)
		
		-Edit Makefile.

		-Run 'make' and hopefully it's done.


	WINDOWS:
                -Ensure you got OPENGL32.DLL GLU32.DLL and GLUT32.DLL. If
                 you don't download them from ssystem homepage.
		 ( http://www1.las.es/~amil/ssystem )

		-I've included a Visual C++  Makefile (Makefile.win) in the
		 source distribution. It won't work if you try to link
		 against compiler OPENGL dafault libs, so once again
		 I recommend you getting Mesa. JPEG library binary and
		 header files are now included.

		-ssystem's behavior is quite strange under some OpenGL drivers.
		 AFAIK is not ssystem's fault. Contact your card vendor for
		 a driver update.


        3DFX:
                -DLLs with 3dfx Voodoo Graphics support are availables from
                 ssystem homepage. Unless these DLLs are in the same
                 directory as ssystem.exe or in your search path (first
                 method is preferred) the program will use default OpenGL
                 DLLs (if installed) and framerate will be VERY low.



Command line options:
---------------------

	-bench	

		Aborts program execution after 1000 frames, displaying
		framerate

	-fullscreen [mode_string]

		Runs program in full screen mode (doesn't work very well
		under some linux window managers). Windows 95 version lets
		you choose the videomode. Just add a mode string after the
		fullscreen keyword. Mode string sintax is:

			WIDTHxHEIGHT:COLOR_DEPTH@REFRESH_RATE

		Refresh rate is optional. So if you want to run ssystem at
		640x480 32 bits colordepth your command line is something like:

			ssystem -fullscreen 640x480:32

		If you want a 100 Hz refresh rate then type:

			sssytem -fullscreen 640x480:32@100


		NOTE: NOT ALL VIDEOMODES ARE SUPPORTED. IN FACT, ONLY A FEW
		VIDEO MODES WORK IN MY COMPUTER. IF THE VIDEO MODE YOU'VE
		SELECTED IS NOT SUPPORTED SSYSTEM USES CURRENT VIDEO MODE.


	-slices N
		
		Sets sphere SLICES parameter to N

	-stacks N

		Sets sphere STACKS parameter to N


	These two last options (slices and stacks) have a great performace
  impact (see Performance section)



Performance:
------------


	Hardware acceleration is not required, but highly recommended for
  smooth framerates. I get 64fps (running on Linux) with the "-bench" command
  line option in my Pentium 233 (overclocked to 266). The Planets' Sphere 
  detail (SLICES and STACKS) is the key factor in performance, increse them
  if your CPU is powerful enough (I get over 110fps with both set to 2).

  	Default value for SLICES and STACKS is 20 but you can play with these 
  values in the command line (see Command line options section).



Keyboard bindings:
------------------

	Home/End: Selects previous/next target body
	SHIFT + Home/End: Selects previous/next source body in B2B camera mode
	h : Online help
	t : Texture on/off
	l : Lighting on/off
	f : Flat/Smooth shading model
	r : Real time on/off
	s : Stars on/off
	d : Demo mode on/off
	n : Moves camera near current planet
	c : Camera modes
	p : Pause
	b : Distant bodies labels on/off
	i : Info (HUD) on/off
	j : Joystick control on/off
	Page Up/Down: Increase/decrease speed
	z/Z: Increase/decrease zoom factor
		(only available in B2B and orbiter camera modes)

  Hold SHIFT for faster operation in the following key bindings:

	+/-: Increase/Decrease time factor
	Arrow keys: Rotate camera


Camera modes:
-------------

	There are 4 camera modes:

	-Linked: This is the default mode. Camera follows the selected body.
	 key 'n' is very useful in this mode.

	-Body to Body: This mode lets you view body X as seen from body Y.

	-Orbiter: Camera moves around the select body in a circular orbit (
	 completes an orbit in 0.5 local days). Try the zoom key 'z' in this
	 mode.

	-Free Camera: You control the camera with arrow keys/josytick/mouse.


Camera movement:
----------------

 -Keyboard

	When in free camera mode arrow keys rotates camera, Page Up/Down 
	increase/decrease camera speed.

	Linked mode is a bit different, here arrow keys are useless. You can
  	move the camera towards the planet by increasing speed. Once you're
	near the planet program sets camera speed to zero.


 -Mouse

	In free camera mode you can control the camera with the mouse by left
	clicking over the window (keep it pressed)  and moving the mouse.

 -Joystick

	As with the mouse you have to select free camera mode, then activate
	joystick (j). X and Y axis control camera, buttons A and B control
	acceleration. Press both buttons to set camera speed to 0.

  

Known bugs:
-----------

	Outer bodies movement is a bit jerky. Although ssystem uses double
  precision floating point arithmetic, Mesa uses simple precision arithmetic
  internally (faster and precise enough for most aplications). I'm still
  working on it.



ACKNOWLEDGEMENTS:
-----------------


-Brian Paul (Mesa)
	http://www.ssec.wisc.edu/~brianp/MesQ.html 

-Daryll Strauss (Linux Glide)


-David Bucciarelli (Mesa 3dfx driver)
	http://www-hmw.caribel.pisa.it/fxmesa/index.shtml

-Curtis L. Olson (star catalog stuff)


-This software is based in part on the work of The Independent JPEG Group


-Galilean and Saturn satellites computed using code extracted with
 permission from XEphem, (c) 1997 Elwood Charles Downey
	http://iraf.noao.edu/~ecdowney/xephem.html

-Keith Burnett's planet positioning algorithm used with persmission.
	http://www.xylem.demon.co.uk/kepler/

-Nacho (beta testing)

-Kevin Kamel (US mirror)

-Rafael Barbera (v1.4 performance improvement trick)

-And of course, thanks to all of you who help me with suggestions and tips.


NOTE:
-----

	This is my first OpenGL program and it's still in developmental stage,
  so I'd really appreciate your feedback. 

	Constructive criticism is always welcome. :-)

	Check ssytem homepage for updates:

			http://www1.las.es/~amil/ssystem

Raul Alonso
<amil@las.es>

