MameUI Overview & History

MameUI [previously Mame32] is an emulator. Simply put, it allows a PC to mimic the internal hardware of a large number of stand-alone arcade machines from 1975 to 2003+. Combined with the original ROMs from these arcade machines, MameUI will display and play the games on a PC. The software thinks it’s still running on its original box. MameUI is the GUI version of Mame™, the M.ultiple A.rcade M.achine E.mulator. It has an attractive, elegant, graphical interface which allows the user to forego having to type command line parameters, although it can still be passed these arguments. For many, it’s easier to click the icon of the game.

1997.02.05 - In the beginning, Italian programmer and arcade preservationist, Nicola Salmoria, combined his individual game emulators into the DOS based multi-game emulator, Mame. It was released Feb. 05, 1997. Since the source was also released, numerous people contributed new drivers to add support for more and more games. The number of contributors grew into the hundreds and has continued to increase over the years.

1997.08 - Mame32 was the first port of Mame to the Microsoft Windows platform. It originally came out in August of 1997, adding the GUI and a considerable amount of new code to transition to Win32. The original Mame32 was authored by Chris Kirmse and later integrated Michael Soderstrom's Win32 command-line port of Mame. Michael then coordinated, maintained the source, and produced the releases. Mike Haaland and John Hardy IV joined the project in late 1997. Mike would wholly revamp the user interface to its current state and continue collaborating on core development. John provided testing, WIP updates, artwork, and served as the external point of contact for the team. Mame32 releases followed the Mame DOS releases by a few days to a few weeks over the next four years.

2001.05.24 - With the inexorable phasing out of DOS, the authors of the DOS based Mame ported it to the Microsoft Windows platform as a command line application. Evolutionally similar to MameDOS, it is run by typing in arguments from a command prompt, and has no GUI. [many people try to double click it, which opens up the command line window briefly, displays a message, then closes].

2001.07.24 - Mame32 was re-positioned, with the familiar GUI grafted onto the new Mame Windows engine. Mame32 is currently maintained by Kirmse, Haaland, and Hardy and is now released by John IV shortly after Mame on the MameUI site.

2007.11.11 - Mame32 was rebranded as MameUI to avoid confusion of the 64bit build of the core version. It is compiled as MameUI32 and MameUI64 for the different target platforms.

2007-11-12 01:57 PM -0800/ john iv


MameUI Whatsnew

Changes to MameUI

v.127.5

  • Fixed issue w/ BIOS games not being passed properly to core or stored in *.ini files. [Curt Coder]
  • Fixed sorting on source column in gamelist. [René Single]

v.126.1

  • Moved search bar over to the flush right on the toolbar, made it take the UI font, and also made it accessible with Ctrl-E like any search in Vista, Firefox, or IE. Added a new debug tab to the options and loaded it w/ the missing items from the core. [René Single / John IV]

v.122.1

  • Fixed long standing issue where icons would corrupt and return to their defaults if scrolled through entire game list [René Single / John IV]

v.120.2

  • Rebranded Mame32 to MameUI32 and MameUI64 to avoid confusion with the baseline builds that are now being released as 64bit native apps. [Mike Haaland / John IV]

v.120.2

  • Added support for a 'nonworking.png' which will appear for non-working games in the art panes if the specific game *.png doesn't exist and the game is flagged as non-working in the core. [Mike Haaland / John IV]

v.118.6

  • Added game search/filter to the toolbar. Works similarly to the Ctrl-F filter but doesn't search on manufacturer, driver name, or shortname. Added PCB art pane view. [René Single / John IV]

v.118.5

  • Per MameDEV request; removed the ROMs view customization item, and reworked auditing to not show an icon change state for unavailable sets in all games folder view. This was to bring MameUI into compliance w/ the section of the Mame terms of usage which states 'Do not provide a means of generating a list of games that specifically identifies those games for which the user does not have image files'. Audit functionality and game search on start is still present to populate the 'Available' folder view. [Mike Haaland]
  • Promoted screen orientation folder view to 'horizontal' and 'vertical' top level views and added them to the Ctrl-F filter dialogue. [Mike Haaland]

v.118.2

  • Fixed all recent options related bugs as well as expanding the functionality of the audit control so it doesn't cut off anymore. [Mike Haaland]

v.110.2

  • Re-arranged UI elements in Options menus. [Radius]

v.107.1

  • Updated the help file to include the new UI support for the core's latest video changes. [John IV]

v.107

  • Added UI support for the large amount of core changes made by Aaron Giles for the new video renderer. [René Single / John IV]
  • Created the new scanline *.png files in \artwork for use with the new -effect switch. [John IV]

v.105.2

  • Added BIOS folder view on the left pane. This folder lists all the BIOSes supported by MameUI and allows launching them as if turning on a machine without a cartridge etc. in it, like the Neo-Geo. [René Single]

v.104.7

  • Added properties for driver.c and vector on secondary click shortcut menu. This is the same as altering the properties on the vector folder and the \source\driver folder on the left pane. [René Single / John IV]

v.104.4

  • Added support for priority switch, now a slider. Note: there may be system related issues going to setting 1 (lagging keyboard, joystick controls), default is 0. [René Single]
  • Removed multi-screen folder view on left pane as that flag has been removed in the core. [René Single]
  • Added mngwrite option to launch a game and immediately begin recording a MNG movie file. [René Single]

v.101.1

  • Added support for savestate game folder view on left. Added switch for autosave. [René Single]

v.100

  • New Galaxian homage about.bmp. [John IV]

v.99.3

  • Re-implemented history.dat for MameUI which had its support removed from core. [René Single]

v.98.3

  • UI dialogues realignment. [Radius]
  • Added ability to type in Mame shortname in the Ctrl-F text filter, i.e. 'ddonpach'. [John IV / Mash]

v.96.4

  • First pass at adding support for the analogue and digital controller section of the core. [René Single]

v.95.5

  • Added core's -screen switch to UI to allow playing games on secondary/tertiary monitors in multi-head setups. [René Single]

v.90.3

  • More UI dialogues realignment. [Radius]

v.89.3

  • Re-aligned UI elements in Options menus and added some XP-style icons. [Radius]

v.88.1

  • Added switch to toggle validity checking in the binary. [René Single]

v.87.1

  • Increased start up speed via driver info caching. [Sauro Puccini / Chris Kirmse]

v.86.1

  • Reworked MameUI folder properties and their initial memory allocation. Results in halving MameUI’s memory footprint on most systems. [René Single]

v.86

  • Reworked MameUI multisession behaviour. When launching a game, MameUI will now dynamically resize itself in memory rather than spawning a separate core process, saving some memory (this new feature impacts the icons on windowed mode playing and the show caption option). [Chris Kirmse]
  • Re-added support for custom controller selection again in the controller tab. [Chris Kirmse]

v.84.5

  • Cleaned up the Options • Interface Options menu, adding sliders. [René Single]
  • Internal clean-ups to provide support for the new core changes. [Chris Kirmse / Nathan Woods]

v.84.2

  • Added feature request to place a border around the artwork in the art pane, user selectable size and color (0=no border). [René Single / John IV]
  • Added dump status folder view, an easy reference for un-dumped and badly dumped ROMs for folks who may be in a position to update them. [René Single]
  • Expanded game list font control to go beyond the original 16 color choices allowing access to a greater UI customization (see last color on drop down list ‘custom’). [René Single]
  • Added wave output option to match the core. File menu / Play and Record Wave output. [Chris Kirmse]

v.84

  • Various internal treeview fixes [year / manufacturer] and cleanups. [Nathan Woods / René Single / Mamesick / Chris Kirmse]
  • Factored out list view handling into its own module, picker.c. Auto_malloc() now used and appears to result in a speed up of the GUI game list scrolling, however at the moment it does cause slight pauses moving from one ‘view’ to another. [Nathan Woods]
  • Added ability to display games in windowed mode without their titlebar caption. Not fully functioning w/ GCC compile. [René Single / John IV]

v.82

  • Brought game ‘not working’ status messages in-line with core [status bar, general properties, etc.] and rearranged status area on properties tab. [Mamesick]
  • Added sample folder view. [Mamesick]
  • Renamed Hard Disk folder view to CHD due to newly supported CD CHDs. [John IV / Nathan Woods]

v.81

  • Moved placement of bkground.png to \bkground folder instead of \snap folder. [René Single]
  • Fixed erroneous behaviour for Imperfect folder view. [René Single]
  • Corrected audio latency slider movement and setting past notch 4. [René Single]
  • Added customizable quit key [default Alt-Q] for the mappable keyboard solution option. [René Single]
  • Added new History.dat option to allow display under any or all of the art views in Options • Interface Options. [René Single]

v.79

  • Added an ‘Imperfect’ folder view on the left pane, this categorizes the various problems flagged in games. [René Single]
  • Reworked handling of the BIOS option, now that there are multiple drivers that support different BIOSes [neogeo.c, stv.c] the global setting is not appropriate. Select the driver from the source folder view on the left pane and change its BIOS settings, this will alter it for all games in that driver. The functionality remains the same for altering individual games settings in all games view or anywhere else. [René Single]
  • Added the ability to control the MameUI GUI via mappable keyboard solutions. This feature is intended to compliment the GUI control via joystick option first offered in version .70 below. It is designed to allow users of Mame cabinets with keyboard encoders the same functionality and is controlled in the mameUI32/64.ini file [mapping the enter key to button 1 to launch a game for example], using the same syntax as the \ctrlr files. [Jarek Burczynski / Chris Kirmse]
  • Added support for the new core switches for lightgun modifications; reload to allow mapping reload to keys, and dual gun setups. [Chris Kirmse]
  • Added accelerator key for folder level ‘mini-audits’, Alt-U [René Single / John IV].
  • Added accelerator key support for scrolling up and down through history.dat text window. CTRL-Page Up / CTRL-Page Down. [René Single]
  • Added toggle in Grouped view to allow clones missing a parent to display non-indented. [René Single]
  • Added support for the core’s new save state loading on game start. [René Single]
  • Added support for the core’s new keyboard LED choices, USB or PS/2. [René Single]

v.78

  • Added the ability to do ‘mini-audits’ on each of the folders on the left pane. Secondary click on the folders to see audit as a choice. [René Single]
  • Changed behaviour of MameUI when displaying games that have the protection not emulated flag, previously it would flag these games as non-working and display the warning.ico. Now warning.ico and non-working status will only occur if the game has the non-working flag attached in the driver. [René Single / Mamesick / John IV / Chris Kirmse]
  • Increased CPU and sound area on games’ properties page to accommodate 5 lines now that tceptor and tmnt utilise it. [René Single / Chris Kirmse]
  • Altered behaviour of properties titlebar on driver.ini to show the driver name instead of ‘folder’ properties. [René Single / Chris Kirmse]
  • No longer UPX compressing the MameUI .exe. This saves 20 Megs when MameUI is loaded into memory, will allow for better dynamic loading, and won’t trip off virus detectors that have trouble w/ UPX compression. As a result, MameUI.exe is now 20 Megs in size on the hard drive. The distribution package is also being changed and compressed with 7-Zip as a self-extracting archive, this actually makes the distribution package about 1 Meg smaller than previous releases. [John IV]
  • Switched default settings in MameUI to disable auto frameskipping and to use draw every frame per discussion on MameDEV list. [John IV]
  • Added 48000 as a sample rate option, works well with modern soundcards and chips. [John IV]

v.77

  • Fulfilling the longstanding feature req. added the ability to globally alter vector.ini and driver.ini to match the core. Secondary click on the vector folder • properties in the folder pane to set options for that group of games. To alter global settings for game families, drill down into the source folder in the folder pane, and secondary click on a driver's properties i.e. 1942.c. This will change options for all games based on that driver. The different levels of alteration are color coded, vector.ini changes are red, driver.ini changes are green, and individual game settings are blue. Thus there is the possibility to have four color/levels of alterations when a game's individual properties are viewed in All Games or any folder. The changes can be backed out of hierarchically with reset to default on each respective properties, the reset to default global option, or by deleting the .ini files in the \ini directory. Note: Currently the color alterations do not display properly with XP in themed mode, but the functionality works [bug 462]. Coded solutions to this issue via DIFF are welcomed. [René Single / Chris Kirmse / John IV]

v.76

  • Added programmatically populated lightgun and multi-monitor folders. [René Single]
  • Added reset play count and play time for individual games, and globally. [Secondary click on game, & Options • Interface Options. [René Single]
  • Allowed filter propagation downward from parent folders, toggle this feature in Options • Interface Options. [René Single]
  • Changed behavior of vertical scrollbar in history pane, will not show if there is less text than available room. [René Single]
  • Extended game not working status support to show more flags in status bar and game properties. [René Single]
  • Added tool tip text to status bar if longer than displayable name is selected. [René Single]
  • Increased history.dat buffer to prevent cut-off and overflow. [René Single]
  • Re-implemented ability to show game's icon on title bar in windowed mode. [René Single]

v.72

  • Added the ability to scale the right side art pane contents upwards as the window size increases, toggle on Options • Interface Options. [René Single / Chris Kirmse]
  • Expanded the reach of the CTRL-F text filter, it can now act on name, driver name e.g. 'cps2.c', and manufacturer. This is a quick method for immediately seeing a driver family instead of drilling down through the source folder on the left. [René Single / Chris Kirmse]

v.71

  • Added the ability to selectively disable built in folder views on the left pane, secondary click in the window area for the dialogue box. [Chris Kirmse]
  • Added control panel art tab. [Chris Kirmse]
  • Fixed audit control overflow issue. [René Single]
  • Designed art tab state toggles to be more readable in MameUI32/64.ini. [Chris Kirmse]
  • Added the ability to have MameUI automatically cycle the selected art views at an interval, in seconds. Accessible in Options • Interface Options. [René Single / Chris Kirmse]
  • Added the ability to track the amount of time spent playing each game in minutes and seconds. Displays in details or grouped view. Add the column in View • Customize fields. [René Single / Chris Kirmse]
  • Added the ability to view game's icon on title bar in windowed mode. [René Single / Chris Kirmse]

v.70.1

  • Removed saturate slider from D3D tab. [Chris Kirmse]
  • Fixed cleanstretch and prescale settings not holding. [Chris Kirmse]
  • Implemented BIOS selection on per game basis [only Neo Geo games currently] and allowed temporary global settings for BIOS via number. [Chris Kirmse]

v.70

  • Added art tab with only history.dat. If this tab is enabled and history.dat is present history text will no longer appear beneath the screenshot. [Tor Arne Vestbø / Chris Kirmse]
  • Added option to hide the mouse cursor on launch in full screen on Options • Interface Options. [Tor Arne Vestbø]
  • Addressed some long standing bugs dealing with icon decimation and windows title bar size, and details/grouped view not holding the column size on return from large icon view post-session restart. [René Single]
  • Added option to expand MameUI to full screen kiosk mode without any windows controls [F11]. [Tor Arne Vestbø / Chris Kirmse]
  • Created new Berzerk homage about.bmp. [John IV]
  • Reworked drop down for D3D prescale effect, now allowing various levels of sharpness to be used. [Chris Kirmse]
  • Updated win32ui.c to pull certain information more appropriately out of layout.c. [Nathan Woods/MESS32]
  • Removed obsoleted version mismatch toggle. [Chris Kirmse]
  • Added a built in orientation folder view for displaying vertical and horizontal games. [René Single]
  • Added support for the new cleanstretch options. [Chris Kirmse]
  • Added ability to map joystick
     actions in MameUI32/64.ini to control GUI navigation instead of being hard
     coded:
Format: joystick_number, stick_type, axis_or_button, direction

#define JOYCODE_STICK_BTN 0
#define JOYCODE_STICK_AXIS 1
#define JOYCODE_STICK_POV 2
#define JOYCODE_DIR_BTN 0
#define JOYCODE_DIR_NEG 1
#define JOYCODE_DIR_POS 2

So, pressing button 3 on joystick one would be: 1,0,3,0

ui_joy_up 1,1,2,1
ui_joy_down 1,1,2,2
ui_joy_left 1,1,1,1
ui_joy_right 1,1,1,2
ui_joy_start 1,0,1,0
ui_joy_pgup 2,1,2,1
ui_joy_pgdwn 2,1,2,2
ui_joy_home 0,0,0,0
ui_joy_end 0,0,0,0
ui_joy_ss_change 2,0,3,0
ui_joy_history_up 2,0,4,0
ui_joy_history_down 2,0,1,0
ui_joy_exec 0,0,0,0

For stick type POV there are no directions, only four axes (0-3) [Tor Arne Vestbø]

v.69

  • Added support for the new D3D filter and effects options in Options • Default Game Options • Direct3D, see help menu contents for further descriptions of the new features. [John IV / Chris Kirmse]
  • Added support for the new core toggle -bios to allow selection of the various supported Neo Geo BIOSes. [Chris Kirmse]

v.68

  • Added code to allow clicking anywhere in the screenshot window to toggle the art views. No longer necessary to click directly on the default image. [K&K]
  • Added code to allow disabling / toggling individual art views on the view menu and the context menu of the art window. [Chris Kirmse]
  • Added support for the new core D3D items, accessible on the Options • Default Game Options • Direct3D. [Chris Kirmse]
  • Added support for the new core audio latency settings. [Chris Kirmse]

v.67

  • Re-worked the rotation options to a drop down, and included the new switches for auto-clockwise / auto-anti-clockwise for pivot monitors. [Chris Kirmse]

v.66

  • Moved towards an *.ini based settings storage scheme to more closely match the Mame.exe core, individual game *.inis whose settings are altered are stored in the \ini directory. The MameUI GUI settings are stored in MameUI32/64.ini in the root w/ MameUI.exe, and MameUI.ini is stored in the \ini directory and should be interchangeable with a regular Mame.ini. Purge these two items to return to baseline, the registry is no longer used for MameUI. [Chris Kirmse]
  • Provided an additional 'migration' version of MameUI which will copy the contents of the registry key and write it out to the new *.ini scheme when exiting. Useful for people who have a large number of individual game customizations. [John IV / Chris Kirmse]
  • Added toggle for high thread priority in Options • Interface Options to match the core's new -high_priority switch. This will devote more system resources and time to MameUI at the expense of other already running programs. [Chris Kirmse]

v.65

  • Updated columnedit.c to allow for MESS32 usage in software view. [Nathan Woods/MESS32]
  • Reworked F5/refresh routines to utilise more audit code and logic. [Chris Kirmse]
  • Reworked -lightgun handling, enabling independently selectable mouse control for those games. [Chris Kirmse]
  • Custom icons are included in the distribution \icons directory to show what the control/tree icons are without having to go through the source. [John IV]

v.63.1

  • Fixed analogue dead-zone not being maintained, and pre-0.63 timing not being maintained. [Chris Kirmse]
  • Added folder view for hard drive based games. [Chris Kirmse]
  • Addressed missing/blank custom icon display indexing issue on F5/refresh. [Chris Kirmse]
  • Sped up MameUI launch / folder reading routine. [Chris Kirmse]
  • Fixed screenshot area decimation when resizing images larger than the viewable area. [John IV / Chris Kirmse]
  • Added additional help topic IDs and tool tips. [Chris Kirmse]

v.63

  • Added code to ROM loading dialogue to visually indicate user intervention when the game being launched may not work due to 'no good dump' this will match the baseline Mame [press ok to continue]. Examples include the game Astyanax, 64th Street etc. [Chris Kirmse]
  • Return to baseline non-I686 compile as it prevented MameUI working on a variety of machines. [John IV]
  • Made numerous code changes to allow MameUI to be compiled with the new MinGW 2.0 package. [Chris Kirmse / Mike Haaland]
  • Distribution compiles are now done using above mentioned MinGW 2.0 package. [John IV]
  • Added code to allow for a tool tip to appear showing the full name of a game whose description is cut-off by column width in details/grouped view. Hover cursor over game to activate. [Andrew Kirmse / Chris Kirmse]
  • The default \folders\Favorites.ini has been cleaned out. Now that it is easy to drag and drop or secondary click to add games from the main list to the custom folders, it no longer needs to serve as an example using personal favorites. Be sure to backup existing \folders\Favorites.ini if using the built in installer version of the MameUI distribution. [John IV]
  • Tweaked code for drag & drop of games into custom folders. In a custom folder to drag an item out for deletion, it must go out of the game list pane either left, right, up, or down beneath the last item in the pane or further out of the GUI. [Chris Kirmse]
  • Reworked internal file handling code to interface with Aaron's substantial core updates. [Chris Kirmse]
  • Submitted code suggestion to allow for more granular sorting and display of items in the Manufacturers view, so companies will no longer be grouped with others incorrectly. [René Single]
  • Created new main icon and about.bmp 'Ladybug Homage'. [John IV]
  • Fixed ascending/descending toggle via View • Arrange Icons for columns other than Game. Added some logic to the -listsourcefile column display. Prevented color depth and refresh rate settings from being displayed if games are played in windowed mode. [René Single / Chris Kirmse]
  • Made Misc. art option gray properly when its parent control was deselected. [Chris Kirmse]
  • Submitted code to clean up some issues with the list and small icons view and icons squishing in details view upon return from another view like large icons. [René Single / Chris Kirmse]
  • Upgraded MameUI to utilize the new common controls from Windows XP, allowing the proper look of an XP application without the need for an external manifest file. [Chris Kirmse]
  • Added ability to rename custom folders from the tree view, secondary click on them and choose rename folder from the context menu, or click the name of the folder three times quickly. [Chris Kirmse]
  • Added the 'Source' folder view, this will display all the driver.c files and all the games within each family. [Mike Haaland]
  • Removed the \folders\BIOS.ini as it is now obviated by the built-in Source folder view. [John IV]
  • Added -sourcefileinfo information to the general tab for each games' properties, to easily and quickly see what driver family a game belongs to. [Chris Kirmse]
  • Added the long requested clone offset aka 'Grouped' view. This will display the parent games flush left, with all their clones alphabetized beneath them indented inward. Excellent for grouping the clones whose names may be considerably different than their parents, and allowing typing the name of the game to go to the parent set immediately. [John IV / Chris Kirmse]
  • Reworked the Startup Options to now be Interface Options, and added checkboxes to support Aaron's new disclaimer / info screen toggle. [Chris Kirmse]
  • Added new switches -rdtsc / -pause_brightness to match the core. [Chris Kirmse]

v.62

  • Internalized the code for rotate.exe, MameUI can now choose its background images from Options • Background Image, and choose a random one on startup. Options • Startup Options • Select Random Background Image. [K&K]
  • Added tabs for the screenshot art area, toggle with Alt-b. [K&K]
  • Added code to increase speed of audit. [K&K]
  • Added secondary click menu pop-up for screenshot area. [Sword]
  • Allowed bkground.png to be displayed in history.dat area under screenshot, font color changed to match GUI font color. [K&K]
  • Created new icons for the various tabs in Default Options / Game Properties dialogue boxes. [John IV]
  • Updated the ColumnEdit and Properties code to make them both more extensible. [Nathan Woods/MESS32]
  • Included index fixes to speed load time in treeview.c, particularly with extra \folders *.inis. [Jeff Miller]
  • Fixed an issue where the startup focus in the details list would jump to the top of the list before returning to the prior selection. [Chris Kirmse]
  • Main distribution now compiled with I686=1 for Pentium Pro optimization. Doesn't impact high end AMD chips at all but provides speed increases to lower range PII, P3 machines. [John IV]
  • Created new *.ini files for the \folders directory. Replace the old ones with these (except any user-modified of course). [John IV]
  • Created a new MameUI MSI installer package. This should be easier for beginners. [John IV]
  • Added the ability to drag and drop games into the custom *.ini folders. [Chris Kirmse]
  • Added the ability to secondary click on a game to add or remove it from an *.ini file in the \folders directory. [Patrick Jones / Chris Kirmse]

v.61

  • Fixed a nasty crasher where MameUI would hang if loading a game that required user intervention in Mame[w] like 'The Astyanax', and there was no joystick connected to the system. [Sword]
  • Fixed a couple of fringe case crashers when Windows is shut down beneath MameUI, i.e. a cabinet setting. [Robert John Sheppard]
  • Removed -dirty / -nodirty options to match Aaron's core changes. [John IV]
  • Added dialogue box support for new artwork switches, added -ini support to Options • Directories. [Mike Haaland]
  • Added dialogue box support for LED disablement, artwork resolution. [Mike Haaland]
  • Added brightness slider, removed -bpp per Aaron's changes. [Mike Haaland]
  • Added sound chip and CPU information to the folder views. Added the long requested feature to create user defined folder views, see \folders files for examples. [Sword, BUT, Emuman / Mike Haaland]
  • Created Artwork, BIOS, and Custom folder views. [John IV]
  • Added support for displaying -listsourcefile [source] field to the View • Customize Fields. Handy for sorting to test global driver changes across all its games., or using to report game problems to MameTesters.com. [Mike Haaland]
  • Created new Version and Classification folder views. [John IV]
  • Added support for the new -lightgun switch. [John IV]
  • Removed 'add to favorites' from context menus and file menu since it is now possible/preferable to have favorites stored in the portable, user-defined, external text file [\folders]. Which also of course would survive a registry key purge. Times played is still accessible as a column in details view. [John IV]
  • Updated help file with new settings, added baseline Mame[w] documents to help file. [John IV]
  • Added \titles directory support to allow for title screenshots viewing. [John IV]
  • Created new MameUI icon and About graphic. [John IV]

v.60

  • Created and added the new MameUI HTML Help File. [John IV]
  • Updated context sensitive help support to MameUI, all controls should be mapped to pop-up help. [Mike Haaland]
  • Added 'Use less CPU if possible' check box in Options • Default Options • Miscellaneous. This toggles the new baseline Mame[w] sleep / -nosleep switch. If toggled on, it will return more time slices to the processor and be more amenable to multi-tasking with other applications. If toggled off, MameUI will continue to take 100% of the CPU time as it has historically. It should be toggled 'off' for people experiencing severe slowdowns, particularly laptop users. [John IV / Mike Haaland]
  • Added option to set the directory for hard drive image diff files to match Mame[w] in Options • Directories. Fixed screenshot area decimation when image sized too large for area. Scales properly now and looks great. Fixed flip options. [Sword]
  • Added option to set the directory for icons in Options • Directories. [John IV]
  • Added support for new external controller mapping. This adds support for common arcade controllers and provides the ability to create user defined mappings for home built solutions. See Options • Default Options • Controllers. Also see the controller mapping document in the Mame Documents help section. [Ron Fries]

v.59

  • Added 'Allow game selection by joystick' check box to Startup Options. Allows navigation and game launch via controller:
    joystick 1 up = up arrow
    joystick 1 down = down arrow
    joystick 1 left = left arrow
    joystick 1 right = right arrow
    joystick 1 button 1 = play game
    joystick 1 button 2 = page up
    joystick 1 button 5 = page down
    joystick 1 button 3 = end
    joystick 1 button 6 = home. [Chris Kirmse]
  • Fixed a few files to allow a MinGW compile without errors. [Sword]
  • Added 'Broadcast selected game to all windows' check box in Startup Options, this allows third party applications to be programmatically told what game is being played in MameUI. It can be used to hook into applications like LED reader boards, or instant message clients, etc. [Chris Kirmse]

2008-09-23 09:01 PM -0700/ john iv


MameUI System Requirements

System Requirements

MameUI runs on Microsoft Windows 98SE, Windows ME, Windows 2000, Windows XP, Windows 2003 Server, Windows Vista, and Windows 7.

Because of the wide range of arcade hardware supported by MameUI, system requirements vary considerably. The more complex the original arcade hardware, the more CPU power is needed to emulate it. Mame strives for accuracy in its emulation; as such, over time, the performance point shifts as the underlying engine has been reworked and refined. Early games now require a bit more PC processing power to run than they did in earlier versions of Mame. This is typically not a great concern as modern PCs can run these early games easily at thousands of times their original speed. More recent games can often take upwards of 512M of memory, and Phenom / Core2 chips to emulate at 100% speed with effects. For those wishing to upgrade their systems; MameUI benefits most from adding more CPU power, using a 64bit build on a 64bit OS, and then memory and upgraded video card.

Currently there are some games supported in MameUI which are not playable at full frame rate on today's PC hardware. Many of these are mid to late 90's and beyond advanced 3D games which MameUI renders in software for accuracy sake. Recent developments in Mame [.120] have allowed some of these games to get close to 100% playable on high-end overclocked [3.6Ghz+] Intel Core2Duo and Quad Core cpus. Additionally the fastest combination for MameUI is one of the previously mentioned CPUs plus the 64bit version of MameUI combined with a 64bit Operating System like Windows 7 x64.

2009-12-24 12:33 AM -0800 / john iv


MameUI Download Locations

Download Locations

The official site for MameUI downloads:

The MameUI Homepage

2007-11-12 02:03 PM -0800 / john iv


MameUI Installation Procedures

Install Procedures

To Install MameUI Manually

* Download the latest MameUI binary distribution [not the source] self-extracting archive available at MameUI.

* Double-click the self-extracting archive .exe, and point the directory install location to the root of the c:\ drive, or just type in the box "c:\" [no quotes]. This will create a c:\MameUI directory with the program and all its support files within it.

* MameUI requires ROMs to play games; if attempting to play a game the ROMs of which are not present it will fail and list the files missing. Download the freely available public domain ROMs [Robby Roto, Gridlee, Alien Arena, and others] from Mamedev.org. Place these files still zipped, into the \MameUI\ROMs folder. Again, do not unzip them.

* Double-click the MameUI icon to launch the program. MameUI will go through its initial diagnostics and search for available games in the c:\MameUI\ROMs directory, and then display the GUI. If the games do not appear on the available game list, hit F5 to force a game search or do a File menu / Audit.

* To activate mouse control or attached gamepads to use within games, it is necessary to toggle those options on in the Options • Default Options • Controllers tab.

* Once a game has been selected and double-clicked, MameUI will produce two information screens and then it will run the game. Since MameUI is emulating the original hardware, the software thinks it’s still in an arcade and is starting up for the first time in the morning. Initial diagnostic screens are run through, as well as possibly some accounting information presented to the arcade owner.

* The game should now be running its demo/attract mode. Insert a coin with the [5] key on the keyboard, the mappings for coin inserts are: player 1 [5], player 2 [6], player 3 [7], player 4 [8]. Now that a coin has been inserted, start the game with the [1] key on the keyboard. Game start mappings are player 1 [1], player 2 [2], player 3 [3], player 4 [4].

* MameUI’s default control scheme is to use the inverted T arrow keys on the keyboard for directional controls, and the left [CTRL] key as the primary action button.

* While in a game within MameUI, the internal configuration menu system can be activated by pressing the [TAB] key. This will bring up the control options. These options allow remapping MameUI controls to whatever keyboard keys or gamepad buttons are desired. The Input (general) area controls the global settings, and the Input (this game) are the controls for the game selected. To change the mapping, select the control to change by arrowing down to it, hit the [ENTER] key and then the new desired control. Hit the [ESC] key to exit the [TAB] menu back to the game. Note: If there are multiple mouse devices attached to the system they can be individually configured by selecting their control in the [TAB] menu and moving the mouse or trackball left or right, up or down to map it.

* Other keys of interest while playing a game are :

[TAB] key to bring up the internal menu system.

[~ TILDE] the onscreen display.

[Shift-p] advance paused screen one frame at a time
[p] for the pause button.

[F3] resets the game.

[F4] displays the tile manager and the game’s color palette.

[Shift-F7] save current game state [a-z, 1-0] (See save state folder view for supported games)

[F7] load game state [a-z, 1-0] (See save state folder view on left for supported games)

[F9] changes the frameskip on the fly.

[F10] toggles throttling.

[F11] toggles the speed display display.
[Shift-F12] toggles MNG recording, once starts, second finishes.

[F12] takes a *.png snapshot of the game and places it in the \MameUI\snap directory.

[ESC] exits from the game back to the MameUI GUI.

[Left-Alt + Enter] toggle from fullscreen mode to windowed mode.

[Insert] fast forwards with full unthrottle and highest frameskip, convenient for speeding through slow start-up of certain games.

2007-11-12 02:02 PM -0800 / john iv


MameUI Art & Support Files

Art & Support Files

MameUI's flexible GUI framework allows for some beautiful customization; including font color, icons, screenshot art, and background images. The official site for the snaps and icons is MameUI. The following files are used for this customization.

* Icons.zip : This file contains icons for every game in MameUI and the folder view on the far left. Place it in the \MameUI\icons folder, it can remain zipped to save slack HD space but the zip file must be named icons.zip.

* Snap.zip : These are a series of files that contain in-game screenshots of every parent game in MameUI. Download the packs and extract their contents into the \MameUI\snap directory or combine their *.png contents into one large snap.zip file.

* Titles.zip : This file can provide support for screenshots showing the titles of the game in MameUI, place in \titles directory.

* Marquees.zip : This file can provide support for the marquee images that appear on the top of arcade machines, place in \marquees directory..

* Cpanel.zip : This file can provide support for the images of arcade control panels, place in \cpanel directory..

* PCB.zip : This file can provide support for the images of arcade printed circuit boards, place in \pcb directory..

* Bkground.zip : This file contains numerous images that are used as the background for the MameUI GUI [beneath the game list, behind the screenshot/folder areas]. Download this file and extract its contents into the \MameUI\bkground directory. Choose a background image in the Options menu. To have it rotated randomly on MameUI launch, toggle the checkbox in the Options • Interface Options menu.

* Flyers.zip : This file can provide support for the original flyers sent to arcade operators, exhorting them to buy the games, place in \flyers directory.

* Cabinets.zip : These are a series of files that contain images of the actual physical arcade machines themselves. Download the packs and extract their contents into the \MameUI\cabinets directory or combine their *.png contents into one large cabinets.zip.

* History.dat : This file contains the original game’s designer’s names, and assorted trivia. Place this file in the \MameUI folder alongside MameUI.exe. It will display if the history art tab is toggled, or if the history tab is not selected, it will display beneath snapshots.

2007-11-12 02:05 PM -0800 / john iv


MameUI Settings

Suggested MameUI Default Settings

* Advanced / Triple Buffering ensures there should be no 'tearing' of screen images if the frame rate doesn't exactly match the monitor screen refresh in full-screen mode. Particularly evident in vertical scrolling games. This however can lead to sound stuttering on games that are above 60Hz [early Namco games like Pac-Man, etc.] if the user's monitor is not capable of being driven at a higher refresh rate, like modern LCDs. If a modern LCD fixed at 60Hz is in use, toggle on the Advanced • Refresh game speed.

* Simulated monitor effects are now handled via *.png files in the \artwork directory. They are accessed in Advanced / Select Effect. Scanlines75x4 provides a 75% black line every four pixel rows.

* Bitmap prescaling in Display is the new control for determining how fuzzy or sharp the bilinear filtering of D3D is. Increasing this number sharpens the game pixels.

2007-11-10 01:41 AM -0800 / john iv


MameUI Playing a Game & Internal Controls

Playing a Game & Internal Controls

* To activate mouse control or attached gamepads to use within games, it is necessary to toggle those options on in the Options • Default Options • Controllers tab.

* Once a game has been selected and double-clicked, MameUI will produce two information screens and then it will run the game. Since MameUI is emulating the original hardware, the software thinks it’s still in an arcade and is starting up for the first time in the morning. Initial diagnostic screens are run through, as well as possibly some accounting information presented to the arcade owner.

* The game should now be running its demo/attract mode. Insert a coin with the [5] key on the keyboard, the mappings for coin inserts are: player 1 [5], player 2 [6], player 3 [7], player 4 [8]. Now that a coin has been inserted, start the game with the [1] key on the keyboard. Game start mappings are player 1 [1], player 2 [2], player 3 [3], player 4 [4].

* MameUI’s default control scheme is to use the inverted T arrow keys on the keyboard for directional controls, and the left [CTRL] key as the primary action button.

* While in a game within MameUI, the internal configuration menu system can be activated by pressing the [TAB] key. This will bring up the control options. These options allow remapping MameUI controls to whatever keyboard keys or gamepad buttons are desired. The Input (general) area controls the global settings, and the Input (this game) are the controls for the game selected. To change the mapping, select the control to change by arrowing down to it, hit the [ENTER] key and then the new desired control. Hit the [ESC] key to exit the [TAB] menu back to the game. Note: If there are multiple mouse devices attached to the system they can be individually configured by selecting their control in the [TAB] menu and moving the mouse or trackball left or right, up or down to map it.

* Other keys of interest while playing a game are :

[TAB] key to bring up the internal menu system.

[~ TILDE] the onscreen display.

[Shift-p] advance paused screen one frame at a time
[p] for the pause button.

[F3] resets the game.

[F4] displays the tile manager and the game’s color palette.

[Shift-F7] save current game state [a-z, 1-0] (See save state folder view for supported games)

[F7] load game state [a-z, 1-0] (See save state folder view on left for supported games)

[F9] changes the frameskip on the fly.

[F10] toggles throttling.

[F11] toggles the speed display display.
[Shift-F12] toggles MNG recording, once starts, second finishes.

[F12] takes a *.png snapshot of the game and places it in the \MameUI\snap directory.

[ESC] exits from the game back to the MameUI GUI.

[Left-Alt + Enter] toggle from fullscreen mode to windowed mode.

[Insert] fast forwards with full unthrottle and highest frameskip, convenient for speeding through slow start-up of certain games.

2007-11-10 01:41 AM -0800 / john iv


MameUI Toolbar / Status Bar / Windows

The MameUI toolbar extends the width of the application at the top and can be toggled on by using the View • Toolbar menu item, or the Alt-T keyboard shortcut. The buttons on the toolbar from left to right are : toggle folder list, toggle screenshot, large icons view, small icons view, list view, details view, help about, and help file. Click the items to toggle them on or off. The toolbar also contains the game search box, typing into this text box will filter out games. It is similar in function to the Ctrl-F filter but only filters on game descriptive name, it is also accessible with the Ctrl-E shortcut.

The MameUI status bar extends the width of the application at the bottom and can be toggled on by using the View • Status Bar menu item, or the Alt-S keyboard shortcut. The status bar indicates the full name of the game highlighted, and gives its internal status flag as to whether it’s working or if there are some issues with the emulation. The status bar also indicates the game count for the particular view used.

MameUI can be divided into three windowed sections:

The first section on the far left is the folder view, toggled on by using the View • Folder List menu item, or the Alt-D keyboard shortcut. This contains a tree style list that expands for certain items like year, manufacturer, and custom. By selecting one of these items, MameUI will display the games that meet that criterion. For example: selecting year / 1978, MameUI will display all the supported games manufactured in 1978.

  • MameUI will display user created folders based on *.ini files located in the \MameUI\folders directory. See files in that location for examples. This location also houses the favorites.ini, where favorite games can be added to the text file and easily moved to other computers.

  • MameUI supports dragging and dropping games from the middle section game list into a custom folder in the left pane. MameUI supports the same procedure by secondary clicking on the game in the game list and choosing the 'add to custom folder' option.

  • MameUI also supports secondary clicking on a custom folder and renaming it, editing the custom folder name can also be accomplished by clicking the name of the folder three times quickly.

  • Secondary clicking on any of the folders also allows selectively displaying or hiding them in the tree.

  • Secondary clicking the vector folders and the \source\gamedriver folder allows for customizing away from default the games in that folder. Secondary click on the vector folder • properties in the folder pane to set options for that group of games. To alter global settings for game families select the properties for it, e.g. dkong.c for the Donkey Kong family of games This will change options for all games based on that driver. Thus there is the possibility to have four levels of alterations when a game's individual properties are viewed in All Games or any folder. The changes can be backed out of hierarchically with reset to default on each respective properties, or by deleting the .ini files in the \ini directory.

The second, middle section of MameUI is the game list, always toggled on. This is where MameUI lists all of the games chosen in the left folder view. MameUI has the option to display the games as large icons, small icons, a list icons view, or details. Choosing details allows MameUI to display, in columnar mode, the game name as well as additional informational fields, chosen in the View • Customize Fields menu item.

The third section, on the far right, is the screenshot/art area, toggled on by using the View • Screenshot menu item, or the Alt-P keyboard shortcut. This area of the GUI will display the optional artwork for each game selected, the artwork modes are toggled through by clicking on the picture area. The modes are: screenshot, flyer, cabinet, marquees, title shots, control panels, and history. Alt-B will toggle the screenshot tabs which give a visual selection method besides clicking the artwork area. Secondary clicking on the screenshot area will also bring up a shortcut dialogue with the file types available and allow toggling on or off individual tabs. The area under the screenshot mode will also display the history.dat information if that file is present [it will not display in the screenshot area if the history tab is enabled]. Each of the tabs can be navigated to by their accelerator keys, Alt-1, Alt-2, Alt-3, etc. Further information about these files is in Art and Support Files.

2008-07-16 12:03 AM -0700 / john iv


MameUI File Menu

File Menu

* Play Game : Selecting this option from the file menu will launch the highlighted game.

* Play and Record Input : Selecting this option from the file menu will allow for the creation of an *.inp file which will allow MameUI to record keystrokes in the game being played for playback later. Similar to a VCR.

* Playback Input : Selecting this option from the file menu will allow the loading and playing of a previously recorded *.inp file.

* Play and Record Wave Output : Selecting this option from the file menu will allow the recording of a sound file while playing a game. The *.wav file is placed in the \inp directory by default.

* Play and Record MNG Output : Selecting this option from the file menu will allow the recording of a MNG video file while playing a game. The *.mng file is placed in the \inp directory by default.

* Load Savestate : Selecting this option from the file menu will allow the loading and playing of a previously saved machine state, the state being loaded must match the highlighted game.

* Select Random Game : Selecting this option from the file menu will cause MameUI to randomly highlight a game in the game list shortcut key is Ctrl-R.

* Properties : Selecting this option from the file menu will display the highlighted game’s individual settings, these settings over-ride those made to all games in the Options • Default Options menu item.

* Audit All Games : Selecting this option from the file menu will initiate an exhaustive check on the available games, verifying them to MameUI’s expected results.

* Exit : Selecting this option from the file menu will exit the program.

2007-11-10 01:41 AM -0800/ john iv


MameUI Properties

Default Options & Game Properties

The default options and game properties tabs of MameUI are used to set the vast majority of game play parameters. The Game Properties dialogue box, accessible from the File • Properties menu item, shares all the tabs of the Default Options dialogue box, accessible from the Options • Default Options menu item. The Game Properties dialogue contains two additional tabs which give information on the game selected, and its current audited state.

* General Tab : [only available in Game Properties dialogue] This tab provides information on the game selected, this information includes manufacturer name and date, driver status, original CPU, original sound hardware, original screen resolution and orientation, and number of colors.

* Audit Tab : [only available in the Game Properties dialogue] This tab performs a ‘mini-audit’ on the game selected, determining its status compared to what MameUI expects. Status will be reported and missing files with CRC information will appear in the details view.

* Display Tab : This tab allows the setting of numerous video options.

Run in a window : MameUI will launch the game selected in a window on the desktop, the window can be resized by pausing the emulation and dragging the borders. The resolution of the window can also be set in the Screen tab.

Start out maximized : Toggling this option on ensures that when windowed mode is used, the maximum amount of space is used. Toggle this option off to play the smallest version of the windowed game.

Enforce aspect ratio : This option is used in conjunction with windowed mode, it forces the aspect ratio to be maintained when the game is paused and the window is dragged and resized. Turn this off to create long, thin game windows, or short fat, etc.

Throttle : This option prevents MameUI from running games as fast as the host CPU can go. Unless this is toggled on, a modern x86 processor will run Donkey Kong at a thousand times its original speed.

Rotation : This drop down box allows MameUI to rotate the video output by 90 degrees in either direction. This setting is useful if used in conjunction with a pivoting monitor [the auto options], or playing games with a monitor on its side. Doing so allows vertical orientated games to be played full screen. The additional 'auto clockwise' and 'auto anti-clockwise' settings are particularly useful for rotating LCD monitors, these settings will force vertical games to one 90 degree angle or the other depending on which way the LCD pivots.
Flip screen upside down : This option mirrors the image vertically.

Flip screen left right : This option mirrors the image horizontally.

Direct3D : Use Bilinear Filtering : This option enables bilinear filtering on game screen graphics. 'Fuzziness' of image can be controlled by the bitmap prescaling option, increasing it sharpens the image. Leaving this unchecked produces the crispest output but does point filtering leading to scaling artifacts.

Direct3D : Version : This option allows toggling between version 9 and version 8 of D3D. It's almost always preferable to stay with 9.

DirectDraw : Stretch using hardware : Used in conjunction with DDraw as the video mode, this toggle if turned off scales upwards the size of the games original native resolution at the same aspect ratio.

Bitmap prescaling : This option works in conjunction with bilinear filtering. The higher up the slider, the sharper the screen output.

Gamma correction : This option controls the gamma, which produces a potentially nonlinear black to white ramp, for the game screens. This option does not affect the artwork or other parts of the display. Using MameUI's in-game tilde menu [~], one can individually set the gamma for each game screen; this option controls the initial value for all visible game screens. The standard value is 1.0, which gives a linear ramp from black to white. Selecting lower values (down to 0.1) will increase the nonlinearity toward black, while selecting higher values (up to 3.0) will push the nonlinearity toward white. The default is 1.0.

Brightness correction : This option controls the default brightness, or black level, of the game screens. This option does not affect the artwork or other parts of the display. Using MameUI's in-game tilde menu [~], one can individually set the brightness for each game screen; this option controls the initial value for all visible game screens. The standard value is 1.0. Selecting lower values (down to 0.1) will produce a darkened display, while selecting higher values (up to 2.0) will give a brighter display. The default is 1.0.

Contrast correction : Controls the contrast, or white level, of the game screens. This option does not affect the artwork or other parts of the display. Using MameUI's in-game tilde menu [~], one can individually set the contrast for each game screen; this option controls the initial value for all visible game screens. The standard value is 1.0. Selecting lower values (down to 0.1) will produce a dimmer display, while selecting higher values (up to 2.0) will give a more saturated display. The default is 1.0.

Pause Brightness : This option controls the screen brightness when a game is paused.

* Advanced Tab : This tab allows the setting of additional numerous video options.

Triple buffering : This option controls how MameUI draws to the screen, if toggled on, it will draw to three buffers and cycle between them. This setting when toggled on can also help alleviate tearing that sometimes occurs in some scrolling games.

Sync to monitor refresh : This option tells MameUI to ignore the original game’s refresh rate and sync it to the output monitor’s current rate. This can cause the game to run too fast if the output monitor is using 85Hz for example. This option is preferable if MameUI is used with authentic arcade monitor hardware and video card modes that are tweaked appropriately.

Wait for vertical sync : This option tells MameUI to wait for the refresh period on the output monitor to finish before starting to draw video to the screen, this works functionally similarly to triple buffer but is better suited for running games in a window to alleviate tearing.

Refresh speed : This option tells MameUI to alter the speed of the emulation for games that run at a higher speed than the host monitor. For example this should be checked if running Pac-Man on a fixed 60Hz LCD since Pac-Man runs at 60.60Hz. This alleviates sound hiccups as well in the previous situation.

Emulation speed : This slider allows for the altering of the emulation speed, it can be dropped down or increased by three [or to 100 in the \ini.]

Frame skipping : These settings allow MameUI to skip frames of animation when playing games, if the host CPU is not fast enough to run the game. Optimally this should be toggled off and 'draw every frame' selected.

Full screen gamma : This option is similar to the gamma correction in the display tab but works on all graphic elements of the screen including the UI.

Full screen brightness : This option is similar to the brightness correction in the display tab but works on all graphic elements of the screen including the UI.

Full screen contrast : This option is similar to the contrast correction in the display tab but works on all graphic elements of the screen including the UI.

Effect : Starting with version .107 simulated arcade monitor effects are handled by the overlay of *.png masks on the game. The *.png files reside in the \artwork directory and are simple patterns creatable and editable in applications like Photoshop. If scan lines are desired and a very high resolution is being used [1280x1024 or above] the Scanlines75x4 item is suggested. For games with artwork whose playfields are smaller on screen as the results of bezels, it's recommended to use Scanlines75x3 or Scanlines75x2.

* Screen Tab : This tab allows the alteration of the various screen output settings.

Number of screens : This slider controls the number of screens MameUI will draw. In windowed mode up to four different output windows can be created of varying sizes, shapes, etc. In full screen mode the number of screens can match the physical number of monitors connected to the host system. This allows playing multi-monitor arcade games like Punch-Out or similar on 2 physical computer monitors in dual head mode.

Screen : This option allows the choice of the physical monitor to use in conjunction with number of screens and screennumber. The drop down is populated by the \\.\DISPLAY1 and/or \\.\DISPLAY2 and so forth. Leaving this toggle to Auto will have MameUI attempt to order the game screens as it sees fit, for Punch-Out for example it will place the main fighting screen on \\.\DISPLAY1 and the status/display screen on secondary monitor \\.\DISPLAY2.

Aspect Ratio : Allows control over the physical aspect ratio of the physical monitor for each screen. If running full screen and auto aspect ratio is off, then switch resolutions to fit must be toggled on to work. Typically this should be set to autoselect unless weird shaped windows for game play are desired.

View : This drop down allows the selection of the default view of the in-game display. This can be auto which is effectively 4:3 for horizontal games or 3:4 for vertical games, native, which is the game's original native resolution, or cocktail which is duplicated view for 2 people playing the game on opposite sides of a cocktail cabinet.

Screennumber : This drop down is populated based on the slider setting of number of screens to its left. Each item in the screennumber drop down can be individually tailored with screen, resolution, aspect ratio, and view. Thus it is possible to have elaborate combinations for game play, for example. Number of screens 3, run in windowed mode, have screen0 go to the secondary \\.\DISPLAY2, running in 320x240 resolution at a color depth of 16bpp with a refresh of 75Hz, screen1 go to primary display \\.\DISPLAY1, run at 640x480x32@60 and use the cocktail view, etc. Each item in the Screennumber drop down will populate its own settings and maintain those settings until returned to a default.

Resolution : These options control the size and refresh rate of the screennumbers. In windowed mode only the resolution is selectable.

Switch resolutions to fit : This toggle must be on if any of the resolution choices are altered away from auto in full screen mode. It does not impact windowed mode.

* Sound Tab : This tab allows for setting the sound options.

Enable sound and sound CPUs : This setting toggles sound on or off in games.

Use samples : This setting allows MameUI to utilize samples for games which do not have their sound hardware emulated, or were using analogue circuitry.

Sample Rate : This setting tells MameUI at what rate to output sound, the higher, the better. Lowering this setting can also result in faster performance on lower end machines.

Volume attenuation : This setting allows MameUI to set the initial volume level, the default is 0dB.

Audio latency : This slider allows the adjustment of the amount of latency built into the audio streaming. Increasing the slider to the right on faster machines can help alleviate some desync and scratchiness in the sound on some configurations.

* Controllers Tab : This tab allows for setting the game controller options.

Enable joystick input : This setting tells MameUI to utilize any currently connected joysticks. MameUI will interrogate the game controllers control panel and use ID#1 and up.

Analog joystick deadzone : This setting controls how MameUI translates analog input to games that require digital input.

Enable lightgun input : This setting tells MameUI to utilize a lightgun for target/shooting games that require analogue control, like Crossbow, Police Trainer, Rev X, etc. and will only be available on non-XP based systems. If using XP then mouse input should be toggled on to allow mapping of the lightgun functions in the in-game [TAB] menu.

Offscreen shots reload : This option if checked will internally remap the second mouse button and allow it to be used for simulated 'reloading' in gun games that require it.

Dual lightguns : This is a legacy switch for non-XP systems which activates code to handle internal mapping of the second light gun connected to the system. If WinXP is used this is not required and is grayed out, the second gun is mapped like a joystick or mouse in the in-game [TAB] menu.

Enable mouse input : This setting tells MameUI to utilize the mouse in games that require analogue control methods. On XP systems the mouse toggle should be on if a lightgun is to be utilised.

Enable steadykey support : This option tells MameUI to use a different keyboard handling routine that makes it easier to register simultaneous key presses for games that require it for special moves [Street Fighter II, etc.]. However it can produce more sluggish results in other games.

Default input layout : This drop down menu allows MameUI to choose between multiple key mappings, including keyboard mapping for various third-party control panels. It will also display user defined controller mappings, if created in the \ctrlr directory. Various arcade game controller companies produce custom made configuration files for their setups; these *.cfg files need to go in the \MameUI\ctrlr folder to be recognized in the MameUI controllers tab. These files are the responsibility of the controller companies themselves and are not included or endorsed by MameUI, they can typically be found at the companies’ web sites.

Multiple keyboards : Enabling this checkbox tells MameUI to allow mapping to different physical keyboards that may be attached to the host system, this allows rather esoteric options like multiple keyboards for games like 2 player Keyboard Mania or Typing of the Dead etc. If left off MameUI maps all keyboard controls to all keyboard devices.

Multiple mice : Enabling this checkbox tells MameUI to allow mapping to different physical mice devices. Useful for systems that have spinners, trackballs, main system mice etc. If left off MameUI maps all mice controls to all mouse devices.

* Controller Mapping Tab : This tab allows choosing which analogue device connected to the system for MameUI to map a game's internal analogue controls to. These options should be used in lieu of the global 'mouse' setting which can conflict with attached joysticks/gamepads.

* Miscellaneous Tab : This tab allows for setting additional options.

Enable game cheats : This setting if toggled on allows MameUI to use external cheat.dat files.

Error log (for developers) : This setting if toggled on produces an error log of illegal memory accesses.

Sleep when possible : This setting if toggled on allows MameUI to be more multitasking friendly in that it does not use as much processor time. If this setting is toggled off MameUI will utilize 100% of the CPU for playing games. Some machines slow down dramatically if this setting is toggled on, particularly laptops. This maps to the -sleep option in Mame.

Skip game info : If this options is on, MameUI will immediately launch a game without information screens. However screens regarding problems in the drivers will still be shown [missing sound, unemulated protection, problems with video etc.].

Save game state on exit : This toggle will allow MameUI to automatically save the current machine state when the game is exited with the ESC key. As a result when the game is re-launched it's like the machine was never turned off. This feature allows older games to maintain their hi-scores indefinitely where it wasn't originally supported. The files are stored in the MameUI\sta directory. The list of games that support save states is present in the left hand folder view pane of the UI as 'Save State'.

Thread Priority slider : Increasing the Windows thread priority for MameUI giving it more CPU and resources slices, can negatively impact other running processes. Using setting 1 sets it to real-time which interferes with keyboard and joystick controls as well as other running apps. Setting 1 is not recommended as a result. Some Dells and other laptop computers may require setting slider to -15 to get keyboard control working properly.

Multi-threaded rendering : This toggle allows multi-core or multi-chip or HyperThreaded machines to pass the final video blit off to a second thread. This can lead up to a 40% increase in unthrottled FPS using D3D in GPU limited games. However it does not have a real world effect on games that are CPU bound, like the heavy seattle.c, or vegas.c games. Unless in possession of one of these types of machines, this should be toggled off to avoid potential slowdowns.

Use additional game artwork : This setting if toggled on allows MameUI to utilize the external artwork packages available at Mr. Do’s site for display in games like Armor Attack, Discs of Tron, Lunar Lander, Warrior, etc. The artwork packages are placed in the \artwork directory. Each element of the artwork package can be toggled: bezel, overlay, and background.

Crop Artwork : Selecting the crop artwork toggle will shrink the scene down to the games original dimensions, cropping any available art pieces.

BIOS : This drop down allows the use of a variety of different supported NeoGeo or Sega BIOS files. The option will only be available when altering the driver family via the source folder view on the left pane, or individual games in the driver family.

* Vector Tab : This tab allows for setting additional options for games that originally utilized a vector monitor instead of a raster monitor. [Asteroids, Battlezone, Armor Attack, etc.]

Draw antialiased vectors : This setting if toggled on tells MameUI to draw vector lines with an additional pleasing antialiased look.

Beam width : This slider allows MameUI to set the beam width on the vector lines drawn, increasing it creates wider vectors.

Flicker : This slider tells MameUI to artificially create a flicker effect on the vector lines.

2007-11-10 01:41 AM -0800/ john iv


MameUI View Menu

View Menu

* Toolbar : Selecting this option from the view menu will toggle the toolbar on or off.

* Status Bar : Selecting this option from the view menu will toggle the status bar on or off.

* Folder List : Selecting this option from the view menu will toggle the folder list view on or off.

* Screenshot : Selecting this option from the view menu will toggle the screenshot area on or off.

* Screenshot Tab : Selecting this option from the view menu will toggle the screenshot area tabs, allowing to choose between the multiple different art types. Note that history.dat information is only displayed in the snapshot view.

* Fullscreen : Selecting this option from the view menu will switch the GUI into full screen mode. This will expand to fill the current desktop resolution, it will hide the menu bar, and it will hide the windows taskbar. Toggle in and out of it with F11, other alt shortcut keys are still active.

* Show Pictures : Selecting this option from the view menu will allow toggling the display of the individual art tabs in the screenshot area.

* Large Icons : Selecting this option from the view menu will display large icons in the gamelist area.

* Small Icons : Selecting this option from the view menu will display small icons in a different grid pattern in the gamelist area.

* List : Selecting this option from the view menu will display small icons in the gamelist area.

* Details : Selecting this option from the view menu will display small icons along with full game name and any other fields chosen with the View • Customize Fields option.

* Grouped : Selecting this option from the view menu will display small icons along with full game name and any other fields chosen with the View • Customize Fields option, however the clone games will be displayed indented and alphabetized under their parents..

* Arrange Icons : Selecting this option from the view menu will order the gamelist area by the choice made; game, directory, manufacturer, times played, type, or year.

* Line Up Icons : Selecting this option from the view menu will re-align the icons in views where it does not automatically happen.

* Refresh : Selecting this option from the view menu will initiate an update of the gamelist while MameUI searches for the existence of zip files that match game directory names. This is not as exhaustive as the audit function on the File menu.

* Custom Filters : Selecting this option from the view menu will allow for the selective hiding of certain types of games. Manually typing in a phrase in the filter text box will only display games that have that text in their names [note valid input for the description filter are, game name, driver name e.g. 'cps2.c', and manufacturer].

* Customize Fields : Selecting this option from the view menu will allow choosing which fields are displayed in columnar mode in the game list details view, selectable from the View • Details. The columns can also be ordered by moving them up and down the right hand side of the well. The game name field is always the first item and cannot be changed.

2007-11-11 01:11 AM -0800 / john iv


MameUI Options Menu

Options Menu

* Game List Font : Selecting this option from the options menu will change the font used for the GUI display.

* Game List Clone Color : Selecting this option from the options menu will change the font color used for the GUI display of clones in the 'Grouped' game list view.

* Directories : Selecting this option from the options menu will allow for choosing a different directory for a number of MameUI support files including: ROMs, samples, config, high scores, snapshots, input files, state, artwork, memory card, flyers, cabinets, marquees, and nvram. Normally these directories are created under the MameUI executable’s directory.

* Default Options : Selecting this option from the options menu will allow for the global customization of all games in the game list. These settings are overridden by altering the individual game settings using the File • Properties menu item.

* Reset to Default : Selecting this option from the options menu will allow for resetting various parts of MameUI to their defaults. MameUI will prompt before resetting, giving the option to cancel.

* Interface Options : Selecting this option from the options menu will allow:
Toggling on or off the search for new games on start.
Toggling on or off the ability to use a game pad to navigate the GUI (see mameui32.ini for examples).
Toggling on or off the ability to use a keyboard encoder solution to navigate the GUI and launch games [helpful in Mame cabs] (see mameui32.ini for examples).
Selecting a random image from the \bkground directory on startup.
Toggling on or off MameUI broadcasting the selected game programmatically to other listening applications like message clients, or an LED message bar,
The cursor to be hidden [helpful in Mame cabs].
Selecting inheritable filters, this allows parent folders to set the filters for their children sub-folders.
No offset for clones missing parent in view toggle will cause clones not be indented if the parent game is not present due to current folder view, missing ROMs, or filtering.
Allow history.dat file to be displayed under any, all, or none of the art views.
Choosing the screenshot [F12] naming convention.
Globally clear the play time and number of times played counters.
Stretch screenshot to larger size, this will enlarge the items in the art pane scaling them upwards depending on the size of the GUI.
Screenshot border size and color creates a user defined border around the art work in the art pane on the right, set to zero to remove borders completely.

* Background Image : Selecting this option from the options menu allows the choosing of a background image from the \bkground directory. This image will be displayed beneath the three window panes in the GUI.

2008-07-16 12:04 AM -0700/ john iv


MameUI Help Menu

Help Menu

* Help Topics : Selecting this option from the help menu will launch the MameUI help file.

* Troubleshooting : Selecting this option from the help menu will display the troubleshooting topic in the help file.

* New Game Changes : Selecting this option from the help menu will display added, removed, changed games.

* Mame Whatsnew.txt : Selecting this option from the help menu will display the baseline Mame whatsnew.txt file which contains information about source changes, games added, driver improvements, etc.

* About : Selecting this option from the help menu will display information about the version of MameUI and its contributors.

2007-11-10 01:41 AM -0800 / john iv


MameUI Troubleshooting [& Tips]

MameUI [previously Mame32] has been in development since 1997. It is mature, complex, and robust. However, since the Mame project itself is a documentation effort, and development is continuous, there will be times when changes to the core program effect MameUI. When problems do occur with a specific game in a specific version of MameUI, a previous version of MameUI may be used.

MameUI is now an integrated GUI front end which passes user input from the GUI to the Mame engine/core. Thus, any problems that occur in the Mame engine will be inherited by MameUI. Prior to reporting problems against MameUI, verify that the issue is not a known, core defect in Mame. The Mametesters.org site is designed to track and report bugs in the baseline Mame version. To find if a problem plagues the game in question, do an alt-enter on the game and note its driver/source name at the bottom of the general properties tab; then search the Mametesters’ bug database. The current list of known MameUI specific issues and defect tracking is available at MameUI.

ROMs and CHDs Related Topics

· Utilization of an external ROMs management utility like Clrmame is recommended for repair and identification of damaged or incomplete sets.

· If receiving missing ROMs error messages when attempting to run a game, secondary click on the game in the list and choose properties, do an audit on that game [or use Alt-A]. The audit will determine which files are missing from the ROMset currently being played. MameUI will not run a game which fails its internal audit.

· Mame is an ongoing documentation project. Sometimes old ROM sets are found to have miss-dumped, missing, or damaged ROMs, which need to be replaced. As new versions of Mame are released, the Mame developers add support for these new iterations of ROMs, supplanting or renaming the old supported versions. Thus, often, older versions of ROMs which did work in older versions of MameUI, will not work with newer versions of MameUI because they are now read as incomplete or wrong. MameUI will not play the game in question until the updated ROMs are utilized.

· MameUI utilizes the idea of a parent / clone relationship for its games. If trying to play a clone or a bootleg of a game, MameUI will need the ROMs for the clone game, and the parent set. MameUI indicates the parent set of a clone at the bottom of the game’s properties tab, or more easily in grouped view, View \ Grouped.

· MameUI utilizes the idea of having single zip files to house the BIOS files for a large number of similar games. The NeoGeo games for example, share upwards of ten BIOS files in every game. Mame will look to neogeo.zip as the BIOS zip, if this file is freestanding along with the other NeoGeo games, it will use it. Otherwise, MameUI expects all the BIOS files in every NeoGeo game’s zip file. DECO cassette, PGM, and Playchoice are some examples of other BIOS games. An error message will occur if the BIOS files are not present and those games are run. Occasionally, new ROMs will need to be added to the BIOS packages themselves, this occurred recently with the ‘ng-lo.rom’ and then 6 new regional BIOSes in the neogeo.zip. MameUI will not audit a game as correct without all the BIOS files with the correct CRC, while it may however be possible to play the game after an error message.

· Games that support .CHD [compressed hunks of data] images [Max Force, Killer Instinct I & II, Area 51, Vicious Circle, War Gods, beatmania games, and items in the CHD folder view on the left pane] have to have their ROMs and .CHD files in a very specific directory structure. The single large .CHD file needs to go in the \ROMs\gamename\ directory, and have the *.CHD extension, e.g. \ROMs\area51\area51.chd. These games also have ROMs, these go one level up in the \ROMs folder proper like any other game. So in the end two files should exist for these games one *.zip in the \ROMs folder and the *.chd in a sub-directory named for the game.

· F5 / View • Refresh in the GUI. (Do this anytime ROMs are altered, renaming, etc.)

· If games are not displaying in the game list, ensure the appropriate folder view on the far left is toggled, i.e. 'all games' and it doesn't have filtering on it to stop the display of the game being searched for.

· Use the Options • Reset to default menu choice and check all of the items, restart MameUI.

· Final option, manually delete the MameUI32/64.ini and the Mame.ini file in the \ini directory.

Crash Related Topics

· Delete the \cfg\*.CFG, \diff\*.DIF, \ini\*.INI, or \nv\*.NV files for the game that's crashing.

· Check to see that the zip file is valid and that it's not corrupt or read-only.

· Verify the presence of the \ini directory under MameUI.exe’s location.

· If versions of MameUI prior to .66 had been installed on the system, verify that the old registry key has been deleted with regedit.exe. HKEY_CURRENT_USER/Software/Freeware/Mame32

· If crashing during an audit or an [F5] refresh, it could be a corrupt .zip file. Extract it and re-zip. Pkunzip -t *.zip. Note the file that dies during the audit and concentrate on that one. Also verify that if zip files are not used, that the folder is not empty, or contains partial or damaged ROMs. Utilization of an external ROMs management utility like Clrmame is recommended for repair and identification of damaged sets.

· If seeing crashes or weird screen coloration, try disabling running background apps [in Win98, use msconfig.exe], Norton Crashguard, PnP programs like Kaaza, eDonkey, LimeWire, popup killers, viruscans, MS Office Fast Find, the Microsoft Office Bar, Intellimouse, even IE subscription updates, etc. Try moving MameUI away from compressed [DriveSpace, DoubleSpace, stacker] drives. IntelliMouse and Office Toolbars have been known to cause conflicts. Also disable items in the system tray, like the CD player, etc. It may also be necessary to download and install the latest version of DirectX from Microsoft to prevent some errors.

· If MameUI crashes with an access violation it may be the DEP (Data Execution Prevention) setting on that machine. Add MameUI to the exception list in Control Panel / System / Advanced / DEP.

· In some instances games may fail to start if the installed directory path contains a large number of characters and spaces, to alleviate this, install MameUI and its support directory structure into a shorter path name, i.e. c:\MameUI\.

· MameUI may fail to launch its games in situations where an errant, non-DX compliant, or badly written gamepad USB adapter driver/software is used. This includes some cheap Playstation, SNES, U64 converters.

· Games may fail to start if a video cards DirectX driver is flakey, utilise an earlier one to test or re-install DirectX.

· Some recent viruses which attach to .exes will cause page faults and access violations in MameUI when it's run. Use an anti-virus check and verify MameUI is not infected.

· Odd behaviour may be exhibited in NT based systems if attempting to run games while security/permissions settings do not allow it or the user is not an administrator or member of the administrator’s group.

· Some anti-virus packages may slow down navigation within the MameUI directory. These are false positives and the anti-virus vendors should update their virus dat signatures. It may also be possible to exclude the MameUI.exe from real-time scanning as a workaround.

· In the event of MameUI not launching a game and just sitting there, try placing the entire MameUI directory and its sub-directories including \ROMs into a more simple path, like c:\MameUI instead of "c:\Games for Fun\MameUI Goes Here\". Simplify the path.

· On rare occasions malformed or damaged *.dat files [history.dat, mameinfo.dat, cheat.dat] can cause MameUI to error on startup when it tries to read them. Remove those files individually to check for the one causing the crash.

· With the move to XML based Controller *.cfg files in the .8x era it is necessary to remove the old \Ctrlr\*.ini files and use their new *.cfg counterparts, otherwise MameUI may launch games then immediately return to the GUI.

· Use the Options • Reset to default menu choice and check all of the items, restart MameUI.

· Final option, manually delete the MameUI32/64.ini and the Mame.ini file in the \ini directory.

Performance Related Topics [incl. sound scratchiness and stuttering]

· MameUI will start to crackle, scratch, or echo if the game running is too taxing for the processor in use. This can be visually confirmed by turning on FPS display with [F11], and frame skip to auto with [F8]. If the FPS dips anywhere or frame skipping rises anywhere during the game play, the game is maxing out the CPU and sound breakup could occur. It is also possible to determine if the host CPU can run the game at 100% by unthrottling the emulation with the [F10] key, if the CPU can do it, it will run the game faster than 100%. If upgrading machine components, provide MameUI with as much hardware as possible; a faster CPU makes the most difference, followed by video card, and RAM.

· MameUI will start to 'skip' sound on games that run slightly over the host monitor refresh rate in full-screen mode with triplebuffer. For example, Pac-Man and other early Namco games run at 60.60Hz and if they are run on a fixed 60Hz LCD monitor using triplebuffer they will skip since the emulation is outpacing the monitor. In this instance it is necessary to toggle on the 'Refresh Speed' switch in the Options • Default Options • Advanced tab. This issue can also be overcome by running the game in windowed mode.

· As Mame has continued development, infrastructure and accuracy has improved. As such, the optimization point of the games has shifted so that older games may be slower unthrottled overall than when run on earlier versions. For example, in version .36 Donkey Kong may have run unthrottled at 1900 FPS, but in .77 it runs 1500 FPS. Thus older machines [P3 and prior] will continue to have trouble playing the same games as earlier versions of Mame. Modern machines should have no problem running these early 80's games at their intended ~60 FPS rate.

· Periodically, speed-up hacks in the core code will be removed to provide more accurate emulation of the games. This can result in a drop in FPS for that particular family of games, but can be offset by upgrading the machine MameUI is used on.

· On certain system setups (older), DirectDraw may be a faster option than the D3D settings. Choose Ddraw as the video mode in Default Options • Display.

· With the advent of MameUI .120 some historically host CPU punishing games become playable on high end overclocked [3.6Ghz+] Intel Core2Duo and Quad Cores. These processors combined with 64bit operating systems and native 64bit MameUI provide almost 100% playability in namcos21.c / namcos22.c / seattle.c and midvunit.c games. MameUI64 + Vista64 + C2D chips is the best current combination for MameUI gaming on the Windows platform.

· Some of the largest games supported by MameUI [NeoGeo mainly] can run into the hundreds of megabyte range when they are uncompressed into memory, this combined with MameUI in memory, plus OS overhead can lead to very slow performance as Windows swaps the information out to disk if there is not enough physical memory. 512M to 1G of memory is recommended for all current games [.118].

· AMD’s Cool ‘n Quiet technology on certain setups has been known to cause slowdowns and lags while working in the MameUI GUI as well as causing some in-game sound and graphic stuttering. Disable the feature in the BIOS to verify.

· If seeing a severe slowdown in games that previously didn't, toggle the 'Sleep when possible' menu item in Options • Default Options • Miscellaneous. This happens to laptop users particularly.

· Certain games in MameUI perform better on machines that cannot handle them 100% if auto-frame skipping is turned off.

· Certain games if run with D3D settings will perform better if Triplebuffering is set to off. D3D will double buffer if triple is turned off.

· There may be certain sound anomalies in games if the *.cfg files have become damaged, delete all the files in \cfg to remedy.

· If games are running too fast, verify in the Options • Default Game Options menu that the throttle option is turned on, that sync to monitor refresh is turned off and Wait for Vertical Sync is turned off in the Options • Default Game Options • Advanced menu.

· MameUI video performance can be greatly enhanced if running in 32bpp mode by ensuring AGP Fast Writes are toggled on in the motherboard BIOS. The videocard drivers also need to support this setting, the switch for this may be in the advanced tab of the Windows display control panel applet.

· There are some soundcards like early PCI SoundBlaster 128 that will cause scratchiness if their hardware acceleration is turned up too high. Move the slider down various steps to troubleshoot in Control Panel • Sound • Advanced Audio.

· There are some older video card/video driver combinations that can do hardware stretching, but are slower than running with hardware stretch off. If games are too sluggish with the hw stretch on, toggle it off if possible. Some old PCI graphic cards have been seen to have this problem.

· If a large number of icons are being used in the GUI, it is typically quicker to unzip them into the \icons folder instead of leaving them zipped as icons.zip.

Joysticks / Mice / Gamepad / Lightgun Related Topics

· Gamepads and mouse are disabled by default on first MameUI launch, enable them by toggling their check boxes on in Options • Default Options • Controllers.

· MameUI relies on DirectX’s DirectInput for joystick support, ensure the game pad is seen as present and active in the game controller control panel: start menu • settings • control panel • game controllers.

· If seeing keys ‘stick’ while playing, verify that the operating systems’ accessibility options and their shortcut keys are turned off, things like ‘sticky keys’, and verify that Popup killers or other resident programs are not mapped to the sticking key. Also keys can stick on some KVM switch boxes if their hotkey switches are set to [Ctrl] etc.

· Daisy chained gameport Microsoft Sidewinders [original] in Win2k or XP do not work very well. Use USB gamepads instead. Single Sidewinders may also cause odd behavior like ghost button presses.

· Lightguns and mice are treated like mappable joysticks in current versions of MameUI. If multiple mice are in use it is necessary to enter the in-game [TAB] menu and map their axes in the ‘Input General’ section.

Settings Topics

· With the advent of version 0.66 MameUI no longer stores its configuration information in the Windows registry, it stores it in \MameUI32/64.ini and \ini\Mame.ini. To remove vestiges of the old versions, run regedit.exe and delete the following key: HKEY_CURRENT_USER\Software\Freeware\MameUI.

· If having trouble saving keyboard mappings and configuration, verify that the *.cfg files are not read-only and that a \MameUI\cfg directory is present.

· If GUI settings and/or audit results aren’t being maintained, verify the existence of a writeable MameUI32/64.ini and that the \ini directory is present and writeable [not read only] under the MameUI.exe location.

· If baseline Mame settings like directories and game options are not being maintained, verify the existence of a writeable Mame.ini [not read-only] in the \ini directory and that the \ini directory itself is writeable.

· If experiencing odd behavior with MameUI saving files or not appearing to clear its settings, verify that there are not multiple shortcuts pointing to different versions, that an .exe is not being used by itself instead of a shortcut to the .exe, or a shortcut pointing to an old version of the .exe. Also verify that there are not multiple versions of MameUI running in memory as the last one out will save the settings.

· If seeing MameUI folders being created on the desktop, verify that the .exe itself is not sitting on the desktop and being launched which is not correct. Verify that a short-cut to the original is being properly utilised. This means setting the properties on the shortcut to ‘start in’ the appropriate directory that the original .exe resides in.

· If the in-game [TAB] menu is no longer working or can’t be accessed, it has been mapped to another key; delete the default.cfg file in the \MameUI\cfg directory.

· If in-game [TAB] settings need to be completely reset due to bad mappings, delete the default.cfg file in the \MameUI\cfg directory.

· To remove the mappings on an individual game from the [TAB] menu, delete its *.cfg file in the \MameUI\cfg directory, i.e. dkong.cfg, asteroid.cfg.

· If having trouble mapping keys with the [TAB] menu, verify the game is not paused while mapping.

· MameUI inherits a limit from baseline Mame on the amount of characters that can be used for the ROM paths. If directory settings are not being maintained, pare down the number and names of the directories being added or simply use a single \ROMs directory which MameUI expects.

· If having trouble getting games to display in the proper orientation [they will not rotate] verify that rotation is set to default, and that there are no video-card specific hot-keys set in Windows’ advanced display settings tab that could impact rotation, ATI and NVIDIA both now include the ability to rotate the Windows screen to portrait orientation.

· If games are appearing sideways regardless of rotation settings, an onboard Intel graphic chipset or similar may be in use. Disable the auto rotation capabilities of the Intel graphic chip.

· MameUI now supports the core’s –mt switch. This allows multi-threading of the final video blit during games. Dual core chips [X2, C2D, etc.] can take advantage of this feature to offload the work to the second thread and make MameUI more efficient. Speed gains are seen on the unthrottled GPU bound games like dkong, invaders, etc.

· MameUI now stores its settings in external *.ini files instead of the registry. If it is necessary to return MameUI to baseline, simply delete the MameUI32/64.ini file and the Mame.ini file in the \ini directory. The next time MameUI runs it will recreate those files with the default settings.

GUI Related Topics & Miscellaneous Tips

· MameUI will read freestanding icons in the \icons directory first, then icons in the icons.zip file.

· If seeing icon palette corruption in the GUI when returning from a full screen game, try increasing the desktop color depth to 24bpp or 32bpp.

· Sometimes icons in large icon view may appear to be missing their white color or have portions transparent, this is the result of having white chosen as the windows desktop window setting in Control Panel / Display. Change the window setting to slightly off-white or another color to return the icons to their appropriate look.

· To toggle the MameUI UI fullscreen [no Windows titlebar and potentially no toolbar or status bar] and back use the [F11] key.

· The GUI text may disappear from the folder view if the GUI font color chosen is very close to the Windows system background color scheme or if it is a large enough font [or bold] to anti-alias.

· MameUI no longer supports *.bmp format and may show a blank or empty background if a *.bmp is erroneously renamed and used for bkground.png, or if the bkground directory is marked as read only and MameUI cannot create the bkground.png file when run.

· To return to a blank gray background in the GUI, delete the bkground.png file in the \MameUI\bkground directory.

· Quickly navigate through games in the details view by simply typing the first few letters in the name of the game, the highlight will jump to that game and become more granular as the name is typed out.

· Select a random game with [Ctrl-R].

· Audit an individual game with [Alt-A].

· Various arcade game controller companies produce custom made configuration files for their setups; these *.cfg files need to go in the \MameUI\ctrlr folder to be recognized in the MameUI controllers tab. These files are the responsibility of the controller companies themselves and are not included or endorsed by MameUI, they can typically be found at the companies’ web sites.

· In grouped view, clones are indented regardless of whether their parents are visible; in a non-All Games folder this means that there is not a direct relationship of a clone to the game item above it if that games’ parent is not shown. This behaviour can be changed by the setting Interface Options • No offset for clones missing parent in view.

· Certain items in the GUI may be missing if MameUI is run on a Win2K/XP box and the user is not an admin or member of the admin group.

· The unavailable folder and the available filter are disabled in MameUI due to a direct request from Nicola.

Keyboard Shortcuts

· Type letters of game name to jump directly to its first instance. Alt-1 through Alt-7: Toggle art views. Alt-A: Audit selected game. Alt-B: Toggle art tabs. Alt-D: Toggle folder pane. Alt-P: Toggle screenshot area. Alt-S: Toggle status bar. Alt-T: Toggle toolbar. Alt-U: Audit selected folder. Alt-Enter: Show games’ properties. Ctrl-F: Text filter. Ctrl-R: Choose random game from GUI. Ctrl-Page Up: Scroll up in history.dat text window. Ctrl-Page Down: Scroll down in history.dat text window. F11: Fullscreen mode toggle.

Refresh Restart Instructions

· a. Re-download the binary dist package from MameUI. b. Disable running anti-virus packages before extracting the files. c. Double-click the self-extracting archive. d. When prompted, enter “c:\” [no quotes] as the destination folder. e. Launch MameUI by double-clicking its .exe, allow the audit/refresh to finish, it should go quick as there are no ROMs. f. Put a couple of zipped ROMs from mamedev.org in the c:\MameUI\ROMs directory. g. Launch MameUI, audit the two games individually with [Alt-A]. h. Launch Robby or Gridlee. i. Quit the game, then quit MameUI. j. Add more ROMs and try again.

8/17/2007 1:17:01 AM / john iv


MameUI Credits

MameUI Credits & Resources

Credits

The current MameUI DEV team:

* Chris Kirmse

* Mike Haaland

* René Single

* John L. Hardy IV

Special thanks to Michael Soderstrom for project co-ordination and source maintenance from 1997-2001.

Additional appreciated code contributions by : Jeff Miller, Dan Miller, Andrew Kirmse, Mohammad Rezaei, René Single, John Zissopoulos, Nathan Woods, Robert Schlabbach, Sword, Emuman, BUT, 'Mamesick', Sauro Puccini, Tor Arne Vestbø, R. J. Sheppard, Visk, K&K, Patrick Jones, and ‘Ren Höek’.

Resources

* The MameUI Homepage : Home to the MameUI binary/source, icons, screenshots, testing, work in progress updates, bug reporting/tracking, message board, and benchmarking.

* The MameUI Message Board : Forum for discussion of MameUI related issues.

* MameUI Defect Tracking and Bug Reports : Excel spreadsheet which displays information about current MameUI feature requests and issues. Check before reporting potential bugs.

* MameDEV.org : Home of baseline MAME.

* MameTesters.org : Reporting and tracking baseline Mamebugs.

MameUI © 2007 C. Kirmse, M. Haaland, & the MameUI team

this help file authored by john iv

2008-10-28 06:48 PM -0700


 -|chmplst2          "Long Hu Bang II (V185H)"
 -|combasc           "Combat School (joystick)"
 -|combascb          "Combat School (bootleg)"
 -|combascj          "Combat School (Japan trackball)"
 -|combasct          "Combat School (trackball)"
 -|grtwall           "Wan Li Chang Cheng (V638C)"
 -|offrdtp2          "Ironman Ivan Stewart's Super Off-Road Track-Pak (2 Players)"
 -|rckman2j          "Rockman 2: The Power Fighters (Japan 960708)"
 +|alpilota          "Airline Pilots (Rev. A)"
 +|amuse1            "Amuse (Version 30.08 IBA)"
 +|arkbloc3          "Block (Game Corporation bootleg, set 3)"
 +|bjpoker           "Poker / Black Jack (Model 7521)"
 +|bloodbrob         "Blood Bros. (set 3)"
 +|cgip30cs          "Credit Poker (ver.30c, standard)"
 +|cmast92           "Cherry Master '92"
 +|cmasterbv         "Cherry Master I (ver.1.01, set 4, with Blitz Poker ROM?)"
 +|cmasterd          "Cherry Master I (ver.1.01, set 5)"
 +|cmastere          "Cherry Master I (ver.1.01, set 6)"
 +|cmasterf          "Cherry Master I (ver.1.01, set 7)"
 +|cninjabl          "Caveman Ninja (bootleg)"
 +|combatsc          "Combat School (joystick)"
 +|combatscb         "Combat School (bootleg)"
 +|combatscj         "Combat School (Japan trackball)"
 +|combatsct         "Combat School (trackball)"
 +|cyclemb           "Cycle Mahbou (Japan)"
 +|d9final           "Dream 9 Final (v2.24)"
 +|ddsomh            "Dungeons & Dragons: Shadow over Mystara (Hispanic 960223)"
 +|df_djpkr          "Double Joker Poker (45%-75% payout)"
 +|dominobv2         "Domino Block ver.2"
 +|dragchrn          "Dragon Chronicles (DC001 Ver. A)"
 +|drhl              "DRHL Poker (v.2.89)"
 +|drw80pk2          "Draw 80 Poker - Minn"
 +|fastdrwp          "Fast Draw (poker conversion kit)?"
 +|ffantasybl        "Fighting Fantasy (bootleg with 68705)"
 +|ffightjh          "Street Smart / Final Fight (Japan, hack)"
 +|fghtjam           "Capcom Fighting Jam (JAM1 Ver. A)"
 +|finlflng          "Final Furlong (FF2 Ver. A)"
 +|fitterbl          "Fitter (bootleg)"
 +|galpanisk         "Gals Panic S - Extra Edition (Korea)"
 +|galsnewk          "Gals Panic (Korea, EXPRO-02 PCB)"
 +|geimulti          "GEI Multi Game"
 +|geishanz          "Geisha (A - 05/03/01, New Zealand)"
 +|gorfpgm1g         "Gorf (program 1, with German Language ROM)"
 +|happy6            "Happy 6-in-1 (ver. 101CN)"
 +|headon2s          "Head On 2 (Sidam bootleg)"
 +|hustlerb2         "Fatsy Gambler (Video Hustler bootleg)"
 +|iron              "Iron (SNES bootleg)"
 +|jingystm          "Jingi Storm - The Arcade (GDL-0037)"
 +|jokpokerb         "Joker Poker (Version 16.04BI 10-19-88, Joker Poker ICB 9-30-86)"
 +|jokpokerc         "Joker Poker (Version 16.03BI 5-10-85, Poker No Raise ICB 9-30-86)"
 +|karous            "Karous (GDL-0040)"
 +|kimbldhl          "Kimble Double HI-LO"
 +|kimblz80          "Kimble Double HI-LO (z80 version)"
 +|kinniku           "Kinnikuman Muscle Grand Prix (KN1 Ver. A)"
 +|kofnwj            "The King of Fighters Neowave (Japan)"
 +|lagirl            "LA Girl"
 +|lastduelj         "Last Duel (Japan)"
 +|madcrush          "Mad Crusher (Japan)"
 +|magicardj         "Magic Card Jackpot (4.01)"
 +|magicle           "Magic Lotto Export (5.03)"
 +|magicmsk          "Magic Mask (A - 09/05/2000, Export))"
 +|mainline          "Mainline Double Joker Poker"
 +|megaman2h         "Mega Man 2: The Power Fighters (Hispanic 960712)"
 +|meltyb            "Melty Blood Act Cadenza Ver B (GDL-0039)"
 +|meltyba           "Melty Blood Act Cadenza Ver B (Rev A) (GDL-0039A)"
 +|metalmx           "Metal Maniax (prototype)"
 +|mgdh              "Mahjong Man Guan Da Heng (Taiwan, V123T1)"
 +|mk4b              "Mortal Kombat 4 (version 1.0)"
 +|ndxron10          "Royal on Ten (Noraut Deluxe hack)"
 +|netchu02          "Netchuu Pro Yakyuu 2002 (NPY1 Ver. A)"
 +|nkishusp          "Mahjong Nenrikishu SP"
 +|offroadt2p        "Ironman Ivan Stewart's Super Off-Road Track-Pak (2 Players)"
 +|ohpaipee          "Oh! Paipee (Japan 890227)"
 +|panzer            "Panzer (bootleg of Spectar)"
 +|pclub2            "Print Club 2 (U 970921 V1.000)"
 +|pclub2v3          "Print Club 2 Vol. 3 (U 990310 V1.000)"
 +|phantom           "Phantom (bootleg of Spectar)"
 +|popeyeman         "Popeye-Man"
 +|racedrivpan       "Race Drivin' Panorama (prototype, rev 2.1)"
 +|rapidfir          "Rapid Fire v1.1"
 +|rapidfire         "Rapid Fire v1.0"
 +|rockman2j         "Rockman 2: The Power Fighters (Japan 960708)"
 +|rtype2jc          "R-Type II (Japan, revision C)"
 +|ryukobou          "Mahjong Ryukobou (Japan, V030J)"
 +|s1945bl           "Strikers 1945 (Hong Kong, bootleg)"
 +|sgtetris          "Sega Tetris"
 +|shaolinb          "Shao-lin's Road (bootleg)"
 +|skywolf3          "Sky Wolf (set 3)"
 +|soulcl2a          "Soul Calibur II (SC21 Ver. A)"
 +|soulclb2          "Soul Calibur II (SC23 Ver. A)"
 +|soulclb3          "Soul Calibur III (SC31001-NA-A)"
 +|spf2th            "Super Puzzle Fighter II Turbo (Hispanic 960531)"
 +|sprtauth          "Sports Authority"
 +|ssf2h             "Super Street Fighter II: The New Challengers (Hispanic 930911)"
 +|starzan           "Super Tarzan (Italy, V100I)"
 +|stera             "Steraranger (Moon Cresta bootleg)"
 +|sub               "Submarine"
 +|sukuinuf          "Quiz and Variety Suku Suku Inufuku 2 (IN2 Ver. A)"
 +|suprmriobl        "Vs. Super Mario Bros. (bootleg with Z80, set 1)"
 +|suprmriobl2       "Vs. Super Mario Bros. (bootleg with Z80, set 2)"
 +|suprpokr          "Super Poker"
 +|sys246            "System 246 BIOS"
 +|sys256            "System 256 BIOS"
 +|taiko9            "Taiko No Tatsujin 9 (TK91001-NA-A)"
 +|takoron           "Noukone Puzzle Takoron (GDL-0042)"
 +|tekken4           "Tekken 4 (TEF3 Ver. C)"
 +|tekken4a          "Tekken 4 (TEF2 Ver. A)"
 +|tekken4b          "Tekken 4 (TEF1 Ver. A)"
 +|tekken51          "Tekken 5.1 (TE51 Ver. B)"
 +|todruagas         "Tower of Druaga (Manufactured by Sidam)"
 +|togenkyo          "Tougenkyou (Japan 890418)"
 +|toucheme          "Touche Me"
 +|trgheart          "Trigger Heart Exelica (Rev A) (GDL-0036A)"
 +|ultennisj         "Ultimate Tennis (v 1.4, Japan)"
 +|vstars            "Video Stars"
 +|wlcc              "Wan Li Chang Cheng (China, V638C)"
 +|wowg              "Wizard of Wor (with German Language ROM)"
 +|wtigernz          "White Tiger - 3VXFC5342 (New Zealand)"
 +|xmene             "X-Men (4 Players ver EBA)"
 +|zgundm            "Mobile Suit Z-Gundam: A.E.U.G. vs Titans (ZGA1 Ver. A)"
 +|zgundmdx          "Mobile Suit Z-Gundam: A.E.U.G. vs Titans DX (ZDX1 Ver. A)"
 c|arkgcbl           "Arkanoid (bootleg on Block hardware)"
 C|arkgcbl           "Arkanoid (bootleg on Block hardware, set 1)"
 C|arkgcbla          "Arkanoid (bootleg on Block hardware, set 2)"
 C|billiard          "The Billiards (Video Hustler bootleg)"
 c|billiard          "The Billiards"
 c|cannonb           "Cannon Ball (bootleg on Crazy Climber hardware, set 1)"
 C|cannonb           "Cannon Ball (bootleg on Crazy Kong hardware) (set 1, buggy)"
 c|cannonb2          "Cannon Ball (bootleg on Crazy Climber hardware, set 2)"
 C|cannonb2          "Cannon Ball (bootleg on Crazy Kong hardware) (set 2, buggy)"
 C|cannonb3          "Cannon Ball (bootleg on Crazy Kong hardware) (set 3, no bonus game)"
 C|coolridr          "Cool Riders (US)"
 c|coolridr          "Cool Riders"
 C|cosmica           "Cosmic Alien (version II)"
 c|cosmica           "Cosmic Alien"
 C|cosmica1          "Cosmic Alien (first version)"
 C|cosmica2          "Cosmic Alien (early version II?)"
 c|cosmica2          "Cosmic Alien (older)"
 c|crsbingo          "Cross Bingo"
 C|crsbingo          "Poker Carnival"
 C|dbc               "Da Ban Cheng (Hong Kong, V027H)"
 c|dbc               "Da Ban Cheng (V027H)"
 C|dbreed            "Dragon Breed (M81 PCB version)"
 c|dbreed            "Dragon Breed (M81 pcb version)"
 C|dbreedm72         "Dragon Breed (M72 PCB version)"
 c|dbreedm72         "Dragon Breed (M72 pcb version)"
 c|dphl              "Draw Poker Hi-Lo (M.Kramer)"
 C|dphl              "Draw Poker HI-LO (M.Kramer)"
 C|dphla             "Draw Poker HI-LO (Alt)"
 c|dphla             "Draw Poker Hi-Lo (Alt)"
 C|dphljp            "Draw Poker HI-LO (Japanese)"
 c|dphljp            "Draw Poker Hi-Lo (Japanese)"
 C|dphlunka          "Draw Poker HI-LO (unknown, rev 1)"
 C|dphlunkb          "Draw Poker HI-LO (unknown, rev 2)"
 c|headons           "Head On (Sidam bootleg)"
 C|headons           "Head On (Sidam bootleg, set 1)"
 C|headonsa          "Head On (Sidam bootleg, set 2)"
 C|hfh               "Huang Fei Hong (Alien Challenge?)"
 c|hfh               "Huang Fei Hong"
 c|hsf2              "Hyper Street Fighter 2: The Anniversary Edition (Asia 040202)"
 C|hsf2              "Hyper Street Fighter 2: The Anniversary Edition (USA 040202)"
 C|hsf2a             "Hyper Street Fighter 2: The Anniversary Edition (Asia 040202)"
 C|imgfight          "Image Fight (Japan, revision A)"
 c|imgfight          "Image Fight (revision A, Japan)"
 C|invasion          "Invasion (Sidam)"
 c|invasion          "Invasion"
 C|invasiona         "Invasion (bootleg, set 1, normal graphics)"
 C|invasionb         "Invasion (bootleg, set 2, no copyright)"
 C|invasionrz        "Invasion (bootleg, set 3, R Z SRL BOLOGNA)"
 C|invasionrza       "Invasion (bootleg, set 4, R Z SRL BOLOGNA)"
 C|lhb               "Long Hu Bang (China, V035C)"
 c|lhb               "Long Hu Bang (V035C)"
 C|lhb2              "Long Hu Bang II (Hong Kong, V185H)"
 C|lhba              "Long Hu Bang (China, V033C)"
 c|lhba              "Long Hu Bang (V033C)"
 c|lightbr           "Light Bringer (Ver 2.1J 1994/02/18)"
 C|lightbr           "Light Bringer (Ver 2.2O 1994/04/08)"
 C|lightbrj          "Light Bringer (Ver 2.1J 1994/02/18)"
 C|m_brkfs1          "The Big Breakfast (Set 2)"
 C|m_brkfs2          "The Big Breakfast (Set 3)"
 C|m_brkfs3          "The Big Breakfast (Set 4)"
 C|m_brkfs4          "The Big Breakfast (Set 5)"
 C|m_brkfs5          "The Big Breakfast (Set 6)"
 C|m_brkfst          "The Big Breakfast (Set 1 UK, Game Card 95-750-524)"
 c|m_brkfst          "The Big Breakfast (UK, Game Card 95-750-524 )"
 C|mfish_3           "Multi Fish (021124)"
 c|mfish_3           "Multi Fish (021124, set 1)"
 C|mfish_3a          "Multi Fish (021124, banking address hack)"
 c|mfish_3a          "Multi Fish (021124, set 2)"
 C|mfish_6           "Multi Fish (030124)"
 C|noraut3a          "Noraut Joker Poker (V3.010a)"
 C|noraut3b          "Noraut Joker Poker (V3.011a)"
 C|norautdx          "Noraut Deluxe Poker (console)"
 C|norautjo          "Noraut Joker Poker (original)"
 C|norautjp          "Noraut Joker Poker (alt)"
 c|norautjp          "Noraut Joker Poker"
 C|norautpl          "Noraut Joker Poker (Prologic HW)"
 C|norautpn          "Noraut Deluxe Poker (bootleg)"
 c|norautpn          "Noraut Poker (bootleg)"
 C|norautra          "Noraut Red Hot Joker Poker (alt HW)"
 C|norautua          "Noraut unknown set 1 (console)"
 C|norautub          "Noraut unknown set 2 (console)"
 c|norautv3          "Noraut Joker Poker (V3.010a)"
 C|phantoma          "Phantomas (bootleg of Spectar)"
 c|phantoma          "Phantomas"
 c|pipibibs          "Pipi & Bibis / Whoopee!! (Z80 sound cpu)"
 C|pipibibs          "Pipi & Bibis / Whoopee!! (Z80 sound cpu, set 1)"
 C|pipibibsa         "Pipi & Bibis / Whoopee!! (Z80 sound cpu, set 2)"
 c|puyoj             "Puyo Puyo (Japan)"
 C|puyoj             "Puyo Puyo (Japan, Rev B)"
 C|puzlbang          "Puzzle Bang Bang (Korea, version 2.8 / 990106)"
 c|puzlbang          "Puzzle Bang Bang (version 2.8 / 990106)"
 C|rallys            "Rallys (bootleg of Spectar)"
 c|rallys            "Rallys (bootleg?)"
 c|rranger           "Rough Ranger (v2.0)"
 C|rranger           "Rough Ranger (v2.0, unprotected, bootleg?)"
 C|sandscrpb         "Sand Scorpion (Chinese Title Screen, Revised Hardware)"
 c|sandscrpb         "Sand Scorpion (Revised Hardware)"
 c|sdmg2             "Mahjong Super Da Man Guan 2"
 C|sdmg2             "Mahjong Super Da Man Guan II (China, V754C)"
 C|sharkpy           "Shark Party (Italy, v1.3)"
 c|sharkpy           "Shark Party"
 c|sharkpya          "Shark Party (alt)"
 C|sharkpya          "Shark Party (Italy, v1.6)"
 c|smshilo           "Hi-Lo Double Up Joker Poker "
 C|smshilo           "HI-LO Double Up Joker Poker"
 c|snowboar          "Snow Board Championship (set 1)"
 C|snowboar          "Snow Board Championship (Version 2.1)"
 C|snowboara         "Snow Board Championship (Version 2.0)"
 c|snowboara         "Snow Board Championship (Version 2.1)"
 c|spacedx           "Space Invaders DX (US) v2.1"
 C|spacedx           "Space Invaders DX (US, v2.1)"
 c|spacedxj          "Space Invaders DX (Japan) v2.1"
 C|spacedxj          "Space Invaders DX (Japan, v2.1)"
 c|spacedxo          "Space Invaders DX (Japan) v2.0"
 C|spacedxo          "Space Invaders DX (Japan, v2.0)"
 c|sparkman          "Spark Man (v 2.0)"
 C|sparkman          "Spark Man (v 2.0, set 1)"
 C|sparkmana         "Spark Man (v 2.0, set 2)"
 C|sscope            "Silent Scope (ver JZD)"
 c|sscope            "Silent Scope (ver UAB)"
 c|sscopea           "Silent Scope (ver UAA)"
 C|sscopea           "Silent Scope (ver UAB)"
 C|sscopeb           "Silent Scope (ver UAA)"
 C|stoneage          "Stoneage (bootleg of Caveman Ninja)"
 c|stoneage          "Stoneage"
 C|tarzan            "Tarzan (V109C)"
 c|tarzan            "Tarzan"
 C|tarzana           "Tarzan (V107)"
 c|topracer          "Top Racer (set 1)"
 C|topracer          "Top Racer (with MB8841 + MB8842, set 1)"
 C|topracera         "Top Racer (with MB8841 + MB8842, set 2)"
 C|topracern         "Top Racer (no MB8841 + MB8842)"
 c|topracra          "Top Racer (set 2)"
 c|topracrb          "Top Racer (set 3)"
 C|toursol           "Tournament Solitaire (V1.06, 08/03/95)"
 c|toursol           "Tournament Solitaire"
 C|toursol1          "Tournament Solitaire (V1.04, 06/22/95)"
 C|weststry          "West Story (bootleg of Blood Bros.)"
 c|weststry          "West Story"
 C|xymg              "Xing Yun Man Guan (China, V651C)"
 c|xymg              "Xing Yun Man Guan (V651C)"


Copyright © 1997-2010, Nicola Salmoria and the MAME team
All rights reserved.

Unless otherwise explicitly stated, all code in MAME is released under the
following license:

Redistribution and use of this code or any derivative works are permitted provided that the following conditions are met:

  • Redistributions may not be sold, nor may they be used in a commercial product or activity.
  • Redistributions that are modified from the original source must include the complete source code, including the source code for all components used by a binary built from the modified sources. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable.
  • Redistributions must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.


MAME, the Multiple Arcade Machine Emulator
Copyright © 1997-2010 by Nicola Salmoria and the MAME team

I. Purpose

MAME is strictly a non-profit project. Its main purpose is to be a reference to the inner workings of the emulated arcade machines. This is done both for educational purposes and for preservation purposes, in order to prevent many historical games from disappearing forever once the hardware they run on stops working. Of course, in order to preserve the games and demonstrate that the emulated behavior matches the original, you must also be able to actually play the games. This is considered a nice side effect, and is not MAME's primary focus.

It is not our intention to infringe on any copyrights or patents on the original games. All of MAME's source code is either our own or freely available. To operate, the emulator requires images of the original ROMs, CDs, or hard disks from the arcade machines, which must be provided by the user. No portions of the original game code are included in the executable.

II. Cost

MAME is free. Its source code is free. Selling either is not allowed.

III. Image Files

ROM, CD, and hard disk images are all copyrighted material. They cannot be distributed without the explicit permission of the copyright owner. They are not "abandonware", nor have any of the games supported by MAME passed out of copyright.

MAME is not intended to be used as a tool for mass copyright infringement. Therefore, it is strongly against the authors' wishes to sell, advertise, or link to resources that provide illegal copies of ROM, CD, or hard disk images.

IV. Derivative Works

Derivative works are allowed under the MAME license. However, you are discouraged from providing specific functionality that goes against the philosophy of the MAME team. Specifically:

  • Do not add games which are more recent than 3 years old, or which are still being sold new by the company that produced them. MAME is not intended to be a platform that competes with arcade games that are still being actively sold.
  • Do not provide a means of generating a list of games that specifically identifies those games for which the user does not have image files. This only encourages users to seek out sources for illegal ROM, CD, and hard disk images in order to "complete" their collection.
  • Do not remove the startup screen that contains information about why certain non-working games don't work. This only serves to generate a bunch of useless email traffic to the developers asking why the games don't work.

Because the name MAME is trademarked, you must abide by the rules of the trademark usage if you wish to use "MAME" as part of the name your derivative work. In general, this means you must request permission, which requires that you follow the guidelines above.

The version number of any derivative work should reflect the version number of the MAME release it was derived from.

V. Official Contact Information

For questions regarding the MAME license, trademark, or other usage, go to http://www.mamedev.com/.


0.136
-----

MAMETesters Bugs Fixed
----------------------
- 03603: [DIP/Input] karnov, karnovj: incorrect difficulty dipswitch
         (Tafoid)
- 03604: [DIP/Input] oscar, oscaru, oscarj1, oscarj2: Incorrect
         difficulty dipswitch (Tafoid)
- 03142: [DIP/Input] All drivers using PORT_CHANGED callbacks: Input
         port callback functions are not triggered correctly during
         INP playback. (mahlemiut)
- 03493: [Gameplay] spacedxo: The game reboots itself after title
         screen (Fabio Priuli)
- 03608: [Multisession] scontra, scontraj: Tile/graphic corruption on
         multiple launches of Super Contra (Fabio Priuli)
- 03611: [Crash/Freeze] 1943, 1943j, 1943kai: Crash when starting
         1943 in Service Mode (Fabio Priuli)
- 03598: [Original Reference] plotting, flipull: YM2203 speed
         adjustment (Tafoid)
- 03593: [Graphics] captaven & clones: Intro text scrolls from wrong
         direction (Pierpaolo Prazzoli)
- 03596: [Crash/Freeze] All sets in konamigv.c, mitchell.c: Attempt to
         register save state entry after state registration is closed
         (Aaron Giles)
- 03597: [Original Reference] outrun, outrunra, outruno, outrundx,
         outrunb: Incorrect vsync speed on Outrun (Tafoid)

Source Changes
--------------
hng64 improvements: [Andrew Gardner]
 - RoadsEdge & XRally polygons are now visible.
 - Improved geometry chunk type 0x2e.
 - Fleshed out the 'chunk type bits' a little. This will be verified
    against type 0x24.
 - Xrally and roadedge hng64 screens no longer run at 10fps.
 - Fixed polygon lookup in driving games.

Changed behavior of -watchdog option to act like a real watchdog. It
now specifies the number of seconds after the last video update that
will cause auto-termination of MAME. Also modified it to output a
message when the watchdog triggers the exit. [Aaron Giles]

Updated windows.txt to reflect this option and the debugger_font
options which were never previously documented. [Aaron Giles]

EEPROM changes: [Aaron Giles]
 - Fixed auto EEPROM region to properly handle 16-bit data.
 - Changed EEPROM device to initialize EEPROM at NVRAM load time
    rather than init time, giving DEVICE_INIT handlers a chance to
    muck with the data first.
 - Removed _NODEFAULT_ forms of EEPROM driver macros. If you need to
    add default data, follow the MDRV_EEPROM_ADD() with
    MDRV_EEPROM_DATA().
 - Updated remaining drivers to the new EEPROM device code. Many of
    them now require a default EEPROM to be loaded along with the
    ROMs, rather than hard-coded data in the driver
 - Exposed an address space for EEPROM devices, meaning the memory
    is now visible in the debugger and can be accessed via expressions
 - Updated all systems that muck directly with EEPROM memory to
    use memory accessors instead on the EEPROM address space.
 - Removed old EEPROM implementation

cb2001: added many new opcodes [robiza]

Split ADC1038, Konami 033906 and Konami 056230 emulation from
gticlub.c and konppc.c. Also, converted them to be devices and updated
PPC Konami games to use the new code. [Fabio Priuli]

Added a bunch of new protection handlers for Spark Man [Angelo Salese]

sub.c - Put in board XTAL and came up with some seeming better clock
speed approximations until board readings can be done. [Tafoid]

mcr.c - Sets tron3 and tron4 don't appear to have a valid working
cocktail mode video or controls (upright player2 works fine). Flagged
as GAME_NO_COCKTAIL. [Tafoid]

subs.c - Added DIP LOCATIONS. [Tafoid]

Updated qdrmfgp.c to use Konami video devices. [Fabio Priuli]

Cleaned up a bunch of things in the gladiatr.c driver [Angelo Salese]

Removed sysconfig section from game_driver struct. Made
compatible_with attribute available for MAME too (with NULL value set
in GAMEL macro). [Miodrag Milanovic]

Added preliminary device version of Konami video ICs used in PowerPC
games (001005, 001006, 001604 and 037122). [Fabio Priuli]

Converted all Taito custom I/O and video ICs to devices and updated
all drivers to use them. [Fabio Priuli]

Simplified bloodbro gfx decoding and removed unnecessary DRIVER_INIT.
Marked two weststry sprite ROMs as BAD_DUMP [David Haywood]

Converted Namco IO chips 56xx, 58xx and 59xx to be devices and
converted gaplus.c, mappy.c and toypop.c to use the new code.
[Fabio Priuli]

Allow any device memory (not just CPU's) to be accessed via debug
expressions. Removed support in the expression engine for EEPROM-
specific accesses. [Aaron Giles]

Converted Fujitsu MB87078 Volume Controller to be a device and
updated taito_b.c to use the new code (it's the only driver
emulating this chip atm). [Fabio Priuli]

merit.c - Fixed what might be a copy/paste error in two sets
(trvwz3h, trvwz3v) where two roms had the same filename in the same
romset. [Tafoid]

Renamed tilemap -> tilemap_t, as the name 'tilemap' is too commonly
used for statics and structure members, and some compilers (esp. C++
compilers) don't allow that. [Aaron Giles]

Fix for INP recording ports that have changed notification. Also
prevents new inputs from affecting recorded inputs during playback.
[mahlemiut]

Updated srcclean to remove "invisible spaces" immediately preceding
tabs. [Atari Ace]

Cleaned up braces in the code so that they are properly balanced.
[Atari Ace]

Optimized RDP implementation further with more flattened branches.
[Harmony]

Converted a number of vector opcodes to the RSP DRC core. [Harmony]

Unrolled and optimized a number of vector opcodes in the interpreter
RSP core. [Harmony]

Extended the devtempl.h file to support device address spaces.
[Aaron Giles]

cmmb.c - Identified and marked Service Mode DIP. [Tafoid]

Converted the NMK112 to be a device and updated drivers using it
accordingly. [Fabio Priuli]

Added GAME_SUPPORTS_SAVE flag to psikyosh.c, since the conversion to
eeprom devices fixed the remaining issues with save states.
[Fabio Priuli, Aaron Giles]

Changed Caveman Ninja driver to use Partial Updates for Raster Effects
instead of buffering scanline data [David Haywood]

Changed Deco32 driver to use Partial Updates for Raster Effects
instead of buffering scanline data (but left Dragon Gun using the
buffering, because the video rendering code is far too slow with 224
partial updates for now) [David Haywood]

Commented out some harmful and suspicious looking interrupt generation
in NamcoND1 driver until it's being properly verified; fixes Game
Options menu in NCV2 test mode.  [David Haywood]

adp.c improvements: [Angelo Salese]
 - Fixed some minor quirks
 - Improved Backgammon memory map
 - Implemented RAMDAC for Fun Land Deluxe

Fixed error in codegen for drol/dror opcodes in the x86 back-end.
[Aaron Giles]

Re-implemented misaligned memory handling in the RSP DRC as before.
[Aaron Giles]

Explicitly sign-extend 32-bit indexes for load/loads/store on 64-bit
machines to prevent overflow issues. Fixes DRC crash in mtetrisc.
[Aaron Giles]

Fixed a few DRC-ized vector load/store opcodes in the RSP core.
[Harmony]

Hardware multiplication and division on the SNES takes 8 machine
cycles to complete. [Wilbert Pol]

Fixed x86 HLT instruction handling [Phill Harvey-Smith]

Made LA Girls and clone of Play Girls. It's clearly a bootleg
hardware clone. Title & background change, but the demo play and
block arrangement are identical. Added info from the Guru's website
about the reported manufacture company and year for LA Girls. Added a
note about Tube-it having the copyright and manufacture info removed.
[Brian Troha]

Added additional information to the dipswitches and configurations
sections in the -listxml output [Oliver Stoneberg]

Changed Green Beret sound chip to SN76489 and indicated that the
bootleg has an undumped PAL and PROMs [Kevin Eshbach]

New games added or promoted from NOT_WORKING status
---------------------------------------------------
Final Fight (Japan, hack) [bonky0013, JacKc, Fabio Priuli]

New clones added
----------------
Spark Man (v 2.0, set 2) [Stefan Lindberg] (Not Working)
Cherry Master I (ver.1.01) (various bootleg? sets) [David Haywood]
Block (Game Corporation bootleg, set 3) [David Haywood]
Multi Fish (030124) [MetalliC]
Shaolin's Road (bootleg) [Kevin Eshbach]

New games marked as GAME_NOT_WORKING
------------------------------------
Cycle Mahbou [Angelo Salese, Chack'n, Team Japump, Dumping Union]
Race Drivin' Panorama [David Haywood]
Metal Maniax (prototype) [David Haywood]

0.135u4
-------

MAMETesters Bugs Fixed
----------------------
- 03583: [Core] Windows Debug: Stack crawl is not generated anymore
         (Firewave)
- 03588: [Sound] mystston, myststono: Music is faster than original
         PCB (Kold666)
- 03589: [Graphics] mystston, myststono: VSYNC does not match original
         PCB (Kold666)
- 03592: [Original Reference] outrun, outrunra, outruno, outrundx,
         outrunb: Master clock is incorrect (Tafoid)
- 00400: [Graphics] combascb: Graphic issues on the "players" screen
         as scrolling problems on 1st stage. (Fabio Priuli)
- 03575: [Crash/Freeze] block2: [debug] Memory Leak in Debug
         (Fabio Priuli)
- 03569: [Crash/Freeze] escounts: Access Violation after OK
         (Phil Bennett)
- 03444: [Debugger] Registered ram blocks registered with save state
         cannot be viewed with debugger (Aaron Giles)
- 03567: [Crash/Freeze] trvquest: Access Violation after OK
         (Fabio Priuli)
- 03574: [Crash/Freeze] All sets in drivers using s2636 video chip:
         [debug] assert: src/emu/video/s2636.c:320: offset < 8
         (Fabio Priuli)
- 03570: [Crash/Freeze] kf2k3pcb: Access Violation after OK
         (Fabio Priuli)

Source Changes
--------------
Added driver data struct to: [Fabio Priuli]
 - airbustr.c
 - cvs.c
 - 8080bw.c and mw8080bw.c
 - 88games.c, combatsc.c and rockrage.c
 - psikyo4.c and psikyosh.c

Added driver data struct and save states to: [Fabio Priuli]
 - djboy.c
 - toratora.c and sf.c
 - neogeo.c
 - cps1.c, cps2.c and fcrash.c
 - cbasebal.c, chinsan.c, mitchell.c and quasar.c
 - malzak.c
 - battlnts.c, bladestl.c, crshrace.c and contra.c
 - f1gp.c, fastlane.c, flkatck.c, hcastle.c, labyrunr.c and suprslam.c
 - psikyo.c and pgm.c

Removed old index-based DISCRETE_ADJUSTMENT and then renamed the newer
DISCRETE_ADJUSTMENT_TAG to replace it. Updated all callers.
[Aaron Giles]

Removed all uses of input_port_by_index(), and removed the function.
[Fabio Priuli, Aaron Giles]

Added saves to 6522via.c. This fixes problems of gameplan.c and
trvquest.c games with -autosave. [Fabio Priuli]

Enabled GAME_SUPPORTS_SAVE flag to dday.c because some of the core
changes have fixed the sound problem at loading. [Fabio Priuli]

Imported SAA5050 emulation from MESS and made it a device. Updated
malzak.c to use it, removing the almost identical implementation in
the driver. [Fabio Priuli]

Added TILE_GET_INFO_DEVICE and SET_TILE_INFO_DEVICE macros to
tilemap.c. [Fabio Priuli]

Made MB14241 Shifter IC a device and moved its source to emu/machine.
Updated mw8080bw.c and 8080bw.c accordingly. Also converted fgoal.c
to use this implementation in place of its own version. [Fabio Priuli]

Enhanced the UML opcodes for LOAD, LOADS, and STORE to support
arbitrary scaling factors. Previously, specifying a size implied
a scaling factor equal to the size (i.e., specifying DWORD meant
the index was scaled by 4). This is still the default. However,
now you can specify the scale explicitly for other cases. For
example, you can specify DWORD_x1 to fetch a DWORD but don't
scale the index at all, or BYTE_x8 to fetch a BYTE while scaling
the index by 8. Updated all backends to make this work. [Aaron Giles]

Konami devic-fication and improvements: [Fabio Priuli]
 - Added device versions of all the Konami custom ICs currently
    emulated in machine/konamiic.c and video/konamiic.c
 - Updated combatsc.c, contra.c, crshrace.c, f1gp.c, fastlane.c,
    flkatck.c, hcastle.c, labyrunr.c and suprslam.c to use the
    new code.
 - Moved k056800 sound device to emu/sound and removed the old code;
    updated gticlub.c, hornet.c, nwk-tr.c, ultrsprt.c and zr107.c to
    use this implementation
 - Updated 88games.c, battlnts.c, bladestl.c and rockrage.c to use new
    devices
 - Updated asterix.c and moo.c to use the new devices.
 - Converted aliens.c, blockhl.c, crimfght.c and gbusters.c to use
    Konami video devices
 - Updated parodius.c, simpsons.c, thunderx.c, vendetta.c and
    xexex.c to use the new video devices
 - Updated overdriv.c to use the Konami video devices
 - Updated gradius3.c, mainevt.c & gijoe.c to use Konami video devices
 - Updated ajax.c, bottom9.c, chqflag.c, rollerg.c, spy.c, surpratk.c
    to use Konami video devices
 - Updated dbz.c, lethal.c, metro.c, rungun.c, tail2nos.c, tmnt.c,
    ultraman.c, wecleman.c, xmen.c & zr107.c to use Konami video
    devices instead of konamiic.h code
 - Updated bishi.c and djmain.c to use Konami video devices
 - Updated plygonet.c to use Konami video devices and
    input_port_write for eepromdev_read_bit
 - Updated asterix.c, gijoe.c, hornet.c, lethal.c, moo.c, overdriv.c,
    rungun.c, vendetta.c, xexex.c & xmen.c to use eeprom device
 - Updated konamigx.c, tmnt.c and mystwarr.c to use eeprom device

Fixed tilemaps so they can be initialized at device start time.
[Aaron Giles]

Added redumped roms to coolridr. [David Haywood]

Fixed crash on exit for systems with no tilemaps. [Aaron Giles]

Added warning messages for auto_malloc, timer, and save state
allocations done after init time. These should be fixed when detected,
and will soon be disallowed entirely. Fixed many cases in the code
where this was being done. [Aaron Giles]

Converted Taito F3 sound to a separate machine driver which is
imported into games that use it. [Aaron Giles]

Converted the balsente driver to driver_data structure. [Aaron Giles]

Some more Atari driver shuffling. Added atarigen_init() function
which allocates all timers and registers for save states. Updated
all drivers to call it. Converted some drivers to use device timers.
[Aaron Giles]

Changed ticket.c into a device, updated all users. [Aaron Giles]

CIA6526: fixed FLAG handling and slight interface cleanup.
[Curt Coder]

Moved SNES timer allocation to MACHINE_START. [Fabio Priuli]

Koi Koi Part 2: written an hardcoded table (disabled by default),
concluded that a color prom is currently undumped. Also documented a
bunch of unused ports [Angelo Salese]

Carrera: fixed colors [Angelo Salese]

Sky Army: cleaned up the driver, also removed the GAME_WRONG_COLORS
flag since the colors actually seems correct according to the
references. [Angelo Salese]

Trivia Madness: Improved graphics & colors [Angelo Salese]

Super Rider: improved bitplane order and colors [Angelo Salese]

Preliminary RSP recompiler, with all vector ops stubbed out to C
functions for now. [Harmony]

sbowling.c - Added proper COINAGE selections as well DIP LOCATIONS to
the driver. Added mapping for button 1 which is used to allow change
from curve to straight throw. Replaced clock speeds with XTAL values.
[Tafoid]

Re-implemented 3d rasterization in the hng64 driver as a FIFO system.
[Andrew Gardner]

ggconnie.c - Added DIP LOCATIONS to match those showing in service
mode.  Added game year to source from title screen. [Tafoid]

Added preliminary decryption to Victor 5, Victor 21 and Cross Bingo
[David Haywood]

Decoded Cross Bingo proms [Angelo Salese]

hexa.c - Added DIP LOCATIONS as well as assigned XTAL for the clock
speeds, using those from Arkanoid, since the boards are nearly
identical in many aspects. [Tafoid]

RSP recompiler improvements / optimizations: [Harmony]
 - Split SATURATE_ACCUM into a signed and unsigned version to reduce
    stack usage.
 - Corrected an issue with the 0h variants of VMRG, VAND, VNAND, VOR,
    VNOR, VXOR and VNXOR.
 - Slightly optimized unaligned reads and writes
 - Optimized unaligned dword reads
 - Corrected an issue where badly-written RSP programs could jump to
    invalid addresses

Added new profiler bucket for DRC recompilation. [Aaron Giles]

luckgrln: Implemented CRT Controller hook-up [Angelo Salese]

gomoku.c, sspeedr.c - Added DIPS and changed clock values to XTAL
[Tafoid]

nitedrvr.c, tourtabl.c - Changed clock values to XTAL [Tafoid]

Added new option "numprocessors" (see windows.txt for an explanation).
[couriersud]

Optimized N64 RDP renderer by using function pointers to function
variants that eliminate costly branches. [Harmony]

Minor drc improvments: [Aaron Giles]
 - simplified RSP's misaligned memory accesses
 - removed now-unnecessary shifts from direct memory accesses in
    mips3/powerpc drcs
 - optimized AND with 0xff/0xffff/0xffffffff cases for x86/x64
 - added rudimentary memory/register tracking in x86 backend to
    remove redundant loads

cb2001 improvements: [robiza]
 - added ay8910 and 8255ppi devices
 - added some info about relation between cmast91 and cb2001
 - added many opcodes

Fixed sprite-tilemap priorities in Super Slams [Angelo Salese]

Worked around protection in sranger, srangerw and srangerb
[Angelo Salese]

Converted 7474, 74148, and 74153 TTL implementations to devices.
[Aaron Giles]

More rom name corrections for the merit.c driver [Brian Troha]

Added Guru's board notes to the Outrun/Super Hang-on Driver.
[Guru]

Converted the ds2404 to a device. [Aaron Giles]

Removed deprecated core function decodegfx() [Christophe Jaillet]

Removed the global "includes" include and instead specify the
"includes" path in all #include occurences. [Oliver Stoneberg]

Eliminated the use of generic.colorram and generic.videoram in
several drivers [Atari Ace]

Fixed Brick Zone parent set bitplane graphics [Angelo Salese]

Fix megadrive emulation to use the SMSIII version of the sn76489
sound chip. [Lord Nightmare, DFJustin]

Added save states to ics2115 sound device. [Fabio Priuli]

Changed EEPROM usage in many drivers to use the new device version.
[Aaron Giles, Fabio Priuli]

Removed auto-init hack from some Konami games. Hold down F2 and reset
(via F3) to initialize the EEPROM, like all the other Konami games.
[Fabio Priuli]

Cleaned up EEPROM device implementation a bit. [Aaron Giles]

Added flickering effect in Super Slams title screen
[Angelo Salese, Guru]

Fixed sprite bank bit in Spark Man [Angelo Salese]

Converted gaelco3d.c to use eeprom device code. [Fabio Priuli]

Spark Man: Refactored the protection, implemented thrash protection
that's used after the title screen. [Angelo Salese]

EEPROM device now looks for a matching memory region to fetch the
default values from. Fixed bug in ROM loader that would change the
memory region flags to match devices with no address bus. Updated
groundfx to use the new default loading scheme. [Aaron Giles]

Reworked the hng64 polygon chunk recovery code to be more crash-proof.
Documented what's known about the 3d data much better. Fixed vertex
ROM loading for fatfurwa and buriki. [Andrew Gardner]

Converted rtc65271 to a device. [Aaron Giles]

Added "new" command -listdevices (or -ld) to list the devices attached
to a driver. I notice that MESS has a command with the same name;
hopefully the behaviors can be combined eventually. [Aaron Giles]

Got rid of explicit resource tracking for state saving. Now we just
use the auto_ allocators, since registration is restricted to
initialization. [Aaron Giles]

Moved machine->gfx initialization out of the video module and into
drawgfx. We now call this before devices are initialized, so that
devices can dynamically append to the machine->gfx as needed.
[Aaron Giles]

i386 improvements: [Barry Rodewald]
 * minimal implementation of the LSL protected mode instruction
 * fixed the REP instruction when used with a segment prefix.

Updated readme for Race Drivin' Compact. [Guru]

Fixed a couple of edge case parsing bugs in srcclean.c. [Atari Ace]

Fixed some unbalanced quotes/braces lurking in the source (mostly in
disabled code). [Atari Ace]

Added a new CPU core for the PIC 16c62x series of processors.
[Samuele Zannoli]

New games added or promoted from NOT_WORKING status
---------------------------------------------------
Shark Party (Italy, v1.3) [David Haywood, Angelo Salese]
Victor 5 [David Haywood, Angelo Salese]
Victor 21 [David Haywood, Angelo Salese]
Poker Carnival [David Haywood, Angelo Salese]

New clones added
----------------
Hyper Street Fighter 2: The Anniversary Edition (USA 040202)
   [Artemio Urbina, David Haywood]
ST-V BIOS 1.11 [2 sets - Japan and Taiwan] [XingXing]
Blood Bros. (set 3) [Dlfrsilver]
Caveman Ninja (bootleg) [Dlfrsilver] (NOT WORKING)
Pipi & Bibis / Whoopee!! (Z80 sound cpu, set 2) [Dlfrsilver]
Mortal Kombat 4 v1.0 (not working)
   [xrodney, HobbyRoms, Patrick McCarron]

New games marked as GAME_NOT_WORKING
------------------------------------
Happy 6-in-1 [XX]

0.135u3
-------

MAMETesters Bugs Fixed
----------------------
- 03565: [Color/Palette] astrof, astrof2, astrof3: blue background is
         supposed to be black (David Haywood)
- 03557: [Sound] All sets in namcos12.c: Music is slower than
         original (Phil Bennett)
- 03561: [Crash/Freeze] robokid, robokidj, robokidj2: Segmentation
         Fault after OK (Fabio Priuli)
- 03562: [Crash/Freeze] fcombat: Segmentation Fault after OK
         (Fabio Priuli)
- 03560: [Crash/Freeze] missb2, saiyugoub1, saiyugoub2: Driver Data
         Struct Issues (Fabio Priuli)
- 03559: [Crash/Freeze] All sets in viper.c, subsino.c and coolridr.c:
         Segmentation Fault before OK (Fabio Priuli)

Source Changes
--------------
Kusayakyu improvements [Angelo Salese]
 - fixed color prom hook-up, tilemap color offsets and tilemap
    flipping
 - fixed sound and tweaked the frequencies in the driver

Tron: Hooked up cocktail (P2) fire button so that it can be used
in-game and in test mode. [Tafoid]

Added driver data struct and save states to: [Fabio Priuli]
 - gberet.c, ddrible.c, gaelco.c, trackfld.c, hyperspt.c, yiear.c
 - hnayayoi.c, hanaawas.c, higemaru.c, himesiki.c and sonson.c
 - galspnbl.c, gcpinbal.c, ginganin.c, go2000.c, goal92.c, goindol.c,
    good.c, gotcha.c, gotya.c, gstream.c, gumbo.c, gundealr.c,
    hitme.c, holeland.c & homerun.c
 - glass.c & homedata.c
 - fromance.c, fromanc2.c, ikki.c, imolagp.c, inufuku.c
 - jack.c
 - jangou.c, jantotsu.c, jollyjgr.c and jongkyo.c
 - kangaroo.c, karnov.c, kchamp.c, kickgoal.c, kingobox.c,
    kncljoe.c, koikoi.c, kopunch.c, ksayakyu.c and kyugo.c
 - ladybug.c, ladyfrog.c, lastduel.c, lwings.c, redclash.c and
    yunsung8.c
 - laserbas.c, laserbat.c, lastfght.c, lazercmd.c and lemmings.c

Added driver data struct to: [Fabio Priuli]
 - galivan.c, jailbrek.c, sbasketb.c
 - alpha68k.c, amspdwy.c, gng.c, gunsmoke.c, hotblock.c
 - aerofgt.c and gyruss.c
 - hyprduel.c
 - pipedrm.c
 - ironhors.c
 - jackal.c
 - lasso.c

Changed CDP1869 PAL/NTSC signal to use devcb. [Curt Coder]

Converted cabal, mappy, toypop and zaxxon to use driver_data
structure [Atari Ace]

Fixed CP1610 disassembler. [Robbbert]

Cool Riders improvements: [Angelo Salese, David Haywood]
 - fixed regression
 - hooked up what it looks like a ROM->to->VRAM transfer...
 - slightly improved booting
 - some hooks to allow FBI logo drawing
 - basic DMA hooked up
 - fixed program ROM memory map loading as per the service mode item
 - allow it to draw RAM-based chars, starts to show correct gfxs
 - fixed paletteram and implemented basic inputs
 - implemented DMA vram transfers
 - added Guru readme
 - hooked up videoram reading in drawing functions
 - some hook-ups for the text blitter

Wink: Fixed colors [Angelo Salese]

Mostly resolved mix of intel and motorola notation in tms32025
disassembler [Lord Nightmare]

Cosmic: fixed cosmica2 romset rom split and names to match romset as
described in mameinfo, which it matches (except for one rom which
mameinfo is probably wrong about). The romset uses a different rom
daughterboard to the other cosmica romsets, and different sized roms.
[Lord Nightmare]

Added shared driver data struct to 40love.c, bking.c, buggychl.c and
msisaac.c (they use the same mcu emulation) [Fabio Priuli]

Added preliminary HNG64 additive tilemap blending [David Haywood]

Fixed srcclean handling of embedded comments within strings
[Atari Ace]

PCB documentation updates: [Kevin Eshbach]
 * Added the board xtal's for Battlantis, Contra and Pandora's Palace
 * Corrected the MCU dump for Pandora's Palace
 * Added indication of an undumped PAL for Contra/Gryzor
 * Added PAL dumps for Cruis'n USA - rev L4.1
 * Added information on the PROM from the 2 Board version of Congo
    Bongo

Noraut Poker driver improvements: [Roberto Fresca]
 * Added new technical notes.
 * Added Kimble Z80 hardware support.
 * Added Prologic-Noraut hardware support.
 * Added proper discrete sound support to Kimble games,
   and Prologic-Noraut Joker Poker.
 * Slightly adjusted the visual area.
   This can be wrong and must be rechecked.
 * Relocated the hardware notes and layouts to ROM_LOAD section,
   so can be seen/maintained in a cleaner way.
 * Fixed the default lamps state.

Cleaned-up several drivers; added missing prototypes and removed dead
ones, marked non-exported functions as static and removed cases of
#include "deprecat.h" [Atari Ace]

Aleck 64: Implemented player 2 inputs [Angelo Salese]

Added a PCB layout for M.Kramer's Black Jack Poker, based on a hi-res
pic. Also added undumped devices as NO_DUMP. [Roberto Fresca]

Added common driver data struct to timeplt.c, tutankhm.c, junofrst.c,
pooyan.c, rallyx.c and rocnrope.c (these drivers all use
audio/timeplt.c). As a side effect, we now have save states in
junofrst.c and rallyx.c. [Fabio Priuli]

Converted atari drivers over to using driver_data for the most
part. Some shared systems still exist with globals, but this
tackles the atarigen module and the variables local to each
driver. [Aaron Giles]

Added validity check that AM_BASE_MEMBER and AM_SIZE_MEMBER items
point within the bounds of the driver_data structure. [Aaron Giles]

Fixed DMADAC wrapping behavior. [Tim Schuerewegen]

Added Driver Configuration to astrof.c to emulate common wire hack
which causes black background [David Haywood]

Aleck 64: Worked around hard-locks at start-up. [Angelo Salese]

Identified Semicom's Dream World hardware as a copy of Psikyo's
68020 hardware (it was already known that their older platforms were
copied from Snow Bros, and Tumble Pop) [David Haywood]

i386 core improvements: [Barry Rodewald]
 * Fixed EIP displacement when executing FPU instructions with no
    80387 present
 * Added 32-bit implementations of SLDT and STR

Converted Kaneko Pandora sprite chip to be a MAME device and updated
drivers accordingly. [Fabio Priuli]

Added tilemap_create_device() function which lets you create a tilemap
from within a device, and be passed that device in your callback.
[Aaron Giles]

Converted Signetics 2636 video chip to be a MAME device and updated
drivers using it accordingly. [Fabio Priuli]

Memory system changes: [Aaron Giles]
 - Memory banks are now referenced by tag rather than index.
    Changed all memory_bank_* functions to specify a tag.
    Bulk-converted existing banks to be tagged "bank##" in
    order to ensure consistency. However, going forward, the
    tags don't matter, so please name them something useful.

 - Added AM_BANK_READ/AM_BANK_WRITE macros to let you specify
    bank tags. Also changed AM_ROMBANK and AM_RAMBANK macros to
    accept tags as well.

 - Added new functions memory_install_read_bank_handler and
    memory_install_write_bank_handler to install banks by tag
    name, similar to input ports.

 - Changed internals of memory system to dynamically allocate
    all banks. The first time a bank with an unknown tag is
    installed, a new bank object is created and tracked
    internally.

 - Removed SMH_* macros entirely. In their place are a series of
    expanded macros and new memory installation helpers. Some
    mappings below (not all are new):

     AM_READ(SMH_RAM)                       -> AM_READONLY
     AM_WRITE(SMH_RAM)                      -> AM_WRITEONLY
     AM_READWRITE(SMH_RAM, SMH_RAM)         -> AM_RAM
     AM_READ(rhandler) AM_WRITE(SMH_RAM)    -> AM_RAM_READ(rhandler)
     AM_READ(SMH_RAM) AM_WRITE(whandler)    -> AM_RAM_WRITE(whandler)
     AM_DEVREAD(tag, rhandler) AM_WRITE(SMH_RAM)
                                  -> AM_RAM_DEVREAD(tag, rhandler)
     AM_READ(SMH_RAM) AM_DEVWRITE(tag, whandler)
                                  -> AM_RAM_DEVWRITE(tag, whandler)

     AM_READ(SMH_ROM)                       -> AM_ROM
     AM_WRITE(SMH_ROM)                      -> (was a no-op)

     AM_READ(SMH_NOP)                       -> AM_READNOP
     AM_WRITE(SMH_NOP)                      -> AM_WRITENOP
     AM_READWRITE(SMH_NOP, SMH_NOP)         -> AM_NOP

   For dynamic memory handler installation of the various types,
   use the new functions:

     memory_unmap_read()
     memory_unmap_write()
     memory_unmap_readwrite() -- unmaps a section of address space

     memory_nop_read()
     memory_nop_write()
     memory_nop_readwrite() -- nops a section of address space

 - Cleaned up the internals of the address_map_entry structure, and
    also normalized the way the address map macros work to remove a
    lot of redundancy.

 - Renamed functions: memory_install_read/write_port_handler to
    memory_install_read/write_port

 - Memory shares are now specified by tag instead of index.
    The AM_SHARE() macro now takes a tag parameter. All existing
    shares have been bulk renamed to "share##". However, the name
    does not matter, so please use descriptive tags going forward.

 - Added tag validation for bank and share tags.

 - Added flag to tagmap_add functions that optionally will
    replace existing objects if a duplicate is found.

 - Internal code shuffling. Address maps initialized internally
    now call the same installation handlers that drivers do for
    dynamic installation. Cleaned up some parameter ordering and
    error detection.

 - Added new functions:

     memory_install_ram() to assign a un-named bank to a region and
       specify a pointer to where the RAM lives. If this is called in
       the DRIVER_INIT function or MACHINE/SOUND/VIDEO_START
       functions, then it is permissible to specify NULL, in which
       case the memory system will allocate memory and register it
       for save states.

     memory_install_rom() is like the above except that it only
       installs a read handler.

     memory_install_writeonly() is like the above except that it
     only installs a write handler.

 - Updated several instances in the code that were assigning banks
    to these sorts of static RAM regions and simplified the code.

 - Apply mirrors and global masks at address map detokenizing time
    rather than later.

New games added or promoted from NOT_WORKING status
---------------------------------------------------
Top Shooter [Mariusz Wojcieszek]
LA Girl [Tomasz Slanina, Guru]
Noraut Joker Poker (Prologic HW) [Roberto Fresca, Alan Griffin]

New clones added
----------------
Domino Block ver.2 [Guru]
Tower of Druaga (Manufactured by Sidam) [Corrado Tomaselli]
Invasion (4 bootleg sets) [f205v, ANY]
Head On (Sidam bootleg, set 2) [f205v, ANY]
Head On 2 (Sidam bootleg) [f205v, ANY]
Arkanoid (bootleg on Block hardware, set 2) [f205v, ANY]
Gals Panic (Korea, EXPRO-02 PCB) [Guru]
Strikers 1945 (Hong Kong, Bootleg)
   [David Haywood, Brian Troha, Dumping Union]
Fighting Fantasy (bootleg with 68705) [f205v] (not working)
Phantom (Spectar bootleg) [Team Europe & rades]
Panzar (Spectar bootleg) [f205v]
Fatsy Gambler (Video Hustler bootleg) [f205v]
Fitter (bootleg) [f205v]
Vs. Super Mario Bros. (bootleg with Z80) (2 sets) [f205v, Dante Profeta] (not working)

New games marked as GAME_NOT_WORKING
------------------------------------
White Tiger - 3VXFC5342 (New Zealand) [Heihachi_73]
Magic Mask (A - 09/05/2000, Export) [Heihachi_73]
Geisha (A - 05/03/01, New Zealand) [Heihachi_73]
Kimble Double HI-LO (z80 version) [Roberto Fresca, Alan Griffin]
Fast Draw (poker conversion kit)? [Roberto Fresca]
Draw Poker HI-LO (unknown, rev 1) [Roberto Fresca, Dumping Union]
Draw Poker HI-LO (unknown, rev 2) [Roberto Fresca, Dumping Union]
Video Stars [Andrew Welburn]

0.135u2
-------

MAMETesters Bugs Fixed
----------------------
- 03553: [Crash/Freeze] extdwnhl: Game does not start (Phil Bennett)
- 03544: [DIP/Input] mgdh, sdmg2: The joystick function missed in
         mgdh and sdmg2 (Luca Elia)
- 03547: [Graphics] mgdh,sdmg2: Donden graphics in mgdh and sdmg2 are
         inaccurate (Luca Elia)
- 03546: [Documentation] nkishusp: Black screen after the game start.
         (Luca Elia)
- 03540: [Sound] glpracr3, hvnsgate, raystorm: Missing sound.
         (Phil Bennett)
- 03545: [Graphics] tekken3, tektagt: Tekken games do not proceed
         into attract mode after initial screen (Phil Bennett)
- 03542: [Sound] Sets/Drivers using YM2610: Missing sounds
         (Phil Bennett)

Source Changes
--------------
Added driver data structs to: [Fabio Priuli]
 - beaminv.c
 - cball.c and capbowl.c
 - changela.c, circus.c and circusc.c
 - crgolf.c and clayshoo.c
 - decocass.c
 - docastle.c, dotrikun.c, cloud9.c and destroyr.c
 - cheekyms.c
 - embargo.c
 - ddragon.c, ddragon3.c and fgoal.c
 - bwing.c
 - dday.c
 - dcheese.c
 - flyball.c
 - freekick.c

Added driver data and save state support to: [Fabio Priuli]
 - blmbycar.c
 - zerozone.c, yunsun16.c, dominob.c, dogfgt.c and bogeyman.c
 - blockout.c and bigevglf.c
 - chaknpop.c
 - albazg.c
 - chinagat.c, esd16.c, f-32.c, fcombat.c, finalizr.c
 - fantland.c and firetrap.c
 - btime.c and scregg.c
 - fitfight.c, flstory.c and funkybee.c
 - fuukifg2.c and fuukifg3.c

Added save state support to: [Fabio Priuli]
 - 2mindril.c, ashnojoe.c, bigfghtr.c, bublbobl.c, cchance.c,
    champbwl.c, missb2.c
 - compgolf.c, champbas.c, copsnrob.c, cop01.c, cosmic.c, cntsteer.c,
    dacholer.c and dec8.c
 - armedf.c, calorie.c, canyon.c, chanbara.c, citycon.c, commando.c,
    crospang.c & cultures.c
 - astrocorp.c
 - ddayjlc.c, ddealer.c, deniam.c, discoboy.c, diverboy.c, dorachan.c,
    dragrace.c, dreamwld.c, dribling.c, drmicro.c, drtomy.c
 - dynadice.c, dwarfd.c, dunhuang.c, enigma2.c, epos.c, drgnmst.c
    and egghunt.c
 - equites.c, exedexes.c, exerion.c and exprraid.c
 - funybubl.c, galaxi.c, gaiden.c and rocnrope.c

Removed some rogue occurrences of 'x1snd' resulting from device tag
mass-change. [Phil Bennett]

drw80pkr.c updates: [Jim Stolis]
 - Added Save State Support
 - Added Preliminary Dip Switch Settings
 - Corrected CPU Clock Value
 - Corrected Sound (Now Works)
 - Narrowed Down More IO R/W Areas

tms7000: Fixed disassembly of PCREL addressing mode. [Wilbert Pol]

Added device support to the input system. Internally this replaces
PORT_CUSTOM/PORT_CHANGED, backward compatibility is achieved with an
internal dummy device. Added output lines (IPT_OUTPUT), which can be
written using new input_port_write* functions or directly from a
memory map using AM_WRITE_PORT converted adc083x to use io lines.
[smf]

ADC devices updates: [smf]
 - adc08x chips are all hooked up using input/output ports
 - reversed racing force steering wheel input and gas pedal, which
    is enough to get the game to boot.
 - reversed steering wheel input on winding heat, the usa cabinets
    are however hooked up the other way.
 - renamed adc0831_interface to adc083x_interface.
 - fixed adc083x gnd input
 - removed stray call logerror from adc083x.c
 - fixed default adc083x sars value
 - adc083x reset only affects outputs

Added set name to -romident. [smf]

Updated ddr 3rd mix plus protection to remove display corruption.
[smf]

RDP Updates: Fixed TMEM size, removed separate tlut, fixed tlut
uploads [angrylion]

hng64 updates:
 - Added preliminary hook-up for multi-byte chain mode for sprites,
    used by Buriki One and the two Samurai Shodown games
    [David Haywood, Angelo Salese]
 - Fixed back plane color, thus giving characteristic blue background
    for POST screen [Angelo Salese]
 - Improved Dual Port emulation, fixing the POST errors about it
    [Angelo Salese]
 - Implemented "simple" scroll register layout [David Haywood]
 - Implemented "complex" scroll register layout [David Haywood]
 - Corrected sprite end boundary, fixes credit messages in Buriki One
    [Angelo Salese]
 - Fixed scrolling text in Buriki One attract mode [Angelo Salese]
 - Hooked up global bpp switch for sprites, HW doesn't seem capable
    of doing per-sprite bpp switch, fixes coin credit text in Buriki
    One [Angelo Salese]
 - Implemented V-Blank register, fixes palette uploading in Samurai
    Shodown 1 & 2 [Angelo Salese]
 - Fixed sprite wrap-around [David Haywood]
 - Implemented irq 11, used by the racing games for network check,
    currently crashes due to an invalid parameter inside the 3d
    packets [Angelo Salese]
 - Added 16x16 / 8x8 tilemap mode select, fixes one scene in Extreme
    Rally and transition layer in Fatal Fury WA (squares on title
    screen) [David Haywood]
 - Added alt layout for the roz, fixes Roads Edge graphics before the
    title screen [David Haywood]
 - Implemented sprite clearance capability, fixes garbage gfxs as
    seen in Samurai Shodown 64 1 & 2 [Angelo Salese]
 - Implemented x/y sprite global offsets, used by Samurai Shodown 64
    1 ranking screen [David Haywood]
 - Hooked-up backup ram [Angelo Salese]
 - Documented some sprite findings [Angelo Salese]
 - Re-implemented zooming in Fatal Fury WA, and added alternative
    zooming mode used by the other games, they have some precision
    bugs though [Angelo Salese]
 - Implemented preliminary additive blending [David Haywood]
 - Slight optimization to the tile dirty marking [David Haywood]
 - Better documentation of mosaic and floor modes [David Haywood]
 - Implemented sprite disable bit [David Haywood]
 - Implemented dynamic visible area [Angelo Salese]
 - Start to document 3d / framebuffer video registers, implemented a
    quick hook-up that fixes Buriki One 3d model colors minus one
    case [Angelo Salese]
 - Implemented screen disable when the visible area regs are equal to
    zero and fixed back layer [Angelo Salese]

Updated the albazg driver to use hanafuda standard inputs, eeprom
device, and memory_set_bank in place of memory_set_bankptr.
[Fabio Priuli]

System 23 update [Naibo Zhang]
 - Corrected memory mapping of palette RAM and handling of palette
    data. Power-On Self Test now shows correct colors.
 - Changed Panic Park from SS23 to S23 game.

Galaxian3 update [Naibo Zhang]
 - Fleshed out skeleton driver. Each CPU board passes many self-tests
 - Master and slave CPU comms hooked up

Designated Puzzle Bang Bang (vamphalf.c) as Korean version. For this
set the title and language cannot be change. [Brian Troha]

Added new module tagmap which is a simple hashed string map. Updated
device and input port lists to use the tagmap for tag searches. Also
removed the whole "quark" thing from the validity checker in favor of
using the tagmaps. [Aaron Giles]

Added Intel 8008 and National Semiconductor SC/MP CPU cores.
[Miodrag Milanovic]

INS 8060 SC/MP II support (using clock divider 2), main model renamed
to INS 8050 SC/MP. [Miodrag Milanovic]

Updated the astrocorp.c and groundfx.c drivers to use EEPROM device.
[Fabio Priuli]

Added support for SCSI command 0x2a (Write w/ 32-bit LBA), upped
input buffer size in WD33C93 controller [Harmony]

Hooked up eepromdev.c using PORT_READ_LINE_DEVICE/
PORT_WRITE_LINE_DEVICE in groundfx.c. Output ports are now affected
by IP_ACTIVE_HIGH/IP_ACTIVE_LOW (eepromdev.c has active low cs).
The previous value for callbacks in inptport.c is now tracked per
field. This saves recalculating it for PORT_CHANGED & conditional
fields wouldn't always get updated correctly. Tidied up eepromdev.c
interface. [smf]

Added sprites list stop to igs017.c. Implemented joystick mode in
mgdh and sdmg2 [Luca Elia]

Fixed audio output lengths in aviio.c. [CDiFan]

Added memory_install_write_port_handler &
memory_install_readwrite_port_handler to be consistent with
installing handlers. [smf]

CDP1869 changes: [Curt Coder]
 - converted page RAM functions to use devcb
 - added pull interface for predisplay

Switched from linear interpolation to antialiased point sampling
when upconverting low-frequency sound streams. This should de-muffle
low-frequency streams, treating them has having hard edges at sample
boundaries. [Aaron Giles]

Converted the following drivers to use EEPROM device: deco156.c,
eolith.c, eolith16.c, limenko.c, taito_f3.c, taito_z.c, taito_b.c,
taitojc.c, toaplan2.c and kaneko16.c. [Fabio Priuli]

Implemented use of per tile colour lookup ROM in Portraits, colour
decode is still wrong [David Haywood]

CF clear after binary operations on Intel 8008 CPU core.
[Miodrag Milanovic]

Improvements to Noraut Poker driver: [Roberto Fresca]
 * A lot of work in memory maps and machine driver stuff.
 * Improved Inputs / DIP switches for some games.
 * Added lamps support / layouts to new working games.
 * Added preliminary support to Kimble hardware.
 * Added support to CGI's Credit Poker 30x games.
 * Added new (and fixed old) technical notes.
 * Renamed norautpn descripion to Noraut Deluxe Poker (bootleg).
 * Added a placeholder for tpoker2's undumped 68705 MCU.
 * Reorganized the driver, plus some clean-ups.
 * Renamed kimblejp to kimbldhl. Changed game description to Kimble
    Double Hi-Lo.
 * Added specific memory map & machine driver to Kimble Double Hi-Lo.
 * Fix the Kimble Double Hi-Lo CPU type.
 * Added notes about the code obfuscation and PPI's handling/offsets.

Added Magic Card Jackpot and Magic Lotto Export to Impera Magic Card
driver. Also added PCB layouts, hardware description and technical
notes. Changed the bipolar prom dumps to serial I2C bus EEPROM.
[Roberto Fresca]

Made DEVCB_INPUT_PORT(tag) work for write callbacks. [smf]

Fixed regression in magicard.c driver [Angelo Salese]

Introduced a generic_pointers structure within machine that is
designed to hold generic pointers that are commonly used. Moved
generic_nvram, videoram, colorram, spriteram*, paletteram* pointers
there. Added AM_BASE_GENERIC and AM_SIZE_GENERIC macros for
initializing generic pointers in memory maps. Also added
AM_BASE_SIZE_GENERIC to set both base and size in one step.
[Aaron Giles]

Moved global variables out of machine/generic and into a private data
structure hanging off of the running_machine. Added newly-needed
machine parameters to coin_counter_w, coin_lockout_w, and
coin_lockout_global_w. Also added machine parameter to
set_led_state. [Aaron Giles]

Added interface functions to get the number of dispensed tickets and
to increment the count, to remove the need for direct access to these
global variables. Also added functions to get the current count on a
particular coin counter and to determine the lockout state.
[Aaron Giles]

Intel 8255A: clear input latch after reading it. [Curt Coder]

Actually use the speaker interface if provided. [Curt Coder]

Purged remaining globals from video/generic.c and audio/generic.c.
[Aaron Giles]

Fixed i386 REP prefix to use segment:SI when address size is 16-bit
(ie: when using OUTSB or OUTSW). [Barry Rodewald]

Removed limited use of spriteram_3 global. [Atari Ace]

Added AM_BASE_SIZE_MEMBER() macro for specifying both base and size
structure members at once. Updated all cases where this could be
used. [Aaron Giles]

Cleaned up many driver data structs: [Fabio Priuli]
 * dropped almost completely the use of generic sizes with struct
    members
 * reduced as much as possible accesses to cputag calls during
    emulation (they are now mainly concentrated at MACHINE_START &
    DRIVER_INIT)

Joker's Wild: bypassed the rng test [Angelo Salese]

Joker's Wild: implemented bare minimum to allow it to go into gameplay
and fixed tilemap graphics [Angelo Salese]

Memory regions now use a tagmap for lookups. [Aaron Giles]

New games added or promoted from NOT_WORKING status
---------------------------------------------------
Submarine [Volker Hann, Team Europe, David Haywood, Angelo Salese]
Noraut Deluxe Poker (console) [Roberto Fresca, ByteMaster]
Noraut Joker Poker (original) [Roberto Fresca, ByteMaster]
Noraut Red Hot Joker Poker (alt HW) [Roberto Fresca, ByteMaster]
Mainline Double Joker Poker [Roberto Fresca, ByteMaster]
Double Joker Poker (45%-75% payout) [Roberto Fresca, ByteMaster]
Royal on Ten (Noraut Deluxe hack) [Roberto Fresca, ByteMaster]
Credit Poker (ver.30c, standard) [Roberto Fresca, ByteMaster]
Iron (SNES bootleg) [Tomasz Slanina, Volker Hann & Team Europe]

New clones added
----------------
Cannon Ball (bootleg on Crazy Kong hardware) (set 3, no bonus game)
   [Volker Hann, Team Europe]
X-Men (4 Players ver EBA) [Irongiant]
Wizard of Wor (with German Language ROM) [Volker Hann]
Gorf (program 1, with German Language ROM) [Volker Hann]
Super Puzzle Fighter II Turbo (Hispanic 960531)
   [Artemio Urbina, David Haywood]

New games marked as GAME_NOT_WORKING
------------------------------------
The King of Fighters Neowave (Japan) [Cah4e3]
Final Furlong (FF2 Ver. A) [Guru]
Dragon Chronicles (DC001 Ver. A) [Guru]
Netchuu Pro Yakyuu 2002 (NPY1 Ver. A) [Guru]
Soul Calibur II (SC23 Ver. A) [Guru]
Soul Calibur II (SC21 Ver. A) [Guru]
Tekken 4 (TEF3 Ver. C) [Guru]
Tekken 4 (TEF2 Ver. A) [Guru]
Tekken 4 (TEF1 Ver. A) [Guru]
Mobile Suit Z-Gundam: A.E.U.G. vs Titans (ZGA1 Ver. A) [Guru]
Capcom Fighting Jam (JAM1 Ver. A) [Guru]
Quiz and Veriety Suku Suku Inufuku 2 (IN2 Ver. A) [Guru]
Mobile Suit Z-Gundam: A.E.U.G. vs Titans DX (ZDX1 Ver. A) [Guru]
Soul Calibur III (SC31001-NA-A) [Guru]
Kinnikuman Muscle Grand Prix (KN1 Ver. A) [Guru]
Taiko No Tatsujin 9 (TK91001-NA-A) [Guru]
Tekken 5.1 (TE51 Ver. B) [Guru]
Airline Pilots (Rev. A) [f205v]
Sega Tetris [Guru]
Noraut unknown set 1 (console) [Roberto Fresca, ByteMaster]
Noraut unknown set 2 (console) [Roberto Fresca, ByteMaster]
Noraut Joker Poker (V3.011a) [Roberto Fresca, Alan Griffin]
Poker / Black Jack (Model 7521) [Roberto Fresca]
Kimble Double Hi-Lo [Roberto Fresca, Alan Griffin]
DRHL Poker (v.2.89) [Roberto Fresca, Siftware]
Magic Card Jackpot (4.01)
   [Roberto Fresca, Team Europe, krick & The Dumping Union]
Magic Lotto Export (5.03)
   [Roberto Fresca, Team Europe, krick & The Dumping Union]

0.135u1
-------

MAMETesters Bugs Fixed
----------------------
- 03535: [Documentation] 3stooges: P1-P2-P3 button does not match
         documentation (input (this game)) (David Haywood)
- 02734: [Crash/Freeze] videocba, videodad, blckjack: Crash
         immediately after OK (Firewave)
- 00941: [Sound] tp84: The startup 'tune' no longer sounds like the
         original game after the fixes to the SN76496 sound core.
         (Lord Nightmare)
- 03494: [Gameplay] batridc, batrid, batridk, batridu: 'Guest
         Player', 'Special Course', 'Player Select' dipswitch
         settings reversed (Fabio Priuli)
- 02155: [DIP/Input] mole: Incorrect buttons mapping. (M.A.S.H.)
- 03498: [Graphics] sengekis, sengekisj: Missing graphic layer in
         Stages 3 and 5 (David Haywood)
- 03509: [Graphics] galpans2, galpans3, panicstr: Input test screen
         shows zoomed in text (David Haywood)

Source Changes
--------------
Updated LFO information in YMF271 core. [Brian Troha, Nicola Salmoria]

Fixed parent relationship between sbrkout3 and sbrkout.
[Lord Nightmare]

Removed some magic numbers from machine/psx.c, replaced with #defines.
[Harmony]

Change to consistently use Intel notation for hex values in TMS32010
disassembler, rather than a mix of Motorola and Intel notation.
[Lord Nightmare]

Z80: Check for NOP in interrupt mode 0. This allows code like ei /
halt / di to work correctly. A better solution would be to implement
full support for arbitrary opcodes in mode 0. [Dirk Best]

igs017.c update [Luca Elia]
 - Merged in some IGS031 based games (igs_m68.c, tarzan.c)
 - Implemented tiles flip x and video disable
 - Added hopper simulation to mgcs
 - Decrypted mgdh

Almost complete decryption of starzan and tarzana [iq_132]

Documented presence of Namco customs on the Pole Position bootleg
(Top Racer) sets. Removed Namco devices from bootlegs which don't
have them. [David Haywood]

Added save state support to plygonet.c and the DSP56156 CPU core.
[Andrew Gardner]

Updated SN76489/A to have correct PRNG waveforms (a 0 bit was missing
at the beginning, and beginning of SN76489 waveform was all 1s
instead of 0s as measured on hardware). Added SN94624 (same as
SN76489). [Lord Nightmare, plgDavid (David Viens)]

IGS blitter based games update [Luca Elia]
 - Renamed driver to igs011.c and cleaned it up
 - Renamed some sets according to chinese title
 - Implemented hopper in lhb, lhb2, wlcc
 - Decrypted ryukobou

i386 core fixes: [Barry Rodewald]
 * Added Nested Task flag, and I/O Privilege flags.  They aren't
    implemented in any way, but can now be set or reset.  Can be used
    to detect a 80386 or later CPU.
 * Implemented ENTER instruction.
 * Made IRQ vectors treated as 8 bytes when in protected mode, and
    made the addresses pushed onto the stack 32-bit if the gate
    descriptor used is a 386 interrupt or trap gate (also when in
    protected mode, will always be 16-bit if in real mode).

Fixes to default mapping as well as comment/information fixes for
Mole Attack [M.A.S.H./Tafoid]

Identify puyoj set as Rev B and correct various rom names.
[Smitdogg, Dumping Union]

Improved Super Nova sprite shrinking, used by Gals Panic S2 and
Sengeki Striker. [David Haywood]

Improved dips in Mahjong Vegas. [nightsoil]

Added emulation of background graphics (blitter), sound and inputs to
skimaxx.c [Luca Elia]

Refactored Z80, i8237, and i8257 DMA to use devcb. [Curt Coder]

Fixed RGB555 palette RAM format in Soccer Superstars [Angelo Salese]

Allowed child CPUs to be used in read8/write8 callbacks. [Curt Coder]

Jaleco Mega System 32 update: [David Haywood]
 * Added correct RAM sizes as per Charles McDonald's notes
 * Implemented priority in the same manner as tetrisp2
 * Add shadows via custom mixing (gametngk and tetrisp / tp2m32 are
    much improved)
 * Added the alt tilemap layout used by f1superb for the backgrounds
 * Added f1superb notes and IRQ generation code from nuapete

Tournament Solitaire (pcat_dyn) improvements [luigi30]:
 * Added newer version of toursol, renamed existing to toursol1 and
    the new one is now toursol
 * Set toursol date to 1995
 * Set toursol CPU speed to 40MHz

Many improvements to konamigx rendering, specifically improving
Soccer Superstars and Rushing Hero. [David Haywood, Angelo Salese]

Implemented input buffer copy protection in Rushing Heroes, game is
now somewhat playable with heavy gfx glitches [Angelo Salese]

Fixed Konami GX type 4 protection seed $d15, used to protect a sprite
bank in Run & Gun 2 / Slam Dunk 2 [Angelo Salese]

Fixed sprite ROM loading in Slam Dunk 2 [David Haywood]

Added missing BLTZAL opcode to the RSP core. [angrylion]

Control fix for Strike Gunner S.T.G. to allow a 3rd button mapping
for each player - thus allowing for the feature of merging ships in 2
player games. [Tafoid]

Marked cosmic alien colors as wrong, added TODO to the driver for
fixing colors. Added new XTAL value for cosmic alien and switched
driver to use it. [Lord Nightmare]

Fixed colors in Greyhound games [Mariusz Wojcieszek]

Restored Final Gorodi and Wyvern Wings to working. [Brian Troha]

Fixed gfx decoding and hooked up mc6845 in the Forte Card driver
[Angelo Salese]

Removed dual layout, added Map base video register and fixed
transparent issues in the Jackpot Cards driver [Angelo Salese]

MC680x0 update: [R. Belmont]
 - Reworked PMMU/core interface so PMMU now sees all cop 0
    instructions
 - Improved disassembly of PMMU instructions
 - Preliminary 68LC040 support
 - Fixed disassembly for EC/LC variants of '030/'040

Patched NVRAM check in Jackpot Cards, makes the game playable but you
cannot save settings so it's not yet working. [Angelo Salese]

Trashed the old pre-accurate-clocking STEP based sample averaging
scheme from sn76489 and friends, vastly simplifying the code. Made
the output bipolar rather than only above the 0 line. Added missing
statement to the get_safe_token function for the recently added
SN94624. [Lord Nightmare]

Many N64 RDP fixes.
[angrylion, Ziggy, Gonetz, Orkin, DrgnMndd, Harmony]

Cleaned up toaplan2 V25 support, enabled Batsugun V25 and added
decryption table info for the other games [David Haywood]

Improved the V25S memory map in Batsugun, now CPUs starts to
communicate properly, needs to find & implement the irq that clears
the RAM flag and decrypt the relative opcodes in that. [Angelo Salese]

More Greyhound improvements: [Mariusz Wojcieszek]
 - added dip switches for Super Poker
 - improved inputs in Sports Authority

Expanded some sound chip tags to specifically indicate they are sound
chips (generally, "ay" becomes "aysnd", "fm" becomes "fmsnd", etc)
[Aaron Giles]

MIPS3 TLB fixes: [Aaron Giles]
 - now properly generating TLB fill exceptions under correct
    circumstances
 - TLB exceptions no longer trash low 4 bits of Context
 - exceptions with the EXL bit set always go to vector 0x180
 - fixed bug in vtlb code that caused us to lose track of previously
    registered fixed page ranges
 - fixed MIPS3 behavior that would not clear out invalid page ranges
    from the VTLB under certain circumstances
 - added support for TLB sizes less than 48 entries
 - fix TLBMOD exceptions so they also properly set BadVAddr

Added NCR7496 variant to sn76496.c. Updated comments to show which
chips are currently verified. Cleaned up comments. [Lord Nightmare]

Fixed the 64-bit crashing issues in N64 [Harmony]

Fixed out-of-bounds array accesses in the peplus and videopkr drivers
[Oliver Stoeneberg]

Merged findout.c and getrivia.c into gei.c [Mariusz Wojcieszek]

Fixed broken DRC logging. [Aaron Giles]

Fix PowerPC 603 translation so it doesn't get stuck in an infinite
loop after the first fixup. [Aaron Giles]

Added driver data struct and save state support to pandoras.c,
marineb.c, m10.c, m14.c, m52.c, m57.c, m58.c, m62.c, m63.c,
travrusa.c, adp.c, n8080.c, atarifb.c, astinvad.c, avalnche.c,
battlex.c, carjmbre.c, popper.c, spaceg.c, bankp.c, battlane.c,
blockade.c, blueprnt.c, brkthru.c bsktball.c, hexa.c
[Fabio Priuli]

Added driver data struct to espial.c, zodiack.c, 4enraya.c, 1942.c,
1943.c, ace.c, albazc.c, arabian.c, aeroboto.c, astrof.c, ambush.c
angelkds.c, arkanoid.c. [Fabio Priuli]

Replaced model3.c fatalerror() calls with development-friendly
logerror() calls. Also allows dayto2pe to boot again. [Phil Bennett]

hng64: Improved the Samurai Shodown 64 2 i/o simulation comms, now
inputs works and enters into proper gameplay. [Angelo Salese]

Merged some include files and merged audio/fghtbskt.c in
drivers/m63.c. [Fabio Priuli]

Got rid of SN76496's R->OldNoise since it causes problems for
gamegear/sms. Changed noise taps accordingly. Redid change to
gamegear/sms for XOR vs XNOR, now verified by Justin Kerk. Verified
gamegear noise taps thanks to sample provided by Justin Kerk.
Add stereo sound support to sn76496.c for gamegear.
[Lord Nightmare, Justin Kerk]

Added a MDRV_EEPROM_NODEFAULT_ADD macro for drivers which do not need
default data size / data. [Fabio Priuli]

Updated 20pacgal to use EEPROM device. Proper save state support still
needs some work (to handle the rom banking mechanism). [Fabio Priuli]

Updated galgbios to use EEPROM_NODEFAULT. [Fabio Priuli]

Added PORT_CUSTOM(eepromdev_bit_r) for EEPROM devices. [Fabio Priuli]

Fixed wrong order parameters in memset (spotted by Beledgol).
[Fabio Priuli]

Verified/changed clocks and vsyncs on the following games:
Aerofighters (only vsync), Power Spikes, Turbo Force (only vsync),
Guzzler/Swimmer (same pcb), Exerion and Karate Champs Vs.
[Corrado Tomaselli]

hng64: rewrote the MCU simulations, basically to be more clean than
before [Angelo Salese]

hng64: improved MCU simulation and added inputs in Beast Busters 2nd
Nightmare, it can now reach gameplay mode too [Angelo Salese]

hng64: removed Program Counter-based routines in Samurai Shodown 64
1/2, this fixes the first episode that can now be coined up, however
it hangs soon after that [Angelo Salese]

Renamed drw80pkr to drw80pk2. Appears to be later version and MN
jurisdiction specific. [Jim Stolis]

Replaced drw80pkr with older dump from [Team Europe].

Added various graphics improvements and corrected colors to drw80pkr.
Game boots much farther and cleaner. Additional graphics/memory
cleanup and preliminary input support [Jim Stolis]

hng64: work-around to get to the character screen in Samurai Shodown
64, hangs again after it [Angelo Salese]

Added driver_data struct to appoooh.c and boxer.c. Also merged boxer
video emulation into drivers/boxer.c. [Fabio Priuli]

Added dual screen output to the Konami GX Type 3/4 games
[David Haywood]

Fixed possible NULL pointer dereference in video/dec0.c
[Oliver Stoneberg]

Added save states to bionicc.c. [Fabio Priuli]

New games added or promoted from NOT_WORKING status
---------------------------------------------------
Mahjong Super Da Man Guan II
   [Luca Elia, Pierpaolo Prazzoli, Guru, Xing Xing]
Mahjong Man Guan Da Heng [Luca Elia, Guru, The Dumping Union]
Touche Me [David Haywood, Justin Kerk, JacKc, Sez, The tECHIDNA, Smitdogg, The Dumping Union]
Skimaxx [Luca Elia, Phil Bennett]
Dream 9 Final [Angelo Salese, David Haywood]
Soccer Superstars [David Haywood, Angelo Salese]
Rushing Heroes [David Haywood, Angelo Salese]
Run & Gun 2 [David Haywood, Angelo Salese]
Super Poker [Mariusz Wojcieszek]
GEI Multi Game [Mariusz Wojcieszek]
Sport Authority [Mariusz Wojcieszek]
Oh! Paipee [Takahiro Nogi]
Tougenkyou [Takahiro Nogi]

New clones added
----------------
Super Street Fighter II: The New Challengers (Hispanic 930911)
    [Artemio]
Silent Scope (JZD) (not working) [Guru}
Tarzan (V107) (not working) [iq_132]
Mahjong Ryukobou (Japan, V030J) [Luca Elia, Guru, Dyq, Bnathan]
Ultimate Tennis (Japan) [David Haywood, Aaron Giles, N. Alston, Smitdogg, The Dumping Union]
The Big Breakfast (5 sets) [AGEMAME Development]
Gals Panic S - Extra Edition (Korea) [Choi Sung Ho]
Light Bringer (Ver 2.20 1994/04/08) [Choi Sung Ho]
Mad Crusher (Japan) [David Haywood, Andrew Welburn]
Cosmic Alien (first version) [Andrew Welburn, Lord Nightmare]
Dungeons & Dragons: Shadow over Mystara (Hispanic 960223)
   [Artemio Urbina, David Haywood]
Mega Man 2: The Power Fighters (Hispanic 960712)
   [Artemio Urbina, David Haywood]
Last Duel (Japan) [Chack'n, Team Japump!!!]
Joker Poker (Version 16.04BI 10-19-88, Joker Poker ICB 9-30-86)
   [Mariusz Wojcieszek]
Joker Poker (Version 16.03BI 5-10-85, Poker No Raise ICB 9-30-86)
   [Mariusz Wojcieszek]
Amuse (Version 30.08 IBA) [Mariusz Wojcieszek]
R-Type II (Japan, revision C) [Andrew Welburn]
Popeye Man (hack) [Team Japump!!!]
Steraranger (Moon Cresta bootleg) [Siftware]

New games marked as GAME_NOT_WORKING
------------------------------------
Super Tarzan [f205v, Mirko Buffoni, iq_132]
Mahjong Nenrikishu SP [Guru, Dyq, Bnathan]
Print Club 2 (U 970921 V1.000) [Guru, Angelo Salese]
Print Club 2 Vol. 3 (U 990310 V1.000) [Guru, Angelo Salese]


 This file describes general usage information about MAME. It is intended
to cover aspects of using and configuring the program that are common
across operating systems. For additional OS-specific options, please see
the separate documentation for your particular version of MAME.

Using the program
-----------------

The usual way to run MAME is by telling it to run a particular game:

mame <gamename> [options]

For example:

mame robby -nosound

...will run Robby Roto without sound. There are many, many options
available. All commonly supported options are listed below. Options that
are specific to one operating system or version of MAME will be listed
in a separate document.

An alternative way to run MAME is to give it a command:

mame <command> [parameters]

For example:

mame -listsource gridlee

...will print the name of the source file where the gridlee driver lives
to the screen. There are just a handful of these commands in MAME. They
are all listed below, just before the options list.

Default Keys
------------

All the keys below are fully configurable in the user interface. This list
shows the standard keyboard configuration.

Tab Toggles the configuration menu.

~ Toggles the On Screen Display. When the on-screen display is
visible, you can use the following keys to control it:

Up - select previous parameter to modify
Down - select next parameter to modify
Enter - reset parameter value to its default

Left - decrease the value of the selected parameter
Control+Left - decrease the value by 10x
Shift+Left - decrease the value by 0.1x
Alt+Left - decrease the value by the smallest amount

Right - increase the value of the selected parameter
Control+Right - increase the value by 10x
Shift+Right - increase the value by 0.1x
Alt+Right - increase the value by the smallest amount

P Pauses the game.

Shift+P While paused, advances to next frame.

F2 Service Mode for games that support it.

F3 Resets the game.

Shift+F3 Performs a "hard reset", which tears everything down and re-
creates it from scratch. This is a more thorough and complete
reset than an F3.

F4 Shows the game palette, decoded GFX, and any tilemaps. Use the
Enter key to switch between the three modes (palette, graphics,
and tilemaps). Press F4 again to turn off the display. The key
controls in each mode vary slightly:

* Palette/colortable mode:
[ ] - switch between palette and colortable modes
Up/Down - scroll up/down one line at a time
Page Up/Page Down - scroll up/down one page at a time
Home/End - move to top/bottom of list
-/+ - increase/decrease the number of colors per row
Enter - switch to graphics viewer

* Graphics mode:
[ ] - switch between different graphics sets
Up/Down - scroll up/down one line at a time
Page Up/Page Down - scroll up/down one page at a time
Home/End - move to top/bottom of list
Left/Right - change color displayed
R - rotate tiles 90 degrees clockwise
-/+ - increase/decrease the number of tiles per row
Enter - switch to tilemap viewer

* Tilemap mode:
[ ] - switch between different tilemaps
Up/Down/Left/Right - scroll 8 pixels at a time
Shift+Up/Down/Left/Right - scroll 1 pixel at a time
Control+Up/Down/Left/Right - scroll 64 pixels at a time
R - rotate tilemap view 90 degrees clockwise
-/+ - increase/decrease the zoom factor
Enter - switch to palette/colortable mode

Note: Not all games have decoded graphics and/or tilemaps.

F6 Toggle cheat mode (if started with "-cheat").

F7 Load a save state. You will be requested to press a key to
determine which save state you wish to load. Note that the save
state feature is not supported for a large number of drivers. If
support is not enabled for a given driver, you will receive a
warning when attempting to save or load.

Shift+F7 Create a save state. Requires an additional keypress to identify
the state, similar to the load option above.

F8 Decrease frame skip on the fly.

F9 Increase frame skip on the fly.

F10 Toggle speed throttling.

F11 Toggles speed display.

Shift+F11 Toggles internal profiler display (if compiled in).

F12 Saves a screen snapshot.

Insert Fast forward. While held, runs the game with throttling disabled
and with the maximum frameskip.

Escape Exits emulator.

Core commands
-------------

-help / -h / -?

Displays current MAME version and copyright notice.

-validate / -valid

Performs internal validation on every driver in the system. Run this
before submitting changes to ensure that you haven't violated any of
the core system rules.

Configuration commands
----------------------

-createconfig / -cc

Creates the default mame.ini file. All the configuration options
(not commands) described below can be permanently changed by editing
this configuration file.

-showconfig / -sc

Displays the current configuration settings. If you route this to a
file, you can use it as an INI file. For example, the command:

mame -showconfig >mame.ini

is equivalent to -createconfig.

-showusage / -su

Displays a summary of all the command line options. For options that
are not mentioned here, the short summary given by "mame -showusage"
is usually sufficient.

Frontend commands
-----------------

Note: By default, all the '-list' commands below write info to the screen.
If you wish to write the info to a textfile instead, add this to the end
of your command:

> filename

...where 'filename' is the textfile's path and name
(e.g., c:\mame\list.txt).

-listxml / -lx [<gamename|wildcard>]

List comprehensive details for all of the supported games. The output
is quite long, so it is usually better to redirect this into a file.
The output is in XML format. By default all games are listed; however,
you can limit this list by specifying a driver name or wildcard after
the -listxml command.

-listfull / -ll [<gamename|wildcard>]

Displays a list of game driver names and descriptions. By default all
games are listed; however, you can limit this list by specifying a
driver name or wildcard after the -listfull command.

-listsource / -ls [<gamename|wildcard>]

Displays a list of drivers and the names of the source files their
game drivers live in. Useful for finding which driver a game runs on
in order to fix bugs. By default all games are listed; however, you
can limit this list by specifying a driver name or wildcard after
the -listsource command.

-listclones / -lc [<gamename|wildcard>]

Displays a list of clones. By default all clones are listed; however,
you can limit this list by specifying a driver name or wildcard after
the -listsource command.

-listcrc

Displays a full list of CRCs of all ROM images referenced by all
drivers within MAME.

-listroms <gamename>

Displays a list of ROM images referenced by the specified game.

-listsamples <gamename>

Displays a list of samples referenced by the specified game.

-verifyroms [<gamename|wildcard>]

Checks for invalid or missing ROM images. By default all drivers that
have valid ZIP files or directories in the rompath are verified;
however, you can limit this list by specifying a driver name or
wildcard after the -verifyroms command.

-verifysamples [<gamename|wildcard>]

Checks for invalid or missing samples. By default all drivers that
have valid ZIP files or directories in the samplepath are verified;
however, you can limit this list by specifying a driver name or
wildcard after the -verifyroms command.

-romident

Attempts to identify ROM files, if they are known to MAME, in the
specified .zip file or directory. This command can be used to try and
identify ROM sets taken from unknown boards. On exit, the errorlevel
is returned as one of the following:

0: means all files were identified
7: means all files were identified except for 1 or more "non-ROM"
files
8: means some files were identified
9: means no files were identified

Configuration options
---------------------

-[no]readconfig / -[no]rc

Enables or disables the reading of the config files. When enabled
(which is the default), MAME reads the following config files in order:

- mame.ini
- <mymame>.ini (i.e. if MAME was renamed mame060.exe, MAME
parses mame060.ini here)
- debug.ini (if the debugger is enabled)
- vector.ini (for vector games only)
- <driver>.ini (based on the source filename of the driver)
- <parent>.ini (for clones only, may be called recursively)
- <gamename>.ini

The settings in the later ini's override those in the earlier ini's.
So, for example, if you wanted to disable overlay effects in the
vector games, you can create a vector.ini with the "effect none" line
in it, and it will override whatever effect value you have in your
mame.ini. The default is ON (-readconfig).

Core search path options
------------------------

-rompath / -rp <path>

Specifies a list of paths within which to find ROM or hard disk images.
Multiple paths can be specified by separating them with semicolons.
The default is 'roms' (that is, a directory "roms" in the same directory
as the MAME executable).

-samplepath / -sp <path>

Specifies a list of paths within which to find sample files. Multiple
paths can be specified by separating them with semicolons. The default
is 'samples' (that is, a directory "samples" in the same directory as
the MAME executable).

-artpath / -artwork_directory <path>

Specifies a list of paths within which to find artwork files. Multiple
paths can be specified by separating them with semicolons. The default
is 'artwork' (that is, a directory "artwork" in the same directory as
the MAME executable).

-ctrlrpath / -ctrlr_directory <path>

Specifies a list of paths within which to find controller-specific
configuration files. Multiple paths can be specified by separating
them with semicolons. The default is 'ctrlr' (that is, a directory
"ctrlr" in the same directory as the MAME executable).

-inipath <path>

Specifies a list of paths within which to find .INI files. Multiple
paths can be specified by separating them with semicolons. The default
is '.;ini' (that is, search in the current directory first, and then
in the directory "ini" in the same directory as the MAME executable).

-fontpath <path>

Specifies a list of paths within which to find .BDF font files. Multiple
paths can be specified by separating them with semicolons. The default
is '.' (that is, search in the same directory as the MAME executable).

-crosshairpath <path>

Specifies a list of paths within which to find crosshair files. Multiple
paths can be specified by separating them with semicolons. The default
is 'crsshair' (that is, a directory "crsshair" in the same directory as
the MAME executable). If the Crosshair is set to default in the menu,
MAME will look for gamename\cross#.png and then cross#.png in the
specified crsshairpath, where # is the player number. Failing that,
MAME will use built-in default crosshairs.

Core Output Directory Options
-----------------------------

-cfg_directory <path>

Specifies a single directory where configuration files are stored.
Configuration files store user configurable settings that are read at
startup and written when MAME exits. The default is 'cfg' (that is,
a directory "cfg" in the same directory as the MAME executable). If
this directory does not exist, it will be automatically created.

-nvram_directory <path>

Specifies a single directory where NVRAM files are stored. NVRAM files
store the contents of EEPROM and non-volatile RAM (NVRAM) for games
which used this type of hardware. This data is read at startup and
written when MAME exits. The default is 'nvram' (that is, a directory
"nvram" in the same directory as the MAME executable). If this
directory does not exist, it will be automatically created.

-memcard_directory <path>

Specifies a single directory where memory card files are stored.
Memory card files store the contents of removable memory cards for
games which used this type of hardware. This data is read and written
under control of the user via the "Memory Card" menu in the user
interface. The default is 'memcard' (that is, a directory "memcard"
in the same directory as the MAME executable). If this directory does
not exist, it will be automatically created.

-input_directory <path>

Specifies a single directory where input recording files are stored.
Input recordings are created via the -record option and played back
via the -playback option. The default is 'inp' (that is, a directory
"inp" in the same directory as the MAME executable). If this directory
does not exist, it will be automatically created.

-state_directory <path>

Specifies a single directory where save state files are stored. Save
state files are read and written either upon user request, or when
using the -autosave option. The default is 'sta' (that is, a directory
"sta" in the same directory as the MAME executable). If this directory
does not exist, it will be automatically created.

-snapshot_directory <path>

Specifies a single directory where screen snapshots are stored, when
requested by the user. The default is 'snap' (that is, a directory
"snap" in the same directory as the MAME executable). If this
directory does not exist, it will be automatically created.

-diff_directory <path>

Specifies a single directory where hard drive differencing files are
stored. Hard drive differencing files store any data that is written
back to a hard disk image, in order to preserve the original image.
The differencing files are created at startup when a game with a hard
disk image. The default is 'diff' (that is, a directory "diff" in the
same directory as the MAME executable). If this directory does not
exist, it will be automatically created.

-comment_directory <path>

Specifies a single directory where debugger comment files are stored.
Debugger comment files are written by the debugger when comments are
added to the disassembly for a game. The default is 'comments' (that
is, a directory "comments" in the same directory as the MAME
executable). If this directory does not exist, it will be
automatically created.

Core Filename Options
---------------------

-cheat_file <filename>

Specifies the name of the cheat database file. The default is
'cheat.dat'.

Core state/playback options
---------------------------

-state <slot>

Immediately after starting the specified game, will cause the save
state in the specified <slot> to be loaded.

-[no]autosave

When enabled, automatically creates a save state file when exiting
MAME and automatically attempts to reload it when later starting MAME
with the same game. This only works for games that have explicitly
enabled save state support in their driver. The default is OFF
(-noautosave).

-playback / -pb <filename>

Specifies a file from which to play back a series of game inputs. This
feature does not work reliably for all games, but can be used to watch
a previously recorded game session from start to finish. In order to
make things consistent, you should only record and playback with all
configuration (.cfg), NVRAM (.nv), and memory card files deleted. The
default is NULL (no playback).

-record / -rec <filename>

Specifies a file to record all input from a game session. This can be
used to record a game session for later playback. This feature does
not work reliably for all games, but can be used to watch a previously
recorded game session from start to finish. In order to make things
consistent, you should only record and playback with all configuration
(.cfg), NVRAM (.nv), and memory card files deleted. The default is
NULL (no recording).

-snapname <name>

Describes how MAME should name files for snapshots. <name> is a string
that provides a template that is used to generate a filename. Three
simple substitutions are provided: the / character represents the
path separator on any target platform (even Windows); the string %g
represents the driver name of the current game; and the string %i
represents an incrementing index. If %i is omitted, then each
snapshot taken will overwrite the previous one; otherwise, MAME will
find the next empty value for %i and use that for a filename. The
default is %g/%i, which creates a separate folder for each game,
and names the snapshots under it starting with 0000 and increasing
from there.

-snapsize <width>x<height>

Hard-codes the size for snapshots and movie recording. By default,
MAME will create snapshots at the game's current resolution in raw
pixels, and will create movies at the game's starting resolution in
raw pixels. If you specify this option, then MAME will create both
snapshots and movies at the size specified, and will bilinear filter
the result. Note that this size does not automatically rotate if the
game is vertically oriented. The default is 'auto'.

-snapview <viewname>

Specifies the view to use when rendering snapshots and movies. By
default, both use a special 'internal' view, which renders a separate
snapshot per screen or renders movies only of the first screen. By
specifying this option, you can override this default behavior and
select a single view that will apply to all snapshots and movies.
Note that <viewname> does not need to be a perfect match; rather, it
will select the first view whose name matches all the characters
specified by <viewname>. For example, -snapview native will match the
"Native (15:14)" view even though it is not a perfect match.
<viewname> can also be 'auto', which selects the first view with all
screens present. The default value is 'internal'.

-mngwrite <filename>

Writes each video frame to the given <filename> in MNG format,
producing an animation of the game session. Note that -mngwrite only
writes video frames; it does not save any audio data. Use -wavwrite
for that, and reassemble the audio/video using offline tools. The
default is NULL (no recording).

-aviwrite <filename>

Stream video and sound data to the given <filename> in AVI format,
producing an animation of the game session complete with sound. The
default is NULL (no recording).

-wavwrite <filename>

Writes the final mixer output to the given <filename> in WAV format,
producing an audio recording of the game session. The default is
NULL (no recording).

-[no]burnin

Tracks brightness of the screen during play and at the end of
emulation generates a PNG that can be used to simulate burn-in
effects on other games. The resulting PNG is created such that the
least used-areas of the screen are fully white (since burned-in areas
are darker, all other areas of the screen must be lightened a touch).
The intention is that this PNG can be loaded via an artwork file with
a low alpha (e.g, 0.1-0.2 seems to work well) and blended over the
entire screen. The PNG files are saved in the snap directory under
the gamename/burnin-<screen.name>.png. The default is OFF (-noburnin).

Core performance options
------------------------

-[no]autoframeskip / -[no]afs

Automatically determines the frameskip level while you're playing the
game, adjusting it constantly in a frantic attempt to keep the game
running at full speed. Turning this on overrides the value you have
set for -frameskip below. The default is OFF (-noautoframeskip).

-frameskip / -fs <level>

Specifies the frameskip value. This is the number of frames out of
every 12 to drop when running. For example, if you say -frameskip 2,
then MAME will display 10 out of every 12 frames. By skipping those
frames, you may be able to get full speed in a game that requires more
horsepower than your computer has. The default value is -frameskip 0,
which skips no frames.

-seconds_to_run / -str <seconds>

This option can be used for benchmarking and automated testing. It tells
MAME to stop execution after a fixed number of seconds. By combining
this with a fixed set of other command line options, you can set up a
consistent environment for benchmarking MAME performance. In addition,
upon exit, the -str option will write a screenshot called final.png
to the game's snapshot directory.

-[no]throttle

Configures the default thottling setting. When throttling is on, MAME
attempts to keep the game running at the game's intended speed. When
throttling is off, MAME runs the game as fast as it can. Note that the
fastest speed is more often than not limited by your graphics card,
especially for older games. The default is ON (-throttle).

-[no]sleep

Allows MAME to give time back to the system when running with -throttle.
This allows other programs to have some CPU time, assuming that the
game isn't taxing 100% of your CPU resources. This option can
potentially cause hiccups in performance if other demanding programs
are running. The default is ON (-sleep).

-speed <factor>

Changes the way MAME throttles gameplay such that the game runs at some
multiplier of the original speed. A <factor> of 1.0 means to run the
game at its normal speed. A <factor> of 0.5 means run at half speed,
and a <factor> of 2.0 means run at 2x speed. Note that changing this
value affects sound playback as well, which will scale in pitch
accordingly. The internal resolution of the fraction is two decimal
places, so a value of 1.002 is the same as 1.0. The default is 1.0.

-[no]refreshspeed / -[no]rs

Allows MAME to dynamically adjust the gameplay speed such that it does
not exceed the slowest refresh rate for any targeted monitors in your
system. Thus, if you have a 60Hz monitor and run a game that is
actually designed to run at 60.6Hz, MAME will dynamically change the
speed down to 99% in order to prevent sound hiccups or other
undesirable side effects of running at a slower refresh rate. The
default is OFF (-norefreshspeed).

Core rotation options
---------------------

-[no]rotate

Rotate the game to match its normal state (horizontal/vertical). This
ensures that both vertically and horizontally oriented games show up
correctly without the need to rotate your monitor. If you want to keep
the game displaying 'raw' on the screen the way it would have in the
arcade, turn this option OFF. The default is ON (-rotate).

-[no]ror
-[no]rol

Rotate the game screen to the right (clockwise) or left (counter-
clockwise) relative to either its normal state (if -rotate is
specified) or its native state (if -norotate is specified). The
default for both of these options is OFF (-noror -norol).

-[no]flipx
-[no]flipy

Flip (mirror) the game screen either horizontally (-flipx) or
vertically (-flipy). The flips are applied after the -rotate and
-ror/-rol options are applied. The default for both of these options
is OFF (-noflipx -noflipy).

-[no]autoror
-[no]autorol

These options are designed for use with pivoting screens that only
pivot in a single direction. If your screen only pivots clockwise,
use -autorol to ensure that the game will fill the screen either
horizontally or vertically in one of the directions you can handle.
If your screen only pivots counter-clockwise, use -autoror.

Core artwork options
--------------------

-[no]artwork_crop / -[no]artcrop

Enable cropping of artwork to the game screen area only. This works
best with -video gdi or -video d3d, and means that vertically oriented
games running full screen can display their artwork to the left and
right sides of the screen. This does not work with -video ddraw
because of the way the game screens are rendered and scaled after the
fact. This option can also be controlled via the Video Options menu in
the user interface. The default is OFF (-noartwork_crop).

-[no]use_backdrops / -[no]backdrop

Enables/disables the display of backdrops. The default is ON
(-use_backdrops).

-[no]use_overlays / -[no]overlay

Enables/disables the display of overlays. The default is ON
(-use_overlays).

-[no]use_bezels / -[no]bezel

Enables/disables the display of bezels. The default is ON
(-use_bezels).

Core screen options
-------------------

-brightness <value>

Controls the default brightness, or black level, of the game screens.
This option does not affect the artwork or other parts of the display.
Using the MAME UI, you can individually set the brightness for each
game screen; this option controls the initial value for all visible
game screens. The standard value is 1.0. Selecting lower values (down
to 0.1) will produce a darkened display, while selecting higher values
(up to 2.0) will give a brighter display. The default is 1.0.

-contrast <value>

Controls the contrast, or white level, of the game screens. This
option does not affect the artwork or other parts of the display.
Using the MAME UI, you can individually set the contrast for each
game screen; this option controls the initial value for all visible
game screens. The standard value is 1.0. Selecting lower values (down
to 0.1) will produce a dimmer display, while selecting higher values
(up to 2.0) will give a more saturated display. The default is 1.0.

-gamma <value>

Controls the gamma, which produces a potentially nonlinear black to
white ramp, for the game screens. This option does not affect the
artwork or other parts of the display. Using the MAME UI, you can
individually set the gamma for each game screen; this option controls
the initial value for all visible game screens. The standard value is
1.0, which gives a linear ramp from black to white. Selecting lower
values (down to 0.1) will increase the nonlinearity toward black,
while selecting higher values (up to 3.0) will push the nonlinearity
toward white. The default is 1.0.

-pause_brightness <value>

This controls the brightness level when MAME is paused. The default
value is 0.65.

Core vector options
-------------------

-[no]antialias / -[no]aa

Enables antialiased line rendering for vector games. The default is ON
(-antialias).

-beam <width>

Sets the width of the vectors. This is a scaling factor against the
standard vector width. A value of 1.0 will keep the default vector
line width. Smaller values will reduce the width, and larger values
will increase the width. The default is 1.0.

-flicker <value>

Simulates a vector "flicker" effect, similar to a vector monitor that
needs adjustment. This option requires a float argument in the range
of 0.00 - 100.00 (0=none, 100=maximum). The default is 0.

Core sound options
------------------

-[no]sound

Enable or disable sound altogether. The default is ON (-sound).

-samplerate <value> / -sr <value>

Sets the audio sample rate. Smaller values (e.g. 11025) cause lower
audio quality but faster emulation speed. Higher values (e.g. 48000)
cause higher audio quality but slower emulation speed. The default is
48000.

-[no]samples

Use samples if available. The default is ON (-samples).

-volume / -vol <value>

Sets the startup volume. It can later be changed with the user
interface (see Keys section). The volume is an attenuation in dB:
e.g., "-volume -12" will start with -12dB attenuation. The default
is 0.

Core input options
------------------

-[no]coin_lockout / -[no]coinlock

Enables simulation of the "coin lockout" feature that is implmeneted
on a number of game PCBs. It was up to the operator whether or not
the coin lockout outputs were actually connected to the coin
mechanisms. If this feature is enabled, then attempts to enter a coin
while the lockout is active will fail and will display a popup message
in the user interface. If this feature is disabled, the coin lockout
signal will be ignored. The default is ON (-coin_lockout).

-ctrlr <controller>

Enables support for special controllers. Configuration files are
loaded from the ctrlrpath. They are in the same format as the .cfg
files that are saved, but only control configuration data is read
from the file. The default is NULL (no controller file).

-[no]mouse

Controls whether or not MAME makes use of mouse controllers. When
this is enabled, you will likely be unable to use your mouse for other
purposes until you exit or pause the game. The default is OFF
(-nomouse).

-[no]joystick / -[no]joy

Controls whether or not MAME makes use of joystick/gamepad controllers.
When this is enabled, MAME will ask DirectInput about which
controllers are connected. The default is OFF (-nojoystick).

-[no]lightgun / -[no]gun

Controls whether or not MAME makes use of lightgun controllers.
Note that most lightguns map to the mouse, so using -lightgun and
-mouse together may produce strange results. The default is OFF
(-nolightgun).

-[no]multikeyboard / -[no]multikey

Determines whether MAME differentiates between multiple keyboards.
Some systems may report more than one keyboard; by default, the data
from all of these keyboards is combined so that it looks like a single
keyboard. Turning this option on will enable MAME to report keypresses
on different keyboards independently. The default is OFF
(-nomultikeyboard).

-[no]multimouse

Determines whether MAME differentiates between multiple mice. Some
systems may report more than one mouse device; by default, the data
from all of these mice is combined so that it looks like a single
mouse. Turning this option on will enable MAME to report mouse
movement and button presses on different mice independently. The
default is OFF (-nomultimouse).

-[no]steadykey / -[no]steady

Some games require two or more buttons to be pressed at exactly the
same time to make special moves. Due to limitations in the keyboard
hardware, it can be difficult or even impossible to accomplish that
using the standard keyboard handling. This option selects a different
handling that makes it easier to register simultaneous button presses,
but has the disadvantage of making controls less responsive. The
default is OFF (-nosteadykey)

-[no]offscreen_reload / -[no]reload

Controls whether or not MAME treats a second button input from a
lightgun as a reload signal. In this case, MAME will report the gun's
position as (0,MAX) with the trigger held, which is equivalent to an
offscreen reload. This is only needed for games that required you to
shoot offscreen to reload, and then only if your gun does not support
off screen reloads. The default is OFF (-nooffscreen_reload).

-joystick_map <map> / -joymap <map>

Controls how joystick values map to digital joystick controls. MAME
accepts all joystick input from the system as analog data. For true
analog joysticks, this needs to be mapped down to the usual 4-way or
8-way digital joystick values. To do this, MAME divides the analog
range into a 9x9 grid. It then takes the joystick axis position (for
X and Y axes only), maps it to this grid, and then looks up a
translation from a joystick map. This parameter allows you to specify
the map. The default is 'auto', which means that a standard 8-way,
4-way, or 4-way diagonal map is selected automatically based on the
input port configuration of the current game.

Maps are defined as a string of numbers and characters. Since the grid
is 9x9, there are a total of 81 characters necessary to define a
complete map. Below is an example map for an 8-way joystick:

777888999 Note that the numeric digits correspond to the keys
777888999 on a numeric keypad. So '7' maps to up+left, '4' maps
777888999 to left, '5' maps to neutral, etc. In addition to the
444555666 numeric values, you can specify the character 's',
444555666 which means "sticky". In this case, the value of the
444555666 map is the same as it was the last time a non-sticky
111222333 value was read.
111222333
111222333

To specify the map for this parameter, you can specify a string of
rows separated by a '.' (which indicates the end of a row), like so:

777888999.777888999.777888999.444555666.444555666.444555666.
111222333.111222333.111222333

However, this can be reduced using several shorthands supported by the
<map> parameter. If information about a row is missing, then it is
assumed that any missing data in columns 5-9 are left/right symmetric
with data in columns 0-4; and any missing data in colums 0-4 is
assumed to be copies of the previous data. The same logic applies to
missing rows, except that up/down symmetry is assumed.

By using these shorthands, the 81 character map can be simply
specified by this 11 character string: 7778...4445

Looking at the first row, 7778 is only 4 characters long. The 5th
entry can't use symmetry, so it is assumed to be equal to the previous
character '8'. The 6th character is left/right symmetric with the 4th
character, giving an '8'. The 7th character is left/right symmetric
with the 3rd character, giving a '9' (which is '7' with left/right
flipped). Eventually this gives the full 777888999 string of the row.

The second and third rows are missing, so they are assumed to be
identical to the first row. The fourth row decodes similarly to the
first row, producing 444555666. The fifth row is missing so it is
assumed to be the same as the fourth.

The remaining three rows are also missing, so they are assumed to be
the up/down mirrors of the first three rows, giving three final rows
of 111222333.

-joystick_deadzone <value> / -joy_deadzone <value> / -jdz <value>

If you play with an analog joystick, the center can drift a little.
joystick_deadzone tells how far along an axis you must move before the
axis starts to change. This option expects a float in the range of
0.0 to 1.0. Where 0 is the center of the joystick and 1 is the outer
limit. The default is 0.3.

-joystick_saturation <value> / joy_saturation <value> / -jsat <value>

If you play with an analog joystick, the ends can drift a little,
and may not match in the +/- directions. joystick_saturation tells how
far along an axis movement change will be accepted before it reaches
the maximum range. This option expects a float in the range of 0.0 to
1.0, where 0 is the center of the joystick and 1 is the outer limit.
The default is 0.85.

Core input automatic enable options
-----------------------------------

-paddle_device <keyboard|mouse|joystick|lightgun|none> / -paddle
-adstick_device <keyboard|mouse|joystick|lightgun|none> / -adstick
-pedal_device <keyboard|mouse|joystick|lightgun|none> / -pedal
-dial_device <keyboard|mouse|joystick|lightgun|none> / -dial
-trackball_device <keyboard|mouse|joystick|lightgun|none> / -trackball
-lightgun_device <keyboard|mouse|joystick|lightgun|none>
-positional_device <keyboard|mouse|joystick|lightgun|none>

Each of these options controls autoenabling the mouse, joystick, or
lightgun depending on the presence of a particular class of analog
control for a particular game. For example, if you specify the option
-paddle mouse, then any game that has a paddle control will
automatically enable mouse controls just as if you had explicitly
specified -mouse. Note that these controls override the values of
-[no]mouse, -[no]joystick, etc.

Debugging options
-----------------

-[no]log

Creates a file called error.log which contains all of the internal
log messages generated by the MAME core and game drivers. The default
is OFF (-nolog).

-[no]verbose / -[no]v

Displays internal diagnostic information. This information is very
useful for debugging problems with your configuration. IMPORTANT: when
reporting bugs, please run with mame -verbose and include the
resulting information. The default is OFF (-noverbose).

-[no]update_in_pause

Enables updating of the main screen bitmap while the game is paused.
This means that the VIDEO_UPDATE callback will be called repeatedly
during pause, which can be useful for debugging. The default is OFF
(-noupdate_in_pause).

-[no]debug

Activates the integrated debugger. By default, the debugger is entered
by pressing the tilde (~) key during emulation. It is also entered
immediately at startup. The default is OFF (-nodebug).

-debugscript <filename>

Specifies a file that contains a list of debugger commands to execute
immediately upon startup. The default is NULL (no commands).

Core misc options
-----------------

-bios <biosname>

Specifies the specific BIOS to use with the current game, for game
systems that make use of a BIOS. The -listxml output will list all of
the possible BIOS names for a game. The default is 'default'.

-[no]cheat / -[no]c

Enables the reading of the cheat database, if present, and the Cheat
menu in the user interface. The default is OFF (-nocheat).

-[no]skip_gameinfo

Forces MAME to skip displaying the game info screen. The default is
OFF (-noskip_gameinfo).

This file describes Windows-specific usage information about MAME. It is
intended to cover aspects of using and configuring the program that are
specific to running MAME from the command line on a Windows-based system.
For common options that apply to all systems, please see config.txt.

Default Keys
------------

In addition to the keys described in config.txt, the following additional
keys are defined for Windows versions of MAME:

Alt+Enter Toggles between full-screen and windowed mode.

Windows debugging options
-------------------------

-[no]oslog

Outputs the error.log data to the Windows debugger. This can be used at
the same time as -log to output the log data to both targets as well.
Default is OFF (-nooslog).

Windows performance options
---------------------------

-priority <priority>

Sets the thread priority for the MAME threads. By default the priority
is left alone to guarantee proper cooperation with other applications.
The valid range is -15 to 1, with 1 being the highest priority. The
default is 0 (NORMAL priority).

-[no]multithreading / -[no]mt

Enables multithreading within MAME. At the moment, this causes the
window and all DirectDraw/Direct3D code to execute on a second thread,
which can improve performance on hyperthreaded and multicore systems.
The default is OFF (-nomultithreading).

-numprocessors <auto|value>
Specify the number of processors to use for work queues. Specifying
"auto" will use the value reported by the system or environment
variable OSDPROCESSORS. To avoid abuse, this value is internally limited
to 4 times the number of processors reported by the system.
The default is "auto".

Windows video options
---------------------

-video <gdi|ddraw|d3d|none>

Specifies which video subsystem to use for drawing. By specifying 'gdi'
here, you tell MAME to render video using standard Windows graphics
drawing calls. This is the slowest but most compatible option.
Specifying 'ddraw' instructs MAME to use DirectDraw for rendering.
This causes MAME to render everything at a lower resolution and then
upscale the results at the end. This produces high performance,
especially on older or low-power video cards, but has a noticeably
lower output quality. Specifying 'd3d' tells MAME to use Direct3D for
rendering. This produces the highest quality output and enables all
rendering options. It is recommended if you have a recent (2002+)
video card. The final option 'none' displays no windows and does no
drawing. This is primarily present for doing CPU benchmarks without
the overhead of the video system. The default is d3d.

-numscreens <count>

Tells MAME how many output windows to create. For most games, a single
output window is all you need, but some games originally used multiple
screens. Each screen (up to 4) has its own independent settings for
physical monitor, aspect ratio, resolution, and view, which can be
set using the options below. The default is 1.

-[no]window

Run MAME in either a window or full screen. The default is OFF
(-nowindow).

-[no]maximize / -[no]max

Controls initial window size in windowed mode. If it is set on, the
window will initially be set to the maximum supported size when you
start MAME. If it is turned off, the window will start out at the
smallest supported size. This option only has an effect when the
-window option is used. The default is ON (-maximize).

-[no]keepaspect / -[no]ka

Enables aspect ratio enforcement. When this option is on, the game's
proper aspect ratio (generally 4:3 or 3:4) is enforced, so you get the
game looking like it should. When running in a window with this option
on, you can only resize the window to the proper aspect ratio, unless
you are holding down the CONTROL key. By turning the option off, the
aspect ratio is allowed to float. In full screen mode, this means that
all games will stretch to the full screen size (even vertical games).
In window mode, it means that you can freely resize the window without
any constraints. The default is ON (-keepaspect).

-prescale <amount>

Controls the size of the screen images when they are passed off to the
graphics system for scaling. At the minimum setting of 1, the screen
is rendered at its original resolution before being scaled. At higher
settings, the screen is expanded by a factor of <amount> before being
scaled. With -video ddraw or -video d3d, this produces a less blurry
image at the expense of some speed. In -video ddraw mode, this also
increases the effective resolution of non-screen elements such as
artwork and fonts. The default is 1.

-effect <filename>

Specifies a single PNG file that is used as an overlay over any game
screens in the video display. This PNG file is assumed to live in the
root of one of the artpath directories. The pattern in the PNG file is
repeated both horizontally and vertically to cover the entire game
screen areas (but not any external artwork), and is rendered at
the target resolution of the game image. For -video gdi and -video d3d
modes, this means that one pixel in the PNG will map to one pixel on
your output display. For -video ddraw, this means that one pixel in the
PNG will map to one pixel in the prescaled game screen. If you wish to
use an effect that requires mapping n PNG pixels to each game screen
pixel with -video ddraw, you need to specify a -prescale factor of n as
well. The RGB values of each pixel in the PNG are multiplied against the
RGB values of the target screen. The default is 'none', meaning no
effect.

-[no]waitvsync

Waits for the refresh period on your computer's monitor to finish
before starting to draw video to your screen. If this option is off,
MAME will just draw to the screen at any old time, even in the middle
of a refresh cycle. This can cause "tearing" artifacts, where the top
portion of the screen is out of sync with the bottom portion. Tearing
is not noticeable on all games, and some people hate it more than
others. However, if you turn this option on, you will waste more of
your CPU cycles waiting for the proper time to draw, so you will see a
performance hit. You should only need to turn this on in windowed mode.
In full screen mode, it is only needed if -triplebuffer does not
remove the tearing, in which case you should use -notriplebuffer
-waitvsync. Note that this option does not work with -video gdi mode.
The default is OFF (-nowaitvsync).

-[no]syncrefresh

Enables speed throttling only to the refresh of your monitor. This
means that the game's actual refresh rate is ignored; however, the
sound code still attempts to keep up with the game's original refresh
rate, so you may encounter sound problems. This option is intended
mainly for those who have tweaked their video card's settings to
provide carefully matched refresh rate options. Note that this option
does not work with -video gdi mode.The default is OFF (-nosyncrefresh).

DirectDraw-specific options
---------------------------

-[no]hwstretch / -[no]hws

When enabled, MAME uses the hardware stretching abilities of your
video card to scale the game image and associated artwork to the
target resolution. Depending on the quality of your graphic card and
its drivers, this may be a fractional, antialiased scaling (nice) or
an integer, blocky scaling (not so nice), in which case you might want
to disable this option. In addition, if you have configured specific
arcade-like video modes for MAME and don't want MAME to perform any
non-integral scaling of the image, you should also disable this option.
The default is ON (-hwstretch).

Direct3D-specific options
-------------------------

-d3dversion <version>

MAME supports both Direct3D 9 and Direct3D 8 for maximum compatibility.
By default, it will automatically detect which one it can use and use
that version exclusively. You can override MAME's selection with this
option. It is primarily intended as a means for the MAME developers to
test compatibility with older hardware; for the most part, there is no
reason to alter this setting. The default is 9.

-[no]filter / -[no]d3dfilter / -[no]flt

Enable bilinear filtering on the game screen graphics. When disabled,
point filtering is applied, which is crisper but leads to scaling
artifacts. If you don't like the filtered look, you are probably better
off increasing the -prescale value rather than turning off filtering
altogether. The default is ON (-filter).

Per-window options
------------------

-screen <display>
-screen0 <display>
-screen1 <display>
-screen2 <display>
-screen3 <display>

Specifies which physical monitor on your system you wish to have each
window use by default. In order to use multiple windows, you must have
increased the value of the -numscreens option. The name of each
display in your system can be determined by running MAME with the
-verbose option. The display names are typically in the format of:
\\.\DISPLAYn, where 'n' is a number from 1 to the number of connected
monitors. The default value for these options is 'auto', which means
that the first window is placed on the first display, the second
window on the second display, etc.

The -screen0, -screen1, -screen2, -screen3 parameters apply to the
specific window. The -screen parameter applies to all windows. The
window-specific options override values from the all window option.

-aspect <width:height> / -screen_aspect <num:den>
-aspect0 <width:height>
-aspect1 <width:height>
-aspect2 <width:height>
-aspect3 <width:height>

Specifies the physical aspect ratio of the physical monitor for each
window. In order to use multiple windows, you must have increased the
value of the -numscreens option. The physical aspect ratio can be
determined by measuring the width and height of the visible screen
image and specifying them separated by a colon. The default value for
these options is 'auto', which means that MAME assumes the aspect
ratio is proportional to the number of pixels in the desktop video
mode for each monitor.

The -aspect0, -aspect1, -aspect2, -aspect3 parameters apply to the
specific window. The -aspect parameter applies to all windows. The
window-specific options override values from the all window option.

-resolution <widthxheight[@refresh]> / -r <widthxheight[@refresh]>
-resolution0 <widthxheight[@refresh]> / -r0 <widthxheight[@refresh]>
-resolution1 <widthxheight[@refresh]> / -r1 <widthxheight[@refresh]>
-resolution2 <widthxheight[@refresh]> / -r2 <widthxheight[@refresh]>
-resolution3 <widthxheight[@refresh]> / -r3 <widthxheight[@refresh]>

Specifies an exact resolution to run in. In full screen mode, MAME
will try to use the specific resolution you request. The width and
height are required; the refresh rate is optional. If omitted or
set to 0, MAME will determine the mode auomatically. For example,
-resolution 640x480 will force 640x480 resolution, but MAME is free to
choose the refresh rate. Similarly, -resolution 0x0@60 will force a
60Hz refresh rate, but allows MAME to choose the resolution. The
string "auto" is also supported, and is equivalent to 0x0@0. In window
mode, this resolution is used as a maximum size for the window. This
option requires the -switchres option as well in order to actually
enable resolution switching with -video ddraw or -video d3d. The
default value for these options is 'auto'.

The -resolution0, -resolution1, -resolution2, -resolution3 parameters
apply to the specific window. The -resolution parameter applies to all
windows. The window-specific options override values from the all
window option.

-view <viewname>
-view0 <viewname>
-view1 <viewname>
-view2 <viewname>
-view3 <viewname>

Specifies the initial view setting for each window. The <viewname>
does not need to be a perfect match; rather, it will select the first
view whose name matches all the characters specified by <viewname>.
For example, -view native will match the "Native (15:14)" view even
though it is not a perfect match. The value 'auto' is also supported,
and requests that MAME perform a default selection. The default value
for these options is 'auto'.

The -view0, -view1, -view2, -view3 parameters apply to the
specific window. The -view parameter applies to all windows. The
window-specific options override values from the all window option.

Full screen options
-------------------

-[no]triplebuffer / -[no]tb

Enables or disables "triple buffering". Normally, MAME just draws
directly to the screen, without any fancy buffering. But with this
option enabled, MAME creates three buffers to draw to, and cycles
between them in order. It attempts to keep things flowing such that one
buffer is currently displayed, the second buffer is waiting to be
displayed, and the third buffer is being drawn to. -triplebuffer will
override -waitvsync, if the buffer is sucessfully created. This option
does not work with -video gdi. The default is OFF (-notriplebuffer).

-[no]switchres

Enables resolution switching. This option is required for the
-resolution* options to switch resolutions in full screen mode. On
modern video cards, there is little reason to switch resolutions unless
you are trying to achieve the "exact" pixel resolutions of the original
games, which requires significant tweaking. This option is also useful
on LCD displays, since they run with a fixed resolution and switching
resolutions on them is just silly. This option does not work with
-video gdi. The default is OFF (-noswitchres).

-full_screen_brightness / -fsb <value>

Controls the brightness, or black level, of the entire display. The
standard value is 1.0. Selecting lower values (down to 0.1) will produce
a darkened display, while selecting higher values (up to 2.0) will
give a brighter display. Note that not all video cards have hardware to
support this option. This option does not work with -video gdi. The
default is 1.0.

-full_screen_contrast / -fsc <value>

Controls the contrast, or white level, of the entire display. The
standard value is 1.0. Selecting lower values (down to 0.1) will produce
a dimmer display, while selecting higher values (up to 2.0) will
give a more saturated display. Note that not all video cards have
hardware to support this option. This option does not work with
-video gdi. The default is 1.0.

-full_screen_gamma / -fsg <value>

Controls the gamma, which produces a potentially nonlinear black to
white ramp, for the entire display. The standard value is 1.0, which
gives a linear ramp from black to white. Selecting lower values (down
to 0.1) will increase the nonlinearity toward black, while selecting
higher values (up to 3.0) will push the nonlinearity toward white. Note
that not all video cards have hardware to support this option. This
option does not work with -video gdi. The default is 1.0.

Windows sound options
---------------------

-audio_latency <value>

This controls the amount of latency built into the audio streaming. By
default MAME tries to keep the DirectSound audio buffer between 1/5 and
2/5 full. On some systems, this is pushing it too close to the edge,
and you get poor sound sometimes. The latency parameter controls the
lower threshold. The default is 1 (meaning lower=1/5 and upper=2/5).
Set it to 2 (-audio_latency 2) to keep the sound buffer between 2/5 and
3/5 full. If you crank it up to 4, you can definitely notice the lag.

Input device options
--------------------

-[no]dual_lightgun / -[no]dual

Controls whether or not MAME attempts to track two lightguns connected
at the same time. This option requires -lightgun. This option is a hack
for supporting older dual lightgun setups. If you have multiple
lightguns connected, you will probably just need to enable -mouse and
configure each lightgun independently. The default is OFF
(-nodual_lightgun).


.topic 0x80b904b9
Selects appropriate host controller for emulated controls.
.topic 0x809f0405
Enables anti-aliasing of vector lines providing a smoother look.
.topic 0x809e03fa
Enables cropping external artwork down to selected window or resolution
.topic 0x80bb04c4
Enables manual override of MameUI's 4:3 or 3:4 aspect ratio calculation.  Rarely used.
.topic 0x80bb0483
Enables manual override of MameUI's 4:3 or 3:4 aspect ratio calculation.  Rarely used.
.topic 0x80bb0482
Enables manual override of MameUI's 4:3 or 3:4 aspect ratio calculation.  Rarely used.
.topic 0x809b04a2
Selects the level of audio latency, adjusting this can often eliminate desync of the sound and associated scratchiness.
.topic 0x809c0449
Enables automatic frame skipping during emulation attempting to keep at 100%.
.topic 0x809e040a
Enables the backdrops of artwork in supported games.
.topic 0x809f0406
Selects the width of the vector lines in vector games.
.topic 0x809e03fd
Enables the bezel artwork in supported games.
.topic 0x809e04b1
Selects a particular BIOS in a driver family or individual games e.g. NeoGeo.
.topic 0x809a0400
Selects the brightness level of the screen [but not artwork or UI].
.topic 0x80ad0486
Enables programmatically broadcasting the game being played to attached devices.
.topic 0x809e03f8
Enables cheat capability using the in-game [tab] menu.
.topic 0x809e04d6
Enables arcade operator coin lockout behaviour.
.topic 0x809a0402
Selects the contrast level of the screen [but not artwork or UI].
.topic 0x80ad04a6
.topic 0x809a04a0
Enables bilinear filtering during image stretch.
.topic 0x809a04a3
Selects the version of Direct3D to use, 9 by default.
.topic 0x80bc04cf
.topic 0x809d0469
Selects .\ctrlr\*.cfg files to use for custom controller mappings.
.topic 0x80b904bb
Selects appropriate host controller for emulated controls.
.topic 0x809d04af
Enables support for dual light guns.
.topic 0x809e0499
Enables MameUI to use the contents of the \sav directory to restart a game at last quit.
.topic 0x80a90455
Enables filtering out clones, leaving only parent games showing.
.topic 0x80a9046d
Allows typing in text to filter, including: gamename, description, driver, and manufacturer.
.topic 0x80a9049c
Enables filtering out horizontal games, leaving only vertical games showing.
.topic 0x80a90454
Enables filtering out non-working games, leaving only working games showing.
.topic 0x80a9045b
Enables filtering out parent games, leaving only clones showing.
.topic 0x80a90452
Enables filtering out raster games, leaving only vector games showing.
.topic 0x80a90453
Enables filtering out unavailable games, leaving only available games showing.
.topic 0x80a90451
Enables filtering out vector games, leaving only raster games showing.
.topic 0x80a90460
Enables filtering out vertical games, leaving only horizontal games showing.
.topic 0x80a9045c
Enables filtering out working games, leaving only non-working games showing.
.topic 0x809f0407
Selects the flicker level for vector lines.
.topic 0x809a0408
Enables flipping the screen horizontally.
.topic 0x809a0409
Enables flipping the screen vertically.
.topic 0x809c03f1
Selects the number of frames skipped during emulation.
.topic 0x809c0444
Selects the level of the full-screen brightness including artwork and UI.
.topic 0x809c040e
Selects the level of the full-screen contrast including artwork and UI.
.topic 0x809c0442
Selects the level of the full-screen gamma including artwork and UI.
.topic 0
Attempts to remove the titlebar from a windowed game.
.topic 0x809a03ff
Selects the gamma level of the screen [but not artwork or UI].
.topic 0x80ad04a1
Enables hiding the mouse cursor on launch, useful for fullscreen UI w/ keyboard controlled cabinets, etc.
.topic 0x809e049f
Selects MameUI's thread priority, default is 0.  Running at real-time 1 is not recommended for potential control lag and sound desync.
.topic 0x806504cb
Enables display of the history.dat file if present in the root directory.
.topic 0x809a046c
Enables hardware stretch for DirectDraw.
.topic 0x809d0487
Selects the level for an analogue joystick's deadzone.
.topic 0x80ad0485
Enables controlling the MameUI GUI with a gamepad.
.topic 0x809d03eb
Enables gamepad control within games.
.topic 0x809d048b
Selects the level for an analogue joystick's saturation.
.topic 0x809a0474
Enables creating windows for games that are way out of proportion e.g. thick, or tall.
.topic 0x80b204d1
.topic 0x80b204d4
.topic 0x809d048f
Enables lightgun devices.
.topic 0x80b904bd
Selects appropriate host controller for emulated controls.
.topic 0x80bc03f9
Enables programmatic logging as a game is played, saved out to file.
.topic 0x809a046e
Enables maximizing the game window or creating a very small window.
.topic 0x80b904be
Enables mouse support within games.
.topic 0x809e04c3
Enables handing off the final video blit to a second thread.  Still experimental [.118] and may cause issues.
.topic 0x80bb0404
Selects number of screens for MameUI to produce, windowed or multi-head physical monitors.
.topic 0x809e03fb
Enables art overlays in supported games.
.topic 0x80b904b8
Selects appropriate host controller for emulated controls.
.topic 0x809a049c
Selects level of brightness for screen when paused.
.topic 0x80b904ba
Selects appropriate host controller for emulated controls.
.topic 0x80b904bf
Selects appropriate host controller for emulated controls.
.topic 0x809a041f
Selects level of prescaling, the higher the number, the sharper the stretched filtered image.
.topic 0x809c044d
Enables resetting recent changes to the open tab.
.topic 0x80ad0492
Enables random GUI background selection on restart, *.png files in \bkground directory.
.topic 0x80bb047c
Selects host monitor refresh rate.
.topic 0x809c04d0
Enables altering the speed of gameplay to keep the refresh rate lower than the screen.
.topic 0x809d04ae
Enables reload functionality for second button on lightguns.
.topic 0x80aa04a2
Enables resetting of games to default settings.
.topic 0x809c0459
Enables resetting and clearing out the *.png effect chosen.
.topic 0x80aa049f
Enables resetting and clearing filters applied to folders.
.topic 0x80aa049d
Enables resetting games to use default options.
.topic 0x80aa049e
Enables resetting the options to fresh MameUI install settings.
.topic 0x809a03f2
Selects rotation setting for game display.  Use the Auto options for pivot LCDs.
.topic 0x809b0403
Selects the output samplerate for games.
.topic 0x809b0461
Enables the use of external samples.
.topic 0x80bb03f4
Selects screenX depends on the number of screens setting.  Allows different settings for each screen.
.topic 0x80bb03f7
Selects the physical monitor to display window or full-screen multi-head output.
.topic 0x809c04c2
Selects a *.png file in the \artwork directory for creating monitor-like effects.
.topic 0x80bb03ed
Selects from DirectX interrogated resolutions.
.topic 0x809e049a
Enables skipping game info screen when games started.
.topic 0x809c04d2
Selects the speed of gameplay, relative to realtime; smaller numbers are slower.
.topic 0x809e03fe
Enables giving more timeslices back to the system, allowing MameUI to 'play nicer' with other apps.
.topic 0x80ad0460
Enables running a mini-audit on application launch.
.topic 0x809d0480
Enables the steadykey hack.
.topic 0x80ad04a8
Enables increasing the size of the art pane items if the window is expanded.
.topic 0x80bb046d
Enables the switching of resolutions in fullscreen gaming.
.topic 0x809c0476
Enables syncing the game internal speed to the host monitor.
.topic 0x809a0478
Enables throttling games to run at 100%.
.topic 0x80b904bc
Selects appropriate host controller for emulated controls.
.topic 0x809c0467
Enables the use of triple buffering during fullscreen gaming.
.topic 0x809c0401
Enables reseting to default.
.topic 0x809d0477
Selects appropriate host controller for emulated controls.
.topic 0x809b046d
Enables sound within games.
.topic 0x809a04ca
Selects the default rendering method.
.topic 0x80bb03f6
Selects the view in use in games.
.topic 0x809b045d
Selects the volume level in games.
.topic 0x809c0471
Enables waiting for vertical sync.
.topic 0x809a0497
Enables running games in a window.