This is README for the Unix/X11 port of G-Force 1.1.6.  It deals with
things that are only relevant in the Unix port.

If you are wondering about G-Force itself, look at docs/G-Force.txt
and "docs/G-Force Extras.txt".  They are pure text versions of
documentation that was distributed with the Windows version of G-Force
1.1.6.  The originals are the files with the .doc extension.

Quick Start
-----------

./configure
make
make install

If everything succeeded, you should now be able to run standalone G-Force
as gforce and select the G-Force visualization plugin in XMMS.  Press
'?' to get a list of keyboard commands.  (Note:  If you run G-Force before
you install it you certainly won't be impressed because it won't be able
to find any of it's data files.)

Using G-Force
-------------

The  standalone program is  called gforce.   Run it and you'll  get a
display using random data.

To use the XMMS plugin run xmms, bring up the visualization plugins 
dialog (<Ctrl>+<V>), select G-Force from the list and click on 
"Enable Plugin".  G-Force will then use actual audio input.

G-Force uses a configuration file and many data files.  The data files
are in /usr/local/share/gforce or wherever you told install to put
them.  The configuration file is "$HOME/.G-Force".  For more info about
these look at files in the docs directory of the distribution. 

Note that many of the files are Macintosh text format.  Lines end with
a carriage return instead of a line-feed.  Translation is easy with tr
("tr '\r' '\n' < infile > outfile") and G-Force should be able to read
Unix, MS-DOS and Macintosh text files.

Detailed installation issues 
----------------------------

For more info about the ./configure mechanism and the available
options look at the file named INSTALL.

Basically ./configure does various checks.  It must find the X11
header files and libraries.  If it doesn't find XMMS stuff, the XMMS
plugin won't be built.  (Though you could probably override that and
build it anyways; for now it doesn't depend on XMMS.)

./configure will default to -O2 optimization.  You can get a bit of a
performance improvement if you use more optimization.  If you're using
gcc on a pentium or any better x86 CPU you could do something like
this when you run configure:
 
CFLAGS="-O3 -march=pentium -mpentium -fomit-frame-pointer" CXXFLAGS="-O3
-march=pentium -mpentium -fomit-frame-pointer" ./configure

(That was all one line.)

If you're building with GCC and g++ you'll see lots of warnings.  Most
of them are about about multi-character character constants as in
"long a = 'abcd';".  GCC does the right thing with these.  If things
break on some other compiler, then try GCC and contact me
(bgjenero@sympatico.ca).

Here's a list of what will be installed and a typical directory where
it will go.

standalone:  gforce                  /usr/local/bin

XMMS plugin: libgforce.so            /usr/lib/xmms/Visualization/ 

data files:  G-Force ColorMaps/*     subdirectories of /usr/local/share/gforce
             G-Force WaveShapes/*    ...
             G-Force Particles/*     ...
             G-Force DeltaFields/*   ...
	     deffont                 /usr/local/share/gforce

docs:        docs/*                  /usr/local/share/gforce/docs
             README, INSTALL, etc.   


Problems and (Maybe) Solutions
------------------------------

Portability: Yes, I want to make it portable.  If you run into a
problem let me know, and I will include the fix in the next release.

If make dies with an error message containing "read.c:892: failed
assertion", you are using an old buggy version of GNU make, and it is
failing due to spaces in filenames.  Get GNU make 3.79.1 or later from
your distribution or from ftp://ftp.gnu.org/gnu/make/ 
That's probably a good thing to try if you're having any other
make-related problems.

If you configure gives you the error "configure: error: X11 headers
and libraries are required" you will need to install those.  You're
looking for stuff like "Xlib.h" and "libX11.*".  They're probably
found in some X development package or something like that.  (Yeah,
you may need to do this even if you're already able to run an X server
and X clients.)

If configure fails to find Xmms it won't build the Xmms plugin.  If
you actually have Xmms that probably means you don't have the
developer files.  You need stuff like the "xmms-config" shell script
and "plugin.h".  Try to find some "Xmms development" package in your
distribution or get XMMS from http://www.xmms.org/ (There is a way
around this, but if you want to build the Xmms plugin without Xmms you
are on your own.)

If G-Force is boring and the the '?' key doesn't bring up help then
G-Force isn't finding data files.  Check if you have done "make
install".  Also note that the directory is hard-coded in at compile
time.

Using a private colormap in full screen mode: This is a problem.  My
graphics library (libxpce) has several strategies for dealing with it,
but since there's no interface for changing libxpce options you can't
change the strategy.  The default strategy uses window manager hints
to create a full screen window, and some window managers won't respect
them.  If you're using TrueColor you don't have to worry about this.

Speed: Yeah, this is CPU intensive.  I should add mode switching
support for full screen mode.

Invalid math operations: G-Force executes user-specified expressions
(from config files) with practically no error checking.  On a Pentium
this seems okay... invalid floating point computations like dividing
by zero just return garbage results.  I don't know if other
architectures do the same thing.  You certainly don't want to get a
SIGFPE. 

Crashes: You can let me know about crashes, but I do need information
on what happened.  The best info would be a procedure to reproduce the
crash and/or info from a debugger.

Authors and websites
--------------------

G-Force force was written by Andy O'Meara <aco5@cornell.edu>.  The
G-Force web page is at:  http://55ware.audiogalaxy.com/gforce/ 
You probably don't want to bug Andy with Unix-port related issues
because he is not involved in that.  Do check out the web page.

G-Force was ported to Unix/X11 by Boris Gjenero
<bgjenero@sympatico.ca>.  You can download the Unix version of G-Force
from: http://www.mnsi.net/~bgjenero/gforce/
