mame/docs/source/usingmame/mamemenus.rst
Vas Crabb 051c380fd1 Patched up some gaps in functionality and fixed some bugs.
ui: Added some missing functionality:
* Added an option to copy input device IDs to the relevant menus.
* Added an item for setting the software lists files path (-hashpath) to
  the folder setup menu.
* Allow pasting text from clipboard in most places that allow typing
  (searching, entering filenames, entering barcodes).
* Changed the software selection menu heading to be a bit less
  misleading.
* Made barcode menu less eager to rebuild itself unnecessarily, and
  removed some confusing and apparently pointless code.

Exposed more Lua bindings:
* Added low-level palette objects.
* Added indexed bitmap types.
* Added a bitmap method for extracting pixels from a rectangular area as a
  packed binary string.
* Changed screen device pixels method to return width and height in
  addition to the pixels.

osd: Added some functionality and cleaned up a little:
* Added a function for copying text to the clipboard.
* Moved function for converting Windows error codes to standard error
  conditions to winutil.cpp so it can be used from more places.
* Removed duplicate declaration of osd_get_clipboard_text and made the
  function noexcept (including fixing implementations).
* Made macOS implementation of osd_get_clipboard_text skip the encoding
  conversion if it finds UTF-8 text first.
* Changed the default -uimodekey setting so it doesn't lose the "not
  shift" that stops the default from interfering with UI paste.

Various bug fixes:
* util/unicode.cpp: Fixed the version of utf8_from_uchar that returns
  std::string blowing up on invalid codepoints.
* util/bitmap.h: Fixed wrapping constructors for indexed bitmaps taking
  the wrong parameter type (nothing was using them before).
* util/bitmap.cpp: Fixed potential use-after-free issues with bitmap
  palettes.
* emu/input.cpp, emu/inputdev.cpp: Log 1-based device numbers, matching
  what's shown in the internal UI and used in tokens in CFG files.
* emu/emumem.cpp: Added the bank tag to a fatal error message where it
  was missing.

docs: Reworked and expanded documentation on configuring stable
controller IDs.

For translators, the changes are quite minor:
* There's a menu item for copying a device ID to the clipboard, and
  associated success/failure messages.
* There's the menu item for setting the software list file search path.
* One of the lines in the software selection menu heading has changes as
  it could be interpreted as implying it showed a software list name.
2022-09-02 08:55:16 +10:00

287 lines
14 KiB
ReStructuredText
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

.. _menus:
MAME Menus
==========
.. contents:: :local:
.. _menus-intro:
Introduction
------------
To show the :ref:`main menu <menus-main>` while running an emulated system in
MAME, press the **Config Menu** key or button (**Tab** by default). If the
emulated system has keyboard inputs, you may need to press the **UI Toggle** key
or button (**Scroll Lock**, or **Forward Delete** on macOS, by default) to
enable user interface controls first. You can dismiss a menu by pressing the
**UI Cancel** key or button (**Escape** by default). Dismissing a menu will
return to its parent menu, or to the running system in the case of the main
menu.
You can hide a menu and return to the running system by pressing the **Config
Menu** key or button. Pressing the **Config Menu** key or button again will
jump back to the same menu. This is useful when testing changes to settings.
Emulated system inputs are ignored while menus are displayed. You can still
pause or resume the running system while most menus are displayed by pressing
the **Pause** key or button (**P** on the keyboard by default).
If you start MAME without specifying a system on the command line, the system
selection menu will be shown (assuming the
:ref:`ui option <mame-commandline-ui>` is set to **cabinet**). The system
selection menu is also shown if you select **Select New System** from the main
menu during emulation.
For more information on navigating menus, :ref:`see the relevant section
<ui-menus>`.
.. _menus-main:
Main menu
---------
The main menu is shown when you press the **Config Menu** key or button while
running an emulated system or while the system information screen is displayed.
It provides access to menus used to change settings, control various features,
and show information about the running system and MAME itself.
If you press the **Config Menu** key or button to show the main menu while the
system information screen is displayed, the emulated system will not start until
the main menu is dismissed (either by selecting **Start System**, pressing the
**UI Cancel** key or button, or pressing the **Config Menu** key or button).
This can be useful for mounting media images or changing DIP switches and
machine configuration settings before the emulated system starts.
Input Settings
Shows the :ref:`Input Settings <menus-inputopts>` menu, where you can assign
controls to emulated inputs, adjust analog control settings, control toggle
inputs, and test input devices.
DIP Switches
Shows the DIP Switches menu, where configuration switches for the running
system can be changed. This item is not shown if the running system has no
DIP switches.
Machine Configuration
Shows the Machine Configuration menu, where various settings specific to the
emulated system can be changed. This item is not shown if the running
system has no configuration settings.
Bookkeeping
Shows uptime, coin counter and ticket dispenser statistics (if relevant) for
the running system.
System Information
Shows information about the running system as emulated in MAME, including
CPU, sound and video devices.
Warning Information
Shows information about imperfectly emulated features of the running system.
This item is not shown if there are no relevant warnings.
Media Image Information
Shows information about mounted media images (if any). This item is only
shown if the running system has one or more media devices (e.g. floppy disk
drives or memory card slots).
File Manager
Shows the File Manager menu, where you can mount new or existing media image
files, or unmount currently mounted media images. This item is only shown
if the running system has one or more media devices (e.g. floppy disk
drives or memory card slots).
Tape Control
Shows the Tape Control menu, where you can control emulated cassette tape
mechanisms. This item is only shown for systems that use cassette tape
media.
Pseudo Terminals
Shows the status of any pseudo terminal devices in the running system (used
to connect the emulated system to host pseudo terminals, for example via
emulated serial ports). This item is not shown if there are no pseudo
terminal devices in the running system.
BIOS Selection
Shows the BIOS Selection menu, where you can select the BIOS/boot
ROM/firmware for the system and slot cards it contains. This item is not
shown if no BIOS options are available.
Slot Devices
Shows the Slot Devices menu, where you can choose between emulated
peripherals. This item is not shown for systems that have no slot devices.
Barcode Reader
Shows the Barcode Reader menu, where you can simulate scanning barcodes with
emulated barcode readers. This item is not shown if there are no barcode
readers in the running system.
Network Devices
Shows the Network Devices menu, where you can set up emulated network
adapters that support bridging to a host network. This item is not shown if
there are no network adaptors that support bridging in the running system.
Slider Controls
Shows the Slider Controls menu, where you can adjust various settings,
including video adjustments and individual sound channel levels.
Video Options
Shows the Video Options menu, where you can change the view for each
screen/window, as well as for screenshots.
Crosshair Options
Shows the Crosshair Options menu, where you can adjust the appearance of
crosshairs used to show the location of emulated light guns and other
absolute pointer inputs. This item is not shown if the emulated system has
has no absolute pointer inputs.
Cheat
Shows the Cheat menu, for controlling the built-in cheat engine. This item
is only shown if the built-in chat engine is enabled. Note that the cheat
plugins menu is accessed via the Plugin Options menu.
Plugin Options
Shows the Plugin Options menu, where you can access settings for enabled
plugins. This item is not shown if no plugins are enabled, or if the main
menu is shown before the emulated system starts (by pressing the Config Menu
key/button while the system information screen is displayed).
External DAT View
Shows the info viewer, which displays information loaded from various
external support files. This item is not shown if the :ref:`data plugin
<plugins-data>` is not enabled, or if the main menu is shown before the
emulated system starts (by pressing the Config Menu key/button while the
system information screen is displayed).
Add To Favorites/Remove From Favorites
Adds the running system to the favourites list, or removes it if its
already in the favourites list. The favourites list can be used as a
filter for the system selection menu.
About MAME
Shows the emulator version, data model, and copyright license information.
Select New System
Shows the system selection menu, where you can select a system to start a
new emulation session. This item is not shown if the main menu is shown
before the emulated system starts (by pressing the Config Menu key/button
while the system information screen is displayed).
Close Menu/Start System
Closes the main menu, returning control of the running system. Shows
**Start System** if the main menu is shown before the emulated system
starts (by pressing the Config Menu key/button while the system information
screen is displayed).
.. _menus-inputopts:
Input Settings menu
-------------------
The Input Settings provides options for assigning controls to emulated inputs,
adjusting analog control settings, controlling toggle inputs, and testing input
devices. You can reach the Input Settings menu by selecting **Input Settings**
from the :ref:`main menu <menus-main>`. The items shown on this menu depend on
available emulated inputs for the running system. Available emulated inputs may
depend on slot options, machine configuration settings and DIP switch settings.
Input Assignments (this system)
Lets you select assign controls to emulated inputs for the running system.
See the section on :ref:`configuring inputs <ui-inptcfg>` for more details.
This item is not shown if the running system has no enabled inputs that can
be assigned controls.
Analog Input Adjustments
Shows the Analog Input Adjustments menu, where you can adjust sensitivity,
auto-centring speed and inversion settings for emulated analog inputs, and
see how the emulated analog inputs respond to controls with your settings.
For more details, see the :ref:`analog input settings <ui-inptcfg-analog>`
section for more details. This item is not shown if the running system has
no enabled analog inputs.
Keyboard Selection
Shows the :ref:`Keyboard Selection menu <menus-keyboard>`, where you can
select between emulated and natural keyboard modes, and enable and disable
keyboard and keypad inputs for individual emulated devices. This item is
not shown if the running system has no keyboard or keypad inputs.
Toggle Inputs
Shows the :ref:`Toggle Inputs menu <menus-inputtoggle>`, where you can view
and adjust the state of multi-position or toggle inputs. This item is not
shown if the running system has no enabled toggle inputs.
Input Assignments (general)
Lets you select assign user interface controls, or assign default controls
for all emulated systems. See the section on :ref:`configuring inputs
<ui-inptcfg>` for more details.
Input Devices
Shows the :ref:`Input Devices menu <menus-inputdevices>`, which lists the
input devices recognised by MAME.
.. _menus-inputtoggle:
Toggle Inputs menu
------------------
The Toggle Inputs menu shows the current state of multi-position or toggle
inputs. Common examples include mechanically locking Caps Lock keys on
computers, and two-position gear shit levers on driving games. You can reach
the Toggle Inputs menu by selecting **Toggle Inputs** from the :ref:`Input
Settings menu <menus-inputopts>`. Note that available emulated inputs may
depend on slot options, machine configuration settings and DIP switch settings.
Inputs are grouped by the emulated device they belong to. You can move between
devices using the **Next Group** and **Previous Group** keys or buttons. Names
of inputs are shown on the left, and the current settings are shown on the
right.
To change the state of an input, highlight it and use the **UI Left** and **UI
Right** keys or buttons, or click the arrows beside the current setting.
.. _menus-keyboard:
Keyboard Selection menu
-----------------------
The Keyboard Selection menu lets your switch between emulated and natural
keyboard modes, and enable or disable keyboard inputs for individual emulated
devices. You can reach the Keyboard Selection menu by selecting **Keyboard
Selection** from the :ref:`Input Settings menu <menus-inputopts>`.
In emulated keyboard mode, keyboard and keypad inputs behave like any other
digital inputs, responding to their assigned controls. In natural keyboard
mode, MAME attempts to translate typed characters to emulated keystrokes. The
initial keyboard mode is set using the :ref:`natural option
<mame-commandline-natural>`.
There are a number of unavoidable limitations in natural keyboard mode:
* The emulated system must to support it.
* The selected keyboard *must* match the keyboard layout selected in the
emulated software.
* Keystrokes that dont produce characters cant be translated. (e.g. pressing a
modifier key on its own, such as **Shift** or **Control**).
* Holding a key until the character repeats will cause the emulated key to be
pressed repeatedly as opposed to being held down.
* Dead key sequences are cumbersome to use at best.
* Complex input methods will not work at all (e.g. for Chinese/Japanese/Korean).
Each emulated device in the system that has keyboard and/or keypad inputs is
listed on the menu, allowing keyboard/keypad inputs to be enabled or disabled
for individual devices. By default, keyboard/keypad inputs are enabled for the
first device with keyboard inputs (if any), and for all other devices that have
keypad inputs but no keyboard inputs. The enabled keyboard/keypad inputs are
automatically saved to the configuration file for the system when the emulation
session ends.
.. _menus-inputdevices:
Input Devices menu
------------------
The Input Devices menu lists input devices recognised by MAME and enabled with
your current settings. Recognised input devices depend on the
:ref:`keyboardprovider <mame-commandline-keyboardprovider>`, :ref:`mouseprovider
<mame-commandline-mouseprovider>`, :ref:`lightgunprovider
<mame-commandline-lightgunprovider>` and :ref:`joystickprovider
<mame-commandline-joystickprovider>` options. Classes of input devices can be
enabled or disabled using the :ref:`mouse <mame-commandline-nomouse>`,
:ref:`lightgun <mame-commandline-nolightgun>` and :ref:`joystick
<mame-commandline-nojoystick>` options. You can reach the Input Devices menu by
selecting **Input Devices** from the :ref:`main menu <menus-main>` or the
General Settings menu.
Input devices are grouped by device class (for example keyboards or light guns).
You can move between device classes using the **Next Group** and **Previous
Group** keys or buttons. For each device, the device number (within its class)
is shown on the left, and the name is shown on the right.
Select a device to show the supported controls for the device. The name of
each control is displayed on the left and its current state is shown on the
right. When an analog axis control is highlighted, its state is also shown in
graphical form below the menu. Digital control states are either zero
(inactive) or one (active). Analog axis input states range from -65,536 to
65,536 with the neutral position at zero. You can also select **Copy Device
ID** to copy the devices ID to the clipboard. This is useful for setting up
:ref:`stable controller IDs <devicemap>` in :ref:`controller configuration files
<ctrlrcfg>`.