@database mame.guide

@Master mame.texi

@Width 72


This is the AmigaGuide®  file mame.guide, produced by Makeinfo-1.68 from 
the input file mame.texi.

@node Main "mame.guide"
@next "Configuration"
@prev "Contact"

MAME - Multiple Arcade Machine Emulator
***************************************

   MAME or Multiple Arcade Machine Emulator is as the name suggest an
emulator that let's you play hundreds of classical arcade games on your
computer. The MAME project was started by Nicola Salmoria and is now
maintained by Mirko Buffoni, but there are many contributors from both
the PC and Mac world. This is the Amiga port of MAME which is based
upon the 0.34 beta 3 PC source.


 @{" Configuration            " link "Configuration"}  
 @{" Paths                    " link "Paths"}  
 @{" Keys                     " link "Keys"}  
 @{" Tips                     " link "Tips"}  
 @{" Rebuilding               " link "Rebuilding"}  
 @{" Thanks                   " link "Thanks"}  
 @{" Contact                  " link "Contact"}


@endnode

@node "Configuration" "mame.guide/Configuration"
@next "Paths"
@prev "Main"
@toc "Main"

Configuration
*************

   MAME uses a config file called mame.cfg as a configuration database.
This file is read on startup and automatically saved on exit. With this
database it's possible to have an uniqe configuration for every driver.
To make life a bit simpler it's possible to make a default
configuration for the two major types of drivers (bitmap and vector).
The configuration can be set from both CLI and the GUI. The CLI
configuration options are liste below. The options must be given on the
form <option>=<value>.


 @{" UseDefaults " link "UseDefaults"}  
 @{" ScreenType " link "ScreenType"}  
 @{" ScreenMode " link "ScreenMode"}  
 @{" DirectMode " link "DirectMode"}  
 @{" DirtyLines " link "DirtyLines"}  
 @{" Depth     " link "Depth"}  
 @{" FlipX     " link "FlipX"}  
 @{" FlipY     " link "FlipY"}  
 @{" Antialiasing " link "Antialiasing"}  
 @{" Translucency " link "Translucency"}  
 @{" BeamWidth " link "BeamWidth"}  
 @{" VectorFlicker " link "VectorFlicker"}  
 @{" AutoFrameSkip " link "AutoFrameSkip"}  
 @{" FrameSkip " link "FrameSkip"}  
 @{" Width     " link "Width"}  
 @{" Height    " link "Height"}  
 @{" Buffering " link "Buffering"}  
 @{" Rotation  " link "Rotation"}  
 @{" Sound     " link "Sound"}  
 @{" AudioChannel0 " link "AudioChannel0"}  
 @{" AudioChannel1 " link "AudioChannel1"}  
 @{" AudioChannel2 " link "AudioChannel2"}  
 @{" AudioChannel3 " link "AudioChannel3"}  
 @{" MinFreeChip " link "MinFreeChip"}  
 @{" Joy1Type  " link "Joy1Type"}  
 @{" Joy1ButtonBTime " link "Joy1ButtonBTime"}  
 @{" Joy1AutoFireRate " link "Joy1AutoFireRate"}  
 @{" Joy2Type  " link "Joy2Type"}  
 @{" Joy2ButtonBTime " link "Joy2ButtonBTime"}  
 @{" Joy2AutoFireRate " link "Joy2AutoFireRate"}  
 @{" RomPath   " link "RomPath"}  
 @{" SamplePath " link "SamplePath"}


@endnode

@node "UseDefaults" "mame.guide/UseDefaults"
@next "ScreenType"
@prev "SamplePath"
@toc "Configuration"

@{b}Yes@{ub}
     The default configuration for this type of driver (bitmap or
     vector) is used instead of the drivers own configuration. (Default)

@{b}No@{ub}
     The drivers very own configuration is used.


@endnode

@node "ScreenType" "mame.guide/ScreenType"
@next "ScreenMode"
@prev "UseDefaults"
@toc "Configuration"

@{b}Best@{ub}
     The screenmode that looks best suited for the selected driver is
     used. (Default)

@{b}WB@{ub}
     A window on the Workbench is used.

@{b}Custom@{ub}
     The screenmode described by @{b}ScreenMode@{ub} and @{b}Depth@{ub} is used.

@{b}UserSelect@{ub}
     A screenmode requester is presented at startup where the wanted
     screenmode can be selected.


@endnode

@node "ScreenMode" "mame.guide/ScreenMode"
@next "DirectMode"
@prev "ScreenType"
@toc "Configuration"

   This option takes a valid screenmode id number as the value.


@endnode

@node "DirectMode" "mame.guide/DirectMode"
@next "DirtyLines"
@prev "ScreenMode"
@toc "Configuration"

@{b}Off@{ub}
     Direct access to graphics card memory isn't used.

@{b}Draw@{ub}
     The graphics card memory is used directly as MAMEs internal screen
     buffer. There's no second copy stage, but there several layers
     with transparency may be writte to it.

@{b}Copy@{ub}
     The internal screen buffer is copied directly into the graphics
     card memory. In the PPC version of MAME this will be done by the
     PPC.

   Note that both @{b}Draw@{ub} and @{b}Copy@{ub} method requires a graphics card with an
8 bit screenmode and that it can be a bit dangerous because it locks
the bitmap over long periods.


@endnode

@node "DirtyLines" "mame.guide/DirtyLines"
@next "Depth"
@prev "DirectMode"
@toc "Configuration"

@{b}Yes@{ub}
     If it's supported by the driver then only changed lines will be
     copied to the display. (Default)

@{b}No@{ub}
     The whole internal screen buffer is copied to the display for
     every frame.


@endnode

@node "Depth" "mame.guide/Depth"
@next "FlipX"
@prev "DirtyLines"
@toc "Configuration"

   The number of bits per pixel.


@endnode

@node "FlipX" "mame.guide/FlipX"
@next "FlipY"
@prev "Depth"
@toc "Configuration"

@{b}Yes@{ub}
     Flip the display around the y axis.

@{b}No@{ub}
     Don't flip the display around the y axis. (Default)


@endnode

@node "FlipY" "mame.guide/FlipY"
@next "Antialiasing"
@prev "FlipX"
@toc "Configuration"

@{b}Yes@{ub}
     Flip the display around the x axis.

@{b}No@{ub}
     Don't flip the display around the x axis. (Default)


@endnode

@node "Antialiasing" "mame.guide/Antialiasing"
@next "Translucency"
@prev "FlipY"
@toc "Configuration"

@{b}Yes@{ub}
     Draw the vector graphics using antialiasing.

@{b}No@{ub}
     Don't draw the vector graphics using antialiasing. (Default)


@endnode

@node "Translucency" "mame.guide/Translucency"
@next "BeamWidth"
@prev "Antialiasing"
@toc "Configuration"

@{b}Yes@{ub}
     Draw the vector graphics with translucency.

@{b}No@{ub}
     Don't draw the vector graphics with translucency. (Default)


@endnode

@node "BeamWidth" "mame.guide/BeamWidth"
@next "VectorFlicker"
@prev "Translucency"
@toc "Configuration"

   The width of the vector beam. Ir's a whole number from 1 to 16 where
1 is default.


@endnode

@node "VectorFlicker" "mame.guide/VectorFlicker"
@next "AutoFrameSkip"
@prev "BeamWidth"
@toc "Configuration"

   Emulate the flicker on vector graphics based drivers. It's a whole
number from 0 to 100 where 0 is no flicker and default.


@endnode

@node "AutoFrameSkip" "mame.guide/AutoFrameSkip"
@next "FrameSkip"
@prev "VectorFlicker"
@toc "Configuration"

@{b}Yes@{ub}
     The frameskip value will be dynamically calculated in an attempt
     to get as close to full speed as possible.

@{b}No@{ub}
     The frameskip value is selected by the user. (Default)


@endnode

@node "FrameSkip" "mame.guide/FrameSkip"
@next "Width"
@prev "AutoFrameSkip"
@toc "Configuration"

   Number of frames to skip. A maximum of 3 frames can be skipped.


@endnode

@node "Width" "mame.guide/Width"
@next "Height"
@prev "FrameSkip"
@toc "Configuration"

   Width of the display. It only overrides the requested width from the
driver if the requested width is smaller. Vector graphics based drivers
will scale to this width.


@endnode

@node "Height" "mame.guide/Height"
@next "Buffering"
@prev "Width"
@toc "Configuration"

   Height of the display. It only overrides the requested height from
the driver if the requested height is smaller. Vector graphics based
drivers will scale to this height.


@endnode

@node "Buffering" "mame.guide/Buffering"
@next "Rotation"
@prev "Height"
@toc "Configuration"

@{b}Single@{ub}
     The internal screen buffer is drawn into the disply buffer that's
     currently displayed. This may lead to flickering (Especially on
     AGA). (Default)

@{b}Double@{ub}
     Two display buffers are used so the internal screen buffer can be
     drawn in the display buffer that currently isn't displayed.

@{b}Triple@{ub}
     Uses three buffers to reduce the chances for delay while waiting
     for a buffer that isn't currently displayed or on it's way to be
     displayed.


@endnode

@node "Rotation" "mame.guide/Rotation"
@next "Sound"
@prev "Buffering"
@toc "Configuration"

@{b}No@{ub}
     Don't rotate the display. (Default)

@{b}Left@{ub}
     Rotate the display to the left.

@{b}Right@{ub}
     Rotate the display to the righ.


@endnode

@node "Sound" "mame.guide/Sound"
@next "AudioChannel0"
@prev "Rotation"
@toc "Configuration"

@{b}No@{ub}
     Don't make a sound. This normally speeds up the emulation because
     most arcade games had dedicated processors for the sound output
     that in this case don't need to be emulated.

@{b}Paula@{ub}
     Uses audio.device to play the sound. In this case only 4 of the 16
     channels used internally will be played. Which 4 channels played
     can be configured with @{"AudioChannel0" link "AudioChannel0"}, @{"AudioChannel1" link "AudioChannel1"},
     @{"AudioChannel2" link "AudioChannel2"} and @{"AudioChannel3" link "AudioChannel3"}.

@{b}AHI@{ub}
     All 16 channels are played using the lowlevel interface of AHI.


@endnode

@node "AudioChannel0" "mame.guide/AudioChannel0"
@next "AudioChannel1"
@prev "Sound"
@toc "Configuration"

   A number between 0 and 15 specifies which of the 16 internal sound
channels that will be played in hardware channel 0.


@endnode

@node "AudioChannel1" "mame.guide/AudioChannel1"
@next "AudioChannel2"
@prev "AudioChannel0"
@toc "Configuration"

   A number between 0 and 15 specifies which of the 16 internal sound
channels that will be played in hardware channel 1.


@endnode

@node "AudioChannel2" "mame.guide/AudioChannel2"
@next "AudioChannel3"
@prev "AudioChannel1"
@toc "Configuration"

   A number between 0 and 15 specifies which of the 16 internal sound
channels that will be played in hardware channel 2.


@endnode

@node "AudioChannel3" "mame.guide/AudioChannel3"
@next "MinFreeChip"
@prev "AudioChannel2"
@toc "Configuration"

   A number between 0 and 15 specifies which of the 16 internal sound
channels that will be played in hardware channel 3.


@endnode

@node "MinFreeChip" "mame.guide/MinFreeChip"
@next "Joy1Type"
@prev "AudioChannel3"
@toc "Configuration"

   If audio.device is used for the sound playing then samples used by
the selected driver will be loaded into chipram. Many drivers use many
and large samples and using all of the chipram can be rather dangerous.
As a solution this option lets you specify how many kilobytes of
chipram must be available after a sample has been loaded. If this is
not the case the sample will be loaded into fastram instead. It can
still be played, but it will be a little bit slower. This option
defaults to 64.


@endnode

@node "Joy1Type" "mame.guide/Joy1Type"
@next "Joy1ButtonBTime"
@prev "MinFreeChip"
@toc "Configuration"

@{b}No@{ub}
     Disable joystick 1.

@{b}JoyStickPort2@{ub}
     A joystick connected to port 2 is used as joystick 1.

@{b}JoyPadPort2@{ub}
     A CD32 compatible joypad connected to port 2 is used as joystick 1.

@{b}MousePort1@{ub}
     A mouse connected to port 1 is used as a trackball instead of
     joystick 1.


@endnode

@node "Joy1ButtonBTime" "mame.guide/Joy1ButtonBTime"
@next "Joy1AutoFireRate"
@prev "Joy1Type"
@toc "Configuration"

   Most arcade games use at least two fire buttons but a standard
joystick has only one.  Because of this a second fire button can be
emulated by keeping the fire button pressed for a certain amount of
time. This options specifies how many 1/10 of a second the fire button
must be kept pressed before a second fire button is triggered. The value
can be from 0 to 9 where 0 is default and means that a second fire
button isn't emulated.  This option is mutually exclusive with
@{"Joy1AutoFireRate" link "Joy1AutoFireRate"}.


@endnode

@node "Joy1AutoFireRate" "mame.guide/Joy1AutoFireRate"
@next "Joy2Type"
@prev "Joy1ButtonBTime"
@toc "Configuration"

   Keeping the fire button pressed can be converted into multiple fire
button presses. The option specifies the number of times per second the
fire button should be pressed. The value can be from 0 to 5 where 0 is
default and disables the autofire support. This option is mutually
exclusive with @{"Joy1ButtonBTime" link "Joy1ButtonBTime"}.


@endnode

@node "Joy2Type" "mame.guide/Joy2Type"
@next "Joy2ButtonBTime"
@prev "Joy1AutoFireRate"
@toc "Configuration"

@{b}No@{ub}
     Disable joystick 2.

@{b}JoyStickPort1@{ub}
     A joystick connected to port 1 is used as joystick 2.

@{b}JoyPadPort1@{ub}
     A CD32 compatible joypad connected to port 1 is used as joystick 2.


@endnode

@node "Joy2ButtonBTime" "mame.guide/Joy2ButtonBTime"
@next "Joy2AutoFireRate"
@prev "Joy2Type"
@toc "Configuration"

   Most arcade games use at least two fire buttons but a standard
joystick has only one.  Because of this a second fire button can be
emulated by keeping the fire button pressed for a certain amount of
time. This options specifies how many 1/10 of a second the fire button
must be kept pressed before a second fire button is triggered. The value
can be from 0 to 9 where 0 is default and means that a second fire
button isn't emulated.  This option is mutually exclusive with
@{"Joy2AutoFireRate" link "Joy2AutoFireRate"}.


@endnode

@node "Joy2AutoFireRate" "mame.guide/Joy2AutoFireRate"
@next "RomPath"
@prev "Joy2ButtonBTime"
@toc "Configuration"

   Keeping the fire button pressed can be converted into multiple fire
button presses. The option specifies the number of times per second the
fire button should be pressed. The value can be from 0 to 5 where 0 is
default and disables the autofire support. This option is mutually
exclusive with @{"Joy2ButtonBTime" link "Joy2ButtonBTime"}.


@endnode

@node "RomPath" "mame.guide/RomPath"
@next "SamplePath"
@prev "Joy2AutoFireRate"
@toc "Configuration"

   The selected driver will look for roms in this path as well as in
the normal ones.


@endnode

@node "SamplePath" "mame.guide/SamplePath"
@next "UseDefaults"
@prev "RomPath"
@toc "Configuration"

   The selected driver will look for samples in this path as well as in
the normal ones.


@endnode

@node "Paths" "mame.guide/Paths"
@next "Keys"
@prev "Configuration"
@toc "Main"

Paths
*****

   MAME searches for roms in these directories/archives:

   - <RomPath>/<GAME>/

   - <RomPath>/<GAME>.zip

   - <RomPath>/<GAME>.lha

   - <RomPath>/<GAME>.lzx

   - PROGDIR:roms/<GAME>/

   - PROGDIR:roms/<GAME>.zip

   - PROGDIR:roms/<GAME>.lha

   - PROGDIR:roms/<GAME>.lzx

   - PROGDIR:<GAME>/

   - PROGDIR:<GAME>.zip

   - PROGDIR:<GAME>.lha

   - PROGDIR:<GAME>.lzx

   MAME searches for samples in the same places it searches for roms and
in these directories/archives:

   - <SamplePath>/<GAME>/

   - <SamplePath>/<GAME>.zip

   - <SamplePath>/<GAME>.lha

   - <SamplePath>/<GAME>.lzx

   - PROGDIR:samples/<GAME>/

   - PROGDIR:samples/<GAME>.zip

   - PROGDIR:samples/<GAME>.lha

   - PROGDIR:samples/<GAME>.lzx

   MAME has internal support for zip files but need external programs
for lha and lzx support. If you want to use lha or lzx ROM archives you
need to have lha and/or lzx in your default path.

   Highscores are stored in PROGDIR:hi/ and game configurations (dip
settings, keyboard and joystick setup) are stored in PROGDIR:cfg/.


@endnode

@node "Keys" "mame.guide/Keys"
@next "Tips"
@prev "Paths"
@toc "Main"

Keys
****

@{b}Right-Amiga-N@{ub}
     New game.

@{b}Right-Amiga-Q@{ub}
     Quit MAME.

@{b}Right-Amiga-S@{ub}
     Snapshot the display and save it as an IFF ILBM. This doesn't work
     if @{"DirectMode" link "DirectMode"} isn't set to @{b}Off@{ub}.

@{b}Tab@{ub}
     Enter coonfiguration menu. Press @{b}Tab@{ub} or @{b}Esc@{ub} to get back to the
     emulation.

@{b}P@{ub}
     Pause game.

@{b}F3@{ub}
     Reset game.

@{b}F4@{ub}
     Show the game graphics. Use cursor keys to change set/color, F4 or
     Esc to return to the emulation.

@{b}F7@{ub}
     Toggle speed display.

@{b}F8@{ub}
     Change frameskip on the fly.

@{b}Numpad +/-@{ub}
     Increase/decrease the volume.

@{b}F10@{ub}
     Toggle speed throttling.


@endnode

@node "Tips" "mame.guide/Tips"
@next "Rebuilding"
@prev "Keys"
@toc "Main"

Tips
****

  1. Every NeoGeo driver needs @{b}neo-geo.rom@{ub} which is the NeoGeo BIOS.
     The best thing to do is to put this file in the directory @{b}neogeo@{ub}
     or @{b}roms/neogeo@{ub} so it can be accessed by all NeoGeo drivers.



@endnode

@node "Rebuilding" "mame.guide/Rebuilding"
@next "Thanks"
@prev "Tips"
@toc "Main"

Rebuilding
**********

   If you want to rebuild MAME yourself you need both the Amiga source
and the PC source it's based on. The latest Amiga source is available
at `http://www.triumph.no/mame.html' and the PC source should be
available at either the official homepage or
`http://www.davesclassics.com/mamepage.html'.

Software needed:

  1. A @{b}GeekGadgets@{ub} installation. For more information check out
     `http://www.ninemoons.com'.

  2. @{b}Devpac@{ub} or a source compatible assembler. You'll have to replace
     the @{b}genam@{ub} command in the makefiles if you don't use @{b}Devpac@{ub}.

  3. If you change @{b}src/amiga/mame.cd@{ub} you'll need @{b}CatComp@{ub} or a
     compatible clone.


Building steps:

  1. Unarchive the Amiga source somewhere.

  2. Make a directory called @{b}org/mame@{ub} where you installed the Amiga
     source.

  3. Run @{b}make -f makefile.amiga mamefix@{ub}. This will modify all those PC
     sources so they're compilable with gcc.

  4. Run @{b}make -f makefile.amiga makedir@{ub} to make all the directories
     needed.

  5. Run @{b}make -f makefile.amiga all@{ub} to make all versions.


Notes:

  1. You'll probably get an internal compiler error on
     @{b}src/amiga/video.c@{ub}. To get around this you should compile it with
     @{b}-O0@{ub}.



@endnode

@node "Thanks" "mame.guide/Thanks"
@next "Contact"
@prev "Rebuilding"
@toc "Main"

Thanks
******

@{b}Trond Werner Hansen <trond.hansen@triumph.no>@{ub}
     For his CGXHooks linker library.

@{b}Mikael Kalms@{ub}
     For his chunky to planar routine.

@{b}Børge Nøst@{ub}
     For testing the 68060 version and for not getting more than
     slightly mad everytime it crashed his machine.

@{b}Thom Heppleston@{ub}
     For the gift. :)


@endnode

@node "Contact" "mame.guide/Contact"
@next "Main"
@prev "Thanks"
@toc "Main"

Contact
*******

@{b}Email@{ub}
     <mats.hansen@triumph.no>

@{b}Snail@{ub}
     Mats Eirik Hansen
     Edgar B. Schieldropsvei 34-18
     7033 Trondheim
     Norway

@{b}IRC@{ub}
     meh in #amiga on ANet.

@{b}Homepage@{ub}
     `http://www.triumph.no/mame'

@{b}The official MAME project homepage@{ub}
     `http://www.media.dsi.unimi.it/mame'

@endnode

