#LyX 1.1 created this file. For more info see http://www.lyx.org/
\lyxformat 218
\textclass linuxdoc
\language english
\inputencoding default
\fontscheme default
\graphics default
\paperfontsize default
\spacing single 
\papersize a4paper
\paperpackage a4
\use_geometry 0
\use_amsmath 0
\paperorientation portrait
\secnumdepth 3
\tocdepth 3
\paragraph_separation skip
\defskip medskip
\quotes_language english
\quotes_times 2
\papercolumns 1
\papersides 1
\paperpagestyle default

\layout Title

XMAME/XMESS DOCUMENTATION
\layout Author

Juan Antonio Martinez 
\family typewriter 

\begin_inset LatexCommand \url[jantonio@dit.upm.es]{mailto:jantonio@dit.upm.es}

\end_inset 


\family default 
 and Hans de Goede 
\family typewriter 

\begin_inset LatexCommand \url[hans@highrise.nl]{mailto:hans@highrise.nl}

\end_inset 


\family default 
 and Rene' Herrmann (4 doc/sgml) 
\family typewriter 

\begin_inset LatexCommand \url[rene.herrmann@berlin.de]{mailto:rene.herrmann@berlin.de}

\end_inset 


\family default 
 and Lawrence Gold (minor editing) 
\family typewriter 

\begin_inset LatexCommand \url[gold@aros.net]{mailto:gold@aros.net}

\end_inset 


\layout Date

v2.1.1, xx.
 January 2001
\layout Abstract

xmame/xmess documentation with an installation guide, the FAQ (frequently
 asked questions), hints, tips and tricks, the changes on the code and many
 more!
\layout Standard


\begin_inset LatexCommand \tableofcontents{}

\end_inset 


\layout Section

Introduction and Links 
\begin_inset LatexCommand \label{Introduction and Links}

\end_inset 


\layout Subsection

Keep everything up-to-date!
\layout Standard

The most recent copy of this guide, the xmame-sources and many more can
 be found on the xmame project homepage at 
\begin_inset LatexCommand \url[http://x.mame.net/]{http://x.mame.net/}

\end_inset 


\layout Subsection

Some Links
\layout Itemize

The official M.A.M.E home is at 
\begin_inset LatexCommand \url[http://www.mame.net]{http://www.mame.net}

\end_inset 


\layout Itemize

The very best ROM site on this planet is at 
\begin_inset LatexCommand \url[http://www.mame.dk/]{http://www.mame.dk/}

\end_inset 


\layout Itemize

grustibus, the 
\series bold 
very good
\series default 
 frontend (if you gnome) 
\begin_inset LatexCommand \url[http://grustibus.sourceforge.net/]{http://grustibus.sourceforge.net/}

\end_inset 


\layout Itemize

gnomame, another great gnome-based frontend 
\begin_inset LatexCommand \url[http://gnomame.sourceforge.net/]{http://gnomame.sourceforge.net/}

\end_inset 


\layout Itemize

tkmame, the Tcl/TK frontend that works in Linux/Unix and MS Windows 
\begin_inset LatexCommand \url[http://tkmame.retrogames.com/]{http://tkmame.retrogames.com/}

\end_inset 

 
\layout Itemize


\series bold 
MAME
\series default 
 
\series bold 
A
\series default 
ction 
\series bold 
R
\series default 
eplay 
\series bold 
P
\series default 
age for those who want to have a  look at other monitors at 
\begin_inset LatexCommand \url[http://marp.retrogames.com/]{http://marp.retrogames.com/}

\end_inset 


\layout Itemize

and of course don't forget our project homepage at 
\series bold 

\begin_inset LatexCommand \url[http://x.mame.net/]{http://x.mame.net/}

\end_inset 


\layout Subsection

Pending Jobs - or TODO
\layout Standard

If you think you can help with the todo list or you can make a  contribution
 that you feel is interesting, please send mail to the xmame/xmess coordinator.
 See 
\begin_inset LatexCommand \ref[Mail]{Mail}

\end_inset 

 for contact information.
\layout Itemize

Optimise mouse warping.
\layout Itemize

Remove osd_input_init_post, add display ready flag.
\layout Itemize

Updating of fps is off (dirty marking problem) with vector games.
\layout Itemize

Update porting.txt.
\layout Itemize

Convert all remaining sound drivers to plugins.
\layout Itemize

Rewrite display/input code to be more modular, oo-ish, and usable as a separate
 library.
\layout Itemize

Split 
\family typewriter 
-[no]scanline
\family default 
 option into emulated and real scanline options.
\layout Itemize

Add an option to specify which resolution to use, add clipping and panning
 if it doesn't fit and use it anyway.
\layout Itemize

Use Pentium TSC for uclock where available.
\layout Itemize

Network:
\begin_deeper 
\layout Itemize

Fix since the dos team broke it, find out if the dosnet team is still alive.
\layout Itemize

Add mouse/joystick support to network play
\layout Itemize

Try converting network support to tcp, currently we have no error correction.
\layout Itemize

Make network code more robust, version check, input settings check, etc.
\end_deeper 
\layout Itemize

Check x11-joystick.
 Rumor has it it's broken, but then again there's only one bug-report, so
 it seems no one is using it.
\layout Itemize

fm soundhack for linux-i386.
\layout Itemize

Make which messages are emitted and when configurable (log-type's and log-level)
, make fileio emit messages about which files it tries to open, to help
 debug rom-loading problems, and walk through all messages xmame emits giving
 them all a standard format like:
\begin_deeper 
\layout Verbatim

OSD:        Info:    bla
\newline 
X11-window: Warning: bla
\newline 
Svgalib:    Error:   bla
\end_deeper 
\layout Itemize

Add scancode 128-255 for non-PC keys like F13 -- F24, more keypad keys,
 etc., update all display targets to use this.
\layout Itemize

Also see the text todo file, kept around to quickly enter stuff while hacking:
 
\begin_inset LatexCommand \url[todo]{todo}

\end_inset 

.
\layout Section

Compiling, Setting Up and Starting xmame/xmess
\layout Standard

Note: This section is not a Unix tutorial.
 You need to know some basic  Unix commands to compile and install xmame/xmess.
\layout Subsection

Requirements     
\layout Itemize

GNU make is MANDATORY in ALL Systems, even if you use a different  compiler.
 
\layout Itemize

On all platforms zlib is now needed since the core uses it.
 If you don't have zlib, a stripped version is included with xmame.
 See: 
\begin_inset LatexCommand \ref[FAQ: Why do I get gz_open symbol not while compiling?]{FAQ: Why do I get gz_open symbol not found while compiling?}

\end_inset 

 and 
\begin_inset LatexCommand \ref[FAQ: Why do I get zlib.h not found?]{FAQ: Why do I get zlib.h not found?}

\end_inset 


\layout Itemize

You are encouraged to use a GNU development environment: gcc, gmake, gnu-
 ar.
 Lots of problems are found due to the very permissive syntax in gcc, so
 if you use a strictly ANSI C compiler, you'll get lots of warnings, and
 if the version of xmame/xmess is not fully debugged, compilation errors.
\layout Itemize

Xmame compilation breaks when using egcs-1.1.x or gcc-2.95, use 
\family typewriter 
-fno-strict-aliasing
\family default 
 to fix it.
 gcc-2.95.1 does work with 
\family typewriter 
-fstrict-aliasing
\family default 
, and gives a nice speed increase.
\layout Itemize

Xmame compilation also breaks when using Red Hat 7's latest (as of 16 January
 2001) update for gcc.
 If you experience problems, please either downgrade your compiler to the
 one included on the Red Hat 7 CD-ROM, or try replacing 
\begin_inset Quotes eld
\end_inset 

gcc
\begin_inset Quotes erd
\end_inset 

 in the Makefile with 
\begin_inset Quotes eld
\end_inset 

kgcc
\begin_inset Quotes erd
\end_inset 

, which will invoke egcs-1.1.2.
 (But please see above about the 
\family typewriter 
-fstrict-aliasing 
\family default 
flag.)
\layout Subsection

Follow these steps to compile xmame/xmess
\layout Enumerate

See 
\begin_inset LatexCommand \ref[Compile Notes for Specific Operating Systems]{Compile Notes for Specific Operating Systems}

\end_inset 

 for platform specific compiling information.
\layout Enumerate

See 
\begin_inset LatexCommand \ref[Display subsystem specific comments and notes]{Display subsystem specific comments and notes}

\end_inset 

 for special display methods information.
\layout Enumerate

Download the xmame/xmess source files archive.
\layout Enumerate

Move the xmame/xmess source files archive to a suitable work directory.
 When you extract the archive, sub directories will be created under the
  work directory.
\layout Enumerate

Rename the source files archive so its extension is .gz, so that gzip doesn't
 complain.
 For example, change 
\family typewriter 
xmame-0.34b1.1.tgz
\family default 
 to 
\family typewriter 
xmame-0.34b1.1.tar.gz
\layout Enumerate

Use gzip -d to uncompress the archive.
 For example, type:
\begin_deeper 
\layout Verbatim

gzip -d xmame-0.34b1.1.tar.gz
\end_deeper 
\layout Enumerate

Extract the files with tar.
 For example, type:
\begin_deeper 
\layout Verbatim

tar xvf xmame-0.34b1.1.tar
\end_deeper 
\layout Enumerate

After extracting the archive, change to the subdirectory created by  the
 extraction process.
 For example, after extracting the xmame-0.34b1.1.tar archive, a directory
 named 
\family typewriter 
xmame-0.34b1.1
\family default 
 is created.
 Change to it.
 This directory is the top of the source tree.
\layout Enumerate

Copy makefile.unix to Makefile, the distributed Makefile is used for development
 and is not a good starting point!
\layout Enumerate

Edit the 
\family typewriter 
Makefile
\family default 
 and change the settings according to your system.
 The default 
\family typewriter 
makefile.unix
\family default 
 is preconfigured to run under X11/Linux.
 Be careful editing this file.
\begin_deeper 
\layout Itemize

If you intend to compile in X11 joystick support, type the following to
 see the available Xdevice list:
\begin_deeper 
\layout Verbatim

make xlistdev; ./xlistdev
\end_deeper 
\layout Itemize

Choose the desired device and re-edit Makefile, setting the option X11_JOYNAME
 to the correct device.
\end_deeper 
\layout Enumerate

Compile xmame/xmess by typing:
\begin_deeper 
\layout Verbatim

make
\end_deeper 
\layout Enumerate

If the compile fails, report the problem to the author.
\layout Enumerate


\series bold 
*** YOU MAY NEED TO BE root TO PERFORM THIS STEP ***
\series default 
\lang american
 
\lang english
To install xmame/xmess, type:
\begin_deeper 
\layout Verbatim

make install
\end_deeper 
\layout Enumerate

If you want you can now build xmame/xmess for another target/display method,
 otherwise skip to the next step.
\begin_deeper 
\layout Enumerate

If you want to also build for another target repeat repeat the 
\family typewriter 

\begin_inset Quotes eld
\end_inset 

make
\begin_inset Quotes erd
\end_inset 


\family default 
 and 
\family typewriter 

\begin_inset Quotes eld
\end_inset 

make install
\begin_inset Quotes erd
\end_inset 


\family default 
 steps adding 
\family typewriter 

\begin_inset Quotes eld
\end_inset 

TARGET=<target>
\begin_inset Quotes erd
\end_inset 


\family default 
 to the make command for example:
\begin_deeper 
\layout Verbatim

make TARGET=mess
\newline 
make install
\end_deeper 
\layout Enumerate

If you want to also build for another display method repeat the 
\family typewriter 

\begin_inset Quotes eld
\end_inset 

make
\begin_inset Quotes erd
\end_inset 


\family default 
 and 
\family typewriter 

\begin_inset Quotes eld
\end_inset 

make install
\begin_inset Quotes erd
\end_inset 


\family default 
 steps adding 
\family typewriter 

\begin_inset Quotes eld
\end_inset 

DISPLAY_METHOD=<method>
\begin_inset Quotes erd
\end_inset 


\family default 
 to the make command for example:
\begin_deeper 
\layout Verbatim

make DISPLAY_METHOD=svgalib
\newline 
make install
\end_deeper 
\layout Enumerate

You can also combine the 2 above for example:
\begin_deeper 
\layout Verbatim

make TARGET=mess DISPLAY_METHOD=svgalib
\newline 
make install
\end_deeper 
\end_deeper 
\layout Enumerate

In your home directory, create a subdirectory called .xmame.
\layout Enumerate

From the top of the source tree, copy the file doc/xmamerc.dist to the ${HOME}/.xm
ame/ directory.
 (For xmess do this for xmessrc)
\layout Enumerate

If desired, copy xmamerc.dist to the global xmamerc location as "xmamerc"
 (for xmess, copy xmamerc.dist to xmessrc).
 The global xmamerc location is defined in the Makefile.
\layout Enumerate

Edit ${HOME}/.xmame/xmamerc to match your preferences.
 (For xmess, edit ${HOME}/.xmess/xmessrc)
\layout Enumerate

Be sure that the DISPLAY and PATH environment variables are  set correctly.
\layout Enumerate

Make sure your ROM images are installed.
\layout Enumerate

Start the X-Window System.
 (Unless you compiled for a different display method in which case you skip
 this step.)
\layout Enumerate

Start xmame/xmess.
 For example:
\begin_deeper 
\layout Verbatim

/usr/games/xmame.x11 dkong
\end_deeper 
\layout Subsection

If you have problems compiling, installing and starting xmame/xmess...
     
\layout Itemize

Read  
\begin_inset LatexCommand \ref[Xmame frequently asked questions]{Xmame frequently asked questions}

\end_inset 


\layout Itemize

Read (the recent parts of) 
\begin_inset LatexCommand \ref[Changelogs]{ChangeLogs}

\end_inset 

.
 They might contain some hints about recent changes which aren't fully documente
d yet.
\layout Itemize

Check 
\begin_inset LatexCommand \ref[Compile Notes for Specific Operating Systems]{Compile Notes for Specific Operating Systems}

\end_inset 

 for operating system-specific notes.
 You may need to do something special for your operating system.
\layout Itemize

Check 
\begin_inset LatexCommand \ref[Display subsystem specific comments and notes]{Display subsystem specific comments and notes}

\end_inset 

 for display subsystem-specific notes.
 You may need to do something special for your display system.
\layout Itemize

If you get an error about gz_open and a bunch of other functions not found
 during linking, read: 
\begin_inset LatexCommand \ref[FAQ: Why do I get gz_open symbol not while compiling?]{FAQ: Why do I get gz_open symbol not found while compiling?}

\end_inset 

 and 
\begin_inset LatexCommand \ref[FAQ: Why do I get zlib.h not found?]{FAQ: Why do I get zlib.h not found?}

\end_inset 

.
\layout Itemize

Be sure that the rompath in your xmamerc/xmessrc is correct; see 
\begin_inset LatexCommand \ref[FAQ: Where do roms.images.etc go?]{FAQ: Where do roms, images, samples, highscores, configfiles, etc go?}

\end_inset 

.
\layout Itemize

Check xmamerc/xmessrc: Is it configured correctly?
\layout Itemize

Are you getting messages that you are missing files? Maybe you are missing
 PROMs; see 
\begin_inset LatexCommand \ref[FAQ: Why doesn't a game work?]{FAQ: Why doesn't a game work?}

\end_inset 

 and 
\begin_inset LatexCommand \ref[FAQ: What are PROMs?]{FAQ: What are PROMs?}

\end_inset 


\layout Itemize

Is the program in your PATH?
\layout Itemize

The svgalib/xf86_dga build of xmame/xmess requires setuid root.
 Are your permissions correct?
\layout Itemize

Try asking the friendly folks at the newsgroup alt.game.mame to see if anyone
 else has experienced the same problem as you.
\layout Itemize

Try mailing to the xmame mailinglist, see 
\begin_inset LatexCommand \ref[Mail]{Mail}

\end_inset 

 for more information.
\layout Standard

If all else fails, send email to the current maintainer of the xmame/xmess
 project.
 See 
\begin_inset LatexCommand \ref[Mail]{Mail}

\end_inset 

 for contact information.
\layout Subsection

Compile Notes for Specific Operating Systems 
\begin_inset LatexCommand \label{Compile Notes for Specific Operating Systems}

\end_inset 


\layout Subsubsection

Linux i386
\layout Standard

Linux i386 is the platform I (Hans) use, so xmame should compile without
 any hassles on Linux i386.
 (Note: The same is true for Lawrence Gold.)
\layout Standard

Some bugs have been found and worked around when using gcc27x, please use
 egcs if available.
 If more gcc bugs popup, egcs will be  made mandatory, but I hope that won't
 be necessary.
\layout Standard

It has been reported that some SoundBlaster AWE32 and VIA-82cxxx (onboard)
 cards do not  correctly manage get_freespace().
 If so, you'll get some audio_ioctl() calls failed messages in console,
 and if everything goes right a message that xmame/xmess is falling back
 to timer based audio.
 If  this doesn't happen and sound isn't right, try forcing timer-based
  audio by starting xmame/xmess with 
\family typewriter 
-timer
\family default 
.
\layout Standard

SB64/128PCI cards (Ensoniq 137x-based cards) also do not correctly manage
 get_freespace().
 Unfortunately, this doesn't result in failed ioctl's; instead, they just
 ignore the calls.
 Xmame tries to autodetect this and to fall back to timer-based audio.
 If this doesn't happen and sound isn't right, try forcing timer based audio
 by starting xmame/xmess with 
\family typewriter 
-timer
\family default 
.
\layout Standard

Some have reported success using ALSA with OSS emulation (see 
\begin_inset LatexCommand \url[http://www.alsa-project.org/]{http://www.alsa-project.org/}

\end_inset 

).
 If you experience the above problems, this would certainly be worth a try.
\layout Standard

Also, I've tested sound using the PC-Speaker driver module.
 It works!! But it needs 
\family typewriter 
-timer.

\family default 
 Again, it should do this  automagically, but you know what to do if it
 doesn't.
\layout Standard

Distribution-Specific Comments:
\layout Itemize

S.u.S.E.
 Linux: Besides the gcc compiler and libc libraries, which are both from
 the "d" series, other packages  need to be installed or the build will
 fail.
 If compiling for svgalib, the svgalib package from series "d" installed.
 If compiling for the X-Window System, you must have xdevel package from
 series "x" installed.
 These packages can be installed using the "yast" utility included in the
 S.u.S.E.
 distribution.
\layout Itemize

Red Hat Linux is the operating system used by the author.
 xmame/xmess  should build correctly under Red Hat Linux.
 :-)
\layout Subsubsection

Linux PowerPC
\layout Standard

Linux PowerPC should work from now on.
 Here's an email from Andreas Varga 
\family typewriter 

\begin_inset LatexCommand \url[sid@skater.htu.tuwien.ac.at]{mailto:sid@skater.htu.tuwien.ac.at}

\end_inset 


\family default 
, the Linux/PowerPC maintainer, describing the necessary steps:
\layout Standard

Required changes to compile xmame 0.34b3.1 on Linux/PowerPC with SVGALIB
\layout Standard

Makefile:
\layout Itemize

enable CFLAGS for linux/ppc 
\layout Itemize

enable DISPLAY_METHOD = svgalib 
\layout Itemize

enable ARCH = linux 
\layout Itemize

remove -lvgagl from LIBS.svgalib in src/unix/unix.mak (only -lvga is required)
\layout Standard

Required changes to compile xmame 0.34b3.1 on Linux/PowerPC with X11 
\layout Standard

Makefile: 
\layout Itemize

enable CFLAGS for linux/ppc 
\layout Itemize

enable DISPLAY_METHOD = x11 
\layout Itemize

enable ARCH = linux 
\layout Standard

Another thing...
 sound is not working, because sound drivers support is currently under
 development in Linux/PPC kernels...there is an old driver that is a hacked
 Soundblaster driver, and newer 2.1.1xx kernels have a sound drivers based
 on Amiga DMA sound drivers...
 Once this issues are settled there should be a full OSS-compatible driver...
 sound should work then...
\layout Standard

I can't speak about Joystick support...
\layout Standard

The original Linux/PPC target changes in the Makefile were done by me, but
 there are some other changes required to get it to compile...
 Starting from October I will have some more time to work on this, and I'll
 keep you updated...
\layout Standard

Cheers, Andreas
\layout Subsubsection

IRIX
\layout Standard

Use the generic unix arch for those machines that have no  sound support
 installed (xmame/xmess uses the dmedia package or the newer AL package
 on IRIX systems).
\layout Standard

Silicon Graphics provides several native compilers.
 xmame/xmess has  been compiled and tested with the normal cc.
 There were some problems with this when using -n32 for new style 32bit
 code.
 It does work when using -o32 for oldstyle 32 bit code.
 It should now also work with -n32 which is much faster.
\layout Standard

The use of DCC is not recommended (anymore) since it's a C++  compiler and
 thus won't even compile xmame/xmess out of the box due to uncasted mallocs.
 Changing all these mallocs would be crazy, esp.
 since they are not only in the osd part, but also in the core which is
 not under our control.
 Besides that, mame is normal C, so please compile it with a normal C compiler.
\layout Standard

Some problems have been reported using the GNU linker.
 It's recommended that you use the native one.
\layout Subsubsection

HPUX
\layout Standard

Use the generic unix arch.
 In HP-UX, gcc and gnu-make are MANDATORY.
\layout Subsubsection

ULTRIX 
\layout Standard

Use the generic unix arch.
\layout Standard

Notes received from Danny 
\family typewriter 

\begin_inset LatexCommand \url[dboxhoor@iso.vilspa.esa.es]{mailto:dboxhoor@iso.vilspa.esa.es}

\end_inset 


\layout Standard


\series bold 
VERY IMPORTANT!!!
\layout Standard

The xmame/xmess CPU emulators access memory through pointers which are sometimes
 cast to illegal addresses - as far as the MIPS CPU is concerned.
 The Ultrix operating system is aware of that and fixes this "unaligned
 data access".
\layout Standard

Depending on your system setup, lots of warnings are generated for certain
 games.
 Fortunately these messages can be disabled by  executing the command "uac
 p 0" in the same shell where xmame/xmess  will be running.
\layout Standard

UPDATE: The new 
\family typewriter 
-DALIGN_INTS
\family default 
 switch in the makefile fixes these unaligned accesses in the source which
 is probably a lot faster than hot fixing them in the kernel segfault handler.
\layout Standard

Use gnu make.
\layout Standard

Compile with the `c89' compiler.
 Though `gcc' has no problems  with compiling and optimizing xmame/xmess,
 the resulting `c89'  executable is faster on an empty machine (read: xmame
 can use all  cpu & memory without competing with other high priority  processes
), so you can set `frameskip' to 1.
\layout Standard

When compiling with `c89 -O2' don't forget to also use `-Olimit  1000'.
 If 1000 is not enough, the compiler will tell you to  increase it.
\layout Subsubsection

SunOS & Solaris
\layout Standard

There are 2 relevant architecture options available in the makefile: 
\layout Verbatim

    ARCH = generic : use this for old SunOs running on Sparcs,
\newline 
                     but a Sparc running Solaris will usually
\newline 
                     handle this option too.
\newline 
    ARCH = solaris : this is the one you should use for Sparcs
\newline 
                     running Solaris.
        
\layout Standard

Currently sound is not supported under sunos.
 The solaris arch does support audio.
\layout Standard

If you are using Sun's OpenWindows implementation of X11, then make sure
 that the X11INC and X11LIB variables in the X11 Options section of the
 makefile are set properly.
 (There are already entries for the standard OpenWin directory there that
 you can uncomment.)
\layout Standard

Of course, if you are compiling for X11 then you need to set these variables
 properly, no matter what implementation of X11 you are using!  :)
\layout Standard

If you are using Sun's SunPro cc compiler, then the following optimisation
 flags have been reported to be good:
\layout Verbatim

    OPTFLAGS    = -fast -xO4 -native
\layout Standard

Finally, there has been a case of the xmame compilation processes breaking
 over the "ar" program.
 Most Solaris installations will include a set of utilities that conform
 to the XPG4 standard, usually in the "/usr/xpg4/bin" directory.
 The XPG4 version of "ar" should be avoided like the plague.
 Ensure that the "/usr/ccs/bin" appears in your path before the "/usr/xpg4/bin"
 directory and everything should go smoothly.
\layout Standard

PLEASE NOTE : There is currently not much support for SunOS/Solaris.
 If you have any trouble, try to fix it yourself.
 If you succeed, send a message to the mailing list detailing what you did.
 If you don't succeed, send a message anyway and someone _may_ be able to
 help you.
 Either way, this is the only way that problems with xmame on SunOS/Solaris
 will get fixed.
\layout Subsubsection

Openstep
\layout Standard

You must use the OpenStep gnumake, not make.
 You must also use the NeXT/Apple cc rather than gcc.
 Also use only the optimisation options as recommended for OpenStep in the
 makefile, others will cause the resulting executable to crash.
 The OpenStep assembler on i386 architectures is incompatible with the mame
 assembler CPU cores and thus you must use the C versions (Use i386-noasm
 instead of i386 when compiling for i386).
\layout Standard

The supplied complier is based on gcc 2.7.2.1 which will not compile src/profiler.c
 without crashing.
 To get around this you must turn off + optimisation when this crash occurs,
 re-make to compile this file only, then stop the make, re-enable optimisation,
 and continue.
\layout Standard

On an OpenStep keyboard the functions keys do not all operate as expected.
 Using the command key in conjuction with a number key generates the equivalent
 function key within xmame, with 0, - and = + representing F10, F11 and
 F12 resepectively.
 Also note that the ALT + keys cannot be mapped.
 As most games tend to use this as the default fire button it is exteremly
 useful to remap this globally the first time you run xmame.
\layout Section

Xmame frequently asked questions
\begin_inset LatexCommand \label{Xmame frequently asked questions}

\end_inset 


\layout Subsection

What is mame?
\layout Standard

Mame is an arcade machine emulator.
 Started in 1997 by Nicola  Salmoria, mame started out as a series of emulators
 for  individual games.
 This series of emulators was combined into a  simgle multi-game emulator.
 This is the current form of mame; no longer a one-man show, there are over
 100 contributors to the project.
\layout Standard

Mame was created by Nicola Salmoria.
\layout Standard

Also see 
\begin_inset LatexCommand \url[the official mame readme file (readme.mame)]{readme.mame}

\end_inset 


\layout Subsection

What is mess?
\layout Standard

Mess is just like mame---a virtual machine emulator, only it doesn't emulate
 arcade machines but rather computers and consoles.
\layout Standard

Also see 
\begin_inset LatexCommand \url[the official mess readme file (readme.mess)]{readme.mess}

\end_inset 


\layout Subsection

What is xmame/xmess?
\layout Standard

Xmame/xmess are the Unix/X11 ports of the mame and mess projects.
 It makes mame/mess available on *ix machines using the X11R6 X-Window System
 (and SVGAlib/ggi/XF86-DGA/OpenGL/SDL too).
\layout Standard

Mame was orginally ported by Allard Van Der Bas, Dick the Ridder, Juan Antonio
 Martinez, and Hans de Goede.
\layout Standard

Xmame/xmess is currently maintained by Lawrence Gold.
\layout Subsection

What are the differences between mame/mess and xmame/xmess?
\layout Standard

None significant.
\layout Standard

Xmame/xmess is based on the mame/mess source code.
 Due to technical reasons beyond the scope of this document, the mame/mess
 source may not compile under Unix.
 That's why the xmame/xmess project exists.
 Each time mame/mess is updated, the code is tested  (and patched if needed)
 under Unix.
 This way xmame/xmess releases are always the same as their mame counterparts.
\layout Standard

There are no plans for the independent development of xmame/xmess.
\layout Subsection

What hardware and operating systems are supported?     
\layout Standard

Xmame runs on both little-endian and big-endian CPUs, using aligned integer
 access if needed and is compatible with 64 bit CPUs.
 The current list of supported CPUs in the makefile is:
\layout Itemize

i386 + gnu-asm
\layout Itemize

i386 no asm
\layout Itemize

alpha
\layout Itemize

ia64 (merced)
\layout Itemize

m68k
\layout Itemize

generic risc (PowerPC, Sparc, HPPA, IBM)
\layout Itemize

generic risc, lsb-first (RISC (Ultrix machines))
\layout Itemize

mips (generic risc + SGI compiler bug workarounds)
\layout Standard

Adding support for another cpu (if necessary) should be trivial.
\layout Standard

The following Unix platforms are specifically supported:
\layout Itemize

Linux
\layout Itemize

FreeBSD
\layout Itemize

NetBSD
\layout Itemize

Solaris (SunOS)
\layout Itemize

OpenStep (noasm only on i386)
\layout Itemize

IRIX with sound using the dmedia package or the new al package (sound currently
 broken)
\layout Itemize

AIX (sound currently broken)
\layout Itemize

generic unix, no sound
\layout Standard

The generic unix entry should work for any reasonable standard Unix variant,
 but lacks sound since there is no single Unix sound standard.
\layout Standard

On all platforms, zlib is now needed since the core uses it.
 Ff you don't have zlib, use the included one by uncommenting the appropriate
 line in Makefile.
\layout Standard

The following display methods are supported.
 X11 is the only one which works on all platforms, except for OpenStep which
 only works with Openstep bitmaps:
\layout Itemize

X11 (X-Window System)
\layout Itemize

svgalib
\layout Itemize

GGI (Generic Graphics Interface)
\layout Itemize

OpenGL using X11 for input
\layout Itemize

glide using X11 for input (3DFX)
\layout Itemize

glide using svgalib for input (3DFX)
\layout Itemize

OpenStep bitmaps
\layout Itemize

SDL (Simple Direct Medialayer)
\layout Standard

The following is a list of arch/os/display combinations, with maintainers,
 for arch/os/display combinations which are actively supported.
 Please mail the maintainer of the arch/os/display combination for compilation
 and other arch/os/display specific problems.
 Mail Lawrence 
\family typewriter 

\begin_inset LatexCommand \url[gold@aros.net]{mailto:gold@aros.net}

\end_inset 


\family default 
 for generic (e.g., X11) problems.
\layout Itemize

i386/linux/x11 (+DGA)
\hfill 
 -> Lawrence 
\family typewriter 

\begin_inset LatexCommand \url[<gold@aros.net>]{mailto:gold@aros.net}

\end_inset 


\layout Itemize

i386/linux/svgalib
\hfill 
 -> Lawrence 
\family typewriter 

\begin_inset LatexCommand \url[<gold@aros.net>]{mailto:gold@aros.net}

\end_inset 


\layout Itemize

i386/linux/xgl
\hfill 
 -> Lawrence 
\family typewriter 

\begin_inset LatexCommand \url[<gold@aros.net>]{mailto:gold@aros.net}

\end_inset 


\layout Itemize

i386/linux/xfx
\hfill 
 -> Lawrence 
\family typewriter 

\begin_inset LatexCommand \url[<gold@aros.net>]{mailto:gold@aros.net}

\end_inset 


\layout Itemize

i386/linux/svgafx
\hfill 
 -> Lawrence 
\family typewriter 

\begin_inset LatexCommand \url[<gold@aros.net>]{mailto:gold@aros.net}

\end_inset 


\layout Itemize

i386/linux/ggi
\hfill 
 -> Christian 
\family typewriter 

\begin_inset LatexCommand \url[<cpg@aladdin.de>]{mailto:cpg@aladdin.de}

\end_inset 


\layout Itemize

alpha/linux/x11
\hfill 
 -> Christian 
\family typewriter 

\begin_inset LatexCommand \url[<cpg@aladdin.de>]{mailto:cpg@aladdin.de}

\end_inset 


\layout Itemize

alpha/digital unix/x11 *
\hfill 
 -> Leandro 
\family typewriter 

\begin_inset LatexCommand \url[<ldardini@usl4.toscana.it>]{mailto:ldardini@usl4.toscana.it}

\end_inset 


\layout Itemize

powerpc/linux/x11
\hfill 
 -> Andreas 
\family typewriter 

\begin_inset LatexCommand \url[<sid@skater.htu.tuwien.ac.at>]{mailto:sid@skater.htu.tuwien.ac.at}

\end_inset 


\layout Itemize

powerpc/linux/svgalib
\hfill 
 -> Andreas 
\family typewriter 

\begin_inset LatexCommand \url[<sid@skater.htu.tuwien.ac.at>]{mailto:sid@skater.htu.tuwien.ac.at}

\end_inset 


\layout Itemize

i386/freebsd/x11
\hfill 
 -> Jacob A.
 Hart 
\family typewriter 

\begin_inset LatexCommand \url[<c9710216@studentmail.newcastle.edu.au>]{mailto:c9710216@studentmail.newcastle.edu.au}

\end_inset 


\layout Itemize

i386/netbsd/x11
\hfill 
 -> Dave 
\family typewriter 

\begin_inset LatexCommand \url[<dave@dtsp.co.nz>]{mailto:dave@dtsp.co.nz}

\end_inset 


\layout Itemize

alpha/netbsd/x11
\hfill 
 -> Christian 
\family typewriter 

\begin_inset LatexCommand \url[<cpg@aladdin.de>]{mailto:cpg@aladdin.de}

\end_inset 


\layout Itemize

Sparc/Solaris/x11
\hfill 
 -> Mathis 
\family typewriter 

\begin_inset LatexCommand \url[<rosenhau@mailserv.sm.go.dlr.de>]{mailto:rosenhau@mailserv.sm.go.dlr.de}

\end_inset 


\layout Itemize

i386/Unixware7/x11 *
\hfill 
 -> Richard 
\family typewriter 

\begin_inset LatexCommand \url[<xmame@frogface.ddns.org>]{mailto:xmame@frogface.ddns.org}

\end_inset 


\layout Itemize

i386/openstep
\hfill 
 -> Pete French 
\family typewriter 

\begin_inset LatexCommand \url[<pete@toybox.twisted.org.uk>]{mailto:pete@toybox.twisted.org.uk}

\end_inset 


\layout Itemize

Sparc/SunOs
\hfill 
 -> Saga 
\family typewriter 

\begin_inset LatexCommand \url[<jolletx@cybercable.fr>]{mailto:jolletx@cybercable.fr}

\end_inset 


\layout Itemize

mips/irix/x11
\hfill 
 -> Dingus Family 
\family typewriter 

\begin_inset LatexCommand \url[<ddingus@uswest.net>]{mailto:ddingus@uswest.net}

\end_inset 


\layout Standard

* These are supported using the generic unix entry of the makefile, and
 thus lack sound.
\layout Standard

We are always looking for people willing to test and answer questions about
 xmame on a new arch/os/display.
 This takes very little work and could help other people tremendously.
 If you're interested, mail Lawrence 
\family typewriter 

\begin_inset LatexCommand \url[gold@aros.net]{mailto:gold@aros.net}

\end_inset 


\family default 
.
\layout Subsection

My system is supported but xmame/xmess gives me errors and fails.
 Why?
\layout Standard

Xmame/xmess should run on 8bpp Pseudo Color displays and on 16, 24 and 32bpp
 True Color displays.
 If your X-Server does not support any  of these display types, xmame/xmess
 will not run.
\layout Standard

You can verify your X-Server support by starting your X-Server  and running
 the xdpyinfo program.
 See the xdpyinfo manual page  for more information.
\layout Subsection

What is the role of the xmamerc/xmessrc file?
\layout Standard

A normal xmame/xmess invocation looks like:
\layout Verbatim

    xmame pacman -sound -nojoy -frameskip 2 -heightscale 3 
\backslash 
   
\newline 
        -widthscale 2
\layout Standard

Most of the time, you will want to use the same configuration for  each
 game.
 xmame/xmess will read this file for default values for the  parameters
 that you can set.
 This way the only parameters you  need to express on the command line are
 the ones you want to  override.
\layout Standard

Another reason for xmamerc/xmessrc is keyboard remapping.
 Some Unix  keyboards are very different than their PC counterparts.
 To  compensate for the changes, xmame/xmess allows you to remap keys that
  are not available on Unix keyboards to keys that are available.
\layout Subsection

What is the syntax of the xmamerc/xmessrc file.
\layout Standard

The syntax is quite simple:
\layout Verbatim

   "keyword value"
\layout Standard

See 
\begin_inset LatexCommand \url[xmamerc.dist]{xmamerc.dist}

\end_inset 

 for most keywords.
 Allmost all commandline options can be used as keywords (without the -),
 use value 0 or 1 for commandline options which have a negating (-no[option])
 counterpart.
 As usual lines begining with "#" are comments.
\layout Standard

You can also generate a configfile with all the current settings to use
 as a template by typing:
\layout Verbatim

   xmame -showconfig > ~/.xmame/xmamerc
\layout Subsection

Where do roms, images, samples, highscores, configfiles, etc go? 
\begin_inset LatexCommand \label{FAQ: Where do roms, images, samples, highscores, configfiles, etc go?}

\end_inset 


\layout Subsubsection

Roms/Samples
\layout Standard

Xmame/xmess uses a ":" seperated rompath to find out which dirs to search
 for roms/samples.
\layout Standard

The default rompath is XMAMEROOT as defined in Makefile during compile.
\layout Standard

This is overwritten by any rompath in xmamerc/xmessrc, which can be overwritten
 again with the -rompath commandline option.
\layout Standard

Xmame/xmess searches every dir in this path for roms/samples in the following
 way:
\layout Verbatim

    <dir>/gamename.zip             (containing filename.ext)
\newline 
    <dir>/gamename/filename.ext
\newline 
    <dir>/gamename/filename.ext.gz (containing filename.ext)
\newline 
    <dir>/gamename/filename.zip    (containing filename.ext)
\layout Standard

So let's say that we are searching for rom0001.1, which is part of pacman.
 Then xmame/xmess would search every dir in your rompath for
\layout Verbatim

    <dir>/pacman.zip               (containing rom0001.1)
\newline 
    <dir>/pacman/rom0001.1
\newline 
    <dir>/pacman/rom0001.1.gz      (containing rom0001.1)
\newline 
    <dir>/pacman/rom0001.zip       (containing rom0001.1)
\layout Standard

Note: If your neogeo games can't find neogeo.rom, put it in a dir called
 neogeo somewhere in your rompath, or put it in neogeo.zip somewhere in your
 rompath.
\layout Subsubsection

Read/write Diskette Images
\layout Standard

This section only applies to xmess emulations which support read/write diskette
 images and thus try to open the image read/write.
\layout Standard

Xmess first searches for read/write images with the name specified on the
 commandline:
\layout Verbatim

    <path>/image.ext
\layout Standard

where path is the path specified with the image on the commandline.
 This way, absolute and relative filenames can be used directly on the commandli
ne for an image which is not in the rompath.
\layout Standard

Then xmess searches every dir in the rompath for roms/samples in the following
 way:
\layout Verbatim

    <dir>/image.ext
\layout Standard

Note that (g)zipped images are not supported for r/w images.
\layout Subsubsection

Rom Cartridges/Read Only Diskette Images
\layout Standard

Xmess begins by searching for cartdriges/disks from the current dir in the
 following way:
\layout Verbatim

    <path>/image.ext
\newline 
    <path>/image.ext.gz            (containing image.ext)
\newline 
    <path>/image.zip               (containing image.ext)
\layout Standard

where path is the path specified with the image on the commandline.
 This way, absolute and relative filenames can be used directly on the commandli
ne for an image which is not in the rompath.
\layout Standard

Then xmess searches every dir in the rompath for carts/images in the following
 way:
\layout Verbatim

    <dir>/image.ext
\newline 
    <dir>/image.ext.gz             (containing image.ext)
\newline 
    <dir>/image.zip                (containing image.ext)
\layout Standard

Finally, xmess searches the rompath as desribed above using the systemtype
 for gamename.
\layout Standard

So let's say we want to play mario.nes on the nes emulation of xmess.
 We would then type: "xmess nes mario.nes".
 Xmess then begins by searching the current dir for
\layout Verbatim

    mario.nes
\newline 
    mario.nes.gz                   (containing mario.nes)
\newline 
    mario.zip                      (containing mario.nes)
\layout Standard

After that, xmess searches each dir in your rompath for
\layout Verbatim

    <dir>/mario.nes
\newline 
    <dir>/mario.nes.gz             (containing mario.nes)
\newline 
    <dir>/mario.zip                (containing mario.nes)
\layout Standard

And finally, xmess searches each dir in your rompath for
\layout Verbatim

    <dir>/nes.zip                  (containing mario.nes)
\newline 
    <dir>/nes/mario.nes
\newline 
    <dir>/nes/mario.nes.gz         (containing mario.nes)
\newline 
    <dir>/nes/mario.zip            (containing mario.nes)
\layout Standard

Since xmess first searches for cartridges/disks from the current dir you
 can also specify cartridges/disks not in your rompath.
 For example:
\layout Verbatim

    "xmess nes ../mario.nes"
\layout Standard

Xmess then searches for
\layout Verbatim

    ../mario.nes
\newline 
    ../mario.nes.gz                (containing mario.nes)
\newline 
    ../mario.zip                   (containing mario.nes)
\layout Standard

and will also search the rompath as described above with ../mario.nes as the
 image name but this is not that useful.
\layout Subsubsection

Artwork
\layout Standard

Xmame/xmess searches every dir in the rompath for artwork in the following
 way:
\layout Verbatim

    <dir>/artwork.png
\newline 
    <dir>/artwork.png.gz           (containing artwork.png)
\newline 
    <dir>/artwork.zip              (containing artwork.png)
\layout Standard

Then xmame/xmess searches the rompath as in roms/samples.
\layout Standard

So let's say we want to play foo which uses bar.png.
 Xmame/xmess then begins searching each dir in your rompath for
\layout Verbatim

    <dir>/bar.png
\newline 
    <dir>/bar.png.gz               (containing bar.png)
\newline 
    <dir>/bar.zip                  (containing bar.png)
\layout Standard

And then xmame/xmess searches each dir in your rompath for
\layout Verbatim

    <dir>/foo.zip                  (containing bar.png)
\newline 
    <dir>/foo/bar.png
\newline 
    <dir>/foo/bar.png.gz           (containing bar.png)
\newline 
    <dir>/foo/bar.zip              (containing bar.png)
\layout Subsubsection

Xmame configuration
\layout Standard

Xmame looks for the following configuration files and parses each one found.
 Files parsed later can overwrite options in previously parsed files:
\layout Verbatim

    XMAMEROOT/xmamerc
\newline 
    XMAMEROOT/xmame-DISPLAY_METHODrc
\newline 
    ${HOME}/.xmame/xmamerc
\newline 
    ${HOME}/.xmame/xmame-DISPLAY_METHODrc
\newline 
    ${HOME}/.xmame/rc/<gamename>rc
\layout Standard


\family typewriter 
XMAMEROOT
\family default 
 is defined during compile time, see Makefile.
\layout Standard


\family typewriter 
DISPLAY_METHOD
\family default 
 is the 
\family typewriter 
DISPLAY_METHOD
\family default 
 for which xmame was compiled, this can be one of: x11, svgalib, ggi, xgl,
 xfx, svgafx, openstep, SDL.
\layout Standard

For xmess of course replace xmame by xmess.
 ;)
\layout Subsubsection

Game configuration
\layout Standard

Game configuration files are kept on a per-user base in:
\layout Verbatim

    ${HOME}/.xmame/cfg/<game>.cfg resp
\newline 
    ${HOME}/.xmess/cfg/<game>.cfg
\layout Subsubsection

Game state
\layout Standard

Game state files are kept on a per-user base in:
\layout Verbatim

    ${HOME}/.xmame/sta/<game>.sta resp
\newline 
    ${HOME}/.xmess/sta/<game>.sta
\layout Subsubsection

NVram
\layout Standard

NVram files are kept on a per-user base in:
\layout Verbatim

    ${HOME}/.xmame/nvram/<game>.nv resp
\newline 
    ${HOME}/.xmess/nvram/<game>.nv
\layout Subsubsection

Mem cards
\layout Standard

Mem cards files are kept on a per-user base in:
\layout Verbatim

    ${HOME}/.xmame/mem/<filename>.mem resp
\newline 
    ${HOME}/.xmess/mem/<filename>.mem
\layout Standard

Where <filename> is given by the game-driver.
 
\layout Subsubsection

Screenshots
\layout Standard

Screenshots, which can be made by pressing F12, are saved as png files in
 the directory from where xmame is started (cwd).
\layout Standard

This can be overidden by the screenshotdir entry in xmamerc/xmessrc, which
 can again be overidden by the 
\family typewriter 
-screenshotdir
\family default 
 cmdline-option.
\layout Standard

They are saved as:
\layout Verbatim

    <screenshotdir>/<game>xxxx.png
\newline 
    Where xxxx is a number.
\layout Subsubsection

Highscores
\layout Standard

Highscores are stored in XMAMEROOT as defined in Makefile when building.
 This can be overidden by the spooldir entry in xmamerc/xmessrc, which can
 again be overidden by the 
\family typewriter 
-spooldir
\family default 
 cmdline-option.
\layout Standard

So only give a 
\layout Verbatim

    drwxrwsr-x root games <spooldir>
\layout Standard

permission and setgid xmame/xmess to "games" to get it to work.
 Note this doesn't work with suid root versions (svgalib & XF86-DGA), suggestion
s welcome.
\layout Standard

For now use 
\family typewriter 
${HOME}/.xmame
\family default 
 or 
\family typewriter 
$ {HOME}/.xmess
\family default 
 as the spooldir in xmamerc/xmessrc for  suid root versions.
\layout Standard

Note: For highscores to work, xmame must also be able to find hiscore.dat.
\layout Subsubsection

hiscore.dat
\layout Standard

If you want to use highscores mame needs to load hiscore.dat to get highscore
 info.
\layout Standard

The default is 
\family typewriter 
XMAMEROOT
\family default 
/hiscore.dat .
 XMAMEROOT is set during compile-time; see the Makefile.
 This can be overridden by the hiscorefile entry in xmamerc if present,
 which can again be overridden by the cmdline-option 
\family typewriter 
-hiscorefile
\family default 
.
\layout Standard


\family typewriter 
hiscore.dat
\family default 
 is available from the mame homepage: 
\begin_inset LatexCommand \url[http://www.mame.net]{http://www.mame.net}

\end_inset 


\layout Subsubsection

cheat.dat
\layout Standard

If you want to use cheats mame needs to load cheat.dat to get cheat info.
\layout Standard

The default is XMAMEROOT/cheat.dat .
 XMAMEROOT is set during compile-time; see the Makefile.
 This can be overridden by the cheatfile entry in xmamerc if present, which
 can again be overridden by the cmdline-option 
\family typewriter 
-cheatfile
\family default 
.
\layout Standard


\family typewriter 
cheat.dat
\family default 
 is available from the mame homepage: 
\begin_inset LatexCommand \url[http://www.mame.net]{http://www.mame.net}

\end_inset 


\layout Subsubsection

history.dat
\layout Standard

If you want to display some nice background info on games, mame needs to
 load history.dat.
\layout Standard

The default is XMAMEROOT/history.dat .
 XMAMEROOT is set during compile-time, see the Makefile.
 This can be overridden by the historyfile entry in xmamerc if present,
 which can again be overridden by the cmdline-option 
\family typewriter 
-historyfile
\family default 
.
\layout Standard


\family typewriter 
history.dat
\family default 
 is available from the mame homepage: 
\begin_inset LatexCommand \url[http://www.mame.net]{http://www.mame.net}

\end_inset 


\layout Subsubsection

Input logs
\layout Standard

Input logs are saved/read under the name specified after the 
\family typewriter 
-record / -playback
\family default 
 option; this name is relative to the current path.
\layout Subsubsection

Xmame/xmess still can't find files/store highscores
\layout Standard

Type 
\family typewriter 
"xmame/xmess -showconfig | more"
\family default 
 and check that the rompath and spooldir shown are correct and readable/writable.
 Otherwise recheck xmamerc/xmessrc.
 Remember that xmess also searches the current dir.
\layout Subsection

How do I start xmess/xmame ?
\layout Standard

To start xmame, type
\layout Verbatim

    xmame [options] <gamename> [more options]
\layout Standard

For xmess, type
\layout Verbatim

    xmess [options] <systemname> [more options] 
\backslash 

\newline 
    <disk/romimage(s)> [more options]
\layout Standard

All options are optional.
 ;)
\layout Standard

Xmame/xmess supports most dos command line options (see readme.mame / readme.mess)
 as well as a few of its own: Type xmame -help |  more for a complete list.
\layout Standard

With xmess, some systems don't require a disk/romimage, but most do.
\layout Subsection

What are the command line parameters for xmame/xmess?
\layout Standard

To see a list of available parameters, type:
\layout Verbatim

    /usr/games/xmame -help | more
\layout Standard

Xmame/xmess supports most of the command line parameters as the DOS  version
 as well a some of its own.
\layout Standard

See the file readme.mame / readme.mess for more information about the command
 line parameters.
\layout Subsection

What keys does xmame/xmess use?
\layout Standard

Xmame/xmess uses the same key-bindings as the DOS version of mame: The following
 keys work in all emulators:
\layout Verbatim

    `  or ~      Enter On screen display to change volume, brightness etc.
\newline 
    Tab          Enter configuration menu.
 Press Tab or Esc to get back to
\newline 
                 the emulation.
\newline 
    P            Pause
\newline 
    F3           Reset
\newline 
    F4           Show the game graphics.
 Use cursor keys to change set/color,
\newline 
                 F4 or Esc to return to the emulation.
\newline 
    F8           Reduce frame skip
\newline 
    F9           Increase frameskip
\newline 
    F10          Toggle speed throttling
\newline 
    F10 + shift  Toggle idle sleeping
\newline 
    F11          Toggle speed display
\newline 
    F11 + shift  Toggle profiler display
\newline 
    F12          Save a screen snapshot
\newline 
    ESC          Exit emulator
\layout Standard

Xmame has 2 different auto frameskipping algorithms.
 These can be selected with the -frameskipper option and with key combos:
\layout Verbatim

    Key combo:             Gives you the:
\newline 
    left-ctrl + insert     standard dos frameskipper
\newline 
    left-ctrl + home       William Barath's frameskipper
\layout Standard

Xmame's display scaling can be controlled on the fly with the following
 key combos:
\layout Verbatim

    Key combo:             Result:
\newline 
    left-shift + insert    Increase widthscale
\newline 
    left-shift + delete    Decrease widthscale
\newline 
    left-shift + home      Increase heightscale
\newline 
    left-shift + end       Decrease heightscale
\newline 
    left-shift + pageup    Increase scale
\newline 
    left-shift + pagedown  Decrease scale
\layout Standard

Under X11, xmame can switch to and from different modes during runtime:
 
\layout Verbatim

    Key combo:             Warps you to:
\newline 
    left-alt + insert      Normal window
\newline 
    left-alt + home        DGA fullscreen mode
\layout Standard

Under SDL, xmame can switch to and from different modes during runtime:
\layout Verbatim

    Key combo:             Result:
\layout Verbatim

    left-alt + enter       Toggles between windowed and
\layout Verbatim

                           fullscreen modes.
\layout Standard

Under X11 in a window, you can also grab the mouse.
 To be able to play with the mouse, press left-alt + page-down to grab the
 mouse, and press it again to release it.
\layout Subsection

Why doesn't a game have sound?
\layout Itemize

First check that sound is working in other applications.
\layout Itemize

Check that sound is supported for the game that has no sound; not all games
 have sound.
\layout Itemize

For xmame, take a look at gamelist.mame: Is the sound for the game emulated?
\layout Itemize

For xmess take a look at readme.mess: Is the sound for the system emulated?
\layout Itemize

Check the operating system support chart in the earlier part of  this file:
 Does xmame/xmess support sound on your system?
\layout Subsection

My sound seems lagged.
 / My sound Clicks.
 / What does -bufsize do?
\layout Standard

With the 
\family typewriter 
-bufsize
\family default 
 commandline option or the bufsize configfile keyword, you can specify the
 number of frames of audio to buffer.
 The default is 2 frames.
\layout Standard

This value should be ok for everyone, but if you still have problems, read
 on.
\layout Standard

If the buffersize is to small, this causes the buffer to get empty between
 frames which in turn causes clicks/pauses in the sound.
 If this is the case, increasing the -bufsize value to, for example, 2.5
 should help.
\layout Standard

If, however, you make the buffersize too large, then so much audio becomes
 buffered, that the sound could become lagged.
 E.g., you would hear the coin drop sound 0.5 seconds after pressing the insert
 coin key.
 In this case, lower the bufsize to, for example, 1.5.
\layout Standard

Please let me know if you need to change this setting, since I'm planning
 on removing it in a future release.
\layout Subsection

Why doesn't a game work? 
\begin_inset LatexCommand \label{FAQ: Why doesn't a game work?}

\end_inset 


\layout Itemize

Do you have the right roms or did you get checksum failures?
\layout Itemize

Xmame version 0.34 and higher require PROM files that were not included in
 ROM images released before version 0.34.
 See the question on PROMs  below for more information.
\layout Itemize

For xmame, check the file gamelist.mame to see if the game is playable.
 Just because a game is included doesn't mean it is working yet.
\layout Itemize

For xmess, take a look at readme.mess.
 Maybe the system isn't emulated all that well yet.
\layout Itemize

Some games require sound support.
 If you don't have sound  support under your Unix installation or sound
 isn't supported by xmame/xmess for you, try the 
\family typewriter 
-fakesound
\family default 
 command line parameter.
\layout Subsection

What are PROMs? 
\begin_inset LatexCommand \label{FAQ: What are PROMs?}

\end_inset 


\layout Standard

PROMs contain game-specific information that used to be built in  to mame
 in versions prior to 0.34.
 This information has been  extracted and is now included with new versions
 of ROM files for  games that require this information.
\layout Standard

If you want to use your current ROM files, you can obtain just the PROM
 images in one large file at:
\layout Standard


\begin_inset LatexCommand \url[http://mame.retrogames.com/]{http://mame.retrogames.com/}

\end_inset 


\layout Subsection

Why is xmame/xmess slow?
\layout Standard

Xmame/xmess is a compiled C program that is emulating hardware.
  Software emulation of hardware always incurs a speed penalty.
 Here  are some things you can do:
\layout Itemize

Try using the -frameskip command line parameter.
\layout Itemize

Try pressing F8 while running xmame/xmess to alter the frame rate.
\layout Itemize

Try disabling the throttle with the -nothrottle command line  parameter
 or by pressing F10 while running xmame/xmess.
\layout Itemize

While running xmame/xmess, press F11 to check the speed of xmame/xmess.
  If you never get a display of 100%, you need a faster computer.
\layout Standard

You can also try recompiling xmame/xmess with more optimal settings.
 The following suggestions may not work or may not be appropriate on some
 machines and in some installations.
  However, in cases where they do work, there can be a noticeable increase
 in overall performance of xmame/xmess.
\layout Standard

These "enhancements" simply require editing the Makefile that is distributed
 with xmame, and then recompiling the source.
  If you are compiling the source for the second time you will need to do:
\layout Verbatim

    make clean
\newline 
    make
\newline 
    make install
\layout Standard

after editing the Makefile to set your new settings.
\layout Subsubsection

SPEEDUP # 1 - Inline compiling
\layout Standard

Try enabling inline compiling by commenting and uncommenting the following
 lines:
\layout Verbatim

    # IL    = '-DINLINE=static inline'
\newline 
    IL     = -DINLINE=static
\layout Subsubsection

SPEEDUP # 2 - Direct Graphics Access
\layout Standard

For a big boost, try enabling DGA by uncommenting the following line:
\layout Verbatim

    DGA = 1
\layout Standard

Then start xmame as root, and press left-alt + home to switch to dga mode;
 that should be a lot faster, and doesn't need/use xsync.
 ;) 
\layout Standard

To get back to a window without exiting, press left-alt + insert.
\layout Standard

The benefit of DGA is that it is Direct Graphics Access and therefore writes
 directly to the framebuffer (think DirectX versus GDI under MS Windows).
 So it should be a tad faster, unless you've got a really really well accelerate
d X-server, which could be just as fast.
 Try pressing F11 to see the actual framerate, although it might be hardly
 noticable (visually, at least), it should give you some speed increase.
\layout Standard

Besides that, it automatically switches to the right mode and removes any
 window manager stuff, but that can be done without DGA too.
 (I might add such a feature later, since it allows easy fullscreen without
 running as root.)
\layout Standard

Adding a 320x240 mode will most definitely get you a very nice fullscreen
 display at scale = 1.
 ;)
\layout Standard

Don't forget that you still need to set up the Modes line of the   "Display"
 subsection of the "Screen" section in your X11 config file if you want
 the games to fill the screen in DGA mode.
 Xmame will pick the best mode it can find, so if you have a line like
\layout Verbatim

    Modes  "1024x768" "800x600" "640x480" "320x240" "256x224"
\layout Standard

then any game which fits into a 320x240 screen can be displayed in that
 resolution, and so on.
 Don't forget your X11 config file might have a number of different "Screen"
 sections in it, and you will need to add Modes to the one that is actually
 active with your Xserver is running.
 And of course it's not always that easy, since you also need to tell X
 which monitor settings are required for these resolution modes.
 This is done through Modeline entries in the "Monitor" section of your
 X config file.
\layout Standard

You can check out the 
\family typewriter 
/contrib/tools/modelines
\family default 
 file for a set of crazy modes made especially for xmame in DGA mode.
 They should work on any reasonable multisync monitor, but don't use them
 on an old fixed-frequency monitor.
 (And if you can't resist trying, I won't pay for a new one!)
\layout Subsubsection

SPEEDUP # 3 - NASM
\layout Standard

You can also try installing nasm and compiling the asm core, that helps
 a bit too.
\layout Subsection

I've got a dual processor machine.
 What can I do to take full advantage of this?
\layout Standard

Not much.
 Xmame is a single-threaded port of a single-threaded DOS app.
 Some degree of speedup will hopefully be found on an SMP machine since
 xmame is more likely to get to hog its one CPU for longer.
 But of course the same applies to any CPU-intensive program.
 And all the things one would normally do to any application to give it
 more CPU time (higher priority, kill or renice unecessary process, etc.)
 will work with xmame.
\layout Standard

Now you may at this point be thinking, 
\begin_inset Quotes eld
\end_inset 

Surely you could have one thread doing emulation and another thead doing
 graphics to get a speedup.
\begin_inset Quotes erd
\end_inset 

 Yes, but there are some serious issues to consider.
 The first is synchronisation between the threads, which needs to be pretty
 tight.
 If not done smoothly.
 the overhead will blow most of the benefit away.
 Also, it needs to be implemented with a portable threads interface ...
 which basically means POSIX threads.
 In a nutshell, it's a lot of effort for probably not much gain.
 But of course if you are feeling particulary energetic and in the mood
 to code, then patches can always be submitted to the xmame devel mailing
 list ...
 :)
\layout Subsection

Why doesn't my joystick handle diagonal movement correctly on my Intel x86
 system?
\layout Standard

Xmame/xmess uses autocalibrating, but you could try to use specific programs
 to calibrate it (jscal that comes with joystick  module works fine....).
\layout Subsection

How do I enable XinputExtensions X11 based joystick in Xfree86?
\layout Standard

You need to edit XF86Config to enable the XInput section.
 See the  manual page for XF86Config.
\layout Subsection

How do I read a manual page?
\layout Standard

Easy.
 If you want to read the manual page for XF86Config, type: man XF86Config
\layout Subsection

Why do I get gz_open symbol not found while compiling? 
\begin_inset LatexCommand \label{FAQ: Why do I get gz_open symbol not found while compiling?}

\end_inset 


\layout Standard

Xmame/xmess versions newer than 0.35 use zlib for some compression routines.
 Unfortunately, a lot of Linux distributions have an old version of zlib
 installed as /usr/X11R6/lib/libz.a, and the new version installed as /usr/lib/li
bz.a.
 If this is the case, it's harmless to remove /usr/X11R6/lib/libz.a.
 If you're not sure whether this is the case, just move /usr/X11R6/lib/libz.a
 to another location.
\layout Standard

Removing or just moving /usr/X11R6/lib/libz.a should fix this problem.
\layout Standard

Also see: 
\begin_inset LatexCommand \ref[FAQ: Why do I get zlib.h not found?]{FAQ: Why do I get zlib.h not found?}

\end_inset 


\layout Subsection

Why do I get zlib.h not found? 
\begin_inset LatexCommand \label{FAQ: Why do I get zlib.h not found?}

\end_inset 


\layout Standard

Xmame/xmess versions newer than 0.35 use zlib for some compression routines.
\layout Standard

Zlib is standard on most Unix versions.
 For those who don't ship with zlib or ship with a version that is too old,
 xmame/xmess now comes with a stripped-down version of zlib.
 Uncomment the appropriate line in the Makefile to use this.
\layout Subsection

Where can I get the latest version of xmame/xmess?
\layout Standard

The xmame/xmess Home Page always has the most up-to-date version.
 The address is
\layout Standard


\begin_inset LatexCommand \url[http://x.mame.net/]{http://x.mame.net/}

\end_inset 


\layout Subsection

Where can I send fixes, bug reports, suggestions, or money?  :-)
\layout Standard

See 
\begin_inset LatexCommand \ref[Mail]{Mail}

\end_inset 

 of this document.
\layout Subsection

What if my question is still not answered?
\layout Standard

Please check the offical mame and mess readme files to see if that answers
 your question:
\layout Itemize


\begin_inset LatexCommand \url[The official mame readme file (readme.mame)]{readme.mame}

\end_inset 


\layout Itemize


\begin_inset LatexCommand \url[The official mess readme file (readme.mess)]{readme.mess}

\end_inset 


\layout Standard

If that doesn't help, then ask your question on the mailing list or send
 it to the xmame/xmess maintainer, see  
\begin_inset LatexCommand \ref[Mail]{Mail}

\end_inset 

 for contact information.
\layout Section

Display subsystem specific comments & notes 
\begin_inset LatexCommand \label{Display subsystem specific comments and notes}

\end_inset 


\layout Subsection

FX-Mame a glide driver for xmame
\layout Standard

The latest version of this driver can be obtained at 
\begin_inset LatexCommand \url[http://glmame.linuxgames.com]{http://glmame.linuxgames.com}

\end_inset 

.
\layout Subsubsection

Requirements
\layout Standard

To run FXmame, you must have:
\layout Itemize

A 3Dfx card
\layout Itemize

Glide 2x
\layout Itemize

The xmame distribution
\layout Subsubsection

Compiling and Installing
\layout Standard

FXmame comes in two flavours---xfx and svgafx.
 The xfx version is designed to run under X11.
 It uses an X window for input.
 The svgafx version runs from the console, and uses svgalib for input.
 Both use the 3Dfx hardware for rendering.
\layout Standard

To install FXmame, follow the general instructions for installing xmame.
 To specify the glide driver, do the following to the Makefile:
\layout Itemize

Select either "xfx" or "svgafx" as your display method
\layout Itemize

Configure the glide variables to correspond to your glide setup
\layout Standard

The FXmame executables are called "xmame.xfx" and "xmame.svgafx"
\layout Subsubsection

Running
\layout Standard

FXmame runs with the same parameters and uses the same keyboard commands
 that xmame.x11 does.
\layout Standard

A few extra keyboard commands have been added in the glide driver:
\layout Itemize

RIGHTCTRL-A -- toggle antialiasing in vector games 
\layout Itemize

RIGHTCTRL-B -- toggle bilinear filtering
\layout Standard

The glide driver also adds several command-line options:
\layout Verbatim

    -fxgama <value> 3Dfx gamma correction value
\layout Standard

Note that in order to display the game options or the fps display in vector
 games, I have to overlay the game bitmap over the vector display.
 This is because I circumvent the bitmap entirely in vector games.
 Drawing the bitmap is a big cpu hog, so you'll notice that the game slows
 down when you turn on the fps display (I know, not ideal when you want
 to find out the frame rate...).
\layout Subsubsection

Common Questions (FAQ)
\layout Standard

Q: When I run FXmame, it just dumps core.
\layout Standard

A: Make sure you are running FXmame as root.
 Root priviliges are required to access the 3Dfx hardware
\layout Standard

Q: When I run xmame.xfx, it just hangs at the initial game screen.
\layout Standard

A: Are you running KDE? For some reason, I can't get keyboard input under
 KDE.
 If you have this problem, switch window managers or use xmame.svgafx instead.
\layout Subsubsection

Present Limitations/Bugs
\layout Itemize

Antialiasing isn't working quite as well as it should
\layout Itemize

Input problems under KDE
\layout Subsubsection

Future Work
\layout Itemize

Optimize the drawing code to update only the changed portions of the game
 bitmap.
\layout Subsubsection

License
\layout Standard

The FXmame code is Copyright 1998 by Mike Oliphant.
 It may be used and distributed under the terms of the MAME license.
\layout Subsubsection

Version History
\layout Standard

v0.5 -- December 11th, 1998 ---------------------------
\layout Itemize

implemented long copies in screen update
\layout Itemize

added dirty handling.
 this greatly increases the speed of games that support the dirty update
 strategy (although most of them are older games that already ran at full
 speed on modern hardware)
\layout Itemize

merged source with xmame b8.1
\layout Standard

v0.4 -- October 30th, 1998 --------------------------
\layout Itemize

improved alpha handling in vector games - now bitmapped overlays do not
 dim the screen o added svgalib support (xmame.svgafx) o fixed a tiling bug
 that gave artifacts on texture tile boundaries
\layout Standard

v0.3 -- October 29th, 1998 --------------------------
\layout Itemize

got rid of extra lines in vector games o added bitmap overlay in vector
 games to show options/fps o added antialiasing in vector games
\layout Standard

v0.2 -- October 28th, 1998 --------------------------
\layout Itemize

added screenshots o added 3Dfx gamma adjustment o added direct acceleration
 of vector games (still buggy)
\layout Standard

v0.1 -- October 27th, 1998 --------------------------
\layout Itemize

first public release
\layout Subsubsection

Author
\layout Standard

Mike Oliphant 
\family typewriter 

\begin_inset LatexCommand \url[(oliphant@ling.ed.ac.uk)]{mailto:oliphant@ling.ed.ac.uk}

\end_inset 


\family default 
 
\begin_inset LatexCommand \url[http://glmame.linuxgames.com]{http://glmame.linuxgames.com}

\end_inset 


\layout Subsection

GL-Mame, an OPENGL driver for xmame
\layout Standard

The latest version of this driver can be obtained at: 
\begin_inset LatexCommand \url[http://glmame.linuxgames.com]{http://glmame.linuxgames.com}

\end_inset 


\layout Subsubsection

Requirements
\layout Standard

To run GLmame you must have:
\layout Itemize

An OpenGL implementation
\layout Itemize

libjpeg
\layout Itemize

hardware 3D acceleration (if you want any kind of framerate)
\layout Itemize

the xmame distribution
\layout Subsubsection

Compiling and Installing
\layout Standard

Follow the general instructions for installing xmame.
 To specify the OpenGL driver, do the following in the Makefile:
\layout Itemize

Select "xgl" as your display method
\layout Itemize

Configure the OpenGL variables to correspond to your OpenGL implementation
\layout Itemize

Configure the CABDIR variable
\layout Standard

The GLmame executable is called "xmame.xgl"
\layout Subsubsection

Running
\layout Standard

xmame.xgl runs with the same parameters and uses the same keyboard commands
 that xmame.x11 does.
\layout Standard

The program starts up in cabinet mode.
 While this is pretty, and cool, you'll probably want to actually play in
 fullscreen mode.
\layout Standard

A few extra keyboard commands have been added in the OpenGL driver:
\layout Itemize

RIGHTCTRL-B -- toggle bilinear filtering
\layout Itemize

RIGHTCTRL-C -- toggle cabinet/fullscreen display
\layout Itemize

RIGHTCTRL-T -- toggle phosphor trails --use at your own risk! -- it works
 best if double buffering is disabled (see below)
\layout Standard

The OpenGL driver also adds several command-line options:
\layout Verbatim

    -[no]dblbuffer          Disable/enable double buffering
\layout Verbatim

    -cabview                Start in cabinet view mode
\layout Verbatim

    -nocabview              Start in fullscreen view mode
\layout Verbatim

    -cabinet <cabname>      Use the cabinet model <cabname>
\layout Verbatim

    -fxgama <value>         3Dfx gamma correction value
\layout Standard

Two cabinet models are provided.
 The default, "glmame", is designed to look like a standard arcade cabinet.
 The other, "trans", is a box with a transparent games screen that you can
 see through.
\layout Standard

Note that in order to display the game options or the fps display in vector
 games, I have to overlay the game bitmap over the vector display.
 This is because I circumvent the bitmap entirely in vector games.
 Drawing the bitmap is a big cpu hog, so you'll notice that the game slows
 down when you turn on the fps display (I know, not ideal when you want
 to find out the frame rate...) This overlaying seems to have some glitches
 in cabinet mode.
 I don't know what causes them.
\layout Standard


\series bold 
*** IMPORTANT! ***
\layout Standard

If you have trouble with GLmame, or it is slow, read the "Common Questions"
 section.
 Most of the questions people email me are answered here.
\layout Subsubsection

Cabinet Models
\layout Standard

Cabinet model information is stored in the "cab" subdirectory of the directory
 you specified with the ROMPATH variable in the Makefile.
 Path information specified in xmamerc or with the 'rompath' shell environment
 variable is currently not used.
 Each cabinet model has it's own subdirectory.
 GLmame will first try to load either the user-specified cabinet model (using
 the -cabinet command-line option), or a model corresponding to the current
 game name.
 Failing that, it will use the generic "glmame" model.
\layout Standard

A cabinet model directory must contain a geometry file <modelname>.cab, and
 any .jpg files used for textures on the model.
 The format of the .cab file will be familiar if you have ever programmed
 using OpenGL -- it looks much like an OpenGL display list.
 The format is as follows:
\layout Verbatim

    cabv1.0
\layout Standard

This header must be the first 7 characters of the file.
\layout Verbatim

    #<text>
\layout Standard

Comment lines begin with '#'
\layout Verbatim

    begin <type>
\layout Standard

Begins a geometry object, where type is one of (polygon, quads, quad_strip,
 screen).
 Each "begin" must be paired with an "end" statement.
 A "polygon" is specified using one vertex per, well...
 vertex.
 "quads" are four-sided polygons, each specified by four vertices in order
 around the polygon.
 A "quad_strip" is a series of four-sided polygons, each of which shares
 an edge with the polygons before and after it in the strip.
 A "screen" is a quad that defines the actual area in 3D space where the
 game will be displayed.
 only one of these should be defined.
 For more info, look at any description of OpenGL geometry.
\layout Verbatim

    end
\layout Standard

Ends the geometry object begun with "begin".
\layout Verbatim

    color4 <r> <g> <b>
\layout Standard

Changes the current color to the corresponding rgb value (specified as floating
 point numbers between 0 and 1).
\layout Verbatim

    color4 <r> <g> <b> <a>
\layout Standard

Changes the current color to the corresponding rgba value (specified as
 floating point numbers between 0 and 1).
\layout Verbatim

    shading <type>
\layout Standard

Sets the shading type.
 available types are "smooth" (which blends colors from one vertex to the
 next) or "flat" (which doesn't).
\layout Verbatim

    vertex <x> <y> <z>
\layout Standard

Specifies a vertex for the current geometry object as a point in 3-space.
\layout Verbatim

    numtex <num>
\layout Standard

Specifies the number of different textures to be loaded.
 This declaration must precede any "loadtex" call.
\layout Verbatim

    loadtex <num> <width> <height> <filename>
\layout Standard

Loads texture number <num> from .jpg file <filename>.
 The .jpg file *must* be <width> by <height> pixels, and both <width> and
 <height> must be powers of two (and must conform to the hardware requirements
 of any 3D card you want the cabinet to work with -- 256x256 for 3Dfx).
\layout Verbatim

    texcoord <xcoord> <ycoord>
\layout Standard

Sets the texture coordinate of the next vertex.
 This specifies where in 2D texture space the vertex lies.
\layout Verbatim

    enable texture
\layout Standard

Enables texture mapping (using the currently-selected texture).
\layout Verbatim

    disable texture
\layout Standard

Turns off texture mapping.
\layout Verbatim

    settex <num>
\layout Standard

Select texture <num> for doing texturing.
 The texture must previously have been loaded using "loadtex".
\layout Verbatim

    camerapan <num>
\layout Standard

Starts the camera pan definition that will be followed by <num> camera transisti
ons.
 After the last transision definition, the pan sequence must be ended with
 an "end" statement.
\layout Verbatim

    goto <lx> <ly> <lz> <px> <py> <pz> <nx> <ny> <nz>
\layout Standard

Relocates and reorients the camera.
 The arguments are the same as are used by the OpenGL command "gluLookAt()".
 The camera is positioned at point <lx,ly,lz>, pointing along vector <px,py,pz>,
 with "up" normal (the direction that is "up" for the camera) <nx,ny,nz>.
\layout Verbatim

    moveto <lx> <ly> <lz> <px> <py> <pz> <nx> <ny> <nz> <frames>
\layout Standard

Moves the camera to a new location (specified as in "goto").
 The transition occurs over <frames> frames.
\layout Standard

All commands must be on separate lines.
 Use the (somewhat) commented glmame cabinet as an example to work from.
\layout Subsubsection

Common Questions (FAQ)
\layout Standard

Q: I am only getting a few frames-per-second.
 This sucks! What gives?
\layout Standard

A1: You're probably running Mesa in software mode.
 You should read the "README.3Dfx" file in the Mesa distro.
 Specifically, you need to "setenv MESA_GLX_FX fullscreen"
\layout Standard

A2: You don't have a 3D graphics card.
 Go buy one!
\layout Standard

Q: When I run xmame.xgl, it just dumps core.
 That's not as much fun as 3D Pacman, now is it?
\layout Standard

A1: If you are using a 3Dfx card, make sure you are running xmame.xgl as
 root.
 Root priviledges are required to access the 3Dfx hardware
\layout Standard

A2: If you're using Mesa and haven't upgraded to v3.0, do so.
\layout Standard

Q: When I run xmame.xgl, it just hangs at the initial game screen
\layout Standard

A: Are you running KDE? For some reason, I can't get keyboard input under
 KDE.
 If you have this problem, switch window managers
\layout Subsubsection

Present Limitations/Bugs
\layout Itemize

No clipping of vector games (most noticeable in cabinet mode) o No preservation
 of game aspect ratio in cabinet mode o The phosphor trail stuff is *very*
 experimental at this point :-)
\layout Itemize

There's some weirdness when overlaying the configuration screen or fps display
 in cabinet mode for vector games
\layout Subsubsection

Future Work
\layout Itemize

Fixing existing bugs
\layout Itemize

Optimize the drawing code to update only the changed portions of the game
 bitmap.
\layout Subsubsection

License
\layout Standard

The GLmame code is Copyright 1998 by Mike Oliphant.
 It may be used and distributed under the terms of the MAME license.
\layout Subsubsection

Version History
\layout Standard

v0.6 -- December 14th, 1998 ---------------------------
\layout Itemize

added support for systems that do not support paletted textures (SGI and
 solaris OpenGL implementations, for example)
\layout Itemize

merged source with xmame b8.1
\layout Standard

v0.5 -- October 30th, 1998 --------------------------
\layout Itemize

fixed a bug with texturing being left on in bad places
\layout Itemize

added 3Dfx gamma adjustment
\layout Standard

v0.4 -- October 21st, 1998 --------------------------
\layout Itemize

updated to work with xmame v0.34b5.2
\layout Standard

v0.3 -- October 12th, 1998 --------------------------
\layout Itemize

fixed verticle screen centering in fullscreen mode
\layout Itemize

moved cabinet and camera panning information into a user-editable configuration
 file
\layout Itemize

added 'trans' cabinet model o added double buffer, view type, and cabinet
 selection command-line options
\layout Standard

v0.2 -- October 6th, 1998 -------------------------
\layout Itemize

adding missing 'cab' directory
\layout Standard

v0.1 -- October 5th, 1998 -------------------------
\layout Itemize

first public release
\layout Subsubsection

Author
\layout Standard

Mike Oliphant 
\family typewriter 

\begin_inset LatexCommand \url[(oliphant@ling.ed.ac.uk)]{mailto:oliphant@ling.ed.ac.uk}

\end_inset 


\family default 
 
\begin_inset LatexCommand \url[http://glmame.linuxgames.com]{http://glmame.linuxgames.com}

\end_inset 


\layout Section

contact information and credits
\layout Subsection

Mail 
\begin_inset LatexCommand \label{Mail}

\end_inset 


\layout Standard

There is an official xmame/xmess mailing list.
 All operations related to this list are performed via email to 
\family typewriter 

\begin_inset LatexCommand \url[xmame-request@acm.csres.utexas.edu]{mailto:xmame-request@acm.csres.utexas.edu}

\end_inset 


\family default 
 with a proper keyword in the body.
\layout Standard

Currently recognized commands are:
\layout Verbatim

    subscribe      - subscribe to the list
\layout Verbatim

    unsubscribe    - unsubscribe from the list
\layout Standard

X-Mame Mail List ideario
\layout Itemize

The X-Mame mailing list is intended to be a technical forum for XMame  developer
s, that is,
\begin_deeper 
\layout Itemize

To exchange ideas about getting a better X-Mame 
\layout Itemize

To share patches and notify bugs 
\layout Itemize

Study new design strategies
\layout Itemize

To expose problems and learn know-how
\end_deeper 
\layout Itemize

The X-Mame mailing list 
\series bold 
is not
\series default 
 a forum about playing games (but everyone in xmame-list plays...), so please:
\begin_deeper 
\layout Itemize


\series bold 
Don't use the list to ask about ROMs
\layout Itemize


\series bold 
Don't ask about non-UNIX ports of Mame, just about MAME and X-Mame
\layout Itemize


\series bold 
Don't ask about implementing a game.
 Just search the docs and contribute yourself (you'll enjoy twice: programming
 and playing...)
\layout Itemize


\series bold 
Dont show your last high score in xxx game (we are interested in programming,
 and then playing, in this order)
\end_deeper 
\layout Itemize


\series bold 
Copyright notice: NEVER, I repeat NEVER send ROM images to the  list.

\series default 
 (but you can tell us where to retrieve them...
 ;-) )
\layout Itemize

At this moment, the X-Mame List is 
\series bold 
unmoderated
\series default 
, that is: every one subscribed will received everything sent to the list.
 Expecting no need to change this policy...
\layout Standard

If you want to send a personal mail to the xmame/xmess coordinator, send
 to the address below.
 Everyone that contributes to xmame/xmess should subscribe to the xmame/xmess
 mail list.
\layout Itemize

Mailing list: 
\family typewriter 

\begin_inset LatexCommand \url[xmame-request@acm.csres.utexas.edu]{mailto:xmame-request@acm.csres.utexas.edu}

\end_inset 


\layout Itemize

Xmame/xmess coordinator: 
\family typewriter 

\begin_inset LatexCommand \url[gold@aros.net]{mailto:gold@aros.net}

\end_inset 


\layout Standard

That's all.
 Enjoy X-Mame!
\layout Subsection

Credits
\layout Standard

Lots and lots and lots of thanks to everyone for their great help on the
 xmame project.
 I would like to thank the following people and of course anyone I've forgotten.
\layout Standard

Thank you all,
\layout Standard

Hans
\layout Standard

(Addendum: I'd like to send a big thanks to Hans for his fantastic work
 as longtime xmame/xmess maintainer, and also to those on the mailing list
 who have been most helpful during my transition to official maintainer.
 --Lawrence Gold)
\layout Enumerate

Fathers of the mame-creature (main version)
\begin_deeper 
\layout Itemize

Nicola Salmoria
\layout Itemize

Allard van der Bas
\layout Itemize

Mirko (Mix) Buffoni (General Mantainer)
\end_deeper 
\layout Enumerate

Fathers of mess
\begin_deeper 
\layout Itemize

Brad Oliver 
\layout Itemize

Richard Bannister
\layout Itemize

Ben Bruscella (current coordinator) 
\end_deeper 
\layout Enumerate

Original UNIX/X11 port
\begin_deeper 
\layout Itemize

Allard van der Bas
\layout Itemize

Dick the Ridder
\layout Itemize

Juan Antonio Martinez
\end_deeper 
\layout Enumerate

Semi-retired Unix maintainer extraordinaire
\begin_deeper 
\layout Itemize

Hans de Goede
\end_deeper 
\layout Enumerate

Alpha specific issues
\begin_deeper 
\layout Itemize

Christian Groessler
\end_deeper 
\layout Enumerate

Sun specific issues
\begin_deeper 
\layout Itemize

Keith Hargrove
\layout Itemize

Mathis Rosenhau
\end_deeper 
\layout Enumerate

Irix specific issues
\begin_deeper 
\layout Itemize

Tristram Scott
\end_deeper 
\layout Enumerate

GGI maintainance
\begin_deeper 
\layout Itemize

Gabriele Boccone (original port)
\layout Itemize

Christian Groessler (current maintainer)
\end_deeper 
\layout Enumerate

OpenGL code & maintainance
\begin_deeper 
\layout Itemize

Mike Oliphant
\end_deeper 
\layout Enumerate

Network code
\begin_deeper 
\layout Itemize

Eric Totel
\end_deeper 
\layout Enumerate

Perl scripts for automation of some porting issues
\begin_deeper 
\layout Itemize

Bill Adams
\end_deeper 
\layout Enumerate

Xmame RPMs
\begin_deeper 
\layout Itemize

Jeremy Hansen
\end_deeper 
\layout Enumerate

Mailing list maintainer
\begin_deeper 
\layout Itemize

Chris McCraw
\end_deeper 
\layout Enumerate

Bits and pieces
\begin_deeper 
\layout Itemize

Christian Groessler
\layout Itemize

Torsten Paul
\layout Itemize

Jack Patton
\layout Itemize

David Black
\end_deeper 
\layout Enumerate

AIX Sound code
\begin_deeper 
\layout Itemize

Chris Sharpp
\end_deeper 
\layout Enumerate

IRIX Sound code
\begin_deeper 
\layout Itemize


\family typewriter 

\begin_inset LatexCommand \url[entropy@zippy.bernstein.com]{mailto:entropy@zippy.bernstein.com}

\end_inset 


\family default 
 
\end_deeper 
\layout Enumerate

German readme
\begin_deeper 
\layout Itemize

Robert Hamberger
\end_deeper 
\layout Enumerate

Documentation (SGML, HTML, MAN)
\begin_deeper 
\layout Itemize

Rene Herrmann
\end_deeper 
\layout Section

Legal issues and copyrights concerning mame/mess
\layout Itemize


\series bold 
Please read the MAME/MESS readme-files first!
\layout Itemize

Xmame/xmess should be distributed under terms of the license in 
\begin_inset LatexCommand \url[readme.mame]{readme.mame}

\end_inset 


\layout Itemize

And if you are interested in mess, take a look in 
\begin_inset LatexCommand \url[readme.mess]{readme.mess}

\end_inset 


\layout Itemize

The main issue involves ROM images.
 ROM images are protected under the copyrights of their authors, and CANNOT
 be distributed in the same package as xmame/xmess.
 Download any ROM images at your own risk and responsibility.
\layout Itemize

XInputExtensions-based Joystick support.
 Source code is entirely pure  hack work.
 No sample code, no info at all was found (only library  reference manual)
 and is copyrighted by me (Juan Antonio Martinez).
 Use it under terms of GNU General Public License.
\layout Section

ChangeLogs
\begin_inset LatexCommand \label{ChangeLogs}

\end_inset 


\layout Subsection

The mame/mess ChangeLogs
\layout Standard

These are the changelogs of the offical mame and mess release, the core
 of xmame / xmess.
\layout Itemize


\begin_inset LatexCommand \url[The mame changelog (changes.mame)]{changes.mame}

\end_inset 


\layout Itemize


\begin_inset LatexCommand \url[The mess changelog (changes.mame)]{changes.mess}

\end_inset 


\layout Subsection

The Unix ChangeLog
\layout Standard

And now here is the HISTORY of the xmame project (of course that's why you
 are here :;-)) ...
 René
\layout Itemize


\begin_inset LatexCommand \url[The Unix port changelog (changes.unix)]{changes.unix}

\end_inset 


\the_end
