#
3D ARCADE / EMULAXIAN
FRONTEND 0.96
Manual & Reference

by Peter Vogels, aka )p(, mailto:peter@i-modernist.com and Torben Mathiassen, aka Deniro.
license: free for personal non commercial and non public use…
website emulaxian cabinet: http://www.i-modernist.com/emulaxian
frontend support website: http://3darcade.mameworld.net
lastest version of this document: http://3darcade.mameworld.net/frontend/fereadme.htm
frontend forum: http://echo.messageboard.nl/2243/
many thanks to all contributers in the forum for their input and help with this project!

### Introduction

Quote from the first intro text of the first version of the frontend:
"...I wanted to create an arcade cabinet for mame that kept the feel of the original Galaxian cabinet. Also I wanted to achieve that the end result would feel as an organic whole, were everything fits together. The best way to realize this was, in my opinion, to create my own frontend that takes up the Galaxian/Emulaxian theme. Therefore I use the side-art of the cabinet as a backdrop in the frontend. And the Galaxians are everywhere...and yes... they come and fly by in formation...and yes... you can shoot them... ;-) Also I made a banner that morphs from Galaxian to Emulaxian when you go from the gamelist selection screen to the game selection screen and from Emulaxian to Galaxian when you go from the game select screen to the gamelist selection screen were the Galaxians fly in and you have to shoot one to select a gamelist. ..."
OK that was the beginning... Emulaxian/3darcade has grown into a very complete and fully skinnable and rotable frontend that can launch just about anything. It features powerful and fully customizable search and filter functions to find games fast. What makes it unique besides the sheer number of media that it supports to make your skins are the menu styles it can use. Besides the normal listbox with screenshots/cab layout you have a game like menu were you shoot at sprites to select menu items. And then there are the two virtual arcade interfaces were you can walk around in rooms filled with 3d models of cabs, select mp3's on a working jukebox and watch some movies on a movie screen. These arcades are also fully customizable...create your own personal arcade!
^

# 1. Overview, setup and use.

## 1.1 Overview

The frontend features 4 different menu types to represent menu items:

### The 3darcade menu interface

where you can select games and other menu items in a virtual arcade. There are two variants of this menu type, the cylinder arcade and the fps arcade:

#### the cylinder arcade

In the cylinder 3d arcade interface games are placed in a circle with the camera facing towards them. When the camera rotates a cabinet is added in the direction the camera is moved and removed from the other side. This way the user can rotate indefinitely through any size gamelist. The user can adjust his view of the virtual arcade by changing the camera position. Besides rotating horizontally for selecting games he can rotate the camera vertically, move the camera up and down and most important zoom in and out on the cabinets. This version of the 3d arcade works best as a flexible frontend in combination with all the jump, search and filter features of the frontend. It also can be used as an ultracade like wheel interface. See here for an example.

#### the fps arcade

The second 3d arcade interface uses a fps style interface. The user walks around in a virtual room representing an arcade filled with games, recreating the experience of being in a real arcade. Each fps arcade setup contains a fixed, although adjustable, maximum number of games that can be displayed at the same time. The user can replace the current selection of games from the gamelist that is displayed with the next or previous set of games and cycle through the complete list. This method is a lot less flexible and powerful then the methods use to select games in the other interfaces. To overcome this issue this interface is closely integrated with the other menu types. For example select a different set of games by using filters, for example the filter random games can be used to get a random selection from the current gamelist in the fps arcade. Integration with the other menu types is further enhanced by the teleporter which will put the users right in front of the currently selected game when you switch back to the fps arcade...a great way to find games fast even in very big fps arcades.

### The listbox menu

type displays menu items in a listbox and supports two variants. The paging menu variant displays menu items from a list in pages of 16 text items, with a 3d model or two bitmaps (for mame a games marquee and screenshot) representing the highlighted item. The scrolling menu variant displays menu items in a linear scrolling list.

### The shooting menu

type were you shoot at galaxians to select a menu item. Only the first 8 items from a list can be shown. In principle this menu can be replaced by other menus made in flash that have been designed to correctly communicate with the frontend.

### The texture overlay menu type

works like the paging menu and is overlayed on a texture on a 3d model in the arcade. It supports all search and filter functions of the fe just like the paging menu. This can be any texture on any model. It is used to select mp3's, movies and to display the gamelist (gl), gamelist selection (gs) and selectionset selection (ss) menus inside the 3d environment to function as a gate to new arcade environments or to launch games. Select a menu item with a mouse double click or with the kstartgame (default=1) key. Exit the overlay menu with a right mousebutton click or with the kwhichmenu (default=6) key.
For the game selection menu (gl) the user can switch on the fly between cylinder arcade, fps arcade and listbox representations of the list. The default menu system to be used for the game selection menu (gl) as the fe boots is setup in the general configuration file. Which menu system to use for the gamelist selection menu (gs) and the selectionset selection menu (ss) is setup in the skin cfg file for the current skin.

### Frontend features

The frontend is completely skinnable. And I mean everything, every visible object be it backdrop bitmaps, text, video, the 3d arcade sprite, even the shooting menu...whatever… All have their parameters like the file to use, position, scale, blend etc. exposed in a cfg file in the skins folder. Skins can easily be created and adjusted with the internal active skinner. Just go into skinner mode and all sprites become draggable with the mouse. Move, resize and rotate them on the fly. And double clicking a sprite will popup a menu with all detailed options for that sprite.
Both arcade interfaces have a skinnable animated background, floor and ceiling. Each gamelist can have it’s own! Create your own arcade! Animations can easily be created from a set of images in the internal cfg utility. The fps style arcade also has the option to use besides the cylinder, a custom model as the arcade environment. This can be anything from a simple box to a complete reproduction of an arcade with additional lighting and animations. You can also grab cabs and move them around to create your own layouts…the new positions will be saved automatically after you hit the movecabs key again... You can also define additional rules which 3d model to show when no model was matched the normal way. For example use the same model for all horizontal games, all driving games etc. when no specific model was found. And you can get rid of my emulaxian model and set another model as the default. These rules are defined for each arcade in its arcade cfg file.
The models can also have, in the listbox, arcade and textureoverlay interfaces, video with sound on the screenshot texture. This works very cool with videos from attract modes or in game gameplay. It really brings the 3d models come alive. You can use real media streams (*.rm files) and any format windows mediaplayer supports. In addition to video on the screenshot texture of the selected model the frontend can also cycle between bitmaps on the other models which for example can be used to create the illusion of attractmodes running on all models in the arcade environments.
Search and filter games just like you would enter high scores. Filters can be added by the user based on any entry in the gamelist. It is also used to select a set of 1,10,25,50 or 100 random games from the current gamelist. And for sorting games alphabetically, by times played and by duration played.
Gamelists for mame can automatically be generated with the internal parser. The gamelist for mame can also be created with Sortinfo a great program by Robert Palmqvist and can have any name and size. I use favorites, originals, platform, shooter, maze, puzzle, fighter, sports, and misc. I also added support to switch between two gamelists with a key press. I use it for switching between favorites and all games and between all original games in a category (maze) and all games in a category (maze_all). For other emulators you have to create your own...the internal parser can create gamelists from the file names in a directory and from crc’s for visual pinball games.
For each mame game the frontend can display a game info screen with the marquee, flyer, cabinet (picture, video or quicktime vr movie), title, year, manufacturer, controllers, etc. Also category information from a catver.ini file and the information for that game from mame's history.dat. For other emulators you can put in the gamelists whatever you want to be displayed on the game info screen. For other emulators you can also display a text or basic html file with for example game manuals instead of the history.dat file. When using the listbox system for selecting selectionsets and gamelists you get the same kind of info screen, here you can put for example the mame readme file and pictures of consoles etc. Or anything else remember everything and every screen are individually skinnable... All the menus have also a help screen that can among others be used to show pictures of control panel layouts for each game retrieved from the help path setup in the emulator cfg files. When nothing is found a picture is shown that is defined in the cfg file for the current skin.
Speech... The frontend will say the name of the current selected game when a sapi 4 or 5 compatible text to speech engine is installed. Windows XP users already have it on their system. If you have such an engine installed then just enable speech in the fe by setting the dospeech option in fe.cfg to true.
The frontend can play two simultaneous mp3 streams in the background. The first stream uses by default an arcade ambience sound loop. The second stream is used for playing music playlists and can even be chosen directly on a fully functional model of a jukebox!
Each emulator supports an alternative emulator executable. You can set to use the 2, 5, 6 and 25 entry of a game in a gamelist to select the alternative executable for certain games or categories...for mame these correspond with rom, clone of, rom of and driver. For other emulators you can create your own.
Support for commandline options. They can be set for individual games or any other entry from the gamelist for each emulator. For example you can set a commandline options for every horizontal game or every maze game etc. with only one entry in the commandline configuration file for that emulator. There is also an option to combine two entry's with a logical AND.
The frontend should be able to launch everything that can be run from a commandline. For launching non commandline based emulators, like Modeler, Impact etc. you can use the wrappers from the Lazarus frontend.
Cabinetmode. Hide the taskbar, hide the mouse pointer, hide all windows so you won’t see those ugly boxes and disable window keys for that real cabinet feel...but be careful, selecting this option, can lockup your system, or better lock you out ;-)
And more…
^

## 1.2 How to install the frontend

Just taking a peek at the cfg folder could scare anyone. Yes it is true the frontend has lots options... But if you only want a basic mame frontend along the lines of the default setup, it only takes a few adjustments to get things going. And for those who don't want to bother with cfg files the fe now supports a fully featured internal configuration utility, with an easy to use point and click interface, to setup all the features of the frontend. The choice is yours! The configuration utility can be reached from within the fe with the kcfgmenu key (default=pagedown) or doubleclick "go directly to configuration menu.bat" to go directly to it. Section "1.2.1 Quick Setup" will guide you in how to get the fe going. Section "1.2.2 Quick how to use the frontend" shows you how to use it. Section "1.3 Some suggestions to start customizing the basic setup" guides you in making your first adjustments to the basic setup to customize the fe to your own needs. Please read section 1.3 as it covers most of the setup questions I get!

### 1.2.1 Quick setup

- Unzip the frontend in a new folder. Keep the subfolder structure.
- Install mame and some roms for it. It is recommended to use the regular windows commandline version of mame. Get it here.
  Screenshots can be found here and here.
  Titles here and here.
  Marquees here and here.
  Flyers here and here.
  Cabinets here and here.
- First we will setup the fe to work with mame by adjusting the pathnames and executable options for the mame emulator. In the main configuration menu [access with kcfgmenu key (default=pagedown)] select the listmanager. Then click on the mame emulator in the emulator section and choose edit emulator.
  In section 1 point emupath and workingdir to your mame folder. It is recommended to setup your rompaths in mame's own ini file. If you do that keep gamepath empty. If not point gamepath to the folder you keep your roms in.
  In section 2 point sshot, titles, marquees, flyers and cabinets to their folders on your system.
  In section 3 point mame to your mame executable. That is all!
  (These options can be setup by hand in cfg\emulators\femame.cfg)
- Optionally put models from the 3d arcade site unzipped in the models folder. I would suggest only add new models after you got the fe up and running.
- Run fe3darcade.exe and when you did setup the mame emulator configuration correctly you will have a fully functional mame frontend and you will find yourself in the favorites gamelist from the arcades selectionset of gamelists using the fpsarcade menutype.

If you run the fe after unzipping and it crashes on you be sure you unzipped it keeping the folder structure. If that is ok try a different renderer in the general configuration menu by adjusting the prefrenderer option in section 4 to a different renderer. Or adjust the general configuration file directly in cfg\fe.cfg. You will have to exit the fe and restart the fe before changes to the renderer will take effect. It is always a good idea to try the different renderers to see which one works best for your machine.If the fe is slow when you come back from a game the frontend has probably dropped to software mode. If you see that first try a different renderer. If that does not help set the renderfix option to true in section 4 of the general configuration menu. For ati and nvidia cards I would suggest to start with the opengl renderer and renderfix set to false.
I STRONGLY recommend to batchresize your marquee's and screenshots and all other artwork you plan to show inside the 3d environment to a power of 2 format. I would suggest 256x256 for screenshots and marquees. And if your graphic card can handle it 256x512 for pinball playfields. This will depending on your videocard give a nice perfomance boost while texturizing models on the fly. This is essential for good performance in cylarcade mode and with the cycling of bitmaps on the screenshot texture in fpsarcade mode. Irfanview is a free program that can do this for you with ease. In irfanview select under file batch conversion/rename and in the next screen you will see in the lower right part set advance options, click on set advance options and set the size to 256x256.

### 1.2.2 Quick how to use the frontend

This will briefly introduce how the use the frontend using the default arcade selectionset.
How to navigate through a gamelist to select games? For the scrolling version of the listbox menutype use kgameup (default=up) and kgamedown (default=down) to scroll through the list and kgameleft (default=left) and kgameright (default=right) to scroll fast through the list. For the cylarcade menutype kgameleft and kgameright will walk through the gamelist and kgameup and kgamedown will zoom in and out of the cabs. In the fpsarcade mode these keys are used to move around. The game you are looking at when you stop will be selected. Use mouselook and or the camera keys to look right at the cab. krotvertup (default=g) rotates the camera view towards you. krotvertdown (default=d) rotates the camera view away from you. kcameraup (default=r) moves the camera up. kcameradown (default=f) moves the camera down.
In the cylarcade and listbox menutypes jump through the list by letter with kgotoaz (default=x) and kgotoza (default=z). Search for a game just like you would enter highscores with ksearch (default=v). And filter gamelist in the same way with kfilter (default=b). kgameleft and kgameright scrolls through the available filters and kgameup and kgamedown scrolls through the options for each filter. Filters can for example be used to select only vector games, vertical games, a random selection of games, etc. from the current gamelist.
Launch the selected game with kstartgame (default=1) or by doubleclicking the mouse. Popup the information screen for the selected game with kinfo (default=3) which will show things like the flyer and information from history.dat. Switch between fpsarcade and cylarcade on the fly with kwhicharcade (default=7) and between the listbox and the last used arcade menutype with kwhichmenu (default=6).
A selectionset contains a selection of the available gamelists setup in pairs. The first pair in the arcade selectionset is a favorites list and a list with all original games. Then follow lists for the basic categories. Switch with korig (default=tab) between favorites (favorites.atf) and all games (originals.atf) and between all original games in a category (maze.atf) and all games in a category (maze_all.atf). Use kgsmenu (default=4) to go to the gamelist selection menu to select a new gamelist pair from the available ones in the current selectionset. To add and remove games form the favorites list use kfavorites (default=space). If the favorites list is selected the currently selected game will be removed from it. If another gamelist is selected then the game will be added to the favorites list.
Rightclicking the mouse will toggle mouselook on and off so you can click on buttons and on the chat sprite to enable and disable chat input.
^

## 1.3 Start customizing the setup

Some suggestions to start customizing the basic setup

### 1.3.1 Change the keymappings

select different keymappings to use with the frontend
Keys are remapped in section 1 of the general configuration menu and are saved in cfg\fe.cfg. From the main configuration menu select general configuration. Wow there are lots of them...but you don't have to map them all, only the ones you plan to use, and you can map a lot of them to the same keys. For example use up and down to scroll through the gamelist in the listbox menu and use the same keys to scroll the text in the history field of the information screen. To change a keymapping click on it and select the new key you want to use from the popup. It is recommended to set non used ones to empty.

### 1.3.2 Change the startup menutype

Select the startup menutype and switching between the menutypes
First go to section 3 of the general configuration menu.

- If you want the fe to startup like regular frontend with the listbox menutype. Then set show3dmenu to false. If you also don't want to see the 3dmodel but instead bitmaps for the screenshot and marquee then set also showglcabsorpics to false.
- If you want the fe to startup with the fpsarcade menutype. Then set show3dmenu to true and set show3dwhich to fpsarcade.
- If you want the fe to startup with the cylarcade menutype. Then set show3dmenu to true and set show3dwhich to cylarcade.

While in the fe you can switch on the fly between fpsarcade and cylarcade with the kwhicharcade key (default=7). And you can switch between listbox and the last selected arcade menutype with kwhichmenu key (default=6).

### 1.3.3 Adding a new arcade environment

How to add a new arcade to the arcade demos selectionset using the listmanager
We will take the exhibition arcade as an example. It takes just a few clicks. Unzip the exhibition zip in the fe folder keeping the folder structure. Now we have to add the gamelist for the exhibition arcade to the arcade demos selectionset.
Select the listmanager from the main configuration menu. Click on the arcade demos entry in the selsets field and select edit... from the popup. Click anywhere in the field with gamelists and select add a new gamelistpair from the popup. In the dialog select the exhibition gamelist, exhibition.atf. Give it a descriptive name and select cancel when asked for a w3d to show in the ssmenu.
Now we have to associate the gamelist with the exhibition arcade cfg file so the fe shows the exhibition arcade when this gamelist is selected. Click on the newly added exhibition gamelist entry and select edit left gamelist. Click in the arcade field and select select a new gl arcade from the popup. In the dialog select the exhibition arcade cfg, exhibition.cfg. Select close, save, save, done.
The cfg\lists\exhibition.atf gamelist has now been added to the arcade demos selectionset and the fe has been told to use the arcades\exhibition.cfg arcade cfg file when this gamelist is selected.
So now lets make some changes to the arcade configuration files themselves. Let us adjust the maximum number of models at the same time. In the listmanager in the arcades section click on an arcade cfg file and select edit... from the popup. The utility will now show all the options in this arcade configuration file. Go to section 4 and click on fpscabsmax and change the value. If you want another model then the Emulaxian model to be the default model then click on defcab and choose the model you want to use in the dailog box. Click close and save, done!
More information on the arcade environments and how to assign them to selsets and individual gamelists can be found in the "3.4 How to create and assign arcades" section of this document. Hint be sure to checkout how to move cabs around to create your own layouts!

### 1.3.4 Create a new arcade layout

How to add, replace, remove, move, scale and rotate models/games with the mouse
kmovecabs (default=b) turns movecabs mode on and off in the fpsarcade menutype. You can not move models while mouselook is on. Turn it temporarily off with a mouse right-click.
- Move, scale and rotate models with the mouse: Click on a model to select it. Hold down the mouse to move the model around. Press shift to move the model up and down. Pressing crtl and alt will respectively rotate the model around its y-axis and x-axis. Pressing both while moving the mouse with the mousebutton down will rotate the model around its z-axis. Be aware that the model moves in model space. For intuitive movement first rotate the model around its y-axis so it faces the camera. Then drag it to its place..
- Add, replace and remove models with the mouse. Remove a game/model by holding down the delete key and click on the game you want to remove. Add a game/model by holding down the insert key and click anywhere in the arcade. A dialog will appear to select a gamelist. Then another dialog appears that lets you select a game from the selected gamelist. The selected game will appear right in front of your view and is added to the current gamelist. To replace a game/model hold down the home key and click on the game you want to replace. A dialog will appear to select a gamelist. Then another dialog appears that lets you select a game from the selected gamelist. The selected game will immediately replace the current game and its model.
  Changes take effect immediately but won't be saved until the user confirmes to save the changes made when leaving movecabs mode by pressing kmovecabs (default=b) again.
  More options and information on how to use movecabs mode can be found in the "3.4 How to create and assign arcades" section of this document.

  ### 1.3.5 Experiment with the active skinner

  select a different menu type to select gamelists and experiment with the active skinner
  Selecting gamelists by shooting at galaxians if fun but will not fit with the theme of most skins. So how to change it to for example the listbox menutype. From the main configuration menu select the skinner. Then from the general skinner menu select general options. Then doubleclick the background to get the popup with the options and find the gs menu. Click on its value field and select listbox from the popup. If you are using the default horizontal skin this will set the gsmenu option in skins\horizontal.cfg to
  gsmenu|listbox|
  . Go back to the general skinner menu and close and save, done!
  Custom skins can be created dynamically in the fe with its build in active skinner. See "3.5 How to create and assign skins" section of this document. To take a peek go into skinnermode by pressing the kskinner key (default=pageup) and drag the sprite around. Then doubleclick on a sprite to see the popup with all the detailed options for that sprite. Don't be scared to ruin the skin you will be asked if you want to save your changes if you leave skinner mode...

  ### 1.3.6 Connect to the multiuser arcades

  select a username and setup the fe to connect to the multiuser arcades
  From the main configuration menu select general configuration. Go to section 5. Click on user and enter a unique name. Then select how you want to connect to the internet by clicking on mugroup. Enter lobby if you want to use the fe normally but want to be able to see who is in the online and chat with other users in lobby mode. Enter the name of the online arcade, for example mudemo, if you want to go directly to an online arcade. In online arcades connected users can see each other walking around as avatars and chat. To select a different avatar for yourself click on avatar and select an avatar model from the list. The name of an avatar model normally start with av, so avpacman.w3d. If the server has changed you can adjust it by clicking on server. Which server is being used is always listed at the multiuser section of the forum at the 3darcade website. For information on how to chat and how to see who is online and more see the "3.7 How to use the online multiuser arcades" section of this document.
  ^

  ## 1.4 Files needed for the frontend to work

  What follows is a reference of all the elements the frontend uses to do its thing.
  - The cfg folder contains the general configuration file and all configuration files related to gamelists.
    cfg/fe.cfg --the main configuration file for the frontend itself. Please read the comments in there before you contact me
    cfg/feselsets.cfg --contains a list with the selectionsets the fe can use and is displayed in the selectionset selection menu.
    cfg/feemulators.cfg --contains a list with emulators the frontend can use when you add a new emulator cfg file you must add an item for it in here.
    cfg/fewhichselset.cfg --In this file the frontend stores the currently selected selectionset

    #### for each selection set:

    cfg/selsets/fe(selectionsetname).cfg --the main configuration file for each selectionset. A selectionset is a selection of one or more gamelists. The cfg file defines which gamelists are in the set and it also contains the filters used for these gamelists.
    cfg/selsets/fe(selectionsetname)list.cfg --the last used gamelist for this selectionset by the frontend, by problems reset to:
    namegamelist|1.0000|1.0000|

    #### for each emulator:

    cfg/emulators/fe(emulatorname).cfg --the main configuration file for each emulator or any other executable.
    cfg/emulators/fe(emulatorname)cloptions.txt --in this file you can setup commandline options for the primary executable for an emulator triggered by most of the entries in the gamelist. An fe(emulatorname)cloptions.txt has to be available for all. The same for fe(emulatorname)cloptions.txt.
    cfg/emulators/fe(emulatorname)cloptions.txt --in this file you can setup commandline options for the alternative executable for an emulator triggered by most of the entries in the gamelist.
    ...and the gamelists in cfg/lists
  - The dummys folder contains the dummy files.
    fedummy.png
    marqueesdummy.png
    sshotdummy.png
    The dummys folder contains also subfolders were the fe will search for pictures, text files, videos etc. when they are not found in the paths setup in the emulator cfg files.
  - The arcades folder contains all things related to the 3d arcade environment.
    arcades/default.cfg --the default layout off the arcade environment…each selectionset and gamelist can have its own. The fe first searches for
    arcade(gamelistname)|whicharcadecfgfile|
    entry in the current selection set configuration file. If not found it will search for an
    arcades|whicharcadecfgfileinglmenu/-gsmenu|
    entry in there. If that is not found it will use the default settings in fe.cfg.
    arcades|whicharcadecfgfileinglmenu/-gsmenu/-ssmenu|
    .
  - The skins folder contains all things related to the visual layout of the frontend except the 3d environment.
    skins/horizontal.cfg and skins/vertical.cfg are the configuration files for the default Emulaxian horizontal and vertical skins. The fe first searches for a
    skinset(gamelistname)|skin/altskin|
    entry in the current selection set configuration file. If not found it will search for a
    skinset|skin/altskin|
    entry there, If that is not found it will search for the same entry in
    fe.cfg
    . This way you can have different skins for gamelists, selsets or the whole fe.
  - The frontend root folder.
    fe3darcade.exe –the frontend exe
    arcadetemp.cst, arcadetemp2.cst and arcadetemp3.cst –required dummy files for the animated arcade background and other animated textures
  - Optional.
    models/(name).w3d –additional 3d models for the fe to use
    utilities/history.dat --the frontend reads this file to extract history info about the games
    utilities/catver.ini --the internal mame parser uses this to extract game category info
    utilities/nplayers.ini --the internal mame parser uses this to extract player info
    utilities/crc.exe -calculates crc's from files. Used with the internal visual pinball parser in combination with vplauncher's datfile.
  ^

  # Structures & Configuration

  ## 2.1 The lists hierarchy

  The frontend operates under a hierarchy of lists.
  Above all others is the SELECTION SET. This is a list of lists, basically. Beneath that you have GAMELISTS, which contain references to individual GAMES that use specific EMULATORS.
  Hence:
  - Selection Set
    - Gamelist
      - Specific Game / Emulator
      - Specific Game / Emulator
    - Gamelist
      - Specific Game / Emulator
      - Specific Game / Emulator
      - Specific Game / Emulator
    - Gamelist
      - Specific Game / Emulator
  - Selection Set
    - Gamelist
      - Specific Game / Emulator
      - Specific Game / Emulator
    - Gamelist
      - Specific Game / Emulator
  ...or, to put it in a more concrete example, here's how you could potentially have your frontend set up:
  - Arcade Games
    - Fighters
      - Mortal Kombat / MAME
      - Furniture Warriors / MAME
      - Rival Schools / Zinc
    - Classics
      - Pac-Man / MAME
      - Dig Dug / MAME
      - Dragon's Lair / Daphne
  - Console Games
    - Platformers
      - Super Mario Brothers / NES
      - Super Mario World / SNES
      - Ducktales / NES
    - RPGs
      - Chrono Trigger / SNES
      - Phantasy Star / SegaMasterSystem
      - Final Fantasy Adventure III / Gamebo
  Making sense now? Selection sets of gamelists of games which use emulators. You can have any number of selection sets which have any number of gamelists which use any number of games.
  Selection sets are selected in the selectionset menu (ss). Gamelists are selected in the gamelist selection menu (gs). And games are selected in the game selection menu (gl). The next section describes the working of each of these menus in more detail.
  ^

  ## 2.2 Structure of the menus

  ### 2.2.1 Selectionset Selection menu (ss default key 5)

  - This menu shows all selection sets available to the frontend. This list is retrieved from cfg\feselectionsets.cfg.
  - It is used to select a new set of one or more gamelists. The name of the selected set is stored in cfg/fewichselset.cfg. Then the name of the last used gamelist of this set is retrieved from cfg/selsets/fe(shortname)list.cfg and this gamelist will be loaded.
  - This menu can be either fpsarcade, cylarcade, listbox or shooting (setup in the skin cfg file) and or texture overlay on any 3d model (setup in a gamelist entry arcgatess).
  - Artwork, videos, text etc. to be displayed in this menu and associated info and help screens are pulled from the the dummys subfolders. The fe looks here for items with the shortname of the selection set. (For example download the quicktime version of Dave Dries fantastic arcade 84 video…rename it to arcade.mov and put it in the dummys quicktime folder (dummys/qt/arcade.mov) now go to the selectionset menu (default=5) and highlight Arcade Games then hit the info screen key (default=3) and in a few seconds you will see the movie playing in the info screen! Why because the shortname of this selectionset is arcade…so it will find a movie called arcade.mov. Do you find the quicktime movie to small or to large…no problem open up the skin configuration file and make it as small and large as you want :-)

  ### 2.2.2 gamelist selection menu (gs, default key 4)

  - This menu shows all gamelists from the currently selected selection set. If this selection set is for example "shortname" then this list is retrieved from cfg\selsets\fe(shortname).cfg.
  - It is used to select a gamelist from the current selectionset. The name of the selected gamelist will be stored in cfg/selsets/fe(shortname)list.cfg for the current selection set and then this gamelist will be loaded from the cfg\lists folder.
  - This menu can be either fpsarcade, cylarcade, listbox or shooting (setup in the skin cfg file) and or texture overlay on any 3d model (setup in a gamelist entry arcgategs).
  - Artwork, videos etc. to be displayed in this menu and associated info and help screens are pulled from the dummys folder based on the shortname of the gamelist and if not found of the shortname of the selection set.

  ### 2.2.3 game selection menu (gl)

  - This menu shows all items from the currently selected gamelist in the currently selected selection set.
  - used to launch games listed in the current gamelist. Data on how to launch the game is pulled from the cfg file for whatever emulator the game is associated with. You can specify which emulator to use in the 10th data field. Emulator cfg files have to be placed in cfg/emulators. And all emulators used by the fe have to be listed in cfg/feemulators.cfg.
  - this menu can be either fpsarcade, cylarcade, listbox,shooting or texture overlay on any 3d model (setup in a gamelist entry arcgategs). You can switch between listbox and arcade by key press (default=6). In arcade mode you can go to a full screen view of the arcade with the arcadefull key. Which menu type to load upon startup is defined in fe.cfg. It is also possible while you are in one of the two arcade modes to switch between fpsarcade and cylarcade by pressing a key (default=7).
  - artwork, videos etc. to be displayed in this menu and associated info and help screens are pulled from the relevant path's setup in the cfg file of the with this game associated emulator. The fe will search these paths for files with the shortname of the game. If nothing is found the fe will search the dummys for files with the shortname of the associated emulator.
  OK that is more or less the structure…but lets look a little deeper and we will see that the fe handles each menu item in the same way:
  For example the arcade selection set (cfg/selectionsets/fearcade.cfg) contains a gamelist favorites and the gamelist favorites contains a game entry 1941. Lets look at the entry's in their corresponding menus:

  ### 2.2.4 A game as a menu item:

  1941 is a menu item in the game selection menu like this:
  |1941 - Counter Attack (World)|1941|1990|Capcom|||Shooter / Flying Vertical|.33b05|Yes|mame|arcade|||Raster|Vertical|224x384|3x4|60.000000|Unknown|No|Joy 8 Way|2|2|2|cps1.c|Good|Good|Good|||||||||
  the relevant parts are the 1,2,5,6,10,11,12 item.
  - the first item is displayed in the fe as the name of this menu item.
  - 2 if not found then 5 and if not found then 6 (for mame corresponding with rom name, clone of and rom of) are used to find artwork, videos and text files etc. to be displayed in the fe. Were to find them the fe retrieves first from the pathnames setup in the cfg file for the with this game entry associated emulator in entry 10. In this case that is mame (cfg/emulators/femame.cfg). If not found it will search the relevant sub folders in the dummys folder based on the emulator name. The emulators the frontend can use have to be listed in cfg/feemulators.cfg. Note emulators can be any exe!
  - 11 entry see below
  - 12 entry name of the 3d model to be shown in the menu…when this is empty the fe will try to show a model based on the names of the 2,5,6 entry's…

  ### 2.2.5 A gamelist as a menu item:

  The Gamelists for the current selectionset are setup in the cfg file for the current selectionset. In this case cfg/selectionsets/fearcade.cfg For favorites this is:
  favorites|/Favorites/favorites////////arcade/console/Emulaxian/////////////////////////|
  Look at the part between || and notice how it looks like the 1941 game entry!
  - 1 item is again shown in the fe as the name of the menu item
  - 2,5,6 are again used to find artwork etc. now always in the dummys sub folders. And if not found it will search for files with the name of 10 entry in dummys
  - 11 entry see below
  - 12 entry name of the 3d model to be shown in the menu…when this is empty the fe will try to show a model based on the names of the 2,5,6 entry's…

  ### 2.2.6 A selectionset as a menu item:

  The frontend retrieves the selectionsets it displays in the selectionset selection menu from cfg/feselectionsets.cfg: This is the entry for fearcade.cfg
  |Arcade Games|arcade||||||||arcade|console|Emulaxian|||||||||||||||||||||||||
  Again notice the similarites between this item and the ones above. For the fe they all are just a list of items to show!
  - 1 item is again shown in the fe as the name of the menu item
  - 2,5,6 are again used to find artwork etc. now always in the dummys sub folders. And if not found it will search for files with the name off the 10 entry in dummys
  - 11 entry see below
  - 12 entry name of the 3d model to be shown in the menu…when this is empty the fe will try to show a model based on the names of the 2,5,6 entry's…

  ### 2.2.7 Emulator Types

  11 entry has to be either arcade, console, app, pinball, arcmusic, arcmovies, arcgatess, arcgategs, arcgategl, arcgatelaunch
  arcade= for mame only…it is used to know that the fe should search for history dat etc. and some special formatting like for the display of game info in the format (name) made by (manufacturer) in (year) genre (category)
  console=the same as mame but it will display text files instead of info from history.dat and a more general approach of displaying some stuff
  app=the same as console now.
  pinball=for vp only…when set to pinball the fe will launch vp in a special way…see fepinball.cfg for details…if you want vp to be launched like the others set this to console or app for vp games.
  arcmusic=when you press the kstartgame (default=1) key when this item is found the fe will not launch a game but display a menu on the 3d model for this entry and show a list with playlists to choose from. Which list of playlists to show is defined in the cfg file for the current arcade environment. See for example arcades/default.cfg. The list of playlists itself contains references to the actual playlists in cfg/lists. These playlists contain the actual references to mp3's and can be generated automatically in the listmanager from the contents of a folder.
  arcmovies=when you press the kstartgame (default=1) key when this item is found the fe will not launch a game but display a menu on the 3d model for this entry and show a list of movies to choose from. Which list to show is defined in the cfg file for the current arcade environment. See for example arcades/default.cfg. These lists and can be generated automatically in the listmanager from the contents of a folder.
  arcgatess=when you press the kstartgame (default=1) key when this item is found the fe will not launch a game but display the selectionset selection menu on the 3d model for this entry.
  arcgategs=when you press the kstartgame (default=1) key when this item is found the fe will not launch a game but display the gamelist selection menu on the 3d model for this entry.
  arcgategl=when you press the kstartgame (default=1) key when this item is found the fe will not launch a game but display the gamelist with the name of the current item on the 3d model for this entry. You can then select an item from the gamelist on the model and press the kstartgame (default=1) key to launch it.
  arcgategl:selsetname:gamelistname:gamename=when you press the kstartgame (default=1) key when this item is found the fe will not launch a game but load the specified gamelist from the specified selset with the game specified as the currently selected game.
  arcgatelaunch:emulator:romname=when you press the kstartgame (default=1) key when this item is found the fe will launch games/applications directly from the gs and ss menu level. See the faq section in the 3darcade forum for examples how to set this up. ^

  ## 2.3 Configuration files

  The frontend uses a number of configuration files to get things going. All these files can be configered from within the frontend itself. The config utility uses templates with the defaults for the general, emulator and arcade cfg files. This means if you go to the internal configuration utility and resave one of these cfg files the new options will automatically be added to your configuration files! When available the latest comments how to set and use an option will also be added to the files when saved or resaved. And for a lot of options the cfg utility will guide you in choosing options with popups and dialogs.
  The general and gamelist related configuration files are located in the cfg folder. The general configuration file, cfg\fe.cfg, contains all options that relate to the frontend as a whole. Then there are three subfolders that contain the configuration files that correspond to the list hierarchy as described above. Selectionsets in cfg\selsets, gamelists in cfg\lists and emulators in cfg\emulators.
  The visual layout of the frontend is handled by skins in the skins folder with the exception of the 3d arcade environments which have their own cfg files in the arcades folder. The skin cfg file refers to the layout of all the visual elements of the fe called sprites. The arcade cfg refers to the internal layout of one of these sprites; the 3d sprite. In other words the arcade cfg file refers to what happens inside the 3d world inside the bounderies of the 3d sprite. Skins and arcade configurations can be associated with an individual gamelist, with a selectionset or set as the default for the frontend as a whole when no specific one is found for the current gamelist or selectionset.
  For details of all the options see the comments in the individual configuration files themselves. These and additional comments are also shown in the lower part of the internal configuration utility.
  ^

  # 3. How To...

  ## 3.1 How to create new gamelists

  Lists go into the cfg\lists\ folder. The easiest way to create mame gamelists is to use the included parser in the internal cfg utility. It will create and update gamelists setup in cfg\parser\mame.cfg and if this file is not found it will create and update the default set of gamelists the fe ships with. It will keep any non mame gamelist entry in it. So don't be afraid to mix emulators in gamelists. It will also keep values added by the user into fields of a gamelist entry that the parser does not update.
  From the main configuration menu go to the listmanager. Then click on the gamelist section and select create/update mame lists from the popup. The parser uses catver.ini to get category information for games. The latest version of Triggerfin's Catver.ini can be found here. Use the regular (CatVer) not the smaller version (GenreV) of the catver.ini file as is still wrongly stated on Triggerfin's site ;-).
  Ok but I don't like the default set of mame lists. What do I do? There are a few options:
- Experienced users can update cfg\parser\mame.cfg with references to their own set of gamelist. Lets take a look at two entrys from the default one to show how it works.
  |fighter|7/starts/Fighter/5/equals/none|add|
  |favorites|10/equals/mame/|update|
  The first field is the name of the gamelist to create and/or update. In our example cfg\lists\fighter.atf and cfg\lists\favorites.atf.
  The third field has two options. If it contains "add" then all games matching the filter criteria will be added. If it contains "update" then it will only update the games matching the filter criteria in the current list and not add new ones to the list.
  The second field contains a list of filters just like the autofilter option in selectionsets. In this case for the fighter list the parser will filter all entrys that start with the word "Fighter" in field 10 and where the content of field 5 equals to "none". And for the favorites list the parser will filter all entrys where the contents of field 10 equals "mame".
- Less experienced users could for example set the fe to use the all.atf list that contains all mame games. Then use the on the fly filters to make the selection you want. Then go to the cfg utility (default=pagedown) and choose the option to save the gamelist in its current form. Another option is to use the autofilter function. See for more info how to use filters here.
  Gamelists for other emulators can be created from directory contents from within the frontends internal cfg utility or with the older utilities\feutilities.exe utility. For visual pinball it can use vplauncher’s dat file and check for crc’s.
  If the internal parser give problems you can still use the older ones from utilities\. Be careful the old mame parser will replace your current favorites list. For more information about creating gamelists with feparser.exe and feutilities.exe see the documentation text files for them in the utilities folder.
  You can also create gamelists by hand. This is the gamelist format for mame:
  |Description|Name|Year|Manufacturer|Clone|Romof|Category|VersionAdded|Available|Emulator|Type|Model|Favorites|Video|Orientation|Resolution|Aspect|Frequency|Depth|Stereo|Controltype|Buttons|Players|Coins|Driver|DriverStatus|SoundStatus|ColorStatus|HtmlLinks|TimesPlayed|DurationPlayed|Rating|||||
  For other emulators I suggest the following format:
  |Description|romname|||romnameparent|emulatorname|||||||||||||||||||usealtemu||||||||||||
  |Donkey Kong (euro)|dkeuro|||dk|coleco|||||||||||||||||||altemu||||||||||||
  If the entry altmame from fe(emulatorname).cfg contains the "usealtemu" entry and the entry in the gamelist for the chosen game contains "usealtemu" then the alternative emulator exe is used.
  By setting the romnameparent at position 5 and the emulatorname at position 6 they will function like the clone parent relation in mame...ie if dk.png screenshot is not found it looks first for dkeuro.png and then for coleco.png as an alternative. (But the bitmap and info files for the emulator itself should be put in the corresponding sub olders in the dummys folder, the fe will find them there automatically…)
  And because the emulatorname entry is always present it is useful to use this entry for setting commandline options that are used by all games for an emulator.
  Put whatever you want in the empty entrys... they will be displayed in the info screen or can be used to set specific commandline options...etc...
  In principle the number of entry's can be any size. But I would suggest using the standard 36 entry's for all emulators. This way you can mix game entry's from different emulators/systems in a gamelist.
  ^

  ## 3.2 How to set commandline options

  You can set commandline options in the fe(emulatorname)cloptions.txt file for the primary exe and in the fe(emulatorname)cloptionsalt.txt for the alternative exe. You can create and adjust these files by hand. Or let the fe handle them in its internal cfg utility.
  An example:
  |Description|Name|Year|Manufacturer|Clone|Romof|Category|VersionAdded|Available|Emulator|Type|Model|Favorites|Video|Orientation|Resolution|Aspect|Frequency|Depth|Stereo|Controltype|Buttons|Players|Coins|Driver|DriverStatus|SoundStatus|ColorStatus|HtmlLinks|TimesPlayed|DurationPlayed|Rating|||||
  The second entry is the name of the rom. When we want to set a commandline option when this rom is executed we add to the fe(emulatorshortname)cloptions.txt:
  entry number|entry name|commandline option(s)
  2|viewpoin|-soundcard 1 -rol|
  Another example: When we want all horizontal games rotated with rol we can add:
  15|horizontal|-rol|
  You can also combine two entry’s with an logical AND. For example set the -joy option for horizontal games with a 8way joystick:
  15 21|horizontal|joy 8 way|-joy fspro|
  etc..
  ^

  ## 3.3 How to create and assign gamelist filters

  Filters come to you in the frontend in two flavours, filters and autofilters.
  Search and filter games just like you would enter high scores. Toggle filter mode on and off with the kfilter key (default=b). kgameleft and kgameright scrolls through the filters. kgameup and kgamedown scrolls through the items of the current filter. Each filter has an All entry, this will reset the gamelist. A random games and sort games filter is always automatically added to a set of filters to select a set of 1,10,25,50 or 100 random games from the current gamelist. And to sort the gamelist on the fly alphabetically, by times played and by duration played. If the scrolling through the filter items is to fast there is the waiths option in cfg\fe.cfg to slow it down.
  The default arcade selection set contains lots of filters to use with mame. Filters can also be added by the user based on any entry in the gamelist and are are setup in the cfg file for a selectionset. Setup filters for any gamelist entry with the following format:
  Filter|numberoffilters filterdelimiter|
  Filter1|entrynumber operator$filter_description search phrase|
  Filternumberoffilters|entrynumber operator<filterdelimiter>filter_description search phrase|
  Don’t use spaces in filter_description
  Example from mame:
  filter|7 $| --the number of filters below and the item delimiter used
  filter1|15 contains$Video$Raster_Games Raster$Vector_Games vector|
  etc.
  In plain words the filter above will search field 15 of a gamelist entry for "Vector". If the field contains "Vector" this gamelistentry will be kept in the gamelist. If not, it will be removed from the gamelist. Filters can use as operators contains, equals, larger, smaller, starts, notcontains, notequals, notstarts. Starts matches when the searchphrase equals the first word of the field the filter is set to operate on.
  Filtersets can also be setup for individual gamelists by adding the name of the gamelist to the filter property. If you do it by hand just add the gamelist name after filter. For example for a gamelist favorites it would be
  filterfavorites|5 $|
  fiterfavorites1||
  fiterfavorites2||
  etc. If a set is found for a gamelist this set will be used instead of the general set. This way you can have different filters for each gamelist in a selectionset.
  Renaming games with the good utilities gives a lot of interesting filtering options. Example:
  filter|2 /| --the number of filters below and the item delimiter used
  filter1|3 contains/Manufacturer/Activision (Activision)/Atarisoft (Atarisoft)/Epyx (Epyx)/Imagic (imagic)/Parker_Bros (Parker Bros)|
  etc.

  #### Autofilters

  Gamelists can be automatically filtered when they get selected using the
  autofilter|searchfield/operator/searchphrase/etc|
  for all lists in a selset or
  autofilter(gamelistname)|searchfield/operator/searchphrase/etc|
  for a specific gamelist in a selset.
  For example to filter out all adult games for the puzzle.atf list when it gets selected in the fe:
  autofilterpuzzle|7/notcontains/Mature|
  or to show only the horizontal games made by taito from the list:
  autofilterpuzzle|15/contains/Horizontal/4/contains/Taito|
  ^

  ## 3.4 How to create and assign arcades

  The arcade environment in the fe is completely customizable or better put, completely interchangeable. The configuration of arcade environments is handled by the fe in cfg files which can be found in the arcades folder. The management of these files can now be done from within the fe. But I think it is useful to try to understand the underlying structure...so...
  For the game selection menulevel (gl) each gamelist in a selectionset can have its own arcade environment by pointing an
  arcadegamelistname|arcadename/arcadename|
  item in the cfg file for the current selset to an arcades\(arcadename).cfg file for the gamelist cfg\lists\gamelistname.atf. Example - If I had a arcade cfg file named "arcades\oldarcade.cfg" and a gamelist "lists\capcomfighters.atf" the line would look like this -
  arcadecapcomfighters|oldarcade/oldarcade|
  If no specific arcade cfg file is found for a gamelist then the fe will search in the cfg file for the current selset for an
  arcades|arcadename/arcadename|
  item. Example - Using the same names as in the previous example it would look like this -
  arcades|oldarcade/oldarcade|
  If that one is also not found then the defaults in the entry
  arcades|arcadename/arcadename|
  from fe.cfg will be used. Example - Using the same names as in the previous example it would look like this -
  arcades|oldarcade/oldarcade|
  For the gamelist selection menulevel (gs) the fe will start its search with the arcades property from the selectionset cfg and if not found it will use the defaults from fe.cfg. And for the selectionset selection menulevel (ss) it will always use the defaults from the arcades property from fe.cfg. Notice also that arcades are setup by pairs so you can switch between them on the fly. For example if you have a rotatable monitor.
  The positions of models associated with gamelist items are now integrated in the main cfg file for an arcade! These positions are automatically updated when you move cabs to a different location in an arcade environment.

  ### Models:

  The arcade environment consists of a number of models. Each model is build from a modelresource that consists of a group of meshes. To be visible each mesh has a shader attached to it and each of these shaders can have a texture attached to them. For use in the fe the name of the model, the filename that contains the model and the name of the modelresource have to be the same. Also the names of the shaders and textures have to be unique. If they are not, they can appear on other models that use the same name for a shader and or texture. Therefore start the shadername with the name of the model and for the texture attached to that shader add map to the shadername. For example for a model called Gyruss: model=gyruss shader=gyruss-bezel texture=gyruss-bezelmap.
  The models the arcade environments are build from are devided in 3 basic categories:

  #### 1. the arcade evironment model

  This model forms the basic 3d environment. It should contain at least all static parts of the arcade environment that are not representations of gamelist items.
  The fe contains a basic cylinder and a basic box model that can be used both with the fps and the cyl variant of the arcade when no other custom model is available. These models can be skinned for each arcade cfg file with custom textures loaded from the arcades\arctextures folder and an animated texture loaded from the arcades\arcanimtextures folder. Animated textures can be created from a set of bitmaps in the configuration manager in the fe or with feutilities.exe in the utilities folder. Use #box or #cylinder instead of a external w3d filename to show either the internal box or cylinder. When #box or #cylinder is used it is possible to adjust position, size and scale of the #box or #cylinder with fpsarcmodelpos and cylarcmodelpos just like for externally loaded environment models.
  Alternatively you can setup each arcade cfg file to load a custom model from the arcades\arcmodels folder to form the basic environment. This can be any model from a simple cube to a realistic recreation of an actual arcade. An animated texture can be mapped onto this model by setting the "fpsarcadeanimtxtname" property to the name of one of the textures from the model. This corresponds in 3d studio max to the name of the map from a material not to the filename of the texture...so in our example gyruss-bezelmap.

  #### 2. Models associated with gamelist items.

  Items in the gamelist are represented in the fe as a 3d model. These models are preloaded from the \models folder when the frontend is started. To match models with gamelist entry the fe will first look in field 12 of a gamelist entry for a specific model. If not found it will try to match a model with the contents of field 2,5,6. These are by default for mame the rom, clone and romof names. If no match is made the fe will look for gencab entrys in the current arcade cfg file. These are used to match a model by setting up a set of conditions. The format is:
  gencab1|modelname/field1/string1/field2/string2/field3/string3|
  gencab2|...|
  etc.
  So if field1 contains string1 and field2 contains string2 and field3 contains string3 then use modelname model for the currently selected gamelist item. If no match can be made with any of the gencab entrys the fe will look for the default model in the current arcade cfg file,
  defcab|modelname|
  When a model gets loaded into the arcade environment the textures from the first and second shader are replaced by custom textures loaded from the marquees and screenshot folders. Those folders are pulled from the cfg file for the emulator this gamelist item has been associated with. If available the texture of the second shader can be replaced by a realmedia video file in the same way. In addition to the video on the selected model the fe can also cycle between bitmaps on the other models. For example cycling between titles and screenshot bitmaps will give the illusion that attractmodes are not only running on the selected model using the video texture but als orunning on other models. Works really well in cylarcade where you see a lot of models in one view. Be sure to only use the cycling option with the fpsarcade when you have resized the bitmaps to powers of 2, 256x256 will work best in most cases.
  To create a model that conforms to this standard in 3d studio max the parts of the model that get their textures replaced should have names that come first alphabatically. I use "aamarquee" and "amonitor" for these meshes. Do a select by name and then group the selected parts together. Also make sure the two materials of these two parts have a map attached to them. The name of the group will become the name of the model. The last thing you will need to do before exporting is moving the model up so that it rests on the x-axis and then set the pivot point of the group to 85. Then export it to w3d using the groupname as the name for the w3d file. Use these settings for exporting the model.
  These models can literally be moved around by the user to create their own arcade layouts. The kmovecabs key (default=b) turns movecabs mode on and off. Move the cabs around any way you want after you are done hit this key again and the new layout will be saved in the current arcade cfg file. See the movecabs mode section below.

  #### 3. Additional models not associated with gamelist items.

  Each arcade cfg file can contain a set of additional models that do not represent an item in the current gamelist. These are ideal for things like non player characters and sliding doors. I would suggest only using these for items that can not be made a part of the environment model. This means in practice for animated objects. Especially when the models uses one of the interactive animation triggers. In the case of interaction the model can not be made a part of the environment model. In other cases it is better to make models as much as possible a part of the environment model because that will render faster. However for those people that have no access to or know how to use a 3d modeler movecabs mode has been expanded to cover thse additional models. You can move, scale, rotate and even texturize these models on the fly. A great way to for example add a wall to a room etc. For more information see the movecabs mode section below. Besides bone animation these models also support keyframe animation in the form of a path to follow. These animation paths are saved into seperate w3d files with only the animation output selected in the exporter and can be used with every additional model. They are very easy to make. Just draw a path line in 3dstudio then attach it to a dummy model. Export the animation to a w3d file with the name of the dummy model.

  ### Movecabs mode:

  kmovecabs (default=b) turns movecabs mode on and off in the fpsarcade menutype. Grab cabs and move them around to create your own layouts… The new positions will be saved automatically after you hit the movecabs key again.
- Key functions: Grab cabs with kgrab (default=v) and move the cabs around any way you want. Hit kgrab again to release the cab. You are still in movecabs mode. You can manipulate the model with the kcabr (default=l), kcabl (default=j), kcabf (default=i), kcabb (default=k), kcabu (default=o) and kcabd (default=u) keys to fine position, scale and rotate the model. And for fpsxtramodels you can also interactively change the textures of the model using kcabl and kcabr to highlight the textures you want to change. Then use kcabf to select a new bitmap form the file dialog popup. For those who want to know the bitmap will be automatically copied and renamed to "arcades\ arctextures\ nameofthearcadecfgfile\ fpsxtramodelx\ texturex.png" !
  The kmovecabsoperator (default=m) key cycles through positioning, scaling, rotating and replacing textures with the kcab keys.
- Move, scale and rotate models with the mouse: Click on a model to select it. Hold down the mouse to move the model around. Press shift to move the model up and down. Pressing crtl and alt will respectively rotate the model around its y-axis and x-axis. Pressing both while moving the mouse with the mousebutton down will rotate the model around its z-axis. Be aware that the model moves in model space. For intuitive movement first rotate the model around its y-axis so it faces the camera. Then drag it to its place. You can not move models while mouselook is on. Turn it temporarily off with a mouse right-click.
- Add, replace and remove models with the mouse. Remove a game/model by holding down the delete key and click on the game you want to remove. It will be removed immediately but these changes will only be saved when you exit movecabs mode. If you confirm that you want to save, the gamelist atf gets updated and positions will be saved to the current arcade cfg. Add a game/model by holding down the insert key and click anywhere in the arcade. A dialog will appear to select a gamelist. Then another dialog appears that lets you select a game from the selected gamelist. The selected game will appear right in front of your view and is added to the current gamelist. You can now drag the model in place with the mouse or movecabs keys. The game will be added immediately but these changes will only be saved when you exit movecabs mode. If you confirm that you want to save, the gamelist atf gets updated and positions will be saved to the current arcade cfg. To replace a game/model hold down the home key and click on the game you want to replace. A dialog will appear to select a gamelist. Then another dialog appears that lets you select a game from the selected gamelist. The selected game will immediately replace the current game and its model. The game will be replaced immediately but these changes will only be saved when you exit movecabs mode. If you confirm that you want to save, the gamelist atf gets updated and positions will be saved to the current arcade cfg.
  Xtramodels can be added to an arcade configuration in the arcade cfg section of the listmanager for the arcade cfg file you want to use. Click on the xrtamodels field and choose add...and then choose a model from the file dialog. I included a basic cylinder (arcades\arcmodels\prop-cylinder.w3d) and box (arcades\arcmodels\prop-cylinder.w3d) to experiment with. More prop models at the 3darcade site when they come available. Contributions of prop models are very welcome!

  ### Animation:

  The fe can play bones animation on all models including the environment model...why bones?...it is more clean then keyframe animation and you can do anything with it you could do with keyframe animation. Keyframe animation is only supported for animation paths for the fpsxtramodels. This gives the ability to easily create a lot of animation paths for all models to use just by exporting the animation of a dummy model.
  Each model can "only" contain one bone hierarchy and must have at least one animation property added to it before exporting to w3d. I said "only" because in practice this is no limitation because you can fork a hierarchy as deep as you want.
  the format is:
  animation(when) = where|replace|times|speed|start|end|auto blend|blend option|lock translation|position reset|rotation reset|rootlock|sound filename|sound times|sound volume or [soundmaxvolume, innerwidth, outerwidth]|
  when = load: show animation when the model is loaded, select: when the model is selected by looking at it, start: when the start key is pushed
  where = tells the fe in which menutype (fps,cyl,listbox) the animation will show up in...so fpscyl for this field will show the animation in the fps and cylinder menus and not the paging/listbox menu.
  replace = true will remove all current animation, false will insert the new animation in the playlist at position 1. after it finishes the old animation will resume
  times = how many times the animation is repeated, 0 is loop endlessly
  speed = speed of the animation
  etc.
  example:
  animationload= fpscyl|yes|0|1|0|2000|true|500|none|true|all|false|effect.wav|1|80|
  ^

  ## 3.5 How to create and assign skins

  The frontend has an active skinner. Just go into skinner mode (default key = pageup) and you can dragg all sprites with the mouse. Move, resize and rotate them on the fly. And double clicking a sprite will popup a menu with all detailed options for that sprite.
  Enter skinner mode directly with the kskinner key (default=pageup) to skin the current screen. Or first go to the cfg menu with kcfgmenu key (default=pagedown) and select skinner. From there you can go to all the screens in the fe and skin them.
  In skinner mode you can dragg the sprites with the mouse. Click a sprite to select it. When a sprite is selected you can use keys to move (default cursor), resize (default d,f,gr, and j,k,l,i) and rotate (default e,r and u,o) the sprite. Doubleclicking on a sprite will popup a menu with all the detailed options for that sprite. For some options you enter values but for a lot of options the fe will make life a bit easier by letting you choose from valid options through popups, file dialogs, color pickers etc. The next and previous buttons in the popup menu let you cycle between the detailed options of all sprites in the current screen. It is also possible to go from here to the general skinner menu to skin other parts of the fe. Finally there is a toggle button that toggles between changes to the sprites affecting only the current menu level or all menu levels (gl, gs and ss). Be aware that when a sprite has a transparent part and has a z-order higher then a sprite showing through you can't directly select and dragg the sprites under it...the sprite with the highest z-order under the mouse will always be selected. You can then temporarly lower the z-order of the sprite with the high z-order by setting it to a low value, even a negative value, in its popup.
  You can leave skinner mode by hitting the skinner key again. The fe asks if you want to save your changes. If you select no, the changes will only stay in effect until you change the current menu level. This is handy for if you want to temporarily move something. If you went to the the general skinner menu either directly or from one of the sprite popups...you will go back there when you hit the skinner key...Closing the general skinner menu will bring you in this case to the main configuration menu...closing that will reload the fe...

  #### how to use skins:

  The fe first looks on the game selection menulevel (gl) for a skinset
  gamelistname|skin1/skin2|
  in the current selectionset cfg file. if that is not found it searches for
  skinset|skin1/skin2|
  in the current selectionset cfg file. if that is also not found it uses the defaults from
  skinset|skin1/skin2|
  in fe.cfg. So it first searches for a skinset for the current gamelist, then for the the current selset and then for the default one. Setting these up can be done by hand or from the cfg utilty within the fe. For the gamelist selection menulevel (gs) the fe will start its search with the skinset from the selectionset cfg and if not found it will use the defaults from fe.cfg. And for the selectionset selection menulevel (ss) it will always use the defaults from the skinset from fe.cfg. Notice also that skins are setup by pairs so you can switch between them on the fly. For example if you have a rotatable monitor.

  #### general options

  In the main skinnermenu there is a general options field. When you click it you get a screen with only a background and the loading text sprite. Doubleclicking the background will popup the general options. Here you can set the general camera rotation for rotated or flipped skins. The position of the text overlay in fullscreen rcade mode. The menu type used for the gs and ss menus. And optionally the menu type you return to when you go back to the gl menu. Keeping these empty will bring you back to the menu type in the gl menu you were in before you went into the gs or ss menu.

  #### text restrictions:

  Director can use two systems for displaying text, named text and field. At the moment the listbox scrolling type, the chatinput, the chatoutput, the history and the information sprites can be either field or text. All others are text sprites. Text sprites have the advantage of optional beautiful anti-aliasing and being rotatable. They can also show in the information menu basic html formatting and hyperlinks. The disadvantage is they are slower. Also they don't scale down as good making them less suitable for tv and arcade monitors. Although probably not much. They looked good last time I checked them using a scart tv. The plan is to make it a choice in the skinner for all text to be either field or text sprite.

  #### buttons:

  Click on the red galaxian...you will jump to the info menu...how does this work?...go into skinner mode...and double click the sprite...you will see that you can change all aspects of the button. Note that you can only use gifs and animated gifs for bitmaps and wav's and mp3's for sound. Change the action for the button by clicking the value field for the simulated key action...a popup will appear with all available key actions...

  #### background restriction:

  Although the size and position sprite parameters are saved in the skin for the background they currently are ignored by the frontend. Therefore the frontend always expects 1024x768 bitmaps for the background. If you want to make a skin for a monitor set to a lower resolution and you don't use the resize option then put the image for the visible area of the screen in the middle of the 1024x768 bitmap.

  #### resize skins or skin only the visible area:

  The native resolution of the frontend is 1024x768. For tv or arcade monitors the fe can be set to resize itself automatically to fill the screen. An alternative is not to use resizing option but skin only the visible area. This way no resizing is nescessary which might improve visual quality (mainly sprites of type text) and performance. And would probably be the way I would do it if I did not use a pc monitor.

  #### gamelist titles and gamelist logo bitmaps:

  The arcade and listbox menutypes now supports showing a title text using its descriptive name of the current gamelist and showing a bitmap logo for the current gamelist. How does the fe find the bitmaps? In gl menu the fe will first search for dummys\logos\gamelistname.png, if not found it will search for dummys\logos\gl.png, if not found nothing will be shown. in gs menu the fe will first search for dummys\logos\selsetname.png, if not found it will search for dummys\logos\gs.png, if not found nothing will be shown. in ss menu the fe searches for dummys\logos\ss.png, if not found nothing will be shown.

  #### stretch options for bitmap sprites:

  - Stretch to fit, fit, this will resize the bitmap to fill the rectangle of the sprite completely.
  - Stretch keep aspect ratio, aspect, this will resize the bitmap to the largest size that will fit in the sprite's rectangle while keeping the aspect ratio of the bitmap.
  - Stretch to orientation, orientation, if "vertical" is found in field 15 of a gamelist entry then it will resize the bitmap to the largest size that will fit in the sprite's rectangle while keeping an aspect ratio of 3:4. If not found it will use 4:3. Useful if you have resized screenshots and marquees to 256x256 or another powers of 2 size for optimal 3d performance.
  - Stretch to aspectratio, aspectwidth:height for example aspect4:3, will resize to the largest size that will fit in the sprite's rectangle with while keeping the specified aspect ratio
  - Stretch to orientation-aspect, orientation-aspect, this will first search for "vertical and "horizontal" and if one of them is found Stretch to orientation will be used else Stretch to aspect ratio will be used.
  - Stretch to orientation-fit, orientation-fit, this will first search for "vertical and "horizontal" and if one of them is found Stretch to orientation will be used else Stretch to fit will be used.

  #### animated bitmap cycling:

  Because the main use is to create the illusion of attractmodes on all cabs in cylarcade and fpsarcade these are setup in arcade cfg files. But they can also be used to cycle between bitmaps on the screenshot sprite and the flyer sprite. (Flyer sprite cycling currently works only in the listbox menutype.)
  cyclesshotscylarcade|linear/100/sshot,titles/fit,fit/false|
  cyclesshotsfpsarcade|false/200/sshot,titles/fit,fit/true|
  cyclesshotslistbox|true/500/sshot,titles/orientation-fit,orientation-fit/true|--on the screenshots sprite and the 3d model when no video is found in the listbox menu
  cyclesflyerslistbox|true/5000/flyers,cabinets/aspect,aspect/false|--on the flyers sprite in the listbox menu
  - Item 1 can be linear, random or false. Set to false to not use cycling. Linear will start at a random item in the cyclelist and then cycle sequentionally. Random will cycle the elements of the cycle list randomly.
  - Item 2 minimum number of milliseconds between updates. More updates less time to do other things like displaying the video on a cab...
  - Item 3 a list with pointers to paths with bitmaps to cycle through, these paths are retrieved from emulator cfg files so a path called
    sshot256||
    is here sshot256.
  - Item 4 list with stretch options for each element of the cycle list.
  - Item 5 set to true to pause cycling of bitmaps while video is playing. Set to false to cycle bitmaps while video is playing.
    It is not recommended to use bitmap cycling with the fpsarcade menutype when you don't have the bitmaps rescaled to powers of 2, for example 256x256.
    If your not using videos on the cabs you can try lower the update time from 200 to 1 in
    cyclesshotsfpsarcade|linear/200/sshot,titles|
    .
    If you are using videos and this hurts the perfomance of the attract mode video to much then increase the value from 200. Or set item 4 to true to pause the cycling while.

  #### transparencys and layering:

  The skinner has full control over ink effects including transparencies and the overlapping order (z-order) of bitmap and 3d sprites. For example giving the background bitmap a higher z-order then the artwork bitmaps and using a png with a tranparency chanell, the background bitmap will become the foreground with the artwork bitmaps showing up behind the transparent parts. Be aware that in skinner mode in this case clicking anywhere will popup the details of the background sprite. So while skinning temporarily set the z-order of the background sprite to a low or even negative value.
  When you turn off the direct to stage property of the 3d sprite it also can be layered like all other sprites. For example by setting the sprite's ink to backgroundtransparent and turning the environmental model of it will appear to float. But turning direct to stage off will result in a big performance loss. To get the same effect and much more while keeping the direct to stage property on I added support for overlays and backdrops to the 3dsprite.

  #### overlays and backdrops:

  These options are setup in the arcade cfg files and not in the skinner as they refer to what is shown in the 3dsprite itself. There are two layers of overlays and two layers of backdrops. Each can show bitmaps, bitmap cycles, video's and animated textures. The first overlay and backdrop when used have some special additional features.
  The first overlay is created from a snaphot of the background bitmap behind the 3d sprite. When the background bitmap has no transparency the 3d sprite will seem to disappear but when the background has transparency the 3d sprite will appear to show behind the background. Especially useful to get rid of the rectangle borders of the 3d sprite.
  The first backdrop will take a snapshot of the stage behind the 3d sprite, giving the effect that you can see through the 3d sprite resulting for example in the ability to let the 3d sprite hover above the background.
  There are a lot of possibilities for each overlay and backdrop. To make it easier to use I allready did setup some useful defaults that can be turned on and off by setting the first field either to true or false for each overlay and backdrop.
  These are the options for each overlay and backdrop:
  overlayfpsarcade|add this overlay=true,don't =false/blend/renderformat/video,foreanim,backanim or false/options/bitmapsprite/options/bitmappath/options|
  The fe will first try to show a video or animated texture setup in field 4. If none is found or set to false the fe will then try to show the current bitmap from either the marquees, screenshot or flyer sprite setup in field 6. If not found or set to false it will try to find bitmaps from the pathname setup in field 8 that refers to a path setup in emulator cfg files. Either one of the existing paths like flyers, sshot or a custom path defined by the user. Ahum I went nuts here...almost anything can be done ;-)
  Renderformat in field 3 refers to how the overlays and backdrops will be rendered. By default 16bit colordepth and a 1bit alpha chanell will be used. For a full alpha chanell set this field to rgba8888. Foreanim and backanim refer to animated textures created from a set of bitmaps and stored in arcade\arcanimtextures. These are the same as used on environment models. To create them just put a set of bitmaps in an empty folder and use the option in the cfg utility to automatically create the animated texture. The options in field 5 are /(file to use:name.cst),(pause animation while moving through the list=pause or don't pause=play),(animation update frequency in milliseconds)/ for example /driesmamelogo.cst,pause,100/
  For full control to show or not to show the 3d environment model for example to create the illusion of a hovering cabinet model you can override the general showarcade property from fe.cfg with the showarcade property in an arcade cfg file:
  showarcade|true/true/true|#editable|Show (true) or hide (false) the evironment model by default in respectively the fpsarcade, cylarcade and listbox menu type|
  ^

  ## 3.6 How to setup texture overlay menu's for jukebox, movies and gate

  In fact these are all variants of the texture overlay menu and can be mapped on any model. But using the jukebox model voor mp3's seems to be more logical then for example the Tempest model ;-) The fpsdemo2 selection set gives a demonstration of the use of these menus.
  Two examples demonstrate how to setup these menu's. The first will setup a jukebox to play mp3's. The second shows a much less complex example, namely how to setup a texture overlay menu to select games from a gamelist on a model using arcgategl.

  ### Example 1: how to setup a jukebox

  Lets us trace the setup for getting a jukebox working for the fpsdemo2 arcade. The fpsdemo2 gamelist in cfg/lists/fpsdemo2.atf contains the following entry:
  |Select playlist|jukebox|||||||Yes|jukebox|arcmusic|Jukebox|||||||||||||||||||||||||
  When you press the kstartgame (default=1) key when this item is selected the fe will not launch a game, but display a menu on the 3d model for this entry and shows a list with playlists to choose from. How does the fe know to do this...easy it looks at the 11th item and it finds arcmusic! Also relevant is the 12th entry this will as always override which model to use from the models folder for this entry. If you set this item to Jukebox like here you are sure that the fe will show the jukebox model from models/jukebox.w3d. Further as always the 10 entry has to point to a valid emulator cfg file. In this case cfg\emulators\fejukebox.cfg.
  How does the frontend know which list of playlists to show? It retrieves the list to show from the cfg file for the arcade environment associated with this gamelist. In arcades/fpsdemo2.cfg you will find this entry:
  musicmenulist|playlistmusic.atf|
  Select an item from this list and hit the kstart key again. The playlist will immediately be loaded and start playing the first song or a random song at a certain volume from the playlist depending on the musicrandom and musicvol setting in the arcades/fpsdemo2.cfg cfg file.
  How does the fe find this song to play...look at an entry in the list of playlists the menu displays. In arcades/playlistmusic.atf:
  |PJ Harvey songs|PJHarvey.atf||||||||jukebox|arcmusic|Jukebox|||||||||||||||||||||||||
  PJHarvey.atf is the playlist this menu entry refers to so in cfg/lists/pjharvey.atf we will find the songs for this playlist. (Notice that playlists are in the same folder as the gamelists.)
  This is the first song in the cfg/lists/pjharvey.atf playlist:
  |PJ Harvey - A Place Called Home|PJ Harvey - A Place Called Home.mp3||||jukebox|||Yes|jukebox|arcmusic|Jukebox|||||||||||||||||||||||||
  The second entry is the actual mp3 file the fe has to play now. But how does the fe find it. Easy just like it finds games..from an "emulator" cfg file in cfg/emulators! So for this entry this is the 10th item...jukebox so:
  in cfg/emulators/fejukebox.cfg we find:
  gamepath|d:\mp3\|
  Now the fe knows how to play "d:\mp3\PJ Harvey - A Place Called Home.mp3"
  I hope you get it...just like a selection set cfg file points to a number of gamelists (cfg\lists\gamelist.atf), the musicmenulist points to a number of playlists (cfg\lists\playlist.atf). And for the fe internally they are the same :-)
  Notes:
  - You can create the playlist files from the contents of a folder with feutilities.exe or with the similar utility in the internal gamelist manager.
    -You don't have to use the jukebox to have a list of mp3's play in the background. When you point musicplaylist in an arcade cfg file to a playlist in your cfg\lists folder then this list will be played when the arcade cfg file is loaded. Normally it will start with the first mp3 in the list. If you also set musicrandom to true then it will play the list in random order.
  - If you have your mp3's in more then one folder you will have to setup more "emulators" like fejukebox.cfg to point to the proper folders.
    -For turning the mp3 sound of just make a dummy entry that points nowhere... When you select this item on the jukebox the currently running mp3 playlist will be stopped and replaced with nothing...silence ;-)
  - As always the 10 field refers to an emulator cfg file. The fe first searches here for relevant artwork paths and if nothing is found it searches the dummy folders. As we have seen the text is overlayed on the screenshot texture. This way the screenshot of the highlighted item will form the background to the text and can be used for example to show album covers...or using the video's even music videoclips right on the jukebox :-)
  - Notice the
    sshot|d:\fe066test\dummys\screenshot\|
    entry in cfg/emulators/fejukebox.cfg this points to a dummy screenshot to put on the model that is why the 2th item from the cfg/lists/fpsdemo2.cfg entry above is set to jukebox.
  Arcmovies, arcgatess, arcgategs, arcgategl overlay menus work similar. For the arcgate versions you only have to setup an entry in the gamelist you want to use them with.

  ### Example 2: The gl menu on a texture using arcgategl

  With this menu you can select and launch games or anything you want from a menu on a texture on any model yo want. Add an entry for an arcgategl texture overlay menu in your gamelist that points to the gamelist you want to be shown on the texture. for example:
  |Favorites Gamelist|favorites|||||||Yes||arcgategl|Videowall|||||||||||||||||||||||||
  This will show the cfg\lists\favorites.atf gamelist on a Videowall.w3d model. Background screenshots and video's will be pulled automatically in the normal way from folders the emulator cfg file the gamelist entry points to. That is all :-)
  ^

  ## 3.7 How to use the multiuser online arcades

  The frontend supports the ability to connect users together through the internet. The idea is that arcades were social spaces and it would be cool to also recreate virtually that importent aspect of the old arcades. The frontend does this in two ways.
  In lobby mode (mugroup|lobby|) the frontend can be used nomally but you will be connected to other users and be able to chat with other users who are also online and in the lobby.
  Then there are the online arcades that get added to your menus when you connect to the internet. In an online arcade users will see each other in the fps arcade environment walking around in the form of avatar models and they can chat with each other. And you can also send private messages in online arcades to the avatar you are looking at...this can bring real arcade gossip to the virtual arcade ;-)
  To make sure all users are in the same environment these online arcades are downloaded from the server automatically and everytime you go online the fe will check if you got the correct files. If not it will download them again. If you leave an online arcade you will be back in lobby mode. And as said before you will be able to use the fe just like you would when you were not connected. So if you your cab is online the prefered mode to use the fe would be mugroup|lobby|. If you want to go directly into an online arcade environment instead of the lobby you enter the name of that arcade, ie mugroup|mudemo|. If you don't want the fe to connect to the server use mugroup|false|.
  You toggle chat on and off with the kchat key (default=end) or with the mouse by clicking on the chat input box. The chat toggle also toggles mouselook on and off for convenience. But you can also only use the mouse and toggle mouselook on and off with the right mouseclick. When chat is on, blinking cursor in the chat box, you can see who else is online with the kusers key (default=home). It will list all people online and where they are.
  The multiser settings can be found in cfg\fe.cfg and can also be adjusted with the internal configuration utility. Keys to use are in section 1.f and the multiuser options can be found in section 5.
  user|youruniquename|
  server|| The name of the multiuser server you use to connect. Check the 3darcade website which server is currently being used.
  avatar|| The name of the avatar model without extension you want to use in the online arcades to represent you. When left empty the fe will use a default pacman model with a random color. Currently there is also avpacman and animated pacman and ghost a pacman ghost.
  mugroup|| false= don't connect to the server, lobby=connect to server and enter the chat mode. you can use the fe normally in this mode but also chat with others users online and in lobby mode, see who is in the online arcades and the multiuser selectionset is added at startup and your files are checked on bootup and if nescessary updated on bootup so you can join in :-), shortname of an online arcade=boot directly into an online arcade room.
  mufunction|]| At the moment this is only used for private messages...when you start your message with this character it will only be send to the user off the avatar you are currently looking at. In later versions it will also be used for issuing commands, ie commamd].
  ^

  ## 3.8 How use a screensaver or random game screensaver

  The frontend can either set a windows screensaver or launch random games that can function as a random game screensaver.
  The screensaver options can be found in fe.cfg:
  screensaver|completetepath\screensaver.scr| -sets the windows screensaver, keep this empty if you don't want to use a screensaver or if you want to use the random game screensaver
  randomscreensaver|false| -launches a random game, keep this false when you are using a windows screensaver
  screensaverwait|600| -after how many seconds idle time the screensaver kicks in
  When randomscreensaver is set to true the fe will launch a random game after a certain idle time. In combination with fescreensaver.exe, advance mame's idleexit option or lazarus commandline launcher wrapper's -wait option they will quit to the fe after a certain time no keys have been pressed. So when you see a glimpse of a game you wanna play...just go over to the cab and start playing it...
  in fe.cfg you add:
  randomscreensaver|true|
  screensaverwait|seconds|
  if no keys are pressed for "seconds" then a random game from the current list is launched
  If the fe finds in its rootfolder fescreensaver.exe it will use it. For its options see fescreensaver.ini. For using the wrapper or advancemame instead delete screensaver.exe in the fe folder.
  How to use the lazarus wrapper:
  put cmd-launch4.exe and lconfig.ini in the folder you have your mame exe.
  adjust the name of the exe to match your mame exe in lconfig.ini
  adjusting cfg\emulators\femame.cfg to work with the wrapper:
  -change the mame|yourexe/youraltexe| to mame|cmd-launch2.exe/youraltexe|
  or even better only use the wrapper when the screensaver launches a game by making it the alternative exe, in that case
  -change the
  mame|yourexe/youraltexe|
  to
  mame|yourexe/cmd-launch2.exe|
  and add randomscreensaver to the altmame option list, ie
  altmame|randomscreensaver|
  example:
  mame|mamepp.exe/cmd-launch2.exe|
  altmame|randomscreensaver|
  the wrapper has two new commands -wait x and -reset/-noreset:
  -wait x , when no key has been pressed for x seconds exit the emulator
  -reset, when a key is pressed reset the wait timer to 0
  -noreset, when a key is pressed don't exit automatically after an x idle period
  add these options to cfg\emulators\femamecloptions.txt or if you use the alternative exe to cfg\emulators\femamecloptionsalt.txt
  example:
  10|mame|-wait 300 -reset|
  newer revisions of the wrapper also have:
  -nosound, disables sound while cycling through games
  -nomsg don't show a message while loading a game
  ^

  # 4.0 Miscellaneous information and tips

  For more up to date tips see the faq and tips section of the forum at the 3darcade website.
  - When you make changes to any of the cfg files from within the the fe, it will save the old cfg's to the backup folder. Almost anything gets backupped there, from the gamelists to the skins.
  - The frontends native setting is 1024x768. I recommend using that if you can to start with. You can also force this resolution by setting resize and force 1024x768 to true in fe.cfg. For users with a desktop lower then 1024x768 set the resize option in fe.cfg to true. This will automatically resize the frontend to fit. Alternatively you could make custom skins that only use the visible area. Because no resizing is needed this may improve quality and performance. On older machines using a 16bit desktop may also result in better perfomance.
  - Toggle the ktest key from fe.cfg: it will show you the renderer currently being used. If experience bad framerates and/or picture quality or you see a dramatic decrease in performance the frontend probably switched to software mode... You can experiment with different renderers with the prefrenderer option in fe.cfg. Values are (auto, openGL, directX7_0, directx5_2, software) experiment with these settings to get the best performance and picture quality. If the framerate drops sharply then the frontend has probably switched to software mode. This happens to me with directx7_0 when I come back from a game...so I use opengl which looks great on geforces...If you also experience this and have tried all renderers then the only thing you can do is to try out different display drivers for your card.
  - Batch resizing your marquees and screenshots to a power of 2 format can speed up the cylarcade dramatically!. Especially some of Eldio's marquees are very large. And the fe will have to resize the texture to a power of 2 if it is not allready in that format. I have all my marquees and screenshots resized to 256x256. On older vidcard you could try 256x128. to save some video ram.
  - The animated textures that can be used in arcade environments can take a lot off resources especially big ones like the ones the fe ships with (512x512). Disabling them can improve performance.
  - I recommend using the mpeg versions of the videos instead of rm. But the frontend can stil also use real player for video on the screenshot texture of the 3d models. If you don't have it on your system and don't want to install it then remove "rm" form the videoextension property in fe.cfg! Use real player 8 with the fe. I have got conflicting reports about using the real one player with the fe. It seems that it won't work at all or very poor with the fe in some cases...
  - It is very unoptimized yet. I use a geforce 2mx with 32mb which seems to be enough to get good framerates and does not get out of videoram. From the reports I have gathered you need at least 16mb vidram...
  - Zoom in to rotate faster through the gamelist.
  - The frontend searches for screenshots and marquees first for the romname of the game itself, then its parent, then the romof, then for emulatorname.png in the subfolders of /dummys and then for the Dummy in /dummys The 3darcade will be a bit faster if you have as many parent shots as possible ;-) (The on the fly marquee creation when no image is available is a bit slow…you can disable it in fe.cfg…)
  - On slow systems set rotates in cfg/fe.cfg to a lower value, for example 2. Setting it to 1 gives also an interesting effect ;-)
  - Also on slow systems switching to the displaying a marquee and screenshot picture in the listbox variant of the menus instead of the 3d model will be faster. not that much because the 3d model still will be updated.
  ^

  ### Credits and thanks

  NB!!! Stefan Gagne made a great tutorial on how to setup Emulaxian! With version .75 of the frontend and the addition of the internal cfg utility this tutorial is rather outdated. But the selectionsets and gamelist structure is still the same. And it describes them very well from a users perspective. It is in the docs folder and available online here! Thanks a lot Stefan!!!
  NB!!! YOU CAN HELP! By making 3d cabinet models and arcade models for the virtual arcade and by making backglasses or fields from screenshots of vp games. Also we will gladly make any skins, arcade environments, arcade layouts etc. you make available on the site! If you are interested please contact me!
  NB. Default animated arcade background and ambient arcade sounds with real sounds from 80 arcades by James Widmark.
  NB. The internal defaultver and defaulthor models for respectively horizontal and vertical games were made by DeNiro for the fe.
  NB. The dhtml version of the manual was made by DeNiro. Thanks a lot!
  NB. The console sytems background bitmaps in the default skin were made by Cave and PucPuc, thanks!
  NB. The old mame parser is based on Emuloader source…thanks Ciro!
  NB. The gamelist creator can use Roland Scholz's and Datadragon's dat file from Roland Scholz's Vplauncher, http://vplauncher.rolandscholz.de/ , a really great VP frontend, for CRC checking. Contact Datadragon ( mailto:datadragon@home.com ) if you find errors in the database that are not related to Emulaxian.
  NB. The backglasses included with this release were done by Marshall Brooks.
  NB. The pinball 3d model is adapted from a model by Niels 't Hart.
  NB. The jukebox model is adapted from a model by G. W. Chapman. I got it from http://www.3dcafe.com/.
  NB. The animated texture in the fpsdemo2 arcade is ripped from Dave Dries beautiful 3d mame logo movie. Get the original movie and more cool stuff at http://www.cinemarcade.com.
  NB. The high score search feature is based on an idea by Sirpoonga.
  NB. Special thanks to Howard for making wrappers available that can be used with Emulaxian/FE-3Darcade to launch non commandline based emulators, like Modeler, Impact etc.
  NB. And ...thanks to all the folks and especially the other fe authors (Boris, Drake, Ed, Howard etc.) on the byoac message boards for keeping this stuff fun!
  I take no responsibility for any damages the frontend, this information etc. can cause...yeah yeah...
  )p(
  ^

  ### About this manual

  Revision 2 : Compatible with MSIE6 and Firefox. Compatible with 800x600 res. Added custom tags.
  Legend:
  - Links look like this.
  - Local files/directory references Has/this.look
  - References to keyboard shortcuts/mouse clicks within the FE Will have this look
  - "Pseudo" config file contents
    Is looking like this, and will most certainly cause errors if used directly within a config file
  - Real Config file contents
    Is looking like this, and will work if used within the proper config file
Contents
Intro
+1. Overview, Setup and use
+1.1 Overview
The 3darcade menu interface
Cylinder Arcade
3D Arcade
The listbox menu
The shooting menu
The texture overlay menu type
Frontend features
+1.2 How to install the frontend
Quick setup
Quick how to use the frontend
+1.3 Start customizing the setup
Change the keymappings
Change the startup menutype
Adding a new arcade environment
Create a new arcade layout
Experiment with the active skinner
Connect to the multiuser arcades
1.4 Files needed for the frontend to work
+2. Structures and Configuration
2.1 The lists hierarchy
+2.2 The structure of the menus
Selectionset Selection Menu (ss)
gamelist selection menu (gs)
game selection menu (gl)
A game as a menu item
A gamelist as a menu item
A selectionset as a menu item
Emulator Types
2.3 Configuration and configuration files
+3. How to...
3.1 Create new gamelists
3.2 Set commandline options
+3.3 Create and assign gamelist filters
Autofilters
+3.4 Create and assign arcades
Models
the arcade evironment model
Models associated with gamelist items
Additional Models
Movecabs Mode
Animation
+3.5 Create and assign skins
how to use skins
general options
text restrictions
buttons
background restriction
resize skins or skin only the visible area
gamelist titles and gamelist logo bitmaps
stretch options for bitmap sprites
animated bitmap cycling
transparencys and layering
overlays and backdrops
+3.6 Setup texture overlay menu's for jukebox, movies and gates
Example 1: Setup a jukebox
Example 2: The gl menu on a texture using arcgategl
3.7 Use the online multiuser arcades
3.8 Use a (random game) screensaver
4. Miscellaneous and tips
Credits
About this manual