From 74fe6e9d5ca562915fcb70614d36d1b5101e695b Mon Sep 17 00:00:00 2001 From: Vas Crabb Date: Mon, 13 Jun 2022 16:53:23 +1000 Subject: [PATCH] -Got rid of some legacy MESS support glue. * Got rid of the special-casing for the "mess" subtarget name. * Got rid of the MESS-specific Windows resources, emuator info source and man page. * Added subtarget name to the internal name and original name in Windows resources. -ui: Put the system-specific items on the input settings menu together, and fixed the crosshair visibility settings. --- docs/man/mess.6 | 1332 ----------------------- docs/source/usingmame/mamemenus.rst | 8 +- scripts/build/verinfo.py | 258 ++--- scripts/resources/windows/mame/mame.rc | 3 - scripts/resources/windows/mess/mess.ico | Bin 372526 -> 0 bytes scripts/resources/windows/mess/mess.man | 16 - scripts/resources/windows/mess/mess.rc | 14 - scripts/src/main.lua | 138 ++- src/frontend/mame/ui/inputopts.cpp | 9 +- src/frontend/mame/ui/miscmenu.cpp | 2 +- src/mame/mame.cpp | 4 +- src/mame/mess.cpp | 23 - 12 files changed, 214 insertions(+), 1593 deletions(-) delete mode 100644 docs/man/mess.6 delete mode 100644 scripts/resources/windows/mess/mess.ico delete mode 100644 scripts/resources/windows/mess/mess.man delete mode 100644 scripts/resources/windows/mess/mess.rc delete mode 100644 src/mame/mess.cpp diff --git a/docs/man/mess.6 b/docs/man/mess.6 deleted file mode 100644 index 07293db867f..00000000000 --- a/docs/man/mess.6 +++ /dev/null @@ -1,1332 +0,0 @@ -.\" -*- nroff -*- -.\" -.\" mess.6 -.\" -.\" Man page created from usage and source information: -.\" * commands: see src/emu/clifront.c clifront.h -.\" * options: core entries, see src/emu/emuopts.c emuopts.h -.\" SDL-specific entries, see src/osd/sdl/sdlmain.c osdsdl.h -.\" Cesare Falco , March 2011 -.\" -.\" Some text borrowed from the xmame 0.106 man page, -.\" done by Rene Herrmann , September 2000 -.\" and updated by Andrew Burton , July 2003 -.\" -.\" Other info's taken from MESS Wiki as well: -.\" http://mess.redump.net -.\" -.\" -.TH MESS 6 2015-05-20 0.162 "MESS \- Multi Emulator Super System" -.\" -.\" -.\" NAME chapter -.SH NAME -MESS \- Multi Emulator Super System -.\" -.\" -.\" SYNOPSIS chapter -.SH SYNOPSIS -.B mess -.I system -.RI [ "media software" ] -.RI [ options ] -.\" -.\" -.\" DESCRIPTION chapter -.SH DESCRIPTION -MESS documents the hardware for a wide variety of (mostly vintage) computers, -video game consoles, and calculators through software emulation. As a nice -side effect, MESS allows software and games for these hardware platforms -to run on modern PCs. -.\" -.\" -.\" SOFTWARE chapter -.SH SOFTWARE -A \fIsoftware\fR entry may be specified to attach an image file to the -emulated system. In such a case, the appropriate \fImedia\fR switch -is also required: -.TP -.B \-cart, \-cart1 -Cartrigde, used mainly by game consoles -.TP -.B \-cass -Cassette (tape), widely used by old home computers -.TP -.B \-flop, -flop1 -Floppy disk -.TP -.B \-cdrom -CD-Rom -.\" -.\" -.\" OPTIONS chapter -.SH OPTIONS -.\" -.\" ******************************************************* -.SS Core commands -.\" ******************************************************* -.TP -.B \-help, \-? -Displays current MESS version and copyright notice. -.TP -.B \-validate, \-valid -Performs internal validation on every driver in MESS. Run this -before submitting changes to ensure that you haven't violated any of -the core system rules. -.\" -.\" ******************************************************* -.SS Configuration commands -.\" ******************************************************* -.TP -.B \-createconfig, \-cc -Creates the default \fBmess.ini\fR file in the current directory. All the -configuration options (not commands) described below can be permanently -changed by editing this configuration file. -.TP -.B \-showconfig, \-sc -Displays the current configuration settings. -.TP -.B \-showusage, \-su -Displays a summary of all the command line options. For options that -are not mentioned here, the short summary given by \fB\-showusage\fR -is usually sufficient. -.\" -.\" ******************************************************* -.SS Frontend commands -.\" ******************************************************* -All the list commands below write info to the screen. -If you wish to write the info to a textfile instead, use redirection. -For example, -.B mess \-listxml > ~/messlist.xml -writes the full list of supported systems to \fBmesslist.xml\fR in your -home directory. -.TP -.B \-listxml, \-lx \fR[\fIsystem\fR|\fIwildcard\fR] -List comprehensive details for all of the supported systems. 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 systems are listed; however, -you can limit this list by specifying a driver name or wildcard after -the \-listxml command. -.TP -.B \-listfull, \-ll \fR[\fIsystem\fR|\fIwildcard\fR] -Displays a list of system driver names and descriptions. By default all -systems are listed; however, you can limit this list by specifying a -driver name or wildcard after the \-listfull command. -.TP -.B \-listsource, \-ls \fR[\fIsystem\fR|\fIwildcard\fR] -Displays a list of drivers and the names of the source files their system -drivers live in. Useful for finding which driver a system runs on in -order to fix bugs. By default all systems are listed; however, you can -limit this list by specifying a driver name or wildcard after the -\-listsource command. -.TP -.B \-listclones, \-lc \fR[\fIsystem\fR|\fIwildcard\fR] -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 \-listclones command. -.TP -.B \-listbrothers, \-lb \fR[\fIsystem\fR|\fIwildcard\fR] -Displays a list of "brothers" or other drivers from same sourcefile. -By default all systems are listed; however, you can limit this list by -specifying a driver name or wildcard after the \-listbrothers command. -.TP -.B \-listcrc -Displays a full list of CRCs of all ROM images referenced by all -drivers within MESS code. -.TP -.B \-listroms, \-lr \fIsystem -Displays a list of ROM images referenced by the specified system. -.TP -.B \-listsamples \fIsystem -Displays a list of samples referenced by the specified system. -.TP -.B \-verifyroms \fR[\fIsystem\fR|\fIwildcard\fR] -Checks for invalid or missing ROM images. By default all drivers that -have valid ZIP files or directories in the rom path are verified; -however, you can limit this list by specifying a driver name or -wildcard after the \-verifyroms command. -.TP -.B \-verifysamples \fR[\fIsystem\fR|\fIwildcard\fR] -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. -.TP -.B \-romident -Attempts to identify ROM files, if they are known to MESS, 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: -.br -\fB0\fR all files were identified -.br -\fB7\fR all files were identified except for some "non\-ROM" files -.br -\fB8\fR some files were identified -.br -\fB9\fR no files were identified -.TP -.B \-listdevices, \-ld -Output the list of devices referenced by a given system or set of systems. -.TP -.B \-listslots, \-lslot -Output the list of available slots and slot devices for the system. -.TP -.B \-listmedia, \-lm -Output the list of available media for the system. -.TP -.B \-listsoftware, \-lsoft -Output the list of known software for the system. -.TP -.B \-verifysoftware, \-vsoft \fR[\fIgamename\fR|\fIwildcard\fR] -Checks for invalid or missing ROM images in your software lists. -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 specific driver name or wildcard. -.TP -.B \-getsoftlist, \-glist -Retrieve software list by name. -.TP -.B \-verifysoftlist, \-vlist \fR[\fIsoftwarelistname\fR] -Checks a specified software list for missing ROM images if files exist -for issued softwarelistname. 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 specific softwarelistname (without .XML). -.TP -.B \-listmidi, \-mlist -List available MIDI I/O devices. -.TP -.B \-listnetwork, \-nlist -List available network adapters. -.\" -.\" ******************************************************* -.SS Configuration options -.\" ******************************************************* -.TP -.B \-[no]readconfig, \-[no]rc -Enables or disables the reading of the config files. When enabled -(which is the default), MESS reads the following config files in order: -.br -1. \fBmess.ini\fR -.br -the main configuration file -.br -2. \fI[driver]\fB.ini\fR -.br -based on the source file name of the system driver -.br -3. \fBdebug.ini\fR, if the debugger is enabled -.br -4. \fBvector.ini\fR, for vector games only -.br -5. \fI[driver]\fB.ini\fR -.br -based on the source filename of the game driver -.br -6. \fI[parent]\fB.ini\fR -.br -for clones only, may be called recursively -.br -4. \fI[system]\fB.ini\fR -.br -note this sometimes resolves to the same of the source driver -.P -The settings in the later ini's override those in the earlier ini's. -The default is ON (\-readconfig). -.TP -.B \-[no]writeconfig, \-[no]wc -Write configuration to \fI[driver]\fR.ini on exit. -Default is OFF (\-nowriteconfig). -.\" -.\" ******************************************************* -.SS Search path options -.\" ******************************************************* -Be careful to use the path, directory and file options in -mess.ini ONLY. Otherwise, the outcome may be unpredictable and not -consistent across releases. -.TP -.B \-rompath, \-rp, \-biospath, \-bp \fIpathname -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 MESS executable). -.TP -.B \-hashpath \fIpathname -Specifies a list of paths within which to search for software hash files. -Multiple paths can be specified by separating them with semicolons. -The default is 'hash' (that is, a directory 'hash' in the same directory -as the MESS executable). -.TP -.B \-samplepath, \-sp \fIpathname -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 MESS executable). -.TP -.B \-artpath, \-artwork_directory \fIpathname -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 MESS executable). -.TP -.B \-ctrlrpath, \-ctrlr_directory \fIpathname -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 MESS executable). -.TP -.B \-inipath \fIpathname -Specifies a list of paths within which to find .ini files. Multiple -paths can be specified by separating them with semicolons. The default -is '/etc/mess'. -.TP -.B \-fontpath \fIpathname -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 MESS executable). -.TP -.B \-cheatpath \fIpathname -Specifies a list of paths within which to find cheat files. Multiple -paths can be specified by separating them with semicolons. The default -is 'cheat' (that is, a directory 'cheat' in the same directory as -the MESS executable). -.TP -.B \-crosshairpath \fIpathname -Specifies a list of paths within which to find crosshair files. Multiple -paths can be specified by separating them with semicolons. The default -is 'crosshair' (that is, a directory 'crosshair' in the same directory as -the MESS executable). If the Crosshair is set to default in the menu, -MESS will look for system/cross#.png and then cross#.png in the -specified path, where # is the player number. Failing that, -MESS will use built\-in default crosshairs. -.TP -.B \-pluginspath \fIpathname -Specifies a single path within which to find plugins. The default -is 'plugins' (that is, a directory 'plugins' in the same directory as -the MESS executable). -.TP -.B \-languagepath \fIpathname -Specifies a single path within which to find language files. The default -is 'language' (that is, a directory 'language' in the same directory as -the MESS executable). -.\" -.\" ******************************************************* -.SS Output Directory Options -.\" ******************************************************* -.TP -.B \-cfg_directory \fIpathname -Specifies a single directory where configuration files are stored. -Configuration files store user configurable settings that are read at -startup and written when MESS exits. The default is 'cfg' (that is, -a directory 'cfg' in the same directory as the MESS executable). If this -directory does not exist, it will be automatically created. -.TP -.B \-nvram_directory \fIpathname -Specifies a single directory where NVRAM files are stored. NVRAM files -store the contents of EEPROM and non\-volatile RAM (NVRAM) for systems -which used this type of hardware. This data is read at startup and -written when MESS exits. The default is 'nvram' (that is, a -directory 'nvram' in the same directory as the MESS executable). If this -directory does not exist, it will be automatically created. -.TP -.B \-input_directory \fIpathname -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 MESS executable). If this directory -does not exist, it will be automatically created. -.TP -.B \-state_directory \fIpathname -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 MESS executable). If this directory does -not exist, it will be automatically created. -.TP -.B \-snapshot_directory \fIpathname -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 MESS executable). If this directory -does not exist, it will be automatically created. -.TP -.B \-diff_directory \fIpathname -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 system with a hard disk -image. The default is 'diff' (that is, a directory 'diff' in the same -directory as the MESS executable). If this directory does not exist, -it will be automatically created. -.TP -.B \-comment_directory \fIpathname -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 system. The default is 'comments' (that is, -a directory 'comments' in the same directory as the MESS executable). -If this directory does not exist, it will be automatically created. -.\" -.\" ******************************************************* -.SS State/playback options -.\" ******************************************************* -.TP -.B \-state \fIslot -Immediately after starting the specified system, will cause the save -state in the specified \fIslot\fP to be loaded. -.TP -.B \-[no]autosave -When enabled, automatically creates a save state file when exiting MESS -and automatically attempts to reload it when later starting MESS with -the same system. This only works for systems that have explicitly enabled -save state support in their driver. The default is OFF (\-noautosave). -.TP -.B \-playback, \-pb \fIfilename -Specifies a file from which to play back a series of system inputs. This -feature does not work reliably for all systems, but can be used to watch -a previously recorded system 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). -.TP -.B \-[no]exit_after_playback -If play back is enabled (see \-playback option) the program exits when -end of file is reached. Otherwise the machine will continue to run. -Default is OFF (\-noexit_after_playback). -.TP -.B \-record, \-rec \fIfilename -Specifies a file to record all input from a system session. This can be -used to record a system session for later playback. This feature does not -work reliably for all systems, but can be used to watch a previously -recorded system 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). -.TP -.B \-[no]record_timecode -Specify whether to create a timecode file. It contains a line with elapsed -times on each press of timecode shortcut key (default is F12). -This option works only when recording mode is enabled (\-record option). -The file is saved on inp folder. -Default is OFF (\-norecord_timecode). -.TP -.B \-mngwrite \fIfilename -Writes each video frame to the given file in MNG format, producing -an animation of the system 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). -.TP -.B \-aviwrite \fIfilename -Stream video and sound data to the given file -in AVI format, producing an animation of the system session complete -with sound. The default is NULL (no recording). -.TP -.B \-wavwrite \fIfilename -Writes the final mixer output to the given file -in WAV format, producing an audio recording of the system session. -The default is NULL (no recording). -.TP -.B \-snapname \fIstring -Describes how MESS should name files for snapshots. \fIstring\fP -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 literal \fB%g\fP -represents the driver name of the current system; and the literal \fB%i\fP -represents an incrementing index. If \fB%i\fP is omitted, then each -snapshot taken will overwrite the previous one; otherwise, MESS will -find the next empty value for \fB%i\fP and use that for a filename. The -default is \fB%g/%i\fP, which creates a separate folder for each system, -and names the snapshots under it starting with 0000 and increasing -from there. In addition to the above, for drivers using different -media, like carts or floppy disks, you can also use the -\fB%d\fP\fI_[media]\fP indicator. Replace \fI[media]\fP with the media -switch you want to use. A few examples: if you use -.B mess nes \-cart robby \-snapname %g/%d_cart -snapshots will be saved as \fBsnaps/nes/robby.png\fP; if you use -.B mess c64 \-flop1 robby \-snapname %g/%d_flop1/%i -snapshots will be saved as \fBsnaps/c64/robby/0000.png\fP. -.TP -.B \-snapsize \fIwidth\fRx\fIheight -Hard\-codes the size for snapshots and movie recording. By default, -MESS will create snapshots at the system's current resolution in raw -pixels, and will create movies at the system's starting resolution in -raw pixels. If you specify this option, then MESS 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 -system is vertically oriented. The default is 'auto'. -.TP -.B \-snapview internal\fR|\fBauto\fR|\fIviewname -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 \fIviewname\fP does not need to be a perfect match; rather, it -will select the first view whose name matches all the characters -specified by \fIviewname\fP. For example, \-snapview native will match the -"Native (15:14)" view even though it is not a perfect match. -\fIviewname\fP can also be 'auto', which selects the first view with all -screens present. The default value is 'internal'. -.TP -.B \-[no]snapbilinear -Specify whether snapshot/movie should have bilinear filtering applied. -Default is ON (\-snapbilinear). -.TP -.B \-statename \fIstring -Describes how MESS should store save state files, relative to the -state_directory path. \fIstring\fP provides a template that -is used to generate a relative path. Two simple substitutions are -provided: the / character represents the path separator on any target -platform (even Windows); the literal \fB%g\fP represents the driver name of -the current game. The default is '%g', which creates a separate folder -for each game. In addition to the above, for drivers using different -media, like carts or floppy disks, you can also use the -\fB%d_\fP\fI[media]\fP indicator. Replace \fI[media]\fP with the media -switch you want to use. A few examples: if you use -.B mess nes \-cart robby \-statename %g/%d_cart -save states will be stored inside \fBsta/nes/robby/\fP; if you use -.B mess c64 \-flop1 robby \-statename %g/%d_flop1 -save states will be stored inside \fBsta/c64/robby/\fP. -.TP -.B \-[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 systems. 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 system/burnin\-.png. The default is OFF (\-noburnin). -.\" -.\" ******************************************************* -.SS Performance options -.\" ******************************************************* -.TP -.B \-[no]autoframeskip, \-[no]afs -Automatically determines the frameskip level while you're playing the -system, adjusting it constantly in a frantic attempt to keep the system -running at full speed. Turning this on overrides the value you have set -for \-frameskip below. The default is OFF (\-noautoframeskip). -.TP -.B \-frameskip, \-fs \fIvalue -Specifies the frameskip value (autoframeskip must be disabled). This is the -number of frames out of every 12 to drop when running. For example, if you -say \-frameskip 2, then MESS will display 10 out of every 12 frames. By -skipping those frames, you may be able to get full speed in a system that -requires more horsepower than your computer has. The default value is 0, -which skips no frames. -.TP -.B \-seconds_to_run, \-str \fIvalue -This option can be used for benchmarking and automated testing. It tells -MESS 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 MESS performance. In addition, -upon exit, the \-str option will write a screenshot called final.png -to the system's snapshot directory. -.TP -.B \-[no]throttle -Configures the default thottling setting. When throttling is on, MESS -attempts to keep the system running at the system's intended speed. When -throttling is off, MESS runs the system as fast as it can. Note that the -fastest speed is more often than not limited by your graphics card, -especially for older systems. The default is ON (\-throttle). -.TP -.B \-[no]sleep -Allows MESS to give time back to the system when running with \-throttle. -This allows other programs to have some CPU time, assuming that the -system 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). -.TP -.B \-speed \fIvalue -Controls the speed of gameplay, relative to realtime; smaller numbers are -slower. Default is 1.00. -.TP -.B \-[no]refreshspeed, \-[no]rs -Automatically adjusts the \fB\-speed\fR parameter to keep the effective refresh -rate below that of the lowest screen refresh rate. -Default is OFF (\-norefreshspeed). -.\" -.\" +++++++++++++++++++++++++++++++++++++++++++++++++++++++ -.\" OS specific -.\" +++++++++++++++++++++++++++++++++++++++++++++++++++++++ -.TP -.B \-numprocessors, \-np \fIvalue -Set number of processors; this overrides the number the system reports. -.TP -.B \-bench \fIvalue -Benchmark for the given number of emulated seconds; -implies \-video none \-sound none \-nothrottle. -.\" -.\" +++++++++++++++++++++++++++++++++++++++++++++++++++++++ -.\" SDL specific -.\" +++++++++++++++++++++++++++++++++++++++++++++++++++++++ -.TP -.B \-[no]sdlvideofps -Show SDL video performance. Default is OFF (\-nosdlvideofps). -.\" -.\" ******************************************************* -.SS Rotation options -.\" ******************************************************* -.TP -.B \-[no]rotate -Rotate the system to match its normal state (horizontal/vertical). This -ensures that both vertically and horizontally oriented systems show up -correctly without the need to rotate your monitor. If you want to keep -the system displaying 'raw' on the screen the way the actual machine would -have, turn this option off. The default is ON (\-rotate). -.TP -.B \-[no]ror \-[no]rol -Rotate the system 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). -Default for both is OFF (\-noror \-norol). -.TP -.B \-[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 system 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. -Default for both is OFF (\-noautoror \-noautorol). -.TP -.B \-[no]flipx \-[no]flipy -Flip (mirror) the system screen either horizontally (\-flipx) or -vertically (\-flipy). The flips are applied after the \-rotate and -\-ror/\-rol options are applied. -Default for both is OFF (\-noflipx \-noflipy). -.\" -.\" ******************************************************* -.SS Artwork options -.\" ******************************************************* -.TP -.B \-[no]artwork_crop, \-[no]artcrop -Enable cropping of artwork to the system screen area only. This -option can also be controlled via the Video Options menu in the user -interface. The default is OFF (\-noartwork_crop). -.TP -.B \-[no]use_backdrops, \-[no]backdrop -Enables/disables the display of backdrops. The default is ON -(\-use_backdrops). -.TP -.B \-[no]use_overlays, \-[no]overlay -Enables/disables the display of overlays. The default is ON -(\-use_overlays). -.TP -.B \-[no]use_bezels, \-[no]bezel -Enables/disables the display of bezels. The default is ON -(\-use_bezels). -.TP -.B \-[no]use_cpanels, \-[no]cpanel -Enables/disables the display of cpanels. The default is ON -(\-use_bezels). -.TP -.B \-[no]use_marquees, \-[no]marquee -Enables/disables the display of marquees. The default is ON -(\-use_bezels). -.\" -.\" ******************************************************* -.SS Screen options -.\" ******************************************************* -.TP -.B \-brightness \fIvalue -Controls the default brightness, or black level, of the system screens. -This option does not affect the artwork or other parts of the display. -Using the MESS UI, you can individually set the brightness for each system -screen; this option controls the initial value for all visible system -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. -.TP -.B \-contrast \fIvalue -Controls the contrast, or white level, of the system screens. This option -does not affect the artwork or other parts of the display. Using the -MESS UI, you can individually set the contrast for each system screen; -this option controls the initial value for all visible system 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. -.TP -.B \-gamma \fIvalue -Controls the gamma, which produces a potentially nonlinear black to -white ramp, for the system screens. This option does not affect the -artwork or other parts of the display. Using the MESS UI, you can -individually set the gamma for each system screen; this option controls -the initial value for all visible system 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. -.TP -.B \-pause_brightness \fIvalue -This controls the brightness level when MESS is paused. The default -value is 0.65. -.TP -.B \-effect\fR [\fInone\fR|\fIfilename[.png]\fR] -Name of a PNG file to use for visual effects, or 'none'. Default is 'none'. -.\" -.\" ******************************************************* -.SS Vector rendering options -.\" ******************************************************* -.TP -.B \-beam_width_min \fIvalue -.TP -.B \-beam_width_max \fIvalue -Sets the minimum and maximum width of the vectors. This is a scaling factor -against the standard vector width, which is interpolated between minimum and -maximum according to the beam's intensity. 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. -.TP -.B \-beam_intensity_weight \fIvalue -Applies an exponential weight to the minimum and maximum beam width. For -positive values the interpolated scaling factor will affect lines with higher -intensity more than lines with lower intensity. The default is 0.0. -.TP -.B \-flicker \fIvalue -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. -.\" -.\" ******************************************************* -.SS Video options -.\" ******************************************************* -.\" +++++++++++++++++++++++++++++++++++++++++++++++++++++++ -.\" SDL specific -.\" +++++++++++++++++++++++++++++++++++++++++++++++++++++++ -.TP -.B \-video\fR [\fIsoft\fR|\fIopengl\fR|\fIbgfx\fR|\fInone\fR] -Specifies which video subsystem to use for drawing: -.br -\fBsoft\fR uses software rendering, which is slower but more compatible. -.br -\fBopengl\fR uses OpenGL and your graphics accelerator to speed up many -aspects of drawing MAME including compositing artwork, overlays, and -bezels, as well as stretching the image to fit your screen. -.br -\fBbgfx\fR uses the bgfx renderer which supports portable shaders and -multiple graphics APIs including OpenGL, OpenGL ES and DirectX. -.br -\fBnone\fR does no drawing and is intended for CPU benchmarking. -.br -Default is 'soft' on Linux or 'opengl' on macOS. -.TP -.B \-numscreens \fR[\fI1-4\fR] -Number of screens to create; usually, you want just one. Default is '1'. -.TP -.B \-[no]window, \-[no]w -Run MESS in either full screen or a window. This is a fully\-featured window -mode where the window resizes as necessary to track what the system does. -And you can resize it yourself with your OS's standard window controls. -The default is OFF (\-nowindow). -.TP -.B \-[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 MESS. 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). -.TP -.B \-[no]keepaspect, \-[no]ka -Forces the correct aspect ratio. This means when you're resizing the window -in windowed mode the actual system image will resize in discrete steps to -maintain the proper shape of the system graphics. If you turn this off you can -resize the window to anything you like and get funny squishing and stretching. -The same applies for full\-screen. Default is ON (\-keepaspect). -.TP -.B \-[no]unevenstretch, \-[no]ues -Allow non\-integer stretch factors. Video purists should stay far, far away -from this option, while everyone else will be happy to know that it lets you -fill the screen properly in full\-screen mode. Default is ON (\-unevenstretch). -.TP -.B \-[no]unevenstretchx, \-[no]uesx -Act as \-[no]unevenstretch on horizontal basis only. -.TP -.B \-[no]intoverscan, \-[no]ios -Allow overscan on integer scaled targets. -.TP -.B \-intscalex, \-sx -Set horizontal integer scale factor. -.TP -.B \-intscaley, \-sy -Set vertical integer scale factor. -.TP -.B \-[no]centerh -Center horizontally within the view area. Default is ON (\-centerh). -.TP -.B \-[no]centerv -Center vertically within the view area. Default is ON (\-centerv). -.TP -.B \-[no]waitvsync, \-[no]vs -Enable waiting for the start of VBLANK before flipping screens; -reduces tearing effects. Default is OFF (\-nowaitvsync). -.TP -.B \-[no]syncrefresh, \-[no]srf -Enable using the start of VBLANK for throttling instead of the game time. -Default is OFF (\-nosyncrefresh). -.\" -.\" ******************************************************* -.SS Software video rendering subsystem options -.\" ******************************************************* -.\" +++++++++++++++++++++++++++++++++++++++++++++++++++++++ -.\" SDL specific -.\" +++++++++++++++++++++++++++++++++++++++++++++++++++++++ -.B NOTE: -All the options in this group are available only with softare video -rendering subsystem, i.e \fB\-video soft\fR. -.TP -.B \-prescale\fR [\fIvalue\fR] -Scale screen rendering by this amount in software. Default is 1. -.TP -.B \-scalemode, \-sm \fR[\fInone\fR|\fIasync\fR|\fIyv12\fR|\fIyuy2\fR|\fIyv12x2\fR|\fIyuy2x2\fR] -Hardware scaling mode. -.br -\fBnone\fR use software rendering. -.br -\fBasync\fR async overlay. -.br -\fByv12\fR yv12 overlay. -.br -\fByuy2\fR yuy2 overlay. -.br -\fByv12x2\fR yv12 overlay using x2 prescaling. -.br -\fByuy2x2\fR yuy2 overlay using x2 prescaling. -.br -Default is NONE. -.\" -.\" ******************************************************* -.SS OpenGL video rendering subsystem options -.\" ******************************************************* -.\" +++++++++++++++++++++++++++++++++++++++++++++++++++++++ -.\" SDL specific -.\" +++++++++++++++++++++++++++++++++++++++++++++++++++++++ -.B NOTE: -All the options in this group are available only with OpenGL video -rendering subsystem, i.e \fB\-video opengl\fR. -.TP -.B \-[no]filter, \-[no]glfilter, \-[no]flt -Enable bilinear filtering on screen output. Default is ON (\-filter). -.TP -.B \-prescale\fR [\fIvalue\fR] -Scale screen rendering by this amount in software. Default is 1. -.TP -.B \-[no]gl_forcepow2texture -Force power of two textures. Default is OFF (\-nogl_forcepow2texture). -.TP -.B \-[no]gl_notexturerect -Don't use OpenGL GL_ARB_texture_rectangle. Turn off if -corruption occurs in OpenGL mode, at cost of some performance -loss. Default is ON (\-gl_notexturerect). -.TP -.B \-[no]gl_vbo -Enable OpenGL VBO, if available, for a performance increase. -Turn off if corruption occurs. Default is ON (\-gl_vbo). -.TP -.B \-[no]gl_pbo -Enable OpenGL PBO, if available, for a performance increase. -Turn off if corruption occurs. Default is ON (\-gl_pbo). -.TP -.B \-[no]gl_glsl -Enable OpenGL GLSL, if available, for a performance increase. -Default is OFF (\-nogl_glsl). -.TP -.B \-gl_glsl_filter \fIvalue -Enable OpenGL GLSL filtering instead of FF filtering 0=plain, 1=bilinear. -Default is 1: bilinear. -.TP -.BR \-glsl_shader_mame[0\-9] -Preferred custom OpenGL GLSL shader set mame bitmap (from 0 to 9). -.TP -.BR \-glsl_shader_screen[0\-9] -Preferred custom OpenGL GLSL shader screen bitmap (from 0 to 9). -.TP -.B \-gl_glsl_vid_attr -Enable OpenGL GLSL handling of brightness and contrast. Better RGB system -performance for free. Default is ON. -.TP -.B \-screen -Explicit name for all screens; 'auto' here will try to make a best guess. -.TP -.B \-aspect, \-screen_aspect -Aspect ratio for all screens; 'auto' here will try to make a best guess. -.TP -.B \-resolution, \-r -Preferred resolution for all screens; -format is \fIwidth\fRx\fIheight\fR[@\fIrefreshrate\fR] or 'auto'. -.TP -.B \-view -Preferred view for all screens -.TP -.B \-screen[0\-3] -Explicit name of the first|second|third|fourth screen; 'auto' here will try -to make a best guess. -.TP -.B \-aspect[0\-3] -Aspect ratio of the first|second|third|fourth screen; 'auto' here will try -to make a best guess. -.TP -.B \-resolution[0\-3], \-r[0\-3] -Preferred resolution for the first|second|third|fourth screen; -format is \fIwidth\fRx\fIheight\fR[@\fIrefreshrate\fR] or 'auto'. -.TP -.B \-view[0\-3] -Preferred view for the first|second|third|fourth screen. -.\" -.\" ******************************************************* -.SS BGFX post\-processing options -.\" ******************************************************* -.B NOTE: -All the options in this group are available only when BGFX video -post\-processing is enabled, i.e \fB\-video bgfx\fR. For full info on BGFX -please visit official MAME documentation page: -.br -http://docs.mamedev.org/advanced/bgfx.html -.TP -.B \-bgfx_path \fIpathname -This is where your BGFX shader files are stored. -The default is 'bgfx' (that is, a directory "bgfx" in the same directory -as the MESS executable). -.TP -.B \-bgfx_backend \fIauto\fR|\fIopengl\fR -Selects a rendering backend for BGFX to use. The default is 'auto', -which will let MESS choose the best selection for you. -.TP -.B \-bgfx_debug -Enables BGFX debugging features. Most users will not need to use this. -.TP -.B \-bgfx_screen_chains \fIdefault\fR|\fIunfiltered\fR|\fIhlsl\fR[,...] -This dictates how to handle BGFX rendering on a per\-display basis. -For each display specify one of the possible choices: -.br -\fBdefault\fR default bilinear filterered output -.br -\fBunfiltered\fR nearest neighbor unfiltered output -.br -\fBhlsl\fR HLSL display simulation through shaders -.br -Separate directives for each window with a comma (,) and for each physical -screen with a colon (:). For example, for an emulated game with 3 displays -emulated on 3 windows on your monitor, -.B \-bgfx_screen_chains default,unfiltered,default -specifies to apply default filter on what is been rendered on the first -and third window and leave the content of the second window unfiltered. -.TP -.B \-bgfx_shadow_mask \fIfilename -This specifies the shadow mask effect PNG file. Default is 'slot-mask.png'. -.TP -.B \-bgfx_avi_name \fIfilename -This specifies a filename for BGFX output logging. -.\" -.\" ******************************************************* -.SS Full screen options -.\" ******************************************************* -.\" +++++++++++++++++++++++++++++++++++++++++++++++++++++++ -.\" SDL specific -.\" +++++++++++++++++++++++++++++++++++++++++++++++++++++++ -.TP -.B \-[no]switchres -Affects full screen mode only. Chooses if MESS can try to change the screen -resolution (color depth is normally left alone) when in full\-screen mode. If -it's off, you always get your desktop resolution in full\-screen mode (which can -be useful for LCDs). Default is OFF (\-noswitchres). -.TP -.B \-[no]useallheads -Split full screen image across monitors. Default is OFF (\-nouseallhead). -.\" -.\" ******************************************************* -.SS Sound options -.\" ******************************************************* -.TP -.B \-sound\fR [\fIsdl\fR|\fIportaudio\fR|\fIcoreaudio\fR|\fIdsound\fR|\fIxaudio2\fR|\fInone\fR] -Specifies which sound subsystem to use for audio output: -.br -\fBsdl\fR uses the Simple DirectMedia Layer audio output system -(not available on Windows by default). -.br -\fBportaudio\fR uses the PortAudio library which supports low-latency -output and multiple audio APIs. -.br -\fBcoreaudio\fR uses the Core Audio API which supports low-latency -output and AudioUnit effects (only available on macOS). -.br -\fBdsound\fR uses the DirectSound API (only available on Windows). -.br -\fBxaudio2\fR uses the XAudio2 API which supports low-latency output -(only available on Windows). -.br -\fBnone\fR produces no audio output. -.br -Default is 'dsound' on Windows, 'coreaudio' on macOS or 'sdl' on other -platforms. -.TP -.B \-samplerate, \-sr \fIvalue -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. -.TP -.B \-[no]samples -Use samples if available. The default is ON (\-samples). -.TP -.B \-[no]compressor -Enable audio compressor. It temporarily reduces the overall volume when -the audio output is overdriven. The default is ON (\-compressor). -.TP -.B \-volume, \-vol \fIvalue -Sets the startup volume. It can later be changed with the user interface -(see Keys section). The volume is an attenuation in dB: -for example, '\-volume \-12' will start with \-12dB attenuation. -The default is 0. -.\" +++++++++++++++++++++++++++++++++++++++++++++++++++++++ -.\" SDL specific -.\" +++++++++++++++++++++++++++++++++++++++++++++++++++++++ -.TP -.B \-audio_latency \fIvalue -This controls the amount of latency built into the audio streaming. -The exact behavior depends on the selected audio output module (see -the \-sound option). Smaller values provide less audio delay while -requiring better system performance. Higher values increase audio -delay but may help avoid buffer under-runs and audio interruptions. -The default is 1. -.\" -.\" ******************************************************* -.SS Input options -.\" ******************************************************* -.TP -.B \-[no]coin_lockout, \-[no]coinlock -Enables simulation of the "coin lockout" feature that is implemented -on a number of arcade 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). -.TP -.B \-ctrlr \fIcontroller -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). -.TP -.B \-[no]mouse -Controls whether or not MESS looks for a mouse controller to use. Note -that in many cases, lightguns are treated as mice by the operating -system, so you may need to enable this to enable lightgun support. When -this is enabled, you will not be able to use your mouse while running -MESS. If you want to get control of your computer back, you will need -to either pause MESS or quit. The default is OFF (\-nomouse). -.TP -.B \-[no]joystick, \-[no]joy -Controls whether or not MESS looks for joystick/gamepad controllers. -The default is ON (\-joystick). -.TP -.B \-[no]lightgun, \-[no]gun -Controls whether or not MESS 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). -.TP -.B \-[no]multikeyboard, \-[no]multikey -Determines whether MESS 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 MESS to report keypresses -on different keyboards independently. The default is OFF -(\-nomultikeyboard). -.TP -.B \-[no]multimouse -Determines whether MESS 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 MESS to report mouse -movement and button presses on different mice independently. The -default is OFF (\-nomultimouse). -.TP -.B \-[no]steadykey, \-[no]steady -Some systems require two or more buttons to be pressed at exactly the -same time to make special moves. Due to limitations in the PC 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). -.TP -.B \-[no]ui_active -Enable MESS user interface on top of emulated keyboard (if present). -User interface may be toggled during execution by pressing the key -defined with \-ui_modekey. -Default is OFF (\-noui_active). -.TP -.B \-[no]offscreen_reload, \-[no]reload -Controls whether or not MESS treats a second button input from a -lightgun as a reload signal. In this case, MESS 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 systems 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). -.TP -.B \-joystick_map, \-joymap \fImap -Controls how joystick values map to digital joystick controls. -See /usr/share/doc/mame\-common/config.txt for full details on -joymap format. -.TP -.B \-joystick_deadzone, \-joy_deadzone, \-jdz \fIvalue -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. -.TP -.B \-joystick_saturation, \-joy_saturation, \-jsat \fIvalue -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. -.TP -.B \-[no]natural, \-[no]nat -Allows user to specify whether or not to use a natural keyboard. -This allows you to start your game or system in a 'native' mode, depending -on your region, allowing compatibility for non\-"QWERTY" style keyboards. -The default is OFF (\-nonatural). -.TP -.B \-[no]joystick_contradictory, \-[no]joy_contradictory -Enable contradictory direction digital joystick input at the same time. -Default is OFF (\-nojoystick_contradictory). -.TP -.\" +++++++++++++++++++++++++++++++++++++++++++++++++++++++ -.\" SDL specific -.\" +++++++++++++++++++++++++++++++++++++++++++++++++++++++ -.TP -.B \-uimodekey, \-umk \fIvalue -Specifies the key used to toggle between full and partial UI mode. -.TP -.B \-uifontprovider \fIauto\fR|\fIsdl\fR|\fInone -Provider for ui font. -.TP -.B \-output \fIconsole\fR|\fInetwork\fR|\fInone -Provider for output. -.TP -.B \-keyboardprovider \fIauto\fR|\fIsdl\fR|\fInone -Provider for keyboard input. -.TP -.B \-mouseprovider \fIauto\fR|\fIsdl\fR|\fInone -Provider for mouse input. -.TP -.B \-lightgunprovider \fIauto\fR|\fInone -Provider for lightgun input. -.TP -.B \-joystickprovider \fIauto\fR|\fIsdl\fR|\fInone -Provider for joystick input. -.TP -.B \-[no]keymap -Enable keymap for non\-QWERTY keyboards. Used in conjunction with -\fB\-keymap_file\fR. Default is OFF (\-nokeymap). -.TP -.B \-keymap_file \fIkeymap_file -Specifies the full path to the keymap file to be used. A few -keymap files are available in /usr/share/games/mess/keymaps. -.TP -.B \-joy_idx[0\-8] \fIjoystick -With these options you can assign a joystick to a -specific index in MESS. Even if the kernel will list the joysticks -in a different order on the next boot, MESS will still see the joystick -as e.g. "Joystick 2". Use mame \-v to see which joysticks are recognized. -Default is 'auto'. -.TP -.B \-[no]sixaxis -Use special handling for PS3 Sixaxis controllers. -Default is OFF (\-nosixaxis). -.TP -.B \-lightgun_index[1\-8] -Map lightgun to specific index in MESS. -.TP -.B \-videodriver, \-vd x11\fR|\fBdirectfb\fR|\fBauto -SDL video driver to use; auto selects SDL default. -.TP -.B \-audiodriver, \-ad alsa\fR|\fBarts\fR|\fBauto -SDL audio driver to use; auto selects SDL default. -.TP -.B \-gl_lib alsa\fR|\fBarts\fR|\fBauto -Alternative libGL.so to use; auto selects SDL default. -.\" -.\" ******************************************************* -.SS Input automatic enable options -.\" ******************************************************* -.TP -.B \-paddle_device, \-paddle \fR[\fInone\fR|\fIkeyboard\fR|\fImouse\fR|\fIlightgun\fR|\fIjoystick\fR] -.TP -.B \-adstick_device, \-adstick \fR[\fInone\fR|\fIkeyboard\fR|\fImouse\fR|\fIlightgun\fR|\fIjoystick\fR] -.TP -.B \-pedal_device, \-pedal \fR[\fInone\fR|\fIkeyboard\fR|\fImouse\fR|\fIlightgun\fR|\fIjoystick\fR] -.TP -.B \-dial_device, \-dial \fR[\fInone\fR|\fIkeyboard\fR|\fImouse\fR|\fIlightgun\fR|\fIjoystick\fR] -.TP -.B \-trackball_device, \-trackball \fR[\fInone\fR|\fIkeyboard\fR|\fImouse\fR|\fIlightgun\fR|\fIjoystick\fR] -.TP -.B \-lightgun_device \fR[\fInone\fR|\fIkeyboard\fR|\fImouse\fR|\fIlightgun\fR|\fIjoystick\fR] -.TP -.B \-positional_device \fR[\fInone\fR|\fIkeyboard\fR|\fImouse\fR|\fIlightgun\fR|\fIjoystick\fR] -.TP -.B \-mouse_device \fR[\fInone\fR|\fIkeyboard\fR|\fImouse\fR|\fIlightgun\fR|\fIjoystick\fR] -Each of these options controls automatically enabling the mouse, or -joystick depending on the presence of a particular class of analog -control for a particular system. For example, if you specify the option -\-paddle mouse, then any system 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. -.\" -.\" ******************************************************* -.SS Debugging options -.\" ******************************************************* -.TP -.B \-[no]log -Creates a file called error.log which contains all of the internal -log messages generated by the MESS core and system drivers. The default -is OFF (\-nolog). -.TP -.B \-[no]verbose, \-[no]v -Displays internal diagnostic information. This information is very -useful for debugging problems with your configuration. -Please use the \-verbose option and include the resulting information -when reporting bugs. The default is OFF (\-noverbose). -.TP -.B \-[no]update_in_pause -Enables updating the screen bitmap while the system is paused. This is -useful for debuggin in some scenarios (and gets in the way in others). -Default is OFF (\-noupdate_in_pause). -.TP -.B \-[no]debug, \-[no]d -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). -.TP -.B \-debugscript \fIfilename -Specifies a file that contains a list of debugger commands to execute -immediately upon startup. The default is NULL (no commands). -.\" -.\" +++++++++++++++++++++++++++++++++++++++++++++++++++++++ -.\" SDL specific -.\" +++++++++++++++++++++++++++++++++++++++++++++++++++++++ -.TP -.B \-debugger \fIdebugger_name -Name of the debugger to use. Default is AUTO. -.TP -.B \-debugger_font, \-dfont \fIfont_name -Specifies the font to use for debugging. Default is AUTO. -.TP -.B \-debugger_font_size, \-dfontsize \fIsize -Specifies the font size to use for debugging. -.TP -.B \-[no]oslog -Outputs the error.log data to the system 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). -.\" -.\" ******************************************************* -.SS Misc options -.\" ******************************************************* -.TP -.B \-[no]drc -Enable DRC cpu core if available. Default is ON (\-drc). -.TP -.B \-[no]drc_use_c -Force DRC use C backend. Default is OFF (\-nodrc_use_c). -.TP -.B \-[no]drc_log_uml -Write DRC UML disassembly log. Default is OFF (\-nodrc_log_uml). -.TP -.B \-[no]drc_log_native -Write DRC native disassembly log. Default is OFF (\-no_drc_log_native). -.TP -.B \-bios \fIbiosname -Specifies the specific BIOS to use with the current system, for -systems that make use of a BIOS. The \-listxml output will list all of -the possible BIOS names for a system. The default is 'default'. -.TP -.B \-[no]cheat, \-[no]c -Activates the cheat menu with autofire options and other tricks from -the cheat database, if present. -The default is OFF (\-nocheat). -.TP -.B \-[no]skip_gameinfo -Forces MESS to skip displaying the system info screen. The default is OFF -(\-noskip_gameinfo). -.TP -.B \-uifont \fIfontname -Specifies the name of a BDF font file to use for the UI font. If this -font cannot be found or cannot be loaded, the system will fall back -to its built\-in UI font. On some platforms \fIfontname\fP can be a system -font name instead of a BDF font file. The default is 'default' (use -the OSD\-determined default font). -.TP -.B \-ui \fIsimple\fR|\fIcabinet -Type of UI. -.TP -.B \-ramsize, \-ram \fIvalue -Size of RAM (if supported by driver). -.TP -.B \-[no]confirm_quit -Display confirm quit screen on exit. Default is ON (\-confirm_quit). -.TP -.B \-[no]ui_mouse -Display UI mouse cursor. Default is OFF (\-noui_mouse). -.TP -.B \-autoboot_command, \-ab \fIcommand -Command string to execute after machine boot (in quotes ""). To issue -a quote to the emulation, use \fB"""\fP in the string. -Using \fB\\n\fP will issue a create a new line, issuing what was -typed prior as a command. Example: -\fB\-autoboot_command "load """$""",8,1\\n"\fP. -.TP -.B \-autoboot_delay \fR[\fIvalue\fP] -Timer delay (in seconds) to trigger command execution on autoboot. -Default is 2. -.TP -.B \-autoboot_script, \-script \fR[\fIfilename.lua\fP] -File containing scripting to execute after machine boot. -.TP -.B \-[no]http -Enable local http server. Default is OFF (\-nohttp). -.TP -.B \-http_port \fIport -Internal webserver listener port. -.TP -.B \-http_path \fIpath -Path to web files. Default is /usr/share/games/mess/web. -.TP -.B \-[no]console -Enable emulator LUA console. Default is OFF (\-noconsole). -.TP -.B \-[no]plugins -Enable LUA plugin support. Default is ON (\-plugins). -.TP -.B \-plugin \fIvalue -List of plugins to enable. -.TP -.B \-noplugin \fIvalue -List of plugins to disable. -.TP -.B \-language, \-lang \fIvalue -Display language. Default is 'English'. -.TP -.B \-newui, \-nu -Use the new MESS UI. -.TP -.B \-watchdog \fIvalue -Specifies a number of seconds after which MESS should automatically exit -if it detects that the emulation has locked up. -.\" -.\" -.\" SEE ALSO chapter -.SH SEE ALSO -castool(1), chdman(1), floptool(1), imgtool(1) -.\" -.\" -.\" LEGAL NOTICE chapter -.SH LEGAL NOTICE -Please visit the MAME website for some important legal information: -.PP -http://mamedev.org/legal.html diff --git a/docs/source/usingmame/mamemenus.rst b/docs/source/usingmame/mamemenus.rst index 0673528214d..297f3870a6d 100644 --- a/docs/source/usingmame/mamemenus.rst +++ b/docs/source/usingmame/mamemenus.rst @@ -165,10 +165,6 @@ from the :ref:`main menu `. 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 (general) - Lets you select assign user interface controls, or assign default controls - for all emulated systems. See the section on :ref:`configuring inputs - ` for more details. Input Assignments (this system) Lets you select assign controls to emulated inputs for the running system. See the section on :ref:`configuring inputs ` for more details. @@ -190,6 +186,10 @@ Toggle Inputs Shows the :ref:`Toggle Inputs menu `, 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 + ` for more details. Input Devices Shows the :ref:`Input Devices menu `, which lists the input devices recognised by MAME. diff --git a/scripts/build/verinfo.py b/scripts/build/verinfo.py index 59e383624cc..7e61012b796 100644 --- a/scripts/build/verinfo.py +++ b/scripts/build/verinfo.py @@ -1,171 +1,137 @@ #!/usr/bin/python3 ## ## license:BSD-3-Clause -## copyright-holders:Aaron Giles, Andrew Gardner +## copyright-holders:Vas Crabb +import argparse import io import re +import string import sys def parse_args(): - def usage(): - sys.stderr.write('Usage: verinfo.py [-b mame|mess|ume] [-r|-p] [-o ] \n') - sys.exit(1) - - flags = True - target = 'mame' - format = 'rc' - input = None - output = None - i = 1 - while i < len(sys.argv): - if flags and (sys.argv[i] == '-r'): - format = 'rc' - elif flags and (sys.argv[i] == '-p'): - format = 'plist' - elif flags and (sys.argv[i] == '-b'): - i += 1 - if i >= len(sys.argv): - usage() - else: - target = sys.argv[i] - elif flags and (sys.argv[i] == '-o'): - i += 1 - if (i >= len(sys.argv)) or (output is not None): - usage() - else: - output = sys.argv[i] - elif flags and (sys.argv[i] == '--'): - flags = False - elif flags and sys.argv[i].startswith('-'): - usage() - elif input is not None: - usage() - else: - input = sys.argv[i] - i += 1 - if input is None: - usage() - return target, format, input, output + parser = argparse.ArgumentParser() + parser.add_argument('--target', '-t', metavar='', default='mame', help='target name') + parser.add_argument('--subtarget', '-s', metavar='', default='mame', help='subtarget name') + parser.add_argument('--executable', '-e', metavar='', default='mame', help='base executable name') + parser.add_argument('--format', '-f', choices=('rc', 'plist'), metavar='', default='rc', help='output format') + parser.add_argument('--resources', '-r', metavar='', help='resource file to include') + parser.add_argument('-o', metavar='', help='output file name') + parser.add_argument('input', metavar='', help='version info source file') + return parser.parse_args() -def extract_version(input): +def extract_version(verinfo): pattern = re.compile('\s+BARE_BUILD_VERSION\s+"(([^."]+)\.([^."]+))"') - for line in input.readlines(): + for line in verinfo: match = pattern.search(line) if match: return match.group(1), match.group(2), match.group(3) return None, None, None -build, outfmt, srcfile, dstfile = parse_args() +if __name__ == '__main__': + options = parse_args() -try: - fp = io.open(srcfile, 'r') -except IOError: - sys.stderr.write("Unable to open source file '%s'\n" % srcfile) - sys.exit(1) - -version_string, version_major, version_minor = extract_version(fp) -version_build = "0" -version_subbuild = "0" -if not version_string: - sys.stderr.write("Unable to extract version from source file '%s'\n" % srcfile) - sys.exit(1) -fp.close() - -if dstfile is not None: try: - fp = open(dstfile, 'w') - except IOError: - sys.stderr.write("Unable to open output file '%s'\n" % dstfile) + with io.open(options.input, 'r') as verinfo: + verfull, vermajor, verminor = extract_version(verinfo) + verbuild = '0' + except IOError as e: + sys.stderr.write("Error reading source file '%s': %s\n" % (options.input, e)) sys.exit(1) -else: - fp = sys.stdout -if build == "mess": - # MESS - author = "MESS Team" - comments = "Multi Emulation Super System" - company_name = "MESS Team" - file_description = "MESS" - internal_name = "MESS" - original_filename = "MESS" - product_name = "MESS" - bundle_identifier = "org.mamedev.mess" -else: - # MAME - author = "Nicola Salmoria and the MAME Team" - comments = "Multi-purpose emulation framework" - company_name = "MAME Team" - file_description = "MAME" - internal_name = "MAME" if build == "mame" else build - original_filename = "MAME" if build == "mame" else build - product_name = "MAME" if build == "mame" else build - bundle_identifier = "org.mamedev." + build + if verfull is None: + sys.stderr.write("Unable to extract version from source file '%s'\n" % (options.input, )) + sys.exit(1) -legal_copyright = "Copyright Nicola Salmoria and the MAME team" - -if outfmt == 'rc': - fp.write('VS_VERSION_INFO VERSIONINFO\n') - fp.write('\tFILEVERSION %s,%s,%s,%s\n' % (version_major, version_minor, version_build, version_subbuild)) - fp.write('\tPRODUCTVERSION %s,%s,%s,%s\n' % (version_major, version_minor, version_build, version_subbuild)) - fp.write('\tFILEFLAGSMASK 0x3fL\n') - if version_build == 0: - fp.write('\tFILEFLAGS 0x0L\n') + if options.format == 'plist': + template = string.Template( + '\n' \ + '\n' \ + '\n' \ + '\n' \ + '\tCFBundleDisplayName\n' \ + '\t${product}\n' \ + '\tCFBundleIdentifier\n' \ + '\t${rdns}\n' \ + '\tCFBundleInfoDictionaryVersion\n' \ + '\t6.0\n' \ + '\tCFBundleName\n' \ + '\t${product}\n' \ + '\tCFBundleShortVersionString\n' \ + '\t${major}.${minor}.${build}\n' \ + '\tNSPrincipalClass\n' \ + '\tNSApplication\n' \ + '\n' \ + '\n') else: - fp.write('\tFILEFLAGS VS_FF_PRERELEASE\n') - fp.write('\tFILEOS VOS_NT_WINDOWS32\n') - fp.write('\tFILETYPE VFT_APP\n') - fp.write('\tFILESUBTYPE VFT2_UNKNOWN\n') - fp.write('BEGIN\n') - fp.write('\tBLOCK "StringFileInfo"\n') - fp.write('\tBEGIN\n') - fp.write('#ifdef UNICODE\n') - fp.write('\t\tBLOCK "040904b0"\n') - fp.write('#else\n') - fp.write('\t\tBLOCK "040904E4"\n') - fp.write('#endif\n') - fp.write('\t\tBEGIN\n') - fp.write('\t\t\tVALUE "Author", "%s\\0"\n' % author) - fp.write('\t\t\tVALUE "Comments", "%s\\0"\n' % comments) - fp.write('\t\t\tVALUE "CompanyName", "%s\\0"\n' % company_name) - fp.write('\t\t\tVALUE "FileDescription", "%s\\0"\n' % file_description) - fp.write('\t\t\tVALUE "FileVersion", "%s, %s, %s, %s\\0"\n' % (version_major, version_minor, version_build, version_subbuild)) - fp.write('\t\t\tVALUE "InternalName", "%s\\0"\n' % internal_name) - fp.write('\t\t\tVALUE "LegalCopyright", "%s\\0"\n' % legal_copyright) - fp.write('\t\t\tVALUE "OriginalFilename", "%s\\0"\n' % original_filename) - fp.write('\t\t\tVALUE "ProductName", "%s\\0"\n' % product_name) - fp.write('\t\t\tVALUE "ProductVersion", "%s\\0"\n' % version_string) - fp.write('\t\tEND\n') - fp.write('\tEND\n') - fp.write('\tBLOCK "VarFileInfo"\n') - fp.write('\tBEGIN\n') - fp.write('#ifdef UNICODE\n') - fp.write('\t\tVALUE "Translation", 0x409, 1200\n') - fp.write('#else\n') - fp.write('\t\tVALUE "Translation", 0x409, 1252\n') - fp.write('#endif\n') - fp.write('\tEND\n') - fp.write('END\n') -elif outfmt == 'plist': - fp.write('\n') - fp.write('\n') - fp.write('\n') - fp.write('\n') - fp.write('\tCFBundleDisplayName\n') - fp.write('\t%s\n' % product_name) - fp.write('\tCFBundleIdentifier\n') - fp.write('\t%s\n' % bundle_identifier) - fp.write('\tCFBundleInfoDictionaryVersion\n') - fp.write('\t6.0\n') - fp.write('\tCFBundleName\n') - fp.write('\t%s\n' % product_name) - fp.write('\tCFBundleShortVersionString\n') - fp.write('\t%s.%s.%s\n' % (version_major, version_minor, version_build)) - fp.write('\tNSPrincipalClass\n') - fp.write('\tNSApplication\n') - fp.write('\n') - fp.write('\n') -fp.flush() + template = string.Template( + '#include \n' \ + '#pragma code_page(65001)\n' \ + 'VS_VERSION_INFO VERSIONINFO\n' \ + '\tFILEVERSION ${major},${minor},${build},${subbuild}\n' \ + '\tPRODUCTVERSION ${major},${minor},${build},${subbuild}\n' \ + '\tFILEFLAGSMASK 0x3fL\n' \ + '\tFILEFLAGS ${winfileflags}\n' \ + '\tFILEOS VOS_NT_WINDOWS32\n' \ + '\tFILETYPE VFT_APP\n' \ + '\tFILESUBTYPE VFT2_UNKNOWN\n' \ + 'BEGIN\n' \ + '\tBLOCK "StringFileInfo"\n' \ + '\tBEGIN\n' \ + '#ifdef UNICODE\n' \ + '\t\tBLOCK "040904b0"\n' \ + '#else\n' \ + '\t\tBLOCK "040904E4"\n' \ + '#endif\n' \ + '\t\tBEGIN\n' \ + '\t\t\tVALUE "Author", "${author}\\0"\n' \ + '\t\t\tVALUE "Comments", "${comments}\\0"\n' \ + '\t\t\tVALUE "CompanyName", "${company}\\0"\n' \ + '\t\t\tVALUE "FileDescription", "${filedesc}\\0"\n' \ + '\t\t\tVALUE "FileVersion", "${major}, ${minor}, ${build}, ${subbuild}\\0"\n' \ + '\t\t\tVALUE "InternalName", "${internal}\\0"\n' \ + '\t\t\tVALUE "LegalCopyright", "${copyright}\\0"\n' \ + '\t\t\tVALUE "OriginalFilename", "${original}\\0"\n' \ + '\t\t\tVALUE "ProductName", "${product}\\0"\n' \ + '\t\t\tVALUE "ProductVersion", "${version}\\0"\n' \ + '\t\tEND\n' \ + '\tEND\n' \ + '\tBLOCK "VarFileInfo"\n' \ + '\tBEGIN\n' \ + '#ifdef UNICODE\n' \ + '\t\tVALUE "Translation", 0x409, 1200\n' \ + '#else\n' \ + '\t\tVALUE "Translation", 0x409, 1252\n' \ + '#endif\n' \ + '\tEND\n' \ + 'END\n' \ + '#include "${resources}"\n') + + internal = options.target + '_' + options.subtarget if options.target != options.subtarget else options.target + text = template.substitute( + version=verfull, + major=vermajor, minor=verminor, build='0', subbuild='0', + author='MAMEdev and contributors', + comments='Multi-purpose emulation framework', + company='MAMEdev', + filedesc='MAME', + internal=internal, + original=options.executable, + product=('MAME' if options.target == 'mame' else options.target), + rdns=('org.mamedev.' + internal), + copyright='\u00a9 1997-2022 MAMEdev and contributors', + winfileflags=('0x0L' if verbuild == '0' else 'VS_FF_PRERELEASE'), + resources=(options.resources or 'mame.rc')) + + if options.o is not None: + try: + with io.open(options.o, 'w', encoding='utf-8') as out: + out.write(text) + except IOError as e: + sys.stderr.write("Error writing output file '%s': %s\n" % (options.o, e)) + sys.exit(1) + else: + sys.stdout.write(text) diff --git a/scripts/resources/windows/mame/mame.rc b/scripts/resources/windows/mame/mame.rc index 8156b424c64..14caef933b9 100644 --- a/scripts/resources/windows/mame/mame.rc +++ b/scripts/resources/windows/mame/mame.rc @@ -6,9 +6,6 @@ // //============================================================ -#include -#include "mamevers.rc" - 1 24 MOVEABLE PURE "mame.man" 2 ICON DISCARDABLE "mame.ico" diff --git a/scripts/resources/windows/mess/mess.ico b/scripts/resources/windows/mess/mess.ico deleted file mode 100644 index bab67dd6195bae0bdc37b243ece7f8b152a9863e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 372526 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 diff --git a/scripts/resources/windows/mess/mess.man b/scripts/resources/windows/mess/mess.man deleted file mode 100644 index 7feef51ce9f..00000000000 --- a/scripts/resources/windows/mess/mess.man +++ /dev/null @@ -1,16 +0,0 @@ - - - - MESS - - - - - - - - true - true - - - diff --git a/scripts/resources/windows/mess/mess.rc b/scripts/resources/windows/mess/mess.rc deleted file mode 100644 index 1329bcd6fb8..00000000000 --- a/scripts/resources/windows/mess/mess.rc +++ /dev/null @@ -1,14 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:Aaron Giles -//============================================================ -// -// mess.rc - Minimal resource file for Win32 MAME -// -//============================================================ - -#include -#include "messvers.rc" - -1 24 MOVEABLE PURE "mess.man" - -2 ICON DISCARDABLE "mess.ico" diff --git a/scripts/src/main.lua b/scripts/src/main.lua index c76fa1da227..da2ba71b61f 100644 --- a/scripts/src/main.lua +++ b/scripts/src/main.lua @@ -10,20 +10,18 @@ --------------------------------------------------------------------------- function mainProject(_target, _subtarget) +local projname if (_OPTIONS["SOURCES"] == nil) then if (_target == _subtarget) then - project (_target) + projname = _target else - if (_subtarget=="mess") then - project (_subtarget) - else - project (_target .. _subtarget) - end + projname = _target .. _subtarget end else - project (_subtarget) + projname = _subtarget end - uuid (os.uuid(_target .."_" .. _subtarget)) + project (projname) + uuid (os.uuid(_target .. "_" .. _subtarget)) kind "ConsoleApp" configuration { "android*" } @@ -196,7 +194,8 @@ end override_resources = false; - maintargetosdoptions(_target,_subtarget) + maintargetosdoptions(_target, _subtarget) + local exename = projname -- FIXME: should include the OSD prefix if any includedirs { MAME_DIR .. "src/osd", @@ -207,11 +206,15 @@ end MAME_DIR .. "src/lib/util", MAME_DIR .. "3rdparty", GEN_DIR .. _target .. "/layout", - GEN_DIR .. "resource", ext_includedir("zlib"), ext_includedir("flac"), } + resincludedirs { + MAME_DIR .. "scripts/resources/windows/" .. _target, + GEN_DIR .. "resource", + } + if (STANDALONE==true) then standalone(); @@ -219,71 +222,96 @@ end if (STANDALONE~=true) then if _OPTIONS["targetos"]=="macosx" and (not override_resources) then + local plistname = _target .. "_" .. _subtarget .. "-Info.plist" linkoptions { - "-sectcreate __TEXT __info_plist " .. _MAKE.esc(GEN_DIR) .. "resource/" .. _subtarget .. "-Info.plist" + "-sectcreate __TEXT __info_plist " .. _MAKE.esc(GEN_DIR) .. "resource/" .. plistname } custombuildtask { - { GEN_DIR .. "version.cpp" , GEN_DIR .. "resource/" .. _subtarget .. "-Info.plist", { MAME_DIR .. "scripts/build/verinfo.py" }, {"@echo Emitting " .. _subtarget .. "-Info.plist" .. "...", PYTHON .. " $(1) -p -b " .. _subtarget .. " $(<) > $(@)" }}, + { + GEN_DIR .. "version.cpp", + GEN_DIR .. "resource/" .. plistname, + { MAME_DIR .. "scripts/build/verinfo.py" }, + { + "@echo Emitting " .. plistname .. "...", + PYTHON .. " $(1) -f plist -t " .. _target .. " -s " .. _subtarget .. " -e " .. exename .. " -o $(@) $(<)" + } + }, } dependency { - { "$(TARGET)" , GEN_DIR .. "resource/" .. _subtarget .. "-Info.plist", true }, + { "$(TARGET)" , GEN_DIR .. "resource/" .. plistname, true }, } end - local rctarget = _subtarget + local rcversfile = GEN_DIR .. "resource/" .. _target .. "_" .. _subtarget .. "_vers.rc" if _OPTIONS["targetos"]=="windows" and (not override_resources) then - rcfile = MAME_DIR .. "scripts/resources/windows/" .. _subtarget .. "/" .. rctarget ..".rc" - if os.isfile(rcfile) then - files { - rcfile, - } - dependency { - { "$(OBJDIR)/".._subtarget ..".res" , GEN_DIR .. "resource/" .. rctarget .. "vers.rc", true }, - } - else - rctarget = "mame" - files { - MAME_DIR .. "scripts/resources/windows/mame/mame.rc", - } - dependency { - { "$(OBJDIR)/mame.res" , GEN_DIR .. "resource/" .. rctarget .. "vers.rc", true }, - } - end + files { + rcversfile + } end - local mainfile = MAME_DIR .. "src/".._target .."/" .. _subtarget ..".cpp" + local rcincfile = MAME_DIR .. "scripts/resources/windows/" .. _target .. "/" .. _subtarget ..".rc" + if not os.isfile(rcincfile) then + rcincfile = MAME_DIR .. "scripts/resources/windows/mame/mame.rc" + resincludedirs { + MAME_DIR .. "scripts/resources/windows/mame", + } + end + + local mainfile = MAME_DIR .. "src/" .. _target .. "/" .. _subtarget .. ".cpp" if not os.isfile(mainfile) then - mainfile = MAME_DIR .. "src/".._target .."/" .. _target ..".cpp" + mainfile = MAME_DIR .. "src/" .. _target .. "/" .. _target .. ".cpp" end files { mainfile, GEN_DIR .. "version.cpp", - GEN_DIR .. _target .. "/" .. _subtarget .."/drivlist.cpp", + GEN_DIR .. _target .. "/" .. _subtarget .. "/drivlist.cpp", } if (_OPTIONS["SOURCES"] == nil) then - if os.isfile(MAME_DIR .. "src/".._target .."/" .. _subtarget ..".flt") then + if os.isfile(MAME_DIR .. "src/" .. _target .."/" .. _subtarget ..".flt") then dependency { - { - GEN_DIR .. _target .. "/" .. _subtarget .."/drivlist.cpp", MAME_DIR .. "src/".._target .."/" .. _target ..".lst", true }, + { GEN_DIR .. _target .. "/" .. _subtarget .."/drivlist.cpp", MAME_DIR .. "src/".._target .."/" .. _target ..".lst", true }, } custombuildtask { - { MAME_DIR .. "src/".._target .."/" .. _subtarget ..".flt" , GEN_DIR .. _target .. "/" .. _subtarget .."/drivlist.cpp", { MAME_DIR .. "scripts/build/makedep.py", MAME_DIR .. "src/".._target .."/" .. _target ..".lst" }, {"@echo Building driver list...", PYTHON .. " $(1) driverlist $(2) -f $(<) > $(@)" }}, + { + MAME_DIR .. "src/" .. _target .. "/" .. _subtarget .. ".flt", + GEN_DIR .. _target .. "/" .. _subtarget .. "/drivlist.cpp", + { MAME_DIR .. "scripts/build/makedep.py", MAME_DIR .. "src/" .. _target .."/" .. _target .. ".lst" }, + { + "@echo Building driver list...", + PYTHON .. " $(1) driverlist $(2) -f $(<) > $(@)" + } + }, } else - if os.isfile(MAME_DIR .. "src/".._target .."/" .. _subtarget ..".lst") then + if os.isfile(MAME_DIR .. "src/" .._target .. "/" .. _subtarget ..".lst") then custombuildtask { - { MAME_DIR .. "src/".._target .."/" .. _subtarget ..".lst" , GEN_DIR .. _target .. "/" .. _subtarget .."/drivlist.cpp", { MAME_DIR .. "scripts/build/makedep.py" }, {"@echo Building driver list...", PYTHON .. " $(1) driverlist $(<) > $(@)" }}, + { + MAME_DIR .. "src/" .. _target .. "/" .. _subtarget .. ".lst", + GEN_DIR .. _target .. "/" .. _subtarget .."/drivlist.cpp", + { MAME_DIR .. "scripts/build/makedep.py" }, + { + "@echo Building driver list...", + PYTHON .. " $(1) driverlist $(<) > $(@)" + } + }, } else dependency { - { - GEN_DIR .. _target .. "/" .. _target .."/drivlist.cpp", MAME_DIR .. "src/".._target .."/" .. _target ..".lst", true }, + { GEN_DIR .. _target .. "/" .. _target .."/drivlist.cpp", MAME_DIR .. "src/".._target .."/" .. _target ..".lst", true }, } custombuildtask { - { MAME_DIR .. "src/".._target .."/" .. _target ..".lst" , GEN_DIR .. _target .. "/" .. _target .."/drivlist.cpp", { MAME_DIR .. "scripts/build/makedep.py" }, {"@echo Building driver list...", PYTHON .. " $(1) driverlist $(<) > $(@)" }}, + { + MAME_DIR .. "src/" .. _target .. "/" .. _target .. ".lst", + GEN_DIR .. _target .. "/" .. _target .. "/drivlist.cpp", + { MAME_DIR .. "scripts/build/makedep.py" }, + { + "@echo Building driver list...", + PYTHON .. " $(1) driverlist $(<) > $(@)" + } + }, } end end @@ -292,7 +320,7 @@ if (STANDALONE~=true) then if (_OPTIONS["SOURCES"] ~= nil) then dependency { { - GEN_DIR .. _target .. "/" .. _subtarget .."/drivlist.cpp", MAME_DIR .. "src/".._target .."/" .. _target ..".lst", true }, + GEN_DIR .. _target .. "/" .. _subtarget .."/drivlist.cpp", MAME_DIR .. "src/".._target .."/" .. _target ..".lst", true }, } custombuildtask { { GEN_DIR .. _target .."/" .. _subtarget ..".flt" , GEN_DIR .. _target .. "/" .. _subtarget .."/drivlist.cpp", { MAME_DIR .. "scripts/build/makedep.py", MAME_DIR .. "src/".._target .."/" .. _target ..".lst" }, {"@echo Building driver list...", PYTHON .. " $(1) driverlist $(2) -f $(<) > $(@)" }}, @@ -300,15 +328,29 @@ if (STANDALONE~=true) then end configuration { "mingw*" } + dependency { + { "$(OBJDIR)/" .. _target .. "_" .. _subtarget .. "_vers.res", rcincfile, true }, + } custombuildtask { - { GEN_DIR .. "version.cpp" , GEN_DIR .. "resource/" .. rctarget .. "vers.rc", { MAME_DIR .. "scripts/build/verinfo.py" }, {"@echo Emitting " .. rctarget .. "vers.rc" .. "...", PYTHON .. " $(1) -r -b " .. rctarget .. " $(<) > $(@)" }}, + { + GEN_DIR .. "version.cpp" , + rcversfile, + { MAME_DIR .. "scripts/build/verinfo.py" }, + { + "@echo Emitting " .. _target .. "_" .. _subtarget .. "_vers.rc" .. "...", + PYTHON .. " $(1) -f rc -t " .. _target .. " -s " .. _subtarget .. " -e " .. exename .. " -r " .. rcincfile .. " -o $(@) $(<)" + } + }, } configuration { "vs20*" } + dependency { + { "$(OBJDIR)/" .. _target .. "_" .. _subtarget .. "_vers.res", rcincfile, true }, + } prebuildcommands { - "mkdir \"" .. path.translate(GEN_DIR .. "resource/","\\") .. "\" 2>NUL", - "@echo Emitting ".. rctarget .. "vers.rc...", - PYTHON .. " \"" .. path.translate(MAME_DIR .. "scripts/build/verinfo.py","\\") .. "\" -r -b " .. rctarget .. " \"" .. path.translate(GEN_DIR .. "version.cpp","\\") .. "\" > \"" .. path.translate(GEN_DIR .. "resource/" .. rctarget .. "vers.rc", "\\") .. "\"" , + "mkdir \"" .. path.translate(GEN_DIR .. _target .. "/" .. _subtarget .. "/", "\\") .. "\" 2>NUL", + "@echo Emitting " .. _target .. "_" .. _subtarget .. "_vers.rc" .. "...", + PYTHON .. " \"" .. path.translate(MAME_DIR .. "scripts/build/verinfo.py", "\\") .. "\" -f rc -t " .. _target .. " -s " .. _subtarget .. " -e " .. exename .. " -o \"" .. path.translate(rcversfile) .. "\" -r \"" .. path.translate(rcincfile, "\\") .. "\" \"" .. path.translate(GEN_DIR .. "version.cpp", "\\") .. "\"", } end diff --git a/src/frontend/mame/ui/inputopts.cpp b/src/frontend/mame/ui/inputopts.cpp index 6884574c6a5..ff433e72e7e 100644 --- a/src/frontend/mame/ui/inputopts.cpp +++ b/src/frontend/mame/ui/inputopts.cpp @@ -92,7 +92,7 @@ void menu_input_options::populate(float &customtop, float &custombottom) bool inputmap, analog, toggle; scan_inputs(machine(), inputmap, analog, toggle); - item_append(_("menu-inputopts", "Input Assignments (general)"), 0, (void *)INPUTMAP_GENERAL); + // system-specific stuff if (inputmap) item_append(_("menu-inputopts", "Input Assignments (this system)"), 0, (void *)INPUTMAP_MACHINE); if (analog) @@ -101,11 +101,12 @@ void menu_input_options::populate(float &customtop, float &custombottom) item_append(_("menu-inputopts", "Keyboard Selection"), 0, (void *)KEYBOARD); if (toggle) item_append(_("menu-inputopts", "Toggle Inputs"), 0, (void *)TOGGLES); + if (inputmap || analog || machine().natkeyboard().keyboard_count() || toggle) + item_append(menu_item_type::SEPARATOR); - item_append(menu_item_type::SEPARATOR); - + // general stuff + item_append(_("menu-inputopts", "Input Assignments (general)"), 0, (void *)INPUTMAP_GENERAL); item_append(_("menu-inputopts", "Input Devices"), 0, (void *)INPUTDEV); - item_append(menu_item_type::SEPARATOR); } diff --git a/src/frontend/mame/ui/miscmenu.cpp b/src/frontend/mame/ui/miscmenu.cpp index 58792ef56c8..55a2aab986f 100644 --- a/src/frontend/mame/ui/miscmenu.cpp +++ b/src/frontend/mame/ui/miscmenu.cpp @@ -453,8 +453,8 @@ void menu_crosshair::populate(float &customtop, float &custombottom) // Make sure to keep these matched to the CROSSHAIR_VISIBILITY_xxx types static char const *const vis_text[] = { - N_p("menu-crosshair", "Always"), N_p("menu-crosshair", "Never"), + N_p("menu-crosshair", "Always"), N_p("menu-crosshair", "When moved") }; bool use_auto = false; diff --git a/src/mame/mame.cpp b/src/mame/mame.cpp index 217651fd510..c3fba77d580 100644 --- a/src/mame/mame.cpp +++ b/src/mame/mame.cpp @@ -13,8 +13,8 @@ #define APPNAME "MAME" #define APPNAME_LOWER "mame" #define CONFIGNAME "mame" -#define COPYRIGHT "Copyright Nicola Salmoria\nand the MAME team\nhttps://mamedev.org" -#define COPYRIGHT_INFO "Copyright Nicola Salmoria and the MAME team" +#define COPYRIGHT "Copyright MAMEdev and contributors\nhttps://mamedev.org" +#define COPYRIGHT_INFO "Copyright MAMEdev and contributors" const char * emulator_info::get_appname() { return APPNAME;} const char * emulator_info::get_appname_lower() { return APPNAME_LOWER;} diff --git a/src/mame/mess.cpp b/src/mame/mess.cpp deleted file mode 100644 index ab1c26b59c5..00000000000 --- a/src/mame/mess.cpp +++ /dev/null @@ -1,23 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:Aaron Giles -/*************************************************************************** - - mess.cpp - - Specific (per target) constants - -****************************************************************************/ - -#include "emu.h" - -#define APPNAME "MESS" -#define APPNAME_LOWER "mess" -#define CONFIGNAME "mess" -#define COPYRIGHT "Copyright Nicola Salmoria\nand the MAME team\nhttps://mamedev.org" -#define COPYRIGHT_INFO "Copyright Nicola Salmoria and the MAME team" - -const char * emulator_info::get_appname() { return APPNAME;} -const char * emulator_info::get_appname_lower() { return APPNAME_LOWER;} -const char * emulator_info::get_configname() { return CONFIGNAME;} -const char * emulator_info::get_copyright() { return COPYRIGHT;} -const char * emulator_info::get_copyright_info() { return COPYRIGHT_INFO;}