Difference between revisions of "MAME"

From CPCWiki - THE Amstrad CPC encyclopedia!
Jump to: navigation, search
(Pang screenshot caption modification. MAME emulation is not “glitchy” anymore.)
 
(52 intermediate revisions by 2 users not shown)
Line 1: Line 1:
[[File:Mess sysinfo.png|thumb|upright=1.2|The MAME system info box for the CPC6128]]
+
[[File:Mess sysinfo.png|thumb|upright=.9|The MAME system info box for the CPC6128]]
[[File:Mess gx4000 pang.png|thumb|upright=1.2|MAME also has (still somewhat glitchy) support for the GX4000 and CPC+ series. Note the strange blue bar at the bottom in ''[[Pang (cartridge)|Pang]]''.]]
+
[[File:Mess gx4000 pang.png|thumb|upright=1.2|MAME also has support for the GX4000 and CPC+ series. Here is shown ''[[Pang (cartridge)|Pang]]'' for the GX4000.]]
'''MAME''' (Multiple Arcade Machine Emulator) is an emulator for arcade games, vintage computers, gaming consoles, chess computers, calculators, etc. MAME 0.162 (released on May 27, 2015) merged the previously separate MAME and MESS (Multi Emulator Super System) codebases into one, so that one executable now combines the emulation capabilities of pre-0.162 MAME/MESS.
+
'''MAME''' (Multiple Arcade Machine Emulator) is a multi-platform emulator for arcade games, home computers, gaming consoles, chess computers, calculators, etc. MAME 0.162 (released on May 27, 2015) merged the previously separate MAME and MESS (Multi Emulator Super System) projects into one, so that a single executable now combines the emulation capabilities of pre-0.162 MAME/MESS.
  
The most important goal of MAME is highly accurate emulation, not speed. MAME is mainly a preservation project that aims to reproduce the behaviour of the real hardware perfectly, so performance may be slightly worse than many dedicated CPC emulators.
+
The most important goal of MAME is highly accurate emulation, not speed. MAME is mainly a preservation project that aims to reproduce the behaviour of the real hardware perfectly, so CPU usage may be slightly higher than many dedicated CPC emulators.
  
 
==Emulated systems==
 
==Emulated systems==
Line 16: Line 16:
  
 
On OS X, you can install MAME via [http://brew.sh/ Homebrew]:
 
On OS X, you can install MAME via [http://brew.sh/ Homebrew]:
brew tap homebrew/games
 
 
  brew install mame
 
  brew install mame
  
Line 22: Line 21:
 
  alias mame=/usr/share/sdlmame/sdlmame
 
  alias mame=/usr/share/sdlmame/sdlmame
  
==Command line arguments==
+
==Starting MAME; command line arguments; MAME menu; quitting==
 +
[[File:MAME menu CPC.png|thumb|upright|The MAME menu]]
 +
First get the [[Media:CPC_ROMs_for_MAME.zip|CPC ROMs for MAME]] and unzip them into the MAME roms folder.
  
Typical command line to start MAME in CPC mode:
+
Typical command line to start MAME in CPC mode (windowed mode and with a disc inserted in drive A):
  mame cpc6128 -skip_gameinfo -window -flop1 /path/to/disk.dsk
+
  mame cpc6128 -skip_gameinfo -window -flop1 disk.dsk
  
;Device options for the CPC from [http://www.progettoemma.net/mess/extra.html sysinfo.dat]
+
Supported CPC models are cpc464, cpc464p, cpc664, cpc6128, cpc6128p, gx4000, cpc6128f (French), cpc6128s (Swedish), and the clones kccomp ([[KC Compact]]) and al520ex ([[Aleste 520EX]]; hold Shift during boot to go to Basic).
 +
 
 +
Press ''Scroll Lock'' to toggle partial keyboard emulation mode. Now you can use ''P'' to pause MAME, ''Tab'' to enter the MAME menu, and ''Escape'' to quit MAME. ''Alt-Return'' toggles fullscreen mode. (See also [http://docs.mamedev.org/usingmame/defaultkeys.html default keys].)
 +
 
 +
You can use the "-ab" commandline option to type text into MAME, e.g.
 +
mame cpc6128 -flop1 disk.dsk -ab "run\"disc\n"
 +
will boot the disc.
 +
 
 +
===Device options for the CPC from [http://www.progettoemma.net/mess/extra.html sysinfo.dat]===
 
{|class="wikitable"
 
{|class="wikitable"
 
|'''Name'''
 
|'''Name'''
Line 61: Line 70:
 
You can use zipped disk images too. If there is more than one DSK image in the zip file, treat the zip file like a directory, e.g.
 
You can use zipped disk images too. If there is more than one DSK image in the zip file, treat the zip file like a directory, e.g.
 
  mame cpc6128 -flop1 disk.zip/disk0.dsk
 
  mame cpc6128 -flop1 disk.zip/disk0.dsk
 +
 +
===Python script to start MAME in CPC mode===
 +
On Linux, you can also set your file manager (e.g. Nautilus or Konqueror) to open .dsk files with the following Python script:
 +
<pre>
 +
#!/usr/bin/env python
 +
 +
# Call as
 +
#  "cpc"  : emulated keyboard
 +
#  "cpcn" : natural
 +
 +
import os, os.path, zipfile
 +
from sys import argv
 +
 +
if 'cpcn' in argv[0]:
 +
nat = '-natural'
 +
else:
 +
nat = ''
 +
 +
s = "/usr/share/sdlmame/sdlmame cpc6128 -skip_gameinfo -window %s -keymap -keymap_file /usr/share/sdlmame/keymaps/km_de_LINUX.map" % nat
 +
 +
def checkzip(t):
 +
"Check if file is a ZIP file; use the first file in the archive"
 +
if t[-4:].lower() == '.zip':
 +
a = zipfile.ZipFile(t).namelist()
 +
t = os.path.join(t, a[0])
 +
return t
 +
 +
if len(argv) > 1:
 +
for x in range(1, len(argv)):
 +
s += ' -flop%u "%s"' % (x, checkzip(argv[x]))
 +
os.system(s)
 +
</pre>
 +
This script should open a MAME window with the disc inserted in drive A. (Note that this also selects the German keymap.) You can also use this to open ZIP files containing disc images, e.g. "cpc mydisc.zip" will try to insert the first file in the ZIP archive.
 +
 +
==GUI front-ends==
 +
[[File:Mameui.png|thumb|MAMEUI64 on Windows]]
 +
 +
Several GUI front-ends for MAME/MESS exist for Windows, Linux, and OS X:
 +
 +
*[http://www.mameui.info/ MAMEUI64] (Windows)
 +
*[http://qmc2.arcadehits.net/ QMC2] (Windows, OS X, Linux)
  
 
==Keyboard layouts==
 
==Keyboard layouts==
Line 69: Line 119:
  
 
To use a German keyboard in emulated keyboard mode, start MAME e.g. with (key map path on Linux):
 
To use a German keyboard in emulated keyboard mode, start MAME e.g. with (key map path on Linux):
  mame cpc6128 -keymap -keymap_file /usr/share/sdlmess/keymaps/km-de.txt
+
  mame cpc6128 -keymap -keymap_file /usr/share/sdlmame/keymaps/km_de_LINUX.map
 +
 
 +
You can also put these settings in your mame.ini like this:
 +
keymap                    1
 +
keymap_file              /usr/share/sdlmame/keymaps/km_de_LINUX.map
  
 
In emulated mode, keys can also be remapped in the emulator menu. First press ''Scroll Lock'' to enable the MAME control keys, then ''Tab'' to open the menu, and finally select ''Input (this system)''. ''Return, Esc'' clears an assigned key.
 
In emulated mode, keys can also be remapped in the emulator menu. First press ''Scroll Lock'' to enable the MAME control keys, then ''Tab'' to open the menu, and finally select ''Input (this system)''. ''Return, Esc'' clears an assigned key.
  
 
Note that the ''Delete'' and ''Backspace'' keys are swapped on the emulated keyboard because of the CPC keyboard layout. So you may want to reassign those. Escape on the CPC is mapped to the key left of "1" on the PC keyboard. Alt-Enter switches between windowed and full screen mode.
 
Note that the ''Delete'' and ''Backspace'' keys are swapped on the emulated keyboard because of the CPC keyboard layout. So you may want to reassign those. Escape on the CPC is mapped to the key left of "1" on the PC keyboard. Alt-Enter switches between windowed and full screen mode.
 +
 +
==CPC artwork==
 +
[[File:MAME with CPC artwork.png|thumb|MAME window with monitor type set to green and optional CPC artwork]]
 +
You can add optional bezel artwork to MAME to simulate a CPC monitor:
 +
*[[Media:Cpc6128 mame artwork.zip|MAME artwork]] (CPC6128/GT65 bezel)
 +
 +
Rename this file to cpc6128.zip and put it in MAME's artwork folder (~/.mame/artwork/ on Linux).
  
 
==ROMs and extension hardware==
 
==ROMs and extension hardware==
  
[[Media:CPC_ROMs_for_MESS.zip|CPC ROMs for MAME]]. Just unzip the file and move the ZIPs inside into the MESS ROM folder.
+
[[Media:CPC_ROMs_for_MAME.zip|CPC ROMs for MAME]]. Just unzip the file and move the ZIPs inside into the MAME ROM folder.
  
;General notes about MAME and ROMs
+
===General notes about MAME and ROMs===
  
 
Some MAME ROMs have parent ROMs that also need to be installed. E.g., <tt>cpc6128.zip</tt> also requires <tt>cpc464.zip</tt> to run. (See the links section for CPC ROM files for MAME.)
 
Some MAME ROMs have parent ROMs that also need to be installed. E.g., <tt>cpc6128.zip</tt> also requires <tt>cpc464.zip</tt> to run. (See the links section for CPC ROM files for MAME.)
Line 85: Line 146:
 
ROMs often only work with a specific version of MAME. This does not seem to affect CPC ROMs, but other systems sometimes give an error message when ROM filenames or checksums do not match what MAME expected.
 
ROMs often only work with a specific version of MAME. This does not seem to affect CPC ROMs, but other systems sometimes give an error message when ROM filenames or checksums do not match what MAME expected.
  
;Slot options (extension hardware)
+
===Slot options (extension hardware)===
 +
[[File:MESS with Dobbertin Smart Watch.png|thumb|upright=1.4||MAME with the Dobbertin Smart Watch ROM loaded (-exp smartwatch)]]
 +
[[File:Brunword mame.png|thumb|upright=1.4||BrunWord MK4 (ROM) main menu in MAME 0.162 (-exp brunword4)]]
  
 
You can get a list of slot options with
 
You can get a list of slot options with
Line 91: Line 154:
 
  mame cpc6128 -lslot
 
  mame cpc6128 -lslot
  
These are (as of MAME 0.162):
+
These are (as of MAME 0.168):
  
 
*for "-centronics"
 
*for "-centronics"
Line 117: Line 180:
 
|[[Digiblaster]] (DIY)
 
|[[Digiblaster]] (DIY)
 
|}
 
|}
[[File:MESS with Dobbertin Smart Watch.png|thumb|upright=1.7||MAME with the Dobbertin Smart Watch ROM loaded (-exp smartwatch)]]
+
 
 
*for "-exp"
 
*for "-exp"
 
{|class="wikitable"
 
{|class="wikitable"
Line 153: Line 216:
 
|smartwatch       
 
|smartwatch       
 
|[[Dobbertin Smart Watch]]
 
|[[Dobbertin Smart Watch]]
 +
|-
 +
|brunword4
 +
|[[BrunWord]] Elite MK4
 +
|-
 +
|hd20
 +
|[[Dobbertin Harddisc]]
 +
|-
 +
|doubler
 +
|[[Draysoft Doubler]]
 +
|-
 +
|transtape
 +
|HM [[Transtape]]
 
|}
 
|}
  
;Loading external ROMs
+
===Loading external ROMs===
  
 
The ROM Box expansion can be used to load external ROMs such as [[MAXAM]]:
 
The ROM Box expansion can be used to load external ROMs such as [[MAXAM]]:
Line 163: Line 238:
 
Up to 8 external ROMs (-rom1 to -rom8) are supported this way.
 
Up to 8 external ROMs (-rom1 to -rom8) are supported this way.
  
==GUI front-ends==
+
===[[Dobbertin Harddisc]]===
  
Various GUI front-ends for MAME exist for Windows, Linux, and OS X—see this list: [http://www.mess.org/mess:howto#frontends]
+
From the [http://www.cpcwiki.eu/forum/emulators/got-bored-again/msg102272/#msg102272 forum post]:
  
[[File:Messmenu.png|thumb|none|650px|MessMenu on OS X with a CPC ROM selected. Currently, seven different CPC models are supported, including some regional variants (French and Swedish).]]
+
To use, add -exp hd20 to the commandline, which will also allow you to add -hard <filename>.
 +
Code:
 +
 
 +
mame cpc6128 -exp hd20 -hard1 disk.chd
 +
 
 +
Only MAME CHDs are supported, you can create a blank hard disk image using chdman. Geometry is 615/4/17.
 +
Code:
 +
 
 +
chdman createhd -o disk.chd -c none -chs 615,4,17
 +
 
 +
(-c none means no compression, but this is required for MAME to write directly to the CHD image.  If you use compression, then data writes will be written to a separate file)
 +
 
 +
You can use X-DDOS 2.00 or 2.10 by using -exp hd20,bios=xddos200 or -exp hd20,bios=xddos210.  v2.10 is the default.
 +
 
 +
See http://mahlemiut.marpirc.net/cpc_hd20.avi, a quick demo loading a game from HD.
  
 
==CRT simulation==
 
==CRT simulation==
[[File:Cpc shader mess.png|thumb|upright=1.5|GLSL shader example]]
+
[[File:MAME BGFX Linux detail.png|thumb|BGFX output with default shader settings]]
[[File:Cpc hlsl shader mess detail.png|thumb|HLSL "1980s" shader (detail)]]
+
 
 
MAME can use shaders to simulate typical CRT graphics artifacts such as scanlines, colors bleeding into each other, jitter, and display curvature.
 
MAME can use shaders to simulate typical CRT graphics artifacts such as scanlines, colors bleeding into each other, jitter, and display curvature.
  
Some example configurations:
+
===BGFX===
 +
 
 +
The easiest way to do this (works on Windows, OS X, and Linux) since MAME 0.172 is to enable [https://github.com/bkaradzic/bgfx BGFX] video output: Put this in your mame.ini:
 +
 
 +
video                    bgfx
 +
bgfx_screen_chains      hlsl
 +
 
 +
(You may also have to set bgfx_path to the bgfx directory if MAME cannot find the shaders.)
 +
 
 +
Check with F11 if you still get 100% performance. If not, adjust frame skip with F8/F9.
 +
 
 +
Also, if you press the tilde (~) and then cursor up/down, you can adjust the shader settings (they are also under Slider Controls in the MAME menu). These are not saved at the moment though.[http://docs.mamedev.org/advanced/bgfx.html]
 +
 
 +
If you edit bgfx/chains/hlsl.json in a text editor, you can change the default values. E.g., to reduce the Moiré pattern, search for "Shadow Mask Amount" and change it to:
 +
 
 +
"default": 0.20
 +
 
 +
===HLSL and GLSL===
 +
[[File:Cpc hlsl shader mess detail.png|thumb|HLSL "1980s" shader (Windows); MAME config used is on image description page]]
 +
 
 +
Older methods for CRT simulation are manual HLSL and GLSL configurations, here are some examples:
 
*Windows (using HLSL shaders)
 
*Windows (using HLSL shaders)
 
**A scripted setup with separate "1980s" and "1990s" CRT configs: [http://shmups.system11.org/viewtopic.php?f=6&t=45026&start=240] (huge post is halfway down the page)
 
**A scripted setup with separate "1980s" and "1990s" CRT configs: [http://shmups.system11.org/viewtopic.php?f=6&t=45026&start=240] (huge post is halfway down the page)
Line 188: Line 297:
 
*The emulated CPC464 has the AMSDOS ROM loaded which is a problem with early 464-only programs that rely on the 464's larger free memory.
 
*The emulated CPC464 has the AMSDOS ROM loaded which is a problem with early 464-only programs that rely on the 464's larger free memory.
  
==JSMESS, a JavaScript port==
+
==Compiling to JavaScript==
  
There is an experimental port to JavaScript, see the [[JSMESS]] article for details.
+
Since MAME 0.168 (released in November 2015), MAME can compile to JavaScript using Emscripten's emmake command.[http://mamedev.org/releases/whatsnew_0168.txt] [[JSMESS]] is therefore no longer necessary to compile e.g. the MAME/MESS CPC emulator for web browsers.
  
 
==Links==
 
==Links==
Line 197: Line 306:
 
*[http://mamedev.org/ Official site]
 
*[http://mamedev.org/ Official site]
 
*[http://www.mess.org/mess:howto MESS user's manual]
 
*[http://www.mess.org/mess:howto MESS user's manual]
*[[Media:CPC_ROMs_for_MESS.zip|CPC ROMs for MAME]]
+
*[[Media:CPC_ROMs_for_MAME.zip|CPC ROMs for MAME]]
 +
*[https://linux-user.gr/t/one-retro-cumputers-emulator-to-rule-them-all/1302 one-retro-cumputers-emulator-to-rule-them-all-(in-greek-language)]
  
 
[[Category:Emulator]]
 
[[Category:Emulator]]

Latest revision as of 05:43, 18 April 2024

The MAME system info box for the CPC6128
MAME also has support for the GX4000 and CPC+ series. Here is shown Pang for the GX4000.

MAME (Multiple Arcade Machine Emulator) is a multi-platform emulator for arcade games, home computers, gaming consoles, chess computers, calculators, etc. MAME 0.162 (released on May 27, 2015) merged the previously separate MAME and MESS (Multi Emulator Super System) projects into one, so that a single executable now combines the emulation capabilities of pre-0.162 MAME/MESS.

The most important goal of MAME is highly accurate emulation, not speed. MAME is mainly a preservation project that aims to reproduce the behaviour of the real hardware perfectly, so CPU usage may be slightly higher than many dedicated CPC emulators.

Emulated systems

Currently, over a thousand systems are supported by MAME, including the CPC and CPC Plus ranges and the GX4000. This is probably the main reason for using MAME: A single download is enough to emulate more or less every home computer and gaming console that ever existed in the late 1970s and 1980s—provided one can find a ROM set that works (see below).

MAME does not have the depth of other CPC emulators, but it sure has enormous breadth. Its flexible input mapping and pixel shader effects make MAME particularly suited for gaming.

Installation

MAME runs on Windows, Mac OS X, Linux, and FreeBSD. You can get Windows binaries from mamedev.org.

On OS X, you can install MAME via Homebrew:

brew install mame

On Windows and OS X, the MAME binary is called mame, on Linux sdlmame. On some Linux distros such as Arch Linux you have to use absolute paths for disk images or ROMs because /usr/bin/sdlmame is a wrapper script that will cd to the directory with the MAME binary. Or you could simply skip the wrapper script and run /usr/share/sdlmame/sdlmame directly:

alias mame=/usr/share/sdlmame/sdlmame

Starting MAME; command line arguments; MAME menu; quitting

The MAME menu

First get the CPC ROMs for MAME and unzip them into the MAME roms folder.

Typical command line to start MAME in CPC mode (windowed mode and with a disc inserted in drive A):

mame cpc6128 -skip_gameinfo -window -flop1 disk.dsk

Supported CPC models are cpc464, cpc464p, cpc664, cpc6128, cpc6128p, gx4000, cpc6128f (French), cpc6128s (Swedish), and the clones kccomp (KC Compact) and al520ex (Aleste 520EX; hold Shift during boot to go to Basic).

Press Scroll Lock to toggle partial keyboard emulation mode. Now you can use P to pause MAME, Tab to enter the MAME menu, and Escape to quit MAME. Alt-Return toggles fullscreen mode. (See also default keys.)

You can use the "-ab" commandline option to type text into MAME, e.g.

mame cpc6128 -flop1 disk.dsk -ab "run\"disc\n"

will boot the disc.

Device options for the CPC from sysinfo.dat

Name Argument Allowed file extensions
Printer -prin .prn
Snapshot -dump .sna
Disk drive A -flop1 .dsk; .d77; .d88; .1dd; .dfi; .imd; .ipf; .mfi; .mfm
Disk drive B -flop2
Tape -cass .wav; .cdt
Cartridge -cart .cpr; .bin (Plus series and GX4000 only)

Supported file types can also be shown with the "-listmedia" command line option.

You can use zipped disk images too. If there is more than one DSK image in the zip file, treat the zip file like a directory, e.g.

mame cpc6128 -flop1 disk.zip/disk0.dsk

Python script to start MAME in CPC mode

On Linux, you can also set your file manager (e.g. Nautilus or Konqueror) to open .dsk files with the following Python script:

#!/usr/bin/env python

# Call as
#   "cpc"  : emulated keyboard
#   "cpcn" : natural

import os, os.path, zipfile
from sys import argv

if 'cpcn' in argv[0]:
	nat = '-natural'
else:
	nat = ''

s = "/usr/share/sdlmame/sdlmame cpc6128 -skip_gameinfo -window %s -keymap -keymap_file /usr/share/sdlmame/keymaps/km_de_LINUX.map" % nat

def checkzip(t):
	"Check if file is a ZIP file; use the first file in the archive"
	if t[-4:].lower() == '.zip':
		a = zipfile.ZipFile(t).namelist()
		t = os.path.join(t, a[0])
	return t

if len(argv) > 1:
	for x in range(1, len(argv)):
		s += ' -flop%u "%s"' % (x, checkzip(argv[x]))
os.system(s)

This script should open a MAME window with the disc inserted in drive A. (Note that this also selects the German keymap.) You can also use this to open ZIP files containing disc images, e.g. "cpc mydisc.zip" will try to insert the first file in the ZIP archive.

GUI front-ends

MAMEUI64 on Windows

Several GUI front-ends for MAME/MESS exist for Windows, Linux, and OS X:

Keyboard layouts

MAME supports two keyboard modes:

  • emulated (the default; keys are assigned based on key position on the emulated hardware)
  • natural (command line option "-natural"; based on the character generated by a key, e.g. pressing "z" will always generate a "z" on the emulated system)

To use a German keyboard in emulated keyboard mode, start MAME e.g. with (key map path on Linux):

mame cpc6128 -keymap -keymap_file /usr/share/sdlmame/keymaps/km_de_LINUX.map

You can also put these settings in your mame.ini like this:

keymap                    1
keymap_file               /usr/share/sdlmame/keymaps/km_de_LINUX.map

In emulated mode, keys can also be remapped in the emulator menu. First press Scroll Lock to enable the MAME control keys, then Tab to open the menu, and finally select Input (this system). Return, Esc clears an assigned key.

Note that the Delete and Backspace keys are swapped on the emulated keyboard because of the CPC keyboard layout. So you may want to reassign those. Escape on the CPC is mapped to the key left of "1" on the PC keyboard. Alt-Enter switches between windowed and full screen mode.

CPC artwork

MAME window with monitor type set to green and optional CPC artwork

You can add optional bezel artwork to MAME to simulate a CPC monitor:

Rename this file to cpc6128.zip and put it in MAME's artwork folder (~/.mame/artwork/ on Linux).

ROMs and extension hardware

CPC ROMs for MAME. Just unzip the file and move the ZIPs inside into the MAME ROM folder.

General notes about MAME and ROMs

Some MAME ROMs have parent ROMs that also need to be installed. E.g., cpc6128.zip also requires cpc464.zip to run. (See the links section for CPC ROM files for MAME.)

ROMs often only work with a specific version of MAME. This does not seem to affect CPC ROMs, but other systems sometimes give an error message when ROM filenames or checksums do not match what MAME expected.

Slot options (extension hardware)

MAME with the Dobbertin Smart Watch ROM loaded (-exp smartwatch)
BrunWord MK4 (ROM) main menu in MAME 0.162 (-exp brunword4)

You can get a list of slot options with

mame cpc6128 -lslot

These are (as of MAME 0.168):

  • for "-centronics"
pl80 COMX PL-80
ex800 Epson EX-800
lx800 Epson LX-800
lx810l Epson LX-810L
ap2000 Epson ActionPrinter 2000
printer Centronics Printer
digiblst Digiblaster (DIY)
  • for "-exp"
ssa1 Amstrad SSA-1 Speech Synthesizer
dkspeech Dk'tronics Speech Synthesizer
rom ROM Box
multiface2 Multiface II
pds Programmers Development System (CPC Target)
rs232 Pace RS232C interface
amsrs232 Amstrad RS232C interface
sf2 SYMBiFACE II
amdrum Amdrum
playcity PlayCity
smartwatch Dobbertin Smart Watch
brunword4 BrunWord Elite MK4
hd20 Dobbertin Harddisc
doubler Draysoft Doubler
transtape HM Transtape

Loading external ROMs

The ROM Box expansion can be used to load external ROMs such as MAXAM:

mame cpc6128 -exp rom -rom1 /path/to/MAXAM.ROM

Up to 8 external ROMs (-rom1 to -rom8) are supported this way.

Dobbertin Harddisc

From the forum post:

To use, add -exp hd20 to the commandline, which will also allow you to add -hard <filename>. Code:

mame cpc6128 -exp hd20 -hard1 disk.chd

Only MAME CHDs are supported, you can create a blank hard disk image using chdman. Geometry is 615/4/17. Code:

chdman createhd -o disk.chd -c none -chs 615,4,17

(-c none means no compression, but this is required for MAME to write directly to the CHD image. If you use compression, then data writes will be written to a separate file)

You can use X-DDOS 2.00 or 2.10 by using -exp hd20,bios=xddos200 or -exp hd20,bios=xddos210. v2.10 is the default.

See http://mahlemiut.marpirc.net/cpc_hd20.avi, a quick demo loading a game from HD.

CRT simulation

BGFX output with default shader settings

MAME can use shaders to simulate typical CRT graphics artifacts such as scanlines, colors bleeding into each other, jitter, and display curvature.

BGFX

The easiest way to do this (works on Windows, OS X, and Linux) since MAME 0.172 is to enable BGFX video output: Put this in your mame.ini:

video                    bgfx
bgfx_screen_chains       hlsl

(You may also have to set bgfx_path to the bgfx directory if MAME cannot find the shaders.)

Check with F11 if you still get 100% performance. If not, adjust frame skip with F8/F9.

Also, if you press the tilde (~) and then cursor up/down, you can adjust the shader settings (they are also under Slider Controls in the MAME menu). These are not saved at the moment though.[1]

If you edit bgfx/chains/hlsl.json in a text editor, you can change the default values. E.g., to reduce the Moiré pattern, search for "Shadow Mask Amount" and change it to:

"default": 0.20

HLSL and GLSL

HLSL "1980s" shader (Windows); MAME config used is on image description page

Older methods for CRT simulation are manual HLSL and GLSL configurations, here are some examples:

  • Windows (using HLSL shaders)
    • A scripted setup with separate "1980s" and "1990s" CRT configs: [2] (huge post is halfway down the page)
    • A German shader tutorial: [3]
  • Linux (using GLSL shaders): MAME tutorial [4]

Remaining issues with CPC emulation

  • MAME may fail to read DSK images with certain kinds of copy protection. Speedlock seems to work fine though.
  • MAME cannot write to disc images in DSK format; only MFI (MESS floppy image) and MFM (HxCFloppyEmulator floppy image) are supported for writing.
  • Some demo tricks may be broken in MAME, e.g. overscan pictures are horizontally misaligned (i.e., shifted to the right).
  • CPC+/GX4000 emulation still has some obvious graphics glitches.
  • The emulated CPC464 has the AMSDOS ROM loaded which is a problem with early 464-only programs that rely on the 464's larger free memory.

Compiling to JavaScript

Since MAME 0.168 (released in November 2015), MAME can compile to JavaScript using Emscripten's emmake command.[5] JSMESS is therefore no longer necessary to compile e.g. the MAME/MESS CPC emulator for web browsers.

Links