https://www.cpcwiki.eu/api.php?action=feedcontributions&user=Morn&feedformat=atomCPCWiki - THE Amstrad CPC encyclopedia! - User contributions [en]2024-03-19T09:01:46ZUser contributionsMediaWiki 1.25.1https://www.cpcwiki.eu/index.php?title=MAME&diff=98035MAME2017-04-23T09:54:13Z<p>Morn: /* GUI front-ends */</p>
<hr />
<div>[[File:Mess sysinfo.png|thumb|upright=.9|The MAME system info box for the CPC6128]]<br />
[[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]]''.]]<br />
'''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.<br />
<br />
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.<br />
<br />
==Emulated systems==<br />
<br />
Currently, [http://www.progettoemma.net/mess/sysset.php 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).<br />
<br />
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.<br />
<br />
==Installation==<br />
<br />
MAME runs on Windows, Mac OS X, Linux, and FreeBSD. You can get Windows binaries from [http://mamedev.org/release.html mamedev.org].<br />
<br />
On OS X, you can install MAME via [http://brew.sh/ Homebrew]:<br />
brew install mame<br />
<br />
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:<br />
alias mame=/usr/share/sdlmame/sdlmame<br />
<br />
==Starting MAME; command line arguments; MAME menu; quitting==<br />
[[File:MAME menu CPC.png|thumb|upright|The MAME menu]]<br />
First get the [[Media:CPC_ROMs_for_MAME.zip|CPC ROMs for MAME]] and unzip them into the MAME roms folder.<br />
<br />
Typical command line to start MAME in CPC mode (windowed mode and with a disc inserted in drive A):<br />
mame cpc6128 -skip_gameinfo -window -flop1 disk.dsk<br />
<br />
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).<br />
<br />
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].)<br />
<br />
You can use the "-ab" commandline option to type text into MAME, e.g.<br />
mame cpc6128 -flop1 disk.dsk -ab "run\"disc\n"<br />
will boot the disc.<br />
<br />
===Device options for the CPC from [http://www.progettoemma.net/mess/extra.html sysinfo.dat]===<br />
{|class="wikitable"<br />
|'''Name'''<br />
|'''Argument'''<br />
|'''Allowed file extensions'''<br />
|-<br />
|Printer<br />
| -prin<br />
|.prn<br />
|-<br />
|Snapshot<br />
| -dump<br />
|.sna<br />
|-<br />
|Disk drive A<br />
| -flop1<br />
|rowspan="2"|.dsk; .d77; .d88; .1dd; .dfi; .imd; .ipf; .mfi; .mfm<br />
|-<br />
|Disk drive B<br />
| -flop2<br />
|-<br />
|Tape<br />
| -cass<br />
|.wav; .cdt<br />
|-<br />
|Cartridge<br />
| -cart<br />
|.cpr; .bin (Plus series and GX4000 only)<br />
|}<br />
<br />
Supported file types can also be shown with the "-listmedia" command line option.<br />
<br />
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.<br />
mame cpc6128 -flop1 disk.zip/disk0.dsk<br />
<br />
===Python script to start MAME in CPC mode===<br />
On Linux, you can also set your file manager (e.g. Nautilus or Konqueror) to open .dsk files with the following Python script:<br />
<pre><br />
#!/usr/bin/env python<br />
<br />
# Call as<br />
# "cpc" : emulated keyboard<br />
# "cpcn" : natural<br />
<br />
import os, os.path, zipfile<br />
from sys import argv<br />
<br />
if 'cpcn' in argv[0]:<br />
nat = '-natural'<br />
else:<br />
nat = ''<br />
<br />
s = "/usr/share/sdlmame/sdlmame cpc6128 -skip_gameinfo -window %s -keymap -keymap_file /usr/share/sdlmame/keymaps/km_de_LINUX.map" % nat<br />
<br />
def checkzip(t):<br />
"Check if file is a ZIP file; use the first file in the archive"<br />
if t[-4:].lower() == '.zip':<br />
a = zipfile.ZipFile(t).namelist()<br />
t = os.path.join(t, a[0])<br />
return t<br />
<br />
if len(argv) > 1:<br />
for x in range(1, len(argv)):<br />
s += ' -flop%u "%s"' % (x, checkzip(argv[x]))<br />
os.system(s)<br />
</pre><br />
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.<br />
<br />
==GUI front-ends==<br />
[[File:Mameui.png|thumb|MAMEUI64 on Windows]]<br />
<br />
Several GUI front-ends for MAME/MESS exist for Windows, Linux, and OS X:<br />
<br />
*[http://www.mameui.info/ MAMEUI64] (Windows)<br />
*[http://qmc2.arcadehits.net/ QMC2] (Windows, OS X, Linux)<br />
<br />
==Keyboard layouts==<br />
<br />
MAME supports two keyboard modes:<br />
* '''emulated''' (the default; keys are assigned based on key position on the emulated hardware)<br />
* '''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)<br />
<br />
To use a German keyboard in emulated keyboard mode, start MAME e.g. with (key map path on Linux):<br />
mame cpc6128 -keymap -keymap_file /usr/share/sdlmame/keymaps/km_de_LINUX.map<br />
<br />
You can also put these settings in your mame.ini like this:<br />
keymap 1<br />
keymap_file /usr/share/sdlmame/keymaps/km_de_LINUX.map<br />
<br />
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.<br />
<br />
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.<br />
<br />
==CPC artwork==<br />
[[File:MAME with CPC artwork.png|thumb|MAME window with monitor type set to green and optional CPC artwork]]<br />
You can add optional bezel artwork to MAME to simulate a CPC monitor:<br />
*[[Media:Cpc6128 mame artwork.zip|MAME artwork]] (CPC6128/GT65 bezel)<br />
<br />
Rename this file to cpc6128.zip and put it in MAME's artwork folder (~/.mame/artwork/ on Linux).<br />
<br />
==ROMs and extension hardware==<br />
<br />
[[Media:CPC_ROMs_for_MAME.zip|CPC ROMs for MAME]]. Just unzip the file and move the ZIPs inside into the MAME ROM folder.<br />
<br />
===General notes about MAME and ROMs===<br />
<br />
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.)<br />
<br />
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.<br />
<br />
===Slot options (extension hardware)===<br />
[[File:MESS with Dobbertin Smart Watch.png|thumb|upright=1.4||MAME with the Dobbertin Smart Watch ROM loaded (-exp smartwatch)]]<br />
[[File:Brunword mame.png|thumb|upright=1.4||BrunWord MK4 (ROM) main menu in MAME 0.162 (-exp brunword4)]]<br />
<br />
You can get a list of slot options with<br />
<br />
mame cpc6128 -lslot<br />
<br />
These are (as of MAME 0.168):<br />
<br />
*for "-centronics"<br />
{|class="wikitable"<br />
|-<br />
|pl80 <br />
|COMX PL-80<br />
|-<br />
|ex800 <br />
|Epson EX-800<br />
|-<br />
|lx800 <br />
|Epson LX-800<br />
|-<br />
|lx810l <br />
|Epson LX-810L<br />
|-<br />
|ap2000 <br />
|Epson ActionPrinter 2000<br />
|-<br />
|printer <br />
|Centronics Printer<br />
|-<br />
|digiblst <br />
|[[Digiblaster]] (DIY)<br />
|}<br />
<br />
*for "-exp"<br />
{|class="wikitable"<br />
|-<br />
|ssa1 <br />
|[[Amstrad SSA-1 Speech Synthesizer]]<br />
|-<br />
|dkspeech <br />
|[[Dk'tronics Speech Synthesizer]]<br />
|-<br />
|rom <br />
|ROM Box<br />
|-<br />
|multiface2 <br />
|[[Multiface II]]<br />
|-<br />
|pds <br />
|[[PDS development system|Programmers Development System (CPC Target)]]<br />
|-<br />
|rs232 <br />
|Pace RS232C interface<br />
|-<br />
|amsrs232 <br />
|[[Original Amstrad RS232 interface|Amstrad RS232C interface]]<br />
|-<br />
|sf2 <br />
|[[SYMBiFACE II]]<br />
|-<br />
|amdrum <br />
|[[Amdrum]]<br />
|-<br />
|playcity <br />
|[[PlayCity]]<br />
|-<br />
|smartwatch <br />
|[[Dobbertin Smart Watch]]<br />
|-<br />
|brunword4<br />
|[[BrunWord]] Elite MK4<br />
|-<br />
|hd20<br />
|[[Dobbertin Harddisc]]<br />
|-<br />
|doubler<br />
|[[Draysoft Doubler]]<br />
|-<br />
|transtape<br />
|HM [[Transtape]]<br />
|}<br />
<br />
===Loading external ROMs===<br />
<br />
The ROM Box expansion can be used to load external ROMs such as [[MAXAM]]:<br />
<br />
mame cpc6128 -exp rom -rom1 /path/to/MAXAM.ROM<br />
<br />
Up to 8 external ROMs (-rom1 to -rom8) are supported this way.<br />
<br />
===[[Dobbertin Harddisc]]===<br />
<br />
From the [http://www.cpcwiki.eu/forum/emulators/got-bored-again/msg102272/#msg102272 forum post]:<br />
<br />
To use, add -exp hd20 to the commandline, which will also allow you to add -hard <filename>.<br />
Code:<br />
<br />
mame cpc6128 -exp hd20 -hard1 disk.chd<br />
<br />
Only MAME CHDs are supported, you can create a blank hard disk image using chdman. Geometry is 615/4/17.<br />
Code:<br />
<br />
chdman createhd -o disk.chd -c none -chs 615,4,17<br />
<br />
(-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)<br />
<br />
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.<br />
<br />
See http://mahlemiut.marpirc.net/cpc_hd20.avi, a quick demo loading a game from HD.<br />
<br />
==CRT simulation==<br />
[[File:MAME BGFX Linux detail.png|thumb|BGFX output with default shader settings]]<br />
<br />
MAME can use shaders to simulate typical CRT graphics artifacts such as scanlines, colors bleeding into each other, jitter, and display curvature.<br />
<br />
===BGFX===<br />
<br />
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:<br />
<br />
video bgfx<br />
bgfx_screen_chains hlsl<br />
<br />
(You may also have to set bgfx_path to the bgfx directory if MAME cannot find the shaders.)<br />
<br />
Check with F11 if you still get 100% performance. If not, adjust frame skip with F8/F9.<br />
<br />
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]<br />
<br />
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:<br />
<br />
"default": 0.20<br />
<br />
===HLSL and GLSL===<br />
[[File:Cpc hlsl shader mess detail.png|thumb|HLSL "1980s" shader (Windows); MAME config used is on image description page]]<br />
<br />
Older methods for CRT simulation are manual HLSL and GLSL configurations, here are some examples:<br />
*Windows (using HLSL shaders)<br />
**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)<br />
**A German shader tutorial: [http://www.aep-emu.de/PNphpBB2-file-viewtopic-p-94168.html]<br />
*Linux (using GLSL shaders): MAME tutorial [http://www.mameau.com/mame-glsl-shaders-setup/]<br />
<br />
==Remaining issues with CPC emulation==<br />
<br />
*MAME may fail to read DSK images with certain kinds of copy protection. Speedlock seems to work fine though.<br />
*MAME cannot write to disc images in DSK format; only MFI (MESS floppy image) and MFM (HxCFloppyEmulator floppy image) are supported for writing.<br />
*Some demo tricks may be broken in MAME, e.g. overscan pictures are horizontally misaligned (i.e., shifted to the right).<br />
*CPC+/GX4000 emulation still has some obvious graphics glitches.<br />
*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.<br />
<br />
==Compiling to JavaScript==<br />
<br />
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.<br />
<br />
==Links==<br />
<br />
*{{EnWiki}}<br />
*[http://mamedev.org/ Official site]<br />
*[http://www.mess.org/mess:howto MESS user's manual]<br />
*[[Media:CPC_ROMs_for_MAME.zip|CPC ROMs for MAME]]<br />
<br />
[[Category:Emulator]]</div>Mornhttps://www.cpcwiki.eu/index.php?title=MAME&diff=98034MAME2017-04-23T09:52:12Z<p>Morn: /* GUI front-ends */ MAMEUIFX has been discontinued</p>
<hr />
<div>[[File:Mess sysinfo.png|thumb|upright=.9|The MAME system info box for the CPC6128]]<br />
[[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]]''.]]<br />
'''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.<br />
<br />
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.<br />
<br />
==Emulated systems==<br />
<br />
Currently, [http://www.progettoemma.net/mess/sysset.php 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).<br />
<br />
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.<br />
<br />
==Installation==<br />
<br />
MAME runs on Windows, Mac OS X, Linux, and FreeBSD. You can get Windows binaries from [http://mamedev.org/release.html mamedev.org].<br />
<br />
On OS X, you can install MAME via [http://brew.sh/ Homebrew]:<br />
brew install mame<br />
<br />
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:<br />
alias mame=/usr/share/sdlmame/sdlmame<br />
<br />
==Starting MAME; command line arguments; MAME menu; quitting==<br />
[[File:MAME menu CPC.png|thumb|upright|The MAME menu]]<br />
First get the [[Media:CPC_ROMs_for_MAME.zip|CPC ROMs for MAME]] and unzip them into the MAME roms folder.<br />
<br />
Typical command line to start MAME in CPC mode (windowed mode and with a disc inserted in drive A):<br />
mame cpc6128 -skip_gameinfo -window -flop1 disk.dsk<br />
<br />
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).<br />
<br />
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].)<br />
<br />
You can use the "-ab" commandline option to type text into MAME, e.g.<br />
mame cpc6128 -flop1 disk.dsk -ab "run\"disc\n"<br />
will boot the disc.<br />
<br />
===Device options for the CPC from [http://www.progettoemma.net/mess/extra.html sysinfo.dat]===<br />
{|class="wikitable"<br />
|'''Name'''<br />
|'''Argument'''<br />
|'''Allowed file extensions'''<br />
|-<br />
|Printer<br />
| -prin<br />
|.prn<br />
|-<br />
|Snapshot<br />
| -dump<br />
|.sna<br />
|-<br />
|Disk drive A<br />
| -flop1<br />
|rowspan="2"|.dsk; .d77; .d88; .1dd; .dfi; .imd; .ipf; .mfi; .mfm<br />
|-<br />
|Disk drive B<br />
| -flop2<br />
|-<br />
|Tape<br />
| -cass<br />
|.wav; .cdt<br />
|-<br />
|Cartridge<br />
| -cart<br />
|.cpr; .bin (Plus series and GX4000 only)<br />
|}<br />
<br />
Supported file types can also be shown with the "-listmedia" command line option.<br />
<br />
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.<br />
mame cpc6128 -flop1 disk.zip/disk0.dsk<br />
<br />
===Python script to start MAME in CPC mode===<br />
On Linux, you can also set your file manager (e.g. Nautilus or Konqueror) to open .dsk files with the following Python script:<br />
<pre><br />
#!/usr/bin/env python<br />
<br />
# Call as<br />
# "cpc" : emulated keyboard<br />
# "cpcn" : natural<br />
<br />
import os, os.path, zipfile<br />
from sys import argv<br />
<br />
if 'cpcn' in argv[0]:<br />
nat = '-natural'<br />
else:<br />
nat = ''<br />
<br />
s = "/usr/share/sdlmame/sdlmame cpc6128 -skip_gameinfo -window %s -keymap -keymap_file /usr/share/sdlmame/keymaps/km_de_LINUX.map" % nat<br />
<br />
def checkzip(t):<br />
"Check if file is a ZIP file; use the first file in the archive"<br />
if t[-4:].lower() == '.zip':<br />
a = zipfile.ZipFile(t).namelist()<br />
t = os.path.join(t, a[0])<br />
return t<br />
<br />
if len(argv) > 1:<br />
for x in range(1, len(argv)):<br />
s += ' -flop%u "%s"' % (x, checkzip(argv[x]))<br />
os.system(s)<br />
</pre><br />
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.<br />
<br />
==GUI front-ends==<br />
[[File:Mameui.png|thumb|MAMEUI64 on Windows]]<br />
[[File:Messmenu.png|thumb|MessMenu on OS X with a CPC ROM selected. Currently, seven different CPC models are supported, including some regional variants (French and Swedish).]]<br />
<br />
Several GUI front-ends for MAME/MESS exist for Windows, Linux, and OS X:<br />
<br />
*[http://www.mameui.info/ MAMEUI64] (Windows)<br />
*[http://qmc2.arcadehits.net/ QMC2] (Windows, OS X, Linux)<br />
<br />
==Keyboard layouts==<br />
<br />
MAME supports two keyboard modes:<br />
* '''emulated''' (the default; keys are assigned based on key position on the emulated hardware)<br />
* '''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)<br />
<br />
To use a German keyboard in emulated keyboard mode, start MAME e.g. with (key map path on Linux):<br />
mame cpc6128 -keymap -keymap_file /usr/share/sdlmame/keymaps/km_de_LINUX.map<br />
<br />
You can also put these settings in your mame.ini like this:<br />
keymap 1<br />
keymap_file /usr/share/sdlmame/keymaps/km_de_LINUX.map<br />
<br />
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.<br />
<br />
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.<br />
<br />
==CPC artwork==<br />
[[File:MAME with CPC artwork.png|thumb|MAME window with monitor type set to green and optional CPC artwork]]<br />
You can add optional bezel artwork to MAME to simulate a CPC monitor:<br />
*[[Media:Cpc6128 mame artwork.zip|MAME artwork]] (CPC6128/GT65 bezel)<br />
<br />
Rename this file to cpc6128.zip and put it in MAME's artwork folder (~/.mame/artwork/ on Linux).<br />
<br />
==ROMs and extension hardware==<br />
<br />
[[Media:CPC_ROMs_for_MAME.zip|CPC ROMs for MAME]]. Just unzip the file and move the ZIPs inside into the MAME ROM folder.<br />
<br />
===General notes about MAME and ROMs===<br />
<br />
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.)<br />
<br />
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.<br />
<br />
===Slot options (extension hardware)===<br />
[[File:MESS with Dobbertin Smart Watch.png|thumb|upright=1.4||MAME with the Dobbertin Smart Watch ROM loaded (-exp smartwatch)]]<br />
[[File:Brunword mame.png|thumb|upright=1.4||BrunWord MK4 (ROM) main menu in MAME 0.162 (-exp brunword4)]]<br />
<br />
You can get a list of slot options with<br />
<br />
mame cpc6128 -lslot<br />
<br />
These are (as of MAME 0.168):<br />
<br />
*for "-centronics"<br />
{|class="wikitable"<br />
|-<br />
|pl80 <br />
|COMX PL-80<br />
|-<br />
|ex800 <br />
|Epson EX-800<br />
|-<br />
|lx800 <br />
|Epson LX-800<br />
|-<br />
|lx810l <br />
|Epson LX-810L<br />
|-<br />
|ap2000 <br />
|Epson ActionPrinter 2000<br />
|-<br />
|printer <br />
|Centronics Printer<br />
|-<br />
|digiblst <br />
|[[Digiblaster]] (DIY)<br />
|}<br />
<br />
*for "-exp"<br />
{|class="wikitable"<br />
|-<br />
|ssa1 <br />
|[[Amstrad SSA-1 Speech Synthesizer]]<br />
|-<br />
|dkspeech <br />
|[[Dk'tronics Speech Synthesizer]]<br />
|-<br />
|rom <br />
|ROM Box<br />
|-<br />
|multiface2 <br />
|[[Multiface II]]<br />
|-<br />
|pds <br />
|[[PDS development system|Programmers Development System (CPC Target)]]<br />
|-<br />
|rs232 <br />
|Pace RS232C interface<br />
|-<br />
|amsrs232 <br />
|[[Original Amstrad RS232 interface|Amstrad RS232C interface]]<br />
|-<br />
|sf2 <br />
|[[SYMBiFACE II]]<br />
|-<br />
|amdrum <br />
|[[Amdrum]]<br />
|-<br />
|playcity <br />
|[[PlayCity]]<br />
|-<br />
|smartwatch <br />
|[[Dobbertin Smart Watch]]<br />
|-<br />
|brunword4<br />
|[[BrunWord]] Elite MK4<br />
|-<br />
|hd20<br />
|[[Dobbertin Harddisc]]<br />
|-<br />
|doubler<br />
|[[Draysoft Doubler]]<br />
|-<br />
|transtape<br />
|HM [[Transtape]]<br />
|}<br />
<br />
===Loading external ROMs===<br />
<br />
The ROM Box expansion can be used to load external ROMs such as [[MAXAM]]:<br />
<br />
mame cpc6128 -exp rom -rom1 /path/to/MAXAM.ROM<br />
<br />
Up to 8 external ROMs (-rom1 to -rom8) are supported this way.<br />
<br />
===[[Dobbertin Harddisc]]===<br />
<br />
From the [http://www.cpcwiki.eu/forum/emulators/got-bored-again/msg102272/#msg102272 forum post]:<br />
<br />
To use, add -exp hd20 to the commandline, which will also allow you to add -hard <filename>.<br />
Code:<br />
<br />
mame cpc6128 -exp hd20 -hard1 disk.chd<br />
<br />
Only MAME CHDs are supported, you can create a blank hard disk image using chdman. Geometry is 615/4/17.<br />
Code:<br />
<br />
chdman createhd -o disk.chd -c none -chs 615,4,17<br />
<br />
(-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)<br />
<br />
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.<br />
<br />
See http://mahlemiut.marpirc.net/cpc_hd20.avi, a quick demo loading a game from HD.<br />
<br />
==CRT simulation==<br />
[[File:MAME BGFX Linux detail.png|thumb|BGFX output with default shader settings]]<br />
<br />
MAME can use shaders to simulate typical CRT graphics artifacts such as scanlines, colors bleeding into each other, jitter, and display curvature.<br />
<br />
===BGFX===<br />
<br />
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:<br />
<br />
video bgfx<br />
bgfx_screen_chains hlsl<br />
<br />
(You may also have to set bgfx_path to the bgfx directory if MAME cannot find the shaders.)<br />
<br />
Check with F11 if you still get 100% performance. If not, adjust frame skip with F8/F9.<br />
<br />
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]<br />
<br />
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:<br />
<br />
"default": 0.20<br />
<br />
===HLSL and GLSL===<br />
[[File:Cpc hlsl shader mess detail.png|thumb|HLSL "1980s" shader (Windows); MAME config used is on image description page]]<br />
<br />
Older methods for CRT simulation are manual HLSL and GLSL configurations, here are some examples:<br />
*Windows (using HLSL shaders)<br />
**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)<br />
**A German shader tutorial: [http://www.aep-emu.de/PNphpBB2-file-viewtopic-p-94168.html]<br />
*Linux (using GLSL shaders): MAME tutorial [http://www.mameau.com/mame-glsl-shaders-setup/]<br />
<br />
==Remaining issues with CPC emulation==<br />
<br />
*MAME may fail to read DSK images with certain kinds of copy protection. Speedlock seems to work fine though.<br />
*MAME cannot write to disc images in DSK format; only MFI (MESS floppy image) and MFM (HxCFloppyEmulator floppy image) are supported for writing.<br />
*Some demo tricks may be broken in MAME, e.g. overscan pictures are horizontally misaligned (i.e., shifted to the right).<br />
*CPC+/GX4000 emulation still has some obvious graphics glitches.<br />
*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.<br />
<br />
==Compiling to JavaScript==<br />
<br />
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.<br />
<br />
==Links==<br />
<br />
*{{EnWiki}}<br />
*[http://mamedev.org/ Official site]<br />
*[http://www.mess.org/mess:howto MESS user's manual]<br />
*[[Media:CPC_ROMs_for_MAME.zip|CPC ROMs for MAME]]<br />
<br />
[[Category:Emulator]]</div>Mornhttps://www.cpcwiki.eu/index.php?title=MAME&diff=98033MAME2017-04-23T09:49:20Z<p>Morn: /* Installation */ tap is no longer needed</p>
<hr />
<div>[[File:Mess sysinfo.png|thumb|upright=.9|The MAME system info box for the CPC6128]]<br />
[[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]]''.]]<br />
'''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.<br />
<br />
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.<br />
<br />
==Emulated systems==<br />
<br />
Currently, [http://www.progettoemma.net/mess/sysset.php 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).<br />
<br />
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.<br />
<br />
==Installation==<br />
<br />
MAME runs on Windows, Mac OS X, Linux, and FreeBSD. You can get Windows binaries from [http://mamedev.org/release.html mamedev.org].<br />
<br />
On OS X, you can install MAME via [http://brew.sh/ Homebrew]:<br />
brew install mame<br />
<br />
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:<br />
alias mame=/usr/share/sdlmame/sdlmame<br />
<br />
==Starting MAME; command line arguments; MAME menu; quitting==<br />
[[File:MAME menu CPC.png|thumb|upright|The MAME menu]]<br />
First get the [[Media:CPC_ROMs_for_MAME.zip|CPC ROMs for MAME]] and unzip them into the MAME roms folder.<br />
<br />
Typical command line to start MAME in CPC mode (windowed mode and with a disc inserted in drive A):<br />
mame cpc6128 -skip_gameinfo -window -flop1 disk.dsk<br />
<br />
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).<br />
<br />
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].)<br />
<br />
You can use the "-ab" commandline option to type text into MAME, e.g.<br />
mame cpc6128 -flop1 disk.dsk -ab "run\"disc\n"<br />
will boot the disc.<br />
<br />
===Device options for the CPC from [http://www.progettoemma.net/mess/extra.html sysinfo.dat]===<br />
{|class="wikitable"<br />
|'''Name'''<br />
|'''Argument'''<br />
|'''Allowed file extensions'''<br />
|-<br />
|Printer<br />
| -prin<br />
|.prn<br />
|-<br />
|Snapshot<br />
| -dump<br />
|.sna<br />
|-<br />
|Disk drive A<br />
| -flop1<br />
|rowspan="2"|.dsk; .d77; .d88; .1dd; .dfi; .imd; .ipf; .mfi; .mfm<br />
|-<br />
|Disk drive B<br />
| -flop2<br />
|-<br />
|Tape<br />
| -cass<br />
|.wav; .cdt<br />
|-<br />
|Cartridge<br />
| -cart<br />
|.cpr; .bin (Plus series and GX4000 only)<br />
|}<br />
<br />
Supported file types can also be shown with the "-listmedia" command line option.<br />
<br />
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.<br />
mame cpc6128 -flop1 disk.zip/disk0.dsk<br />
<br />
===Python script to start MAME in CPC mode===<br />
On Linux, you can also set your file manager (e.g. Nautilus or Konqueror) to open .dsk files with the following Python script:<br />
<pre><br />
#!/usr/bin/env python<br />
<br />
# Call as<br />
# "cpc" : emulated keyboard<br />
# "cpcn" : natural<br />
<br />
import os, os.path, zipfile<br />
from sys import argv<br />
<br />
if 'cpcn' in argv[0]:<br />
nat = '-natural'<br />
else:<br />
nat = ''<br />
<br />
s = "/usr/share/sdlmame/sdlmame cpc6128 -skip_gameinfo -window %s -keymap -keymap_file /usr/share/sdlmame/keymaps/km_de_LINUX.map" % nat<br />
<br />
def checkzip(t):<br />
"Check if file is a ZIP file; use the first file in the archive"<br />
if t[-4:].lower() == '.zip':<br />
a = zipfile.ZipFile(t).namelist()<br />
t = os.path.join(t, a[0])<br />
return t<br />
<br />
if len(argv) > 1:<br />
for x in range(1, len(argv)):<br />
s += ' -flop%u "%s"' % (x, checkzip(argv[x]))<br />
os.system(s)<br />
</pre><br />
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.<br />
<br />
==GUI front-ends==<br />
[[File:Mameui.png|thumb|MAMEUI64 on Windows]]<br />
[[File:Messmenu.png|thumb|MessMenu on OS X with a CPC ROM selected. Currently, seven different CPC models are supported, including some regional variants (French and Swedish).]]<br />
<br />
Various GUI front-ends for MAME/MESS exist for Windows, Linux, and OS X:<br />
<br />
*[http://mame32fx.altervista.org/ MAMEUIFX] (Windows)<br />
*[http://www.mameui.info/ MAMEUI64] (Windows)<br />
*[http://qmc2.arcadehits.net/ QMC2] (Windows, OS X, Linux)<br />
<br />
==Keyboard layouts==<br />
<br />
MAME supports two keyboard modes:<br />
* '''emulated''' (the default; keys are assigned based on key position on the emulated hardware)<br />
* '''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)<br />
<br />
To use a German keyboard in emulated keyboard mode, start MAME e.g. with (key map path on Linux):<br />
mame cpc6128 -keymap -keymap_file /usr/share/sdlmame/keymaps/km_de_LINUX.map<br />
<br />
You can also put these settings in your mame.ini like this:<br />
keymap 1<br />
keymap_file /usr/share/sdlmame/keymaps/km_de_LINUX.map<br />
<br />
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.<br />
<br />
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.<br />
<br />
==CPC artwork==<br />
[[File:MAME with CPC artwork.png|thumb|MAME window with monitor type set to green and optional CPC artwork]]<br />
You can add optional bezel artwork to MAME to simulate a CPC monitor:<br />
*[[Media:Cpc6128 mame artwork.zip|MAME artwork]] (CPC6128/GT65 bezel)<br />
<br />
Rename this file to cpc6128.zip and put it in MAME's artwork folder (~/.mame/artwork/ on Linux).<br />
<br />
==ROMs and extension hardware==<br />
<br />
[[Media:CPC_ROMs_for_MAME.zip|CPC ROMs for MAME]]. Just unzip the file and move the ZIPs inside into the MAME ROM folder.<br />
<br />
===General notes about MAME and ROMs===<br />
<br />
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.)<br />
<br />
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.<br />
<br />
===Slot options (extension hardware)===<br />
[[File:MESS with Dobbertin Smart Watch.png|thumb|upright=1.4||MAME with the Dobbertin Smart Watch ROM loaded (-exp smartwatch)]]<br />
[[File:Brunword mame.png|thumb|upright=1.4||BrunWord MK4 (ROM) main menu in MAME 0.162 (-exp brunword4)]]<br />
<br />
You can get a list of slot options with<br />
<br />
mame cpc6128 -lslot<br />
<br />
These are (as of MAME 0.168):<br />
<br />
*for "-centronics"<br />
{|class="wikitable"<br />
|-<br />
|pl80 <br />
|COMX PL-80<br />
|-<br />
|ex800 <br />
|Epson EX-800<br />
|-<br />
|lx800 <br />
|Epson LX-800<br />
|-<br />
|lx810l <br />
|Epson LX-810L<br />
|-<br />
|ap2000 <br />
|Epson ActionPrinter 2000<br />
|-<br />
|printer <br />
|Centronics Printer<br />
|-<br />
|digiblst <br />
|[[Digiblaster]] (DIY)<br />
|}<br />
<br />
*for "-exp"<br />
{|class="wikitable"<br />
|-<br />
|ssa1 <br />
|[[Amstrad SSA-1 Speech Synthesizer]]<br />
|-<br />
|dkspeech <br />
|[[Dk'tronics Speech Synthesizer]]<br />
|-<br />
|rom <br />
|ROM Box<br />
|-<br />
|multiface2 <br />
|[[Multiface II]]<br />
|-<br />
|pds <br />
|[[PDS development system|Programmers Development System (CPC Target)]]<br />
|-<br />
|rs232 <br />
|Pace RS232C interface<br />
|-<br />
|amsrs232 <br />
|[[Original Amstrad RS232 interface|Amstrad RS232C interface]]<br />
|-<br />
|sf2 <br />
|[[SYMBiFACE II]]<br />
|-<br />
|amdrum <br />
|[[Amdrum]]<br />
|-<br />
|playcity <br />
|[[PlayCity]]<br />
|-<br />
|smartwatch <br />
|[[Dobbertin Smart Watch]]<br />
|-<br />
|brunword4<br />
|[[BrunWord]] Elite MK4<br />
|-<br />
|hd20<br />
|[[Dobbertin Harddisc]]<br />
|-<br />
|doubler<br />
|[[Draysoft Doubler]]<br />
|-<br />
|transtape<br />
|HM [[Transtape]]<br />
|}<br />
<br />
===Loading external ROMs===<br />
<br />
The ROM Box expansion can be used to load external ROMs such as [[MAXAM]]:<br />
<br />
mame cpc6128 -exp rom -rom1 /path/to/MAXAM.ROM<br />
<br />
Up to 8 external ROMs (-rom1 to -rom8) are supported this way.<br />
<br />
===[[Dobbertin Harddisc]]===<br />
<br />
From the [http://www.cpcwiki.eu/forum/emulators/got-bored-again/msg102272/#msg102272 forum post]:<br />
<br />
To use, add -exp hd20 to the commandline, which will also allow you to add -hard <filename>.<br />
Code:<br />
<br />
mame cpc6128 -exp hd20 -hard1 disk.chd<br />
<br />
Only MAME CHDs are supported, you can create a blank hard disk image using chdman. Geometry is 615/4/17.<br />
Code:<br />
<br />
chdman createhd -o disk.chd -c none -chs 615,4,17<br />
<br />
(-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)<br />
<br />
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.<br />
<br />
See http://mahlemiut.marpirc.net/cpc_hd20.avi, a quick demo loading a game from HD.<br />
<br />
==CRT simulation==<br />
[[File:MAME BGFX Linux detail.png|thumb|BGFX output with default shader settings]]<br />
<br />
MAME can use shaders to simulate typical CRT graphics artifacts such as scanlines, colors bleeding into each other, jitter, and display curvature.<br />
<br />
===BGFX===<br />
<br />
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:<br />
<br />
video bgfx<br />
bgfx_screen_chains hlsl<br />
<br />
(You may also have to set bgfx_path to the bgfx directory if MAME cannot find the shaders.)<br />
<br />
Check with F11 if you still get 100% performance. If not, adjust frame skip with F8/F9.<br />
<br />
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]<br />
<br />
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:<br />
<br />
"default": 0.20<br />
<br />
===HLSL and GLSL===<br />
[[File:Cpc hlsl shader mess detail.png|thumb|HLSL "1980s" shader (Windows); MAME config used is on image description page]]<br />
<br />
Older methods for CRT simulation are manual HLSL and GLSL configurations, here are some examples:<br />
*Windows (using HLSL shaders)<br />
**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)<br />
**A German shader tutorial: [http://www.aep-emu.de/PNphpBB2-file-viewtopic-p-94168.html]<br />
*Linux (using GLSL shaders): MAME tutorial [http://www.mameau.com/mame-glsl-shaders-setup/]<br />
<br />
==Remaining issues with CPC emulation==<br />
<br />
*MAME may fail to read DSK images with certain kinds of copy protection. Speedlock seems to work fine though.<br />
*MAME cannot write to disc images in DSK format; only MFI (MESS floppy image) and MFM (HxCFloppyEmulator floppy image) are supported for writing.<br />
*Some demo tricks may be broken in MAME, e.g. overscan pictures are horizontally misaligned (i.e., shifted to the right).<br />
*CPC+/GX4000 emulation still has some obvious graphics glitches.<br />
*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.<br />
<br />
==Compiling to JavaScript==<br />
<br />
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.<br />
<br />
==Links==<br />
<br />
*{{EnWiki}}<br />
*[http://mamedev.org/ Official site]<br />
*[http://www.mess.org/mess:howto MESS user's manual]<br />
*[[Media:CPC_ROMs_for_MAME.zip|CPC ROMs for MAME]]<br />
<br />
[[Category:Emulator]]</div>Mornhttps://www.cpcwiki.eu/index.php?title=File:CPC_ROMs_for_MAME.zip&diff=96132File:CPC ROMs for MAME.zip2016-08-02T00:28:53Z<p>Morn: Morn uploaded a new version of File:CPC ROMs for MAME.zip</p>
<hr />
<div>CPC ROMs for the MAME emulator. Just unzip and put in the ROM folder.</div>Mornhttps://www.cpcwiki.eu/index.php?title=MAME&diff=96008MAME2016-07-14T15:56:08Z<p>Morn: /* BGFX */</p>
<hr />
<div>[[File:Mess sysinfo.png|thumb|upright=.9|The MAME system info box for the CPC6128]]<br />
[[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]]''.]]<br />
'''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.<br />
<br />
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.<br />
<br />
==Emulated systems==<br />
<br />
Currently, [http://www.progettoemma.net/mess/sysset.php 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).<br />
<br />
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.<br />
<br />
==Installation==<br />
<br />
MAME runs on Windows, Mac OS X, Linux, and FreeBSD. You can get Windows binaries from [http://mamedev.org/release.html mamedev.org].<br />
<br />
On OS X, you can install MAME via [http://brew.sh/ Homebrew]:<br />
brew tap homebrew/games<br />
brew install mame<br />
<br />
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:<br />
alias mame=/usr/share/sdlmame/sdlmame<br />
<br />
==Starting MAME; command line arguments; MAME menu; quitting==<br />
[[File:MAME menu CPC.png|thumb|upright|The MAME menu]]<br />
First get the [[Media:CPC_ROMs_for_MAME.zip|CPC ROMs for MAME]] and unzip them into the MAME roms folder.<br />
<br />
Typical command line to start MAME in CPC mode (windowed mode and with a disc inserted in drive A):<br />
mame cpc6128 -skip_gameinfo -window -flop1 disk.dsk<br />
<br />
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).<br />
<br />
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].)<br />
<br />
You can use the "-ab" commandline option to type text into MAME, e.g.<br />
mame cpc6128 -flop1 disk.dsk -ab "run\"disc\n"<br />
will boot the disc.<br />
<br />
===Device options for the CPC from [http://www.progettoemma.net/mess/extra.html sysinfo.dat]===<br />
{|class="wikitable"<br />
|'''Name'''<br />
|'''Argument'''<br />
|'''Allowed file extensions'''<br />
|-<br />
|Printer<br />
| -prin<br />
|.prn<br />
|-<br />
|Snapshot<br />
| -dump<br />
|.sna<br />
|-<br />
|Disk drive A<br />
| -flop1<br />
|rowspan="2"|.dsk; .d77; .d88; .1dd; .dfi; .imd; .ipf; .mfi; .mfm<br />
|-<br />
|Disk drive B<br />
| -flop2<br />
|-<br />
|Tape<br />
| -cass<br />
|.wav; .cdt<br />
|-<br />
|Cartridge<br />
| -cart<br />
|.cpr; .bin (Plus series and GX4000 only)<br />
|}<br />
<br />
Supported file types can also be shown with the "-listmedia" command line option.<br />
<br />
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.<br />
mame cpc6128 -flop1 disk.zip/disk0.dsk<br />
<br />
===Python script to start MAME in CPC mode===<br />
On Linux, you can also set your file manager (e.g. Nautilus or Konqueror) to open .dsk files with the following Python script:<br />
<pre><br />
#!/usr/bin/env python<br />
<br />
# Call as<br />
# "cpc" : emulated keyboard<br />
# "cpcn" : natural<br />
<br />
import os, os.path, zipfile<br />
from sys import argv<br />
<br />
if 'cpcn' in argv[0]:<br />
nat = '-natural'<br />
else:<br />
nat = ''<br />
<br />
s = "/usr/share/sdlmame/sdlmame cpc6128 -skip_gameinfo -window %s -keymap -keymap_file /usr/share/sdlmame/keymaps/km_de_LINUX.map" % nat<br />
<br />
def checkzip(t):<br />
"Check if file is a ZIP file; use the first file in the archive"<br />
if t[-4:].lower() == '.zip':<br />
a = zipfile.ZipFile(t).namelist()<br />
t = os.path.join(t, a[0])<br />
return t<br />
<br />
if len(argv) > 1:<br />
for x in range(1, len(argv)):<br />
s += ' -flop%u "%s"' % (x, checkzip(argv[x]))<br />
os.system(s)<br />
</pre><br />
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.<br />
<br />
==GUI front-ends==<br />
[[File:Mameui.png|thumb|MAMEUI64 on Windows]]<br />
[[File:Messmenu.png|thumb|MessMenu on OS X with a CPC ROM selected. Currently, seven different CPC models are supported, including some regional variants (French and Swedish).]]<br />
<br />
Various GUI front-ends for MAME/MESS exist for Windows, Linux, and OS X:<br />
<br />
*[http://mame32fx.altervista.org/ MAMEUIFX] (Windows)<br />
*[http://www.mameui.info/ MAMEUI64] (Windows)<br />
*[http://qmc2.arcadehits.net/ QMC2] (Windows, OS X, Linux)<br />
<br />
==Keyboard layouts==<br />
<br />
MAME supports two keyboard modes:<br />
* '''emulated''' (the default; keys are assigned based on key position on the emulated hardware)<br />
* '''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)<br />
<br />
To use a German keyboard in emulated keyboard mode, start MAME e.g. with (key map path on Linux):<br />
mame cpc6128 -keymap -keymap_file /usr/share/sdlmame/keymaps/km_de_LINUX.map<br />
<br />
You can also put these settings in your mame.ini like this:<br />
keymap 1<br />
keymap_file /usr/share/sdlmame/keymaps/km_de_LINUX.map<br />
<br />
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.<br />
<br />
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.<br />
<br />
==CPC artwork==<br />
[[File:MAME with CPC artwork.png|thumb|MAME window with monitor type set to green and optional CPC artwork]]<br />
You can add optional bezel artwork to MAME to simulate a CPC monitor:<br />
*[[Media:Cpc6128 mame artwork.zip|MAME artwork]] (CPC6128/GT65 bezel)<br />
<br />
Rename this file to cpc6128.zip and put it in MAME's artwork folder (~/.mame/artwork/ on Linux).<br />
<br />
==ROMs and extension hardware==<br />
<br />
[[Media:CPC_ROMs_for_MAME.zip|CPC ROMs for MAME]]. Just unzip the file and move the ZIPs inside into the MAME ROM folder.<br />
<br />
===General notes about MAME and ROMs===<br />
<br />
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.)<br />
<br />
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.<br />
<br />
===Slot options (extension hardware)===<br />
[[File:MESS with Dobbertin Smart Watch.png|thumb|upright=1.4||MAME with the Dobbertin Smart Watch ROM loaded (-exp smartwatch)]]<br />
[[File:Brunword mame.png|thumb|upright=1.4||BrunWord MK4 (ROM) main menu in MAME 0.162 (-exp brunword4)]]<br />
<br />
You can get a list of slot options with<br />
<br />
mame cpc6128 -lslot<br />
<br />
These are (as of MAME 0.168):<br />
<br />
*for "-centronics"<br />
{|class="wikitable"<br />
|-<br />
|pl80 <br />
|COMX PL-80<br />
|-<br />
|ex800 <br />
|Epson EX-800<br />
|-<br />
|lx800 <br />
|Epson LX-800<br />
|-<br />
|lx810l <br />
|Epson LX-810L<br />
|-<br />
|ap2000 <br />
|Epson ActionPrinter 2000<br />
|-<br />
|printer <br />
|Centronics Printer<br />
|-<br />
|digiblst <br />
|[[Digiblaster]] (DIY)<br />
|}<br />
<br />
*for "-exp"<br />
{|class="wikitable"<br />
|-<br />
|ssa1 <br />
|[[Amstrad SSA-1 Speech Synthesizer]]<br />
|-<br />
|dkspeech <br />
|[[Dk'tronics Speech Synthesizer]]<br />
|-<br />
|rom <br />
|ROM Box<br />
|-<br />
|multiface2 <br />
|[[Multiface II]]<br />
|-<br />
|pds <br />
|[[PDS development system|Programmers Development System (CPC Target)]]<br />
|-<br />
|rs232 <br />
|Pace RS232C interface<br />
|-<br />
|amsrs232 <br />
|[[Original Amstrad RS232 interface|Amstrad RS232C interface]]<br />
|-<br />
|sf2 <br />
|[[SYMBiFACE II]]<br />
|-<br />
|amdrum <br />
|[[Amdrum]]<br />
|-<br />
|playcity <br />
|[[PlayCity]]<br />
|-<br />
|smartwatch <br />
|[[Dobbertin Smart Watch]]<br />
|-<br />
|brunword4<br />
|[[BrunWord]] Elite MK4<br />
|-<br />
|hd20<br />
|[[Dobbertin Harddisc]]<br />
|-<br />
|doubler<br />
|[[Draysoft Doubler]]<br />
|-<br />
|transtape<br />
|HM [[Transtape]]<br />
|}<br />
<br />
===Loading external ROMs===<br />
<br />
The ROM Box expansion can be used to load external ROMs such as [[MAXAM]]:<br />
<br />
mame cpc6128 -exp rom -rom1 /path/to/MAXAM.ROM<br />
<br />
Up to 8 external ROMs (-rom1 to -rom8) are supported this way.<br />
<br />
===[[Dobbertin Harddisc]]===<br />
<br />
From the [http://www.cpcwiki.eu/forum/emulators/got-bored-again/msg102272/#msg102272 forum post]:<br />
<br />
To use, add -exp hd20 to the commandline, which will also allow you to add -hard <filename>.<br />
Code:<br />
<br />
mame cpc6128 -exp hd20 -hard1 disk.chd<br />
<br />
Only MAME CHDs are supported, you can create a blank hard disk image using chdman. Geometry is 615/4/17.<br />
Code:<br />
<br />
chdman createhd -o disk.chd -c none -chs 615,4,17<br />
<br />
(-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)<br />
<br />
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.<br />
<br />
See http://mahlemiut.marpirc.net/cpc_hd20.avi, a quick demo loading a game from HD.<br />
<br />
==CRT simulation==<br />
[[File:MAME BGFX Linux detail.png|thumb|BGFX output with default shader settings]]<br />
<br />
MAME can use shaders to simulate typical CRT graphics artifacts such as scanlines, colors bleeding into each other, jitter, and display curvature.<br />
<br />
===BGFX===<br />
<br />
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:<br />
<br />
video bgfx<br />
bgfx_screen_chains hlsl<br />
<br />
(You may also have to set bgfx_path to the bgfx directory if MAME cannot find the shaders.)<br />
<br />
Check with F11 if you still get 100% performance. If not, adjust frame skip with F8/F9.<br />
<br />
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]<br />
<br />
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:<br />
<br />
"default": 0.20<br />
<br />
===HLSL and GLSL===<br />
[[File:Cpc hlsl shader mess detail.png|thumb|HLSL "1980s" shader (Windows); MAME config used is on image description page]]<br />
<br />
Older methods for CRT simulation are manual HLSL and GLSL configurations, here are some examples:<br />
*Windows (using HLSL shaders)<br />
**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)<br />
**A German shader tutorial: [http://www.aep-emu.de/PNphpBB2-file-viewtopic-p-94168.html]<br />
*Linux (using GLSL shaders): MAME tutorial [http://www.mameau.com/mame-glsl-shaders-setup/]<br />
<br />
==Remaining issues with CPC emulation==<br />
<br />
*MAME may fail to read DSK images with certain kinds of copy protection. Speedlock seems to work fine though.<br />
*MAME cannot write to disc images in DSK format; only MFI (MESS floppy image) and MFM (HxCFloppyEmulator floppy image) are supported for writing.<br />
*Some demo tricks may be broken in MAME, e.g. overscan pictures are horizontally misaligned (i.e., shifted to the right).<br />
*CPC+/GX4000 emulation still has some obvious graphics glitches.<br />
*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.<br />
<br />
==Compiling to JavaScript==<br />
<br />
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.<br />
<br />
==Links==<br />
<br />
*{{EnWiki}}<br />
*[http://mamedev.org/ Official site]<br />
*[http://www.mess.org/mess:howto MESS user's manual]<br />
*[[Media:CPC_ROMs_for_MAME.zip|CPC ROMs for MAME]]<br />
<br />
[[Category:Emulator]]</div>Mornhttps://www.cpcwiki.eu/index.php?title=MAME&diff=96007MAME2016-07-14T15:53:15Z<p>Morn: /* CRT simulation */</p>
<hr />
<div>[[File:Mess sysinfo.png|thumb|upright=.9|The MAME system info box for the CPC6128]]<br />
[[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]]''.]]<br />
'''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.<br />
<br />
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.<br />
<br />
==Emulated systems==<br />
<br />
Currently, [http://www.progettoemma.net/mess/sysset.php 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).<br />
<br />
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.<br />
<br />
==Installation==<br />
<br />
MAME runs on Windows, Mac OS X, Linux, and FreeBSD. You can get Windows binaries from [http://mamedev.org/release.html mamedev.org].<br />
<br />
On OS X, you can install MAME via [http://brew.sh/ Homebrew]:<br />
brew tap homebrew/games<br />
brew install mame<br />
<br />
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:<br />
alias mame=/usr/share/sdlmame/sdlmame<br />
<br />
==Starting MAME; command line arguments; MAME menu; quitting==<br />
[[File:MAME menu CPC.png|thumb|upright|The MAME menu]]<br />
First get the [[Media:CPC_ROMs_for_MAME.zip|CPC ROMs for MAME]] and unzip them into the MAME roms folder.<br />
<br />
Typical command line to start MAME in CPC mode (windowed mode and with a disc inserted in drive A):<br />
mame cpc6128 -skip_gameinfo -window -flop1 disk.dsk<br />
<br />
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).<br />
<br />
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].)<br />
<br />
You can use the "-ab" commandline option to type text into MAME, e.g.<br />
mame cpc6128 -flop1 disk.dsk -ab "run\"disc\n"<br />
will boot the disc.<br />
<br />
===Device options for the CPC from [http://www.progettoemma.net/mess/extra.html sysinfo.dat]===<br />
{|class="wikitable"<br />
|'''Name'''<br />
|'''Argument'''<br />
|'''Allowed file extensions'''<br />
|-<br />
|Printer<br />
| -prin<br />
|.prn<br />
|-<br />
|Snapshot<br />
| -dump<br />
|.sna<br />
|-<br />
|Disk drive A<br />
| -flop1<br />
|rowspan="2"|.dsk; .d77; .d88; .1dd; .dfi; .imd; .ipf; .mfi; .mfm<br />
|-<br />
|Disk drive B<br />
| -flop2<br />
|-<br />
|Tape<br />
| -cass<br />
|.wav; .cdt<br />
|-<br />
|Cartridge<br />
| -cart<br />
|.cpr; .bin (Plus series and GX4000 only)<br />
|}<br />
<br />
Supported file types can also be shown with the "-listmedia" command line option.<br />
<br />
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.<br />
mame cpc6128 -flop1 disk.zip/disk0.dsk<br />
<br />
===Python script to start MAME in CPC mode===<br />
On Linux, you can also set your file manager (e.g. Nautilus or Konqueror) to open .dsk files with the following Python script:<br />
<pre><br />
#!/usr/bin/env python<br />
<br />
# Call as<br />
# "cpc" : emulated keyboard<br />
# "cpcn" : natural<br />
<br />
import os, os.path, zipfile<br />
from sys import argv<br />
<br />
if 'cpcn' in argv[0]:<br />
nat = '-natural'<br />
else:<br />
nat = ''<br />
<br />
s = "/usr/share/sdlmame/sdlmame cpc6128 -skip_gameinfo -window %s -keymap -keymap_file /usr/share/sdlmame/keymaps/km_de_LINUX.map" % nat<br />
<br />
def checkzip(t):<br />
"Check if file is a ZIP file; use the first file in the archive"<br />
if t[-4:].lower() == '.zip':<br />
a = zipfile.ZipFile(t).namelist()<br />
t = os.path.join(t, a[0])<br />
return t<br />
<br />
if len(argv) > 1:<br />
for x in range(1, len(argv)):<br />
s += ' -flop%u "%s"' % (x, checkzip(argv[x]))<br />
os.system(s)<br />
</pre><br />
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.<br />
<br />
==GUI front-ends==<br />
[[File:Mameui.png|thumb|MAMEUI64 on Windows]]<br />
[[File:Messmenu.png|thumb|MessMenu on OS X with a CPC ROM selected. Currently, seven different CPC models are supported, including some regional variants (French and Swedish).]]<br />
<br />
Various GUI front-ends for MAME/MESS exist for Windows, Linux, and OS X:<br />
<br />
*[http://mame32fx.altervista.org/ MAMEUIFX] (Windows)<br />
*[http://www.mameui.info/ MAMEUI64] (Windows)<br />
*[http://qmc2.arcadehits.net/ QMC2] (Windows, OS X, Linux)<br />
<br />
==Keyboard layouts==<br />
<br />
MAME supports two keyboard modes:<br />
* '''emulated''' (the default; keys are assigned based on key position on the emulated hardware)<br />
* '''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)<br />
<br />
To use a German keyboard in emulated keyboard mode, start MAME e.g. with (key map path on Linux):<br />
mame cpc6128 -keymap -keymap_file /usr/share/sdlmame/keymaps/km_de_LINUX.map<br />
<br />
You can also put these settings in your mame.ini like this:<br />
keymap 1<br />
keymap_file /usr/share/sdlmame/keymaps/km_de_LINUX.map<br />
<br />
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.<br />
<br />
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.<br />
<br />
==CPC artwork==<br />
[[File:MAME with CPC artwork.png|thumb|MAME window with monitor type set to green and optional CPC artwork]]<br />
You can add optional bezel artwork to MAME to simulate a CPC monitor:<br />
*[[Media:Cpc6128 mame artwork.zip|MAME artwork]] (CPC6128/GT65 bezel)<br />
<br />
Rename this file to cpc6128.zip and put it in MAME's artwork folder (~/.mame/artwork/ on Linux).<br />
<br />
==ROMs and extension hardware==<br />
<br />
[[Media:CPC_ROMs_for_MAME.zip|CPC ROMs for MAME]]. Just unzip the file and move the ZIPs inside into the MAME ROM folder.<br />
<br />
===General notes about MAME and ROMs===<br />
<br />
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.)<br />
<br />
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.<br />
<br />
===Slot options (extension hardware)===<br />
[[File:MESS with Dobbertin Smart Watch.png|thumb|upright=1.4||MAME with the Dobbertin Smart Watch ROM loaded (-exp smartwatch)]]<br />
[[File:Brunword mame.png|thumb|upright=1.4||BrunWord MK4 (ROM) main menu in MAME 0.162 (-exp brunword4)]]<br />
<br />
You can get a list of slot options with<br />
<br />
mame cpc6128 -lslot<br />
<br />
These are (as of MAME 0.168):<br />
<br />
*for "-centronics"<br />
{|class="wikitable"<br />
|-<br />
|pl80 <br />
|COMX PL-80<br />
|-<br />
|ex800 <br />
|Epson EX-800<br />
|-<br />
|lx800 <br />
|Epson LX-800<br />
|-<br />
|lx810l <br />
|Epson LX-810L<br />
|-<br />
|ap2000 <br />
|Epson ActionPrinter 2000<br />
|-<br />
|printer <br />
|Centronics Printer<br />
|-<br />
|digiblst <br />
|[[Digiblaster]] (DIY)<br />
|}<br />
<br />
*for "-exp"<br />
{|class="wikitable"<br />
|-<br />
|ssa1 <br />
|[[Amstrad SSA-1 Speech Synthesizer]]<br />
|-<br />
|dkspeech <br />
|[[Dk'tronics Speech Synthesizer]]<br />
|-<br />
|rom <br />
|ROM Box<br />
|-<br />
|multiface2 <br />
|[[Multiface II]]<br />
|-<br />
|pds <br />
|[[PDS development system|Programmers Development System (CPC Target)]]<br />
|-<br />
|rs232 <br />
|Pace RS232C interface<br />
|-<br />
|amsrs232 <br />
|[[Original Amstrad RS232 interface|Amstrad RS232C interface]]<br />
|-<br />
|sf2 <br />
|[[SYMBiFACE II]]<br />
|-<br />
|amdrum <br />
|[[Amdrum]]<br />
|-<br />
|playcity <br />
|[[PlayCity]]<br />
|-<br />
|smartwatch <br />
|[[Dobbertin Smart Watch]]<br />
|-<br />
|brunword4<br />
|[[BrunWord]] Elite MK4<br />
|-<br />
|hd20<br />
|[[Dobbertin Harddisc]]<br />
|-<br />
|doubler<br />
|[[Draysoft Doubler]]<br />
|-<br />
|transtape<br />
|HM [[Transtape]]<br />
|}<br />
<br />
===Loading external ROMs===<br />
<br />
The ROM Box expansion can be used to load external ROMs such as [[MAXAM]]:<br />
<br />
mame cpc6128 -exp rom -rom1 /path/to/MAXAM.ROM<br />
<br />
Up to 8 external ROMs (-rom1 to -rom8) are supported this way.<br />
<br />
===[[Dobbertin Harddisc]]===<br />
<br />
From the [http://www.cpcwiki.eu/forum/emulators/got-bored-again/msg102272/#msg102272 forum post]:<br />
<br />
To use, add -exp hd20 to the commandline, which will also allow you to add -hard <filename>.<br />
Code:<br />
<br />
mame cpc6128 -exp hd20 -hard1 disk.chd<br />
<br />
Only MAME CHDs are supported, you can create a blank hard disk image using chdman. Geometry is 615/4/17.<br />
Code:<br />
<br />
chdman createhd -o disk.chd -c none -chs 615,4,17<br />
<br />
(-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)<br />
<br />
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.<br />
<br />
See http://mahlemiut.marpirc.net/cpc_hd20.avi, a quick demo loading a game from HD.<br />
<br />
==CRT simulation==<br />
[[File:MAME BGFX Linux detail.png|thumb|BGFX output with default shader settings]]<br />
<br />
MAME can use shaders to simulate typical CRT graphics artifacts such as scanlines, colors bleeding into each other, jitter, and display curvature.<br />
<br />
===BGFX===<br />
<br />
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:<br />
<br />
video bgfx<br />
bgfx_screen_chains hlsl<br />
<br />
(You may also have to set bgfx_path to the bgfx directory if MAME cannot find the shaders.)<br />
<br />
Check with F11 if you still get 100% performance. If not, adjust frame skip with F8/F9.<br />
<br />
Also, if you press the tilde (~) and then cursor up/down, you can adjust the shader settings. These are not saved at the moment though.[http://docs.mamedev.org/advanced/bgfx.html]<br />
<br />
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:<br />
<br />
"default": 0.20<br />
<br />
===HLSL and GLSL===<br />
[[File:Cpc hlsl shader mess detail.png|thumb|HLSL "1980s" shader (Windows); MAME config used is on image description page]]<br />
<br />
Older methods for CRT simulation are manual HLSL and GLSL configurations, here are some examples:<br />
*Windows (using HLSL shaders)<br />
**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)<br />
**A German shader tutorial: [http://www.aep-emu.de/PNphpBB2-file-viewtopic-p-94168.html]<br />
*Linux (using GLSL shaders): MAME tutorial [http://www.mameau.com/mame-glsl-shaders-setup/]<br />
<br />
==Remaining issues with CPC emulation==<br />
<br />
*MAME may fail to read DSK images with certain kinds of copy protection. Speedlock seems to work fine though.<br />
*MAME cannot write to disc images in DSK format; only MFI (MESS floppy image) and MFM (HxCFloppyEmulator floppy image) are supported for writing.<br />
*Some demo tricks may be broken in MAME, e.g. overscan pictures are horizontally misaligned (i.e., shifted to the right).<br />
*CPC+/GX4000 emulation still has some obvious graphics glitches.<br />
*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.<br />
<br />
==Compiling to JavaScript==<br />
<br />
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.<br />
<br />
==Links==<br />
<br />
*{{EnWiki}}<br />
*[http://mamedev.org/ Official site]<br />
*[http://www.mess.org/mess:howto MESS user's manual]<br />
*[[Media:CPC_ROMs_for_MAME.zip|CPC ROMs for MAME]]<br />
<br />
[[Category:Emulator]]</div>Mornhttps://www.cpcwiki.eu/index.php?title=MAME&diff=96006MAME2016-07-14T15:39:24Z<p>Morn: /* CRT simulation */</p>
<hr />
<div>[[File:Mess sysinfo.png|thumb|upright=.9|The MAME system info box for the CPC6128]]<br />
[[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]]''.]]<br />
'''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.<br />
<br />
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.<br />
<br />
==Emulated systems==<br />
<br />
Currently, [http://www.progettoemma.net/mess/sysset.php 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).<br />
<br />
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.<br />
<br />
==Installation==<br />
<br />
MAME runs on Windows, Mac OS X, Linux, and FreeBSD. You can get Windows binaries from [http://mamedev.org/release.html mamedev.org].<br />
<br />
On OS X, you can install MAME via [http://brew.sh/ Homebrew]:<br />
brew tap homebrew/games<br />
brew install mame<br />
<br />
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:<br />
alias mame=/usr/share/sdlmame/sdlmame<br />
<br />
==Starting MAME; command line arguments; MAME menu; quitting==<br />
[[File:MAME menu CPC.png|thumb|upright|The MAME menu]]<br />
First get the [[Media:CPC_ROMs_for_MAME.zip|CPC ROMs for MAME]] and unzip them into the MAME roms folder.<br />
<br />
Typical command line to start MAME in CPC mode (windowed mode and with a disc inserted in drive A):<br />
mame cpc6128 -skip_gameinfo -window -flop1 disk.dsk<br />
<br />
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).<br />
<br />
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].)<br />
<br />
You can use the "-ab" commandline option to type text into MAME, e.g.<br />
mame cpc6128 -flop1 disk.dsk -ab "run\"disc\n"<br />
will boot the disc.<br />
<br />
===Device options for the CPC from [http://www.progettoemma.net/mess/extra.html sysinfo.dat]===<br />
{|class="wikitable"<br />
|'''Name'''<br />
|'''Argument'''<br />
|'''Allowed file extensions'''<br />
|-<br />
|Printer<br />
| -prin<br />
|.prn<br />
|-<br />
|Snapshot<br />
| -dump<br />
|.sna<br />
|-<br />
|Disk drive A<br />
| -flop1<br />
|rowspan="2"|.dsk; .d77; .d88; .1dd; .dfi; .imd; .ipf; .mfi; .mfm<br />
|-<br />
|Disk drive B<br />
| -flop2<br />
|-<br />
|Tape<br />
| -cass<br />
|.wav; .cdt<br />
|-<br />
|Cartridge<br />
| -cart<br />
|.cpr; .bin (Plus series and GX4000 only)<br />
|}<br />
<br />
Supported file types can also be shown with the "-listmedia" command line option.<br />
<br />
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.<br />
mame cpc6128 -flop1 disk.zip/disk0.dsk<br />
<br />
===Python script to start MAME in CPC mode===<br />
On Linux, you can also set your file manager (e.g. Nautilus or Konqueror) to open .dsk files with the following Python script:<br />
<pre><br />
#!/usr/bin/env python<br />
<br />
# Call as<br />
# "cpc" : emulated keyboard<br />
# "cpcn" : natural<br />
<br />
import os, os.path, zipfile<br />
from sys import argv<br />
<br />
if 'cpcn' in argv[0]:<br />
nat = '-natural'<br />
else:<br />
nat = ''<br />
<br />
s = "/usr/share/sdlmame/sdlmame cpc6128 -skip_gameinfo -window %s -keymap -keymap_file /usr/share/sdlmame/keymaps/km_de_LINUX.map" % nat<br />
<br />
def checkzip(t):<br />
"Check if file is a ZIP file; use the first file in the archive"<br />
if t[-4:].lower() == '.zip':<br />
a = zipfile.ZipFile(t).namelist()<br />
t = os.path.join(t, a[0])<br />
return t<br />
<br />
if len(argv) > 1:<br />
for x in range(1, len(argv)):<br />
s += ' -flop%u "%s"' % (x, checkzip(argv[x]))<br />
os.system(s)<br />
</pre><br />
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.<br />
<br />
==GUI front-ends==<br />
[[File:Mameui.png|thumb|MAMEUI64 on Windows]]<br />
[[File:Messmenu.png|thumb|MessMenu on OS X with a CPC ROM selected. Currently, seven different CPC models are supported, including some regional variants (French and Swedish).]]<br />
<br />
Various GUI front-ends for MAME/MESS exist for Windows, Linux, and OS X:<br />
<br />
*[http://mame32fx.altervista.org/ MAMEUIFX] (Windows)<br />
*[http://www.mameui.info/ MAMEUI64] (Windows)<br />
*[http://qmc2.arcadehits.net/ QMC2] (Windows, OS X, Linux)<br />
<br />
==Keyboard layouts==<br />
<br />
MAME supports two keyboard modes:<br />
* '''emulated''' (the default; keys are assigned based on key position on the emulated hardware)<br />
* '''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)<br />
<br />
To use a German keyboard in emulated keyboard mode, start MAME e.g. with (key map path on Linux):<br />
mame cpc6128 -keymap -keymap_file /usr/share/sdlmame/keymaps/km_de_LINUX.map<br />
<br />
You can also put these settings in your mame.ini like this:<br />
keymap 1<br />
keymap_file /usr/share/sdlmame/keymaps/km_de_LINUX.map<br />
<br />
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.<br />
<br />
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.<br />
<br />
==CPC artwork==<br />
[[File:MAME with CPC artwork.png|thumb|MAME window with monitor type set to green and optional CPC artwork]]<br />
You can add optional bezel artwork to MAME to simulate a CPC monitor:<br />
*[[Media:Cpc6128 mame artwork.zip|MAME artwork]] (CPC6128/GT65 bezel)<br />
<br />
Rename this file to cpc6128.zip and put it in MAME's artwork folder (~/.mame/artwork/ on Linux).<br />
<br />
==ROMs and extension hardware==<br />
<br />
[[Media:CPC_ROMs_for_MAME.zip|CPC ROMs for MAME]]. Just unzip the file and move the ZIPs inside into the MAME ROM folder.<br />
<br />
===General notes about MAME and ROMs===<br />
<br />
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.)<br />
<br />
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.<br />
<br />
===Slot options (extension hardware)===<br />
[[File:MESS with Dobbertin Smart Watch.png|thumb|upright=1.4||MAME with the Dobbertin Smart Watch ROM loaded (-exp smartwatch)]]<br />
[[File:Brunword mame.png|thumb|upright=1.4||BrunWord MK4 (ROM) main menu in MAME 0.162 (-exp brunword4)]]<br />
<br />
You can get a list of slot options with<br />
<br />
mame cpc6128 -lslot<br />
<br />
These are (as of MAME 0.168):<br />
<br />
*for "-centronics"<br />
{|class="wikitable"<br />
|-<br />
|pl80 <br />
|COMX PL-80<br />
|-<br />
|ex800 <br />
|Epson EX-800<br />
|-<br />
|lx800 <br />
|Epson LX-800<br />
|-<br />
|lx810l <br />
|Epson LX-810L<br />
|-<br />
|ap2000 <br />
|Epson ActionPrinter 2000<br />
|-<br />
|printer <br />
|Centronics Printer<br />
|-<br />
|digiblst <br />
|[[Digiblaster]] (DIY)<br />
|}<br />
<br />
*for "-exp"<br />
{|class="wikitable"<br />
|-<br />
|ssa1 <br />
|[[Amstrad SSA-1 Speech Synthesizer]]<br />
|-<br />
|dkspeech <br />
|[[Dk'tronics Speech Synthesizer]]<br />
|-<br />
|rom <br />
|ROM Box<br />
|-<br />
|multiface2 <br />
|[[Multiface II]]<br />
|-<br />
|pds <br />
|[[PDS development system|Programmers Development System (CPC Target)]]<br />
|-<br />
|rs232 <br />
|Pace RS232C interface<br />
|-<br />
|amsrs232 <br />
|[[Original Amstrad RS232 interface|Amstrad RS232C interface]]<br />
|-<br />
|sf2 <br />
|[[SYMBiFACE II]]<br />
|-<br />
|amdrum <br />
|[[Amdrum]]<br />
|-<br />
|playcity <br />
|[[PlayCity]]<br />
|-<br />
|smartwatch <br />
|[[Dobbertin Smart Watch]]<br />
|-<br />
|brunword4<br />
|[[BrunWord]] Elite MK4<br />
|-<br />
|hd20<br />
|[[Dobbertin Harddisc]]<br />
|-<br />
|doubler<br />
|[[Draysoft Doubler]]<br />
|-<br />
|transtape<br />
|HM [[Transtape]]<br />
|}<br />
<br />
===Loading external ROMs===<br />
<br />
The ROM Box expansion can be used to load external ROMs such as [[MAXAM]]:<br />
<br />
mame cpc6128 -exp rom -rom1 /path/to/MAXAM.ROM<br />
<br />
Up to 8 external ROMs (-rom1 to -rom8) are supported this way.<br />
<br />
===[[Dobbertin Harddisc]]===<br />
<br />
From the [http://www.cpcwiki.eu/forum/emulators/got-bored-again/msg102272/#msg102272 forum post]:<br />
<br />
To use, add -exp hd20 to the commandline, which will also allow you to add -hard <filename>.<br />
Code:<br />
<br />
mame cpc6128 -exp hd20 -hard1 disk.chd<br />
<br />
Only MAME CHDs are supported, you can create a blank hard disk image using chdman. Geometry is 615/4/17.<br />
Code:<br />
<br />
chdman createhd -o disk.chd -c none -chs 615,4,17<br />
<br />
(-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)<br />
<br />
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.<br />
<br />
See http://mahlemiut.marpirc.net/cpc_hd20.avi, a quick demo loading a game from HD.<br />
<br />
==CRT simulation==<br />
[[File:MAME BGFX Linux detail.png|thumb|BGFX output with default shader settings on Linux]]<br />
<br />
MAME can use shaders to simulate typical CRT graphics artifacts such as scanlines, colors bleeding into each other, jitter, and display curvature.<br />
<br />
===BGFX===<br />
<br />
The easiest way to do this (works on Windows, OS X, and Linux) in recent versions of MAME is to enable [https://github.com/bkaradzic/bgfx BGFX] video output: Put this in your mame.ini:<br />
<br />
video bgfx<br />
bgfx_screen_chains hlsl<br />
<br />
(You may also have to set bgfx_path to the bgfx directory if MAME cannot find the shaders.)<br />
<br />
Check with F11 if you still get 100% performance. If not, adjust frame skip with F8/F9.<br />
<br />
Also, if you press the tilde (~) and then cursor up/down, you can adjust the shader settings. These are not saved at the moment though.[http://docs.mamedev.org/advanced/bgfx.html]<br />
<br />
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:<br />
<br />
"default": 0.20<br />
<br />
===HLSL and GLSL===<br />
[[File:Cpc hlsl shader mess detail.png|thumb|HLSL "1980s" shader (Windows); MAME config used is on image description page]]<br />
<br />
Older methods for CRT simulation are manual HLSL and GLSL configurations, here are some examples:<br />
*Windows (using HLSL shaders)<br />
**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)<br />
**A German shader tutorial: [http://www.aep-emu.de/PNphpBB2-file-viewtopic-p-94168.html]<br />
*Linux (using GLSL shaders): MAME tutorial [http://www.mameau.com/mame-glsl-shaders-setup/]<br />
<br />
==Remaining issues with CPC emulation==<br />
<br />
*MAME may fail to read DSK images with certain kinds of copy protection. Speedlock seems to work fine though.<br />
*MAME cannot write to disc images in DSK format; only MFI (MESS floppy image) and MFM (HxCFloppyEmulator floppy image) are supported for writing.<br />
*Some demo tricks may be broken in MAME, e.g. overscan pictures are horizontally misaligned (i.e., shifted to the right).<br />
*CPC+/GX4000 emulation still has some obvious graphics glitches.<br />
*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.<br />
<br />
==Compiling to JavaScript==<br />
<br />
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.<br />
<br />
==Links==<br />
<br />
*{{EnWiki}}<br />
*[http://mamedev.org/ Official site]<br />
*[http://www.mess.org/mess:howto MESS user's manual]<br />
*[[Media:CPC_ROMs_for_MAME.zip|CPC ROMs for MAME]]<br />
<br />
[[Category:Emulator]]</div>Mornhttps://www.cpcwiki.eu/index.php?title=MAME&diff=96005MAME2016-07-14T12:41:54Z<p>Morn: /* Python script to start MAME in CPC mode */</p>
<hr />
<div>[[File:Mess sysinfo.png|thumb|upright=.9|The MAME system info box for the CPC6128]]<br />
[[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]]''.]]<br />
'''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.<br />
<br />
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.<br />
<br />
==Emulated systems==<br />
<br />
Currently, [http://www.progettoemma.net/mess/sysset.php 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).<br />
<br />
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.<br />
<br />
==Installation==<br />
<br />
MAME runs on Windows, Mac OS X, Linux, and FreeBSD. You can get Windows binaries from [http://mamedev.org/release.html mamedev.org].<br />
<br />
On OS X, you can install MAME via [http://brew.sh/ Homebrew]:<br />
brew tap homebrew/games<br />
brew install mame<br />
<br />
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:<br />
alias mame=/usr/share/sdlmame/sdlmame<br />
<br />
==Starting MAME; command line arguments; MAME menu; quitting==<br />
[[File:MAME menu CPC.png|thumb|upright|The MAME menu]]<br />
First get the [[Media:CPC_ROMs_for_MAME.zip|CPC ROMs for MAME]] and unzip them into the MAME roms folder.<br />
<br />
Typical command line to start MAME in CPC mode (windowed mode and with a disc inserted in drive A):<br />
mame cpc6128 -skip_gameinfo -window -flop1 disk.dsk<br />
<br />
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).<br />
<br />
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].)<br />
<br />
You can use the "-ab" commandline option to type text into MAME, e.g.<br />
mame cpc6128 -flop1 disk.dsk -ab "run\"disc\n"<br />
will boot the disc.<br />
<br />
===Device options for the CPC from [http://www.progettoemma.net/mess/extra.html sysinfo.dat]===<br />
{|class="wikitable"<br />
|'''Name'''<br />
|'''Argument'''<br />
|'''Allowed file extensions'''<br />
|-<br />
|Printer<br />
| -prin<br />
|.prn<br />
|-<br />
|Snapshot<br />
| -dump<br />
|.sna<br />
|-<br />
|Disk drive A<br />
| -flop1<br />
|rowspan="2"|.dsk; .d77; .d88; .1dd; .dfi; .imd; .ipf; .mfi; .mfm<br />
|-<br />
|Disk drive B<br />
| -flop2<br />
|-<br />
|Tape<br />
| -cass<br />
|.wav; .cdt<br />
|-<br />
|Cartridge<br />
| -cart<br />
|.cpr; .bin (Plus series and GX4000 only)<br />
|}<br />
<br />
Supported file types can also be shown with the "-listmedia" command line option.<br />
<br />
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.<br />
mame cpc6128 -flop1 disk.zip/disk0.dsk<br />
<br />
===Python script to start MAME in CPC mode===<br />
On Linux, you can also set your file manager (e.g. Nautilus or Konqueror) to open .dsk files with the following Python script:<br />
<pre><br />
#!/usr/bin/env python<br />
<br />
# Call as<br />
# "cpc" : emulated keyboard<br />
# "cpcn" : natural<br />
<br />
import os, os.path, zipfile<br />
from sys import argv<br />
<br />
if 'cpcn' in argv[0]:<br />
nat = '-natural'<br />
else:<br />
nat = ''<br />
<br />
s = "/usr/share/sdlmame/sdlmame cpc6128 -skip_gameinfo -window %s -keymap -keymap_file /usr/share/sdlmame/keymaps/km_de_LINUX.map" % nat<br />
<br />
def checkzip(t):<br />
"Check if file is a ZIP file; use the first file in the archive"<br />
if t[-4:].lower() == '.zip':<br />
a = zipfile.ZipFile(t).namelist()<br />
t = os.path.join(t, a[0])<br />
return t<br />
<br />
if len(argv) > 1:<br />
for x in range(1, len(argv)):<br />
s += ' -flop%u "%s"' % (x, checkzip(argv[x]))<br />
os.system(s)<br />
</pre><br />
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.<br />
<br />
==GUI front-ends==<br />
[[File:Mameui.png|thumb|MAMEUI64 on Windows]]<br />
[[File:Messmenu.png|thumb|MessMenu on OS X with a CPC ROM selected. Currently, seven different CPC models are supported, including some regional variants (French and Swedish).]]<br />
<br />
Various GUI front-ends for MAME/MESS exist for Windows, Linux, and OS X:<br />
<br />
*[http://mame32fx.altervista.org/ MAMEUIFX] (Windows)<br />
*[http://www.mameui.info/ MAMEUI64] (Windows)<br />
*[http://qmc2.arcadehits.net/ QMC2] (Windows, OS X, Linux)<br />
<br />
==Keyboard layouts==<br />
<br />
MAME supports two keyboard modes:<br />
* '''emulated''' (the default; keys are assigned based on key position on the emulated hardware)<br />
* '''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)<br />
<br />
To use a German keyboard in emulated keyboard mode, start MAME e.g. with (key map path on Linux):<br />
mame cpc6128 -keymap -keymap_file /usr/share/sdlmame/keymaps/km_de_LINUX.map<br />
<br />
You can also put these settings in your mame.ini like this:<br />
keymap 1<br />
keymap_file /usr/share/sdlmame/keymaps/km_de_LINUX.map<br />
<br />
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.<br />
<br />
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.<br />
<br />
==CPC artwork==<br />
[[File:MAME with CPC artwork.png|thumb|MAME window with monitor type set to green and optional CPC artwork]]<br />
You can add optional bezel artwork to MAME to simulate a CPC monitor:<br />
*[[Media:Cpc6128 mame artwork.zip|MAME artwork]] (CPC6128/GT65 bezel)<br />
<br />
Rename this file to cpc6128.zip and put it in MAME's artwork folder (~/.mame/artwork/ on Linux).<br />
<br />
==ROMs and extension hardware==<br />
<br />
[[Media:CPC_ROMs_for_MAME.zip|CPC ROMs for MAME]]. Just unzip the file and move the ZIPs inside into the MAME ROM folder.<br />
<br />
===General notes about MAME and ROMs===<br />
<br />
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.)<br />
<br />
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.<br />
<br />
===Slot options (extension hardware)===<br />
[[File:MESS with Dobbertin Smart Watch.png|thumb|upright=1.4||MAME with the Dobbertin Smart Watch ROM loaded (-exp smartwatch)]]<br />
[[File:Brunword mame.png|thumb|upright=1.4||BrunWord MK4 (ROM) main menu in MAME 0.162 (-exp brunword4)]]<br />
<br />
You can get a list of slot options with<br />
<br />
mame cpc6128 -lslot<br />
<br />
These are (as of MAME 0.168):<br />
<br />
*for "-centronics"<br />
{|class="wikitable"<br />
|-<br />
|pl80 <br />
|COMX PL-80<br />
|-<br />
|ex800 <br />
|Epson EX-800<br />
|-<br />
|lx800 <br />
|Epson LX-800<br />
|-<br />
|lx810l <br />
|Epson LX-810L<br />
|-<br />
|ap2000 <br />
|Epson ActionPrinter 2000<br />
|-<br />
|printer <br />
|Centronics Printer<br />
|-<br />
|digiblst <br />
|[[Digiblaster]] (DIY)<br />
|}<br />
<br />
*for "-exp"<br />
{|class="wikitable"<br />
|-<br />
|ssa1 <br />
|[[Amstrad SSA-1 Speech Synthesizer]]<br />
|-<br />
|dkspeech <br />
|[[Dk'tronics Speech Synthesizer]]<br />
|-<br />
|rom <br />
|ROM Box<br />
|-<br />
|multiface2 <br />
|[[Multiface II]]<br />
|-<br />
|pds <br />
|[[PDS development system|Programmers Development System (CPC Target)]]<br />
|-<br />
|rs232 <br />
|Pace RS232C interface<br />
|-<br />
|amsrs232 <br />
|[[Original Amstrad RS232 interface|Amstrad RS232C interface]]<br />
|-<br />
|sf2 <br />
|[[SYMBiFACE II]]<br />
|-<br />
|amdrum <br />
|[[Amdrum]]<br />
|-<br />
|playcity <br />
|[[PlayCity]]<br />
|-<br />
|smartwatch <br />
|[[Dobbertin Smart Watch]]<br />
|-<br />
|brunword4<br />
|[[BrunWord]] Elite MK4<br />
|-<br />
|hd20<br />
|[[Dobbertin Harddisc]]<br />
|-<br />
|doubler<br />
|[[Draysoft Doubler]]<br />
|-<br />
|transtape<br />
|HM [[Transtape]]<br />
|}<br />
<br />
===Loading external ROMs===<br />
<br />
The ROM Box expansion can be used to load external ROMs such as [[MAXAM]]:<br />
<br />
mame cpc6128 -exp rom -rom1 /path/to/MAXAM.ROM<br />
<br />
Up to 8 external ROMs (-rom1 to -rom8) are supported this way.<br />
<br />
===[[Dobbertin Harddisc]]===<br />
<br />
From the [http://www.cpcwiki.eu/forum/emulators/got-bored-again/msg102272/#msg102272 forum post]:<br />
<br />
To use, add -exp hd20 to the commandline, which will also allow you to add -hard <filename>.<br />
Code:<br />
<br />
mame cpc6128 -exp hd20 -hard1 disk.chd<br />
<br />
Only MAME CHDs are supported, you can create a blank hard disk image using chdman. Geometry is 615/4/17.<br />
Code:<br />
<br />
chdman createhd -o disk.chd -c none -chs 615,4,17<br />
<br />
(-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)<br />
<br />
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.<br />
<br />
See http://mahlemiut.marpirc.net/cpc_hd20.avi, a quick demo loading a game from HD.<br />
<br />
==CRT simulation==<br />
[[File:MAME BGFX Linux detail.png|thumb|BGFX output with default shader settings on Linux]]<br />
[[File:Cpc hlsl shader mess detail.png|thumb|HLSL "1980s" shader (Windows); MAME config used is on image description page]]<br />
MAME can use shaders to simulate typical CRT graphics artifacts such as scanlines, colors bleeding into each other, jitter, and display curvature.<br />
<br />
The easiest way to do this (works on Windows, OS X, and Linux) in recent versions of MAME is to enable [https://github.com/bkaradzic/bgfx BGFX] video output: Put this in your mame.ini:<br />
<br />
video bgfx<br />
bgfx_screen_chains hlsl<br />
<br />
(You may also have to set bgfx_path to the bgfx directory if MAME cannot find the shaders.)<br />
<br />
Check with F11 if you still get 100% performance. If not, adjust frame skip with F8/F9.<br />
<br />
Also, if you press the tilde (~) and then cursor up/down, you can adjust the shader settings. These are not saved at the moment though.[http://docs.mamedev.org/advanced/bgfx.html]<br />
<br />
Older methods are manual HLSL and GLSL configurations, here are some examples:<br />
*Windows (using HLSL shaders)<br />
**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)<br />
**A German shader tutorial: [http://www.aep-emu.de/PNphpBB2-file-viewtopic-p-94168.html]<br />
*Linux (using GLSL shaders): MAME tutorial [http://www.mameau.com/mame-glsl-shaders-setup/]<br />
<br />
==Remaining issues with CPC emulation==<br />
<br />
*MAME may fail to read DSK images with certain kinds of copy protection. Speedlock seems to work fine though.<br />
*MAME cannot write to disc images in DSK format; only MFI (MESS floppy image) and MFM (HxCFloppyEmulator floppy image) are supported for writing.<br />
*Some demo tricks may be broken in MAME, e.g. overscan pictures are horizontally misaligned (i.e., shifted to the right).<br />
*CPC+/GX4000 emulation still has some obvious graphics glitches.<br />
*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.<br />
<br />
==Compiling to JavaScript==<br />
<br />
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.<br />
<br />
==Links==<br />
<br />
*{{EnWiki}}<br />
*[http://mamedev.org/ Official site]<br />
*[http://www.mess.org/mess:howto MESS user's manual]<br />
*[[Media:CPC_ROMs_for_MAME.zip|CPC ROMs for MAME]]<br />
<br />
[[Category:Emulator]]</div>Mornhttps://www.cpcwiki.eu/index.php?title=MAME&diff=96004MAME2016-07-14T12:41:33Z<p>Morn: /* Keyboard layouts */</p>
<hr />
<div>[[File:Mess sysinfo.png|thumb|upright=.9|The MAME system info box for the CPC6128]]<br />
[[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]]''.]]<br />
'''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.<br />
<br />
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.<br />
<br />
==Emulated systems==<br />
<br />
Currently, [http://www.progettoemma.net/mess/sysset.php 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).<br />
<br />
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.<br />
<br />
==Installation==<br />
<br />
MAME runs on Windows, Mac OS X, Linux, and FreeBSD. You can get Windows binaries from [http://mamedev.org/release.html mamedev.org].<br />
<br />
On OS X, you can install MAME via [http://brew.sh/ Homebrew]:<br />
brew tap homebrew/games<br />
brew install mame<br />
<br />
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:<br />
alias mame=/usr/share/sdlmame/sdlmame<br />
<br />
==Starting MAME; command line arguments; MAME menu; quitting==<br />
[[File:MAME menu CPC.png|thumb|upright|The MAME menu]]<br />
First get the [[Media:CPC_ROMs_for_MAME.zip|CPC ROMs for MAME]] and unzip them into the MAME roms folder.<br />
<br />
Typical command line to start MAME in CPC mode (windowed mode and with a disc inserted in drive A):<br />
mame cpc6128 -skip_gameinfo -window -flop1 disk.dsk<br />
<br />
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).<br />
<br />
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].)<br />
<br />
You can use the "-ab" commandline option to type text into MAME, e.g.<br />
mame cpc6128 -flop1 disk.dsk -ab "run\"disc\n"<br />
will boot the disc.<br />
<br />
===Device options for the CPC from [http://www.progettoemma.net/mess/extra.html sysinfo.dat]===<br />
{|class="wikitable"<br />
|'''Name'''<br />
|'''Argument'''<br />
|'''Allowed file extensions'''<br />
|-<br />
|Printer<br />
| -prin<br />
|.prn<br />
|-<br />
|Snapshot<br />
| -dump<br />
|.sna<br />
|-<br />
|Disk drive A<br />
| -flop1<br />
|rowspan="2"|.dsk; .d77; .d88; .1dd; .dfi; .imd; .ipf; .mfi; .mfm<br />
|-<br />
|Disk drive B<br />
| -flop2<br />
|-<br />
|Tape<br />
| -cass<br />
|.wav; .cdt<br />
|-<br />
|Cartridge<br />
| -cart<br />
|.cpr; .bin (Plus series and GX4000 only)<br />
|}<br />
<br />
Supported file types can also be shown with the "-listmedia" command line option.<br />
<br />
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.<br />
mame cpc6128 -flop1 disk.zip/disk0.dsk<br />
<br />
===Python script to start MAME in CPC mode===<br />
On Linux, you can also set your file manager (e.g. Nautilus or Konqueror) to open .dsk files with the following Python script:<br />
<pre><br />
#!/usr/bin/env python<br />
<br />
# Call as<br />
# "cpc" : emulated keyboard<br />
# "cpcn" : natural<br />
<br />
import os, os.path, zipfile<br />
from sys import argv<br />
<br />
if 'cpcn' in argv[0]:<br />
nat = '-natural'<br />
else:<br />
nat = ''<br />
<br />
s = "/usr/share/sdlmame/sdlmame cpc6128 -skip_gameinfo -window %s -keymap -keymap_file /usr/share/sdlmame/keymaps/km-de.txt" % nat<br />
<br />
def checkzip(t):<br />
"Check if file is a ZIP file; use the first file in the archive"<br />
if t[-4:].lower() == '.zip':<br />
a = zipfile.ZipFile(t).namelist()<br />
t = os.path.join(t, a[0])<br />
return t<br />
<br />
if len(argv) > 1:<br />
for x in range(1, len(argv)):<br />
s += ' -flop%u "%s"' % (x, checkzip(argv[x]))<br />
os.system(s)<br />
</pre><br />
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.<br />
<br />
==GUI front-ends==<br />
[[File:Mameui.png|thumb|MAMEUI64 on Windows]]<br />
[[File:Messmenu.png|thumb|MessMenu on OS X with a CPC ROM selected. Currently, seven different CPC models are supported, including some regional variants (French and Swedish).]]<br />
<br />
Various GUI front-ends for MAME/MESS exist for Windows, Linux, and OS X:<br />
<br />
*[http://mame32fx.altervista.org/ MAMEUIFX] (Windows)<br />
*[http://www.mameui.info/ MAMEUI64] (Windows)<br />
*[http://qmc2.arcadehits.net/ QMC2] (Windows, OS X, Linux)<br />
<br />
==Keyboard layouts==<br />
<br />
MAME supports two keyboard modes:<br />
* '''emulated''' (the default; keys are assigned based on key position on the emulated hardware)<br />
* '''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)<br />
<br />
To use a German keyboard in emulated keyboard mode, start MAME e.g. with (key map path on Linux):<br />
mame cpc6128 -keymap -keymap_file /usr/share/sdlmame/keymaps/km_de_LINUX.map<br />
<br />
You can also put these settings in your mame.ini like this:<br />
keymap 1<br />
keymap_file /usr/share/sdlmame/keymaps/km_de_LINUX.map<br />
<br />
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.<br />
<br />
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.<br />
<br />
==CPC artwork==<br />
[[File:MAME with CPC artwork.png|thumb|MAME window with monitor type set to green and optional CPC artwork]]<br />
You can add optional bezel artwork to MAME to simulate a CPC monitor:<br />
*[[Media:Cpc6128 mame artwork.zip|MAME artwork]] (CPC6128/GT65 bezel)<br />
<br />
Rename this file to cpc6128.zip and put it in MAME's artwork folder (~/.mame/artwork/ on Linux).<br />
<br />
==ROMs and extension hardware==<br />
<br />
[[Media:CPC_ROMs_for_MAME.zip|CPC ROMs for MAME]]. Just unzip the file and move the ZIPs inside into the MAME ROM folder.<br />
<br />
===General notes about MAME and ROMs===<br />
<br />
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.)<br />
<br />
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.<br />
<br />
===Slot options (extension hardware)===<br />
[[File:MESS with Dobbertin Smart Watch.png|thumb|upright=1.4||MAME with the Dobbertin Smart Watch ROM loaded (-exp smartwatch)]]<br />
[[File:Brunword mame.png|thumb|upright=1.4||BrunWord MK4 (ROM) main menu in MAME 0.162 (-exp brunword4)]]<br />
<br />
You can get a list of slot options with<br />
<br />
mame cpc6128 -lslot<br />
<br />
These are (as of MAME 0.168):<br />
<br />
*for "-centronics"<br />
{|class="wikitable"<br />
|-<br />
|pl80 <br />
|COMX PL-80<br />
|-<br />
|ex800 <br />
|Epson EX-800<br />
|-<br />
|lx800 <br />
|Epson LX-800<br />
|-<br />
|lx810l <br />
|Epson LX-810L<br />
|-<br />
|ap2000 <br />
|Epson ActionPrinter 2000<br />
|-<br />
|printer <br />
|Centronics Printer<br />
|-<br />
|digiblst <br />
|[[Digiblaster]] (DIY)<br />
|}<br />
<br />
*for "-exp"<br />
{|class="wikitable"<br />
|-<br />
|ssa1 <br />
|[[Amstrad SSA-1 Speech Synthesizer]]<br />
|-<br />
|dkspeech <br />
|[[Dk'tronics Speech Synthesizer]]<br />
|-<br />
|rom <br />
|ROM Box<br />
|-<br />
|multiface2 <br />
|[[Multiface II]]<br />
|-<br />
|pds <br />
|[[PDS development system|Programmers Development System (CPC Target)]]<br />
|-<br />
|rs232 <br />
|Pace RS232C interface<br />
|-<br />
|amsrs232 <br />
|[[Original Amstrad RS232 interface|Amstrad RS232C interface]]<br />
|-<br />
|sf2 <br />
|[[SYMBiFACE II]]<br />
|-<br />
|amdrum <br />
|[[Amdrum]]<br />
|-<br />
|playcity <br />
|[[PlayCity]]<br />
|-<br />
|smartwatch <br />
|[[Dobbertin Smart Watch]]<br />
|-<br />
|brunword4<br />
|[[BrunWord]] Elite MK4<br />
|-<br />
|hd20<br />
|[[Dobbertin Harddisc]]<br />
|-<br />
|doubler<br />
|[[Draysoft Doubler]]<br />
|-<br />
|transtape<br />
|HM [[Transtape]]<br />
|}<br />
<br />
===Loading external ROMs===<br />
<br />
The ROM Box expansion can be used to load external ROMs such as [[MAXAM]]:<br />
<br />
mame cpc6128 -exp rom -rom1 /path/to/MAXAM.ROM<br />
<br />
Up to 8 external ROMs (-rom1 to -rom8) are supported this way.<br />
<br />
===[[Dobbertin Harddisc]]===<br />
<br />
From the [http://www.cpcwiki.eu/forum/emulators/got-bored-again/msg102272/#msg102272 forum post]:<br />
<br />
To use, add -exp hd20 to the commandline, which will also allow you to add -hard <filename>.<br />
Code:<br />
<br />
mame cpc6128 -exp hd20 -hard1 disk.chd<br />
<br />
Only MAME CHDs are supported, you can create a blank hard disk image using chdman. Geometry is 615/4/17.<br />
Code:<br />
<br />
chdman createhd -o disk.chd -c none -chs 615,4,17<br />
<br />
(-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)<br />
<br />
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.<br />
<br />
See http://mahlemiut.marpirc.net/cpc_hd20.avi, a quick demo loading a game from HD.<br />
<br />
==CRT simulation==<br />
[[File:MAME BGFX Linux detail.png|thumb|BGFX output with default shader settings on Linux]]<br />
[[File:Cpc hlsl shader mess detail.png|thumb|HLSL "1980s" shader (Windows); MAME config used is on image description page]]<br />
MAME can use shaders to simulate typical CRT graphics artifacts such as scanlines, colors bleeding into each other, jitter, and display curvature.<br />
<br />
The easiest way to do this (works on Windows, OS X, and Linux) in recent versions of MAME is to enable [https://github.com/bkaradzic/bgfx BGFX] video output: Put this in your mame.ini:<br />
<br />
video bgfx<br />
bgfx_screen_chains hlsl<br />
<br />
(You may also have to set bgfx_path to the bgfx directory if MAME cannot find the shaders.)<br />
<br />
Check with F11 if you still get 100% performance. If not, adjust frame skip with F8/F9.<br />
<br />
Also, if you press the tilde (~) and then cursor up/down, you can adjust the shader settings. These are not saved at the moment though.[http://docs.mamedev.org/advanced/bgfx.html]<br />
<br />
Older methods are manual HLSL and GLSL configurations, here are some examples:<br />
*Windows (using HLSL shaders)<br />
**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)<br />
**A German shader tutorial: [http://www.aep-emu.de/PNphpBB2-file-viewtopic-p-94168.html]<br />
*Linux (using GLSL shaders): MAME tutorial [http://www.mameau.com/mame-glsl-shaders-setup/]<br />
<br />
==Remaining issues with CPC emulation==<br />
<br />
*MAME may fail to read DSK images with certain kinds of copy protection. Speedlock seems to work fine though.<br />
*MAME cannot write to disc images in DSK format; only MFI (MESS floppy image) and MFM (HxCFloppyEmulator floppy image) are supported for writing.<br />
*Some demo tricks may be broken in MAME, e.g. overscan pictures are horizontally misaligned (i.e., shifted to the right).<br />
*CPC+/GX4000 emulation still has some obvious graphics glitches.<br />
*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.<br />
<br />
==Compiling to JavaScript==<br />
<br />
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.<br />
<br />
==Links==<br />
<br />
*{{EnWiki}}<br />
*[http://mamedev.org/ Official site]<br />
*[http://www.mess.org/mess:howto MESS user's manual]<br />
*[[Media:CPC_ROMs_for_MAME.zip|CPC ROMs for MAME]]<br />
<br />
[[Category:Emulator]]</div>Mornhttps://www.cpcwiki.eu/index.php?title=MAME&diff=96003MAME2016-07-14T12:39:03Z<p>Morn: /* Starting MAME; command line arguments; MAME menu; quitting */</p>
<hr />
<div>[[File:Mess sysinfo.png|thumb|upright=.9|The MAME system info box for the CPC6128]]<br />
[[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]]''.]]<br />
'''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.<br />
<br />
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.<br />
<br />
==Emulated systems==<br />
<br />
Currently, [http://www.progettoemma.net/mess/sysset.php 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).<br />
<br />
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.<br />
<br />
==Installation==<br />
<br />
MAME runs on Windows, Mac OS X, Linux, and FreeBSD. You can get Windows binaries from [http://mamedev.org/release.html mamedev.org].<br />
<br />
On OS X, you can install MAME via [http://brew.sh/ Homebrew]:<br />
brew tap homebrew/games<br />
brew install mame<br />
<br />
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:<br />
alias mame=/usr/share/sdlmame/sdlmame<br />
<br />
==Starting MAME; command line arguments; MAME menu; quitting==<br />
[[File:MAME menu CPC.png|thumb|upright|The MAME menu]]<br />
First get the [[Media:CPC_ROMs_for_MAME.zip|CPC ROMs for MAME]] and unzip them into the MAME roms folder.<br />
<br />
Typical command line to start MAME in CPC mode (windowed mode and with a disc inserted in drive A):<br />
mame cpc6128 -skip_gameinfo -window -flop1 disk.dsk<br />
<br />
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).<br />
<br />
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].)<br />
<br />
You can use the "-ab" commandline option to type text into MAME, e.g.<br />
mame cpc6128 -flop1 disk.dsk -ab "run\"disc\n"<br />
will boot the disc.<br />
<br />
===Device options for the CPC from [http://www.progettoemma.net/mess/extra.html sysinfo.dat]===<br />
{|class="wikitable"<br />
|'''Name'''<br />
|'''Argument'''<br />
|'''Allowed file extensions'''<br />
|-<br />
|Printer<br />
| -prin<br />
|.prn<br />
|-<br />
|Snapshot<br />
| -dump<br />
|.sna<br />
|-<br />
|Disk drive A<br />
| -flop1<br />
|rowspan="2"|.dsk; .d77; .d88; .1dd; .dfi; .imd; .ipf; .mfi; .mfm<br />
|-<br />
|Disk drive B<br />
| -flop2<br />
|-<br />
|Tape<br />
| -cass<br />
|.wav; .cdt<br />
|-<br />
|Cartridge<br />
| -cart<br />
|.cpr; .bin (Plus series and GX4000 only)<br />
|}<br />
<br />
Supported file types can also be shown with the "-listmedia" command line option.<br />
<br />
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.<br />
mame cpc6128 -flop1 disk.zip/disk0.dsk<br />
<br />
===Python script to start MAME in CPC mode===<br />
On Linux, you can also set your file manager (e.g. Nautilus or Konqueror) to open .dsk files with the following Python script:<br />
<pre><br />
#!/usr/bin/env python<br />
<br />
# Call as<br />
# "cpc" : emulated keyboard<br />
# "cpcn" : natural<br />
<br />
import os, os.path, zipfile<br />
from sys import argv<br />
<br />
if 'cpcn' in argv[0]:<br />
nat = '-natural'<br />
else:<br />
nat = ''<br />
<br />
s = "/usr/share/sdlmame/sdlmame cpc6128 -skip_gameinfo -window %s -keymap -keymap_file /usr/share/sdlmame/keymaps/km-de.txt" % nat<br />
<br />
def checkzip(t):<br />
"Check if file is a ZIP file; use the first file in the archive"<br />
if t[-4:].lower() == '.zip':<br />
a = zipfile.ZipFile(t).namelist()<br />
t = os.path.join(t, a[0])<br />
return t<br />
<br />
if len(argv) > 1:<br />
for x in range(1, len(argv)):<br />
s += ' -flop%u "%s"' % (x, checkzip(argv[x]))<br />
os.system(s)<br />
</pre><br />
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.<br />
<br />
==GUI front-ends==<br />
[[File:Mameui.png|thumb|MAMEUI64 on Windows]]<br />
[[File:Messmenu.png|thumb|MessMenu on OS X with a CPC ROM selected. Currently, seven different CPC models are supported, including some regional variants (French and Swedish).]]<br />
<br />
Various GUI front-ends for MAME/MESS exist for Windows, Linux, and OS X:<br />
<br />
*[http://mame32fx.altervista.org/ MAMEUIFX] (Windows)<br />
*[http://www.mameui.info/ MAMEUI64] (Windows)<br />
*[http://qmc2.arcadehits.net/ QMC2] (Windows, OS X, Linux)<br />
<br />
==Keyboard layouts==<br />
<br />
MAME supports two keyboard modes:<br />
* '''emulated''' (the default; keys are assigned based on key position on the emulated hardware)<br />
* '''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)<br />
<br />
To use a German keyboard in emulated keyboard mode, start MAME e.g. with (key map path on Linux):<br />
mame cpc6128 -keymap -keymap_file /usr/share/sdlmame/keymaps/km-de.txt<br />
<br />
You can also put these settings in your mame.ini like this:<br />
keymap 1<br />
keymap_file /usr/share/sdlmame/keymaps/km-de.txt<br />
<br />
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.<br />
<br />
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.<br />
<br />
==CPC artwork==<br />
[[File:MAME with CPC artwork.png|thumb|MAME window with monitor type set to green and optional CPC artwork]]<br />
You can add optional bezel artwork to MAME to simulate a CPC monitor:<br />
*[[Media:Cpc6128 mame artwork.zip|MAME artwork]] (CPC6128/GT65 bezel)<br />
<br />
Rename this file to cpc6128.zip and put it in MAME's artwork folder (~/.mame/artwork/ on Linux).<br />
<br />
==ROMs and extension hardware==<br />
<br />
[[Media:CPC_ROMs_for_MAME.zip|CPC ROMs for MAME]]. Just unzip the file and move the ZIPs inside into the MAME ROM folder.<br />
<br />
===General notes about MAME and ROMs===<br />
<br />
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.)<br />
<br />
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.<br />
<br />
===Slot options (extension hardware)===<br />
[[File:MESS with Dobbertin Smart Watch.png|thumb|upright=1.4||MAME with the Dobbertin Smart Watch ROM loaded (-exp smartwatch)]]<br />
[[File:Brunword mame.png|thumb|upright=1.4||BrunWord MK4 (ROM) main menu in MAME 0.162 (-exp brunword4)]]<br />
<br />
You can get a list of slot options with<br />
<br />
mame cpc6128 -lslot<br />
<br />
These are (as of MAME 0.168):<br />
<br />
*for "-centronics"<br />
{|class="wikitable"<br />
|-<br />
|pl80 <br />
|COMX PL-80<br />
|-<br />
|ex800 <br />
|Epson EX-800<br />
|-<br />
|lx800 <br />
|Epson LX-800<br />
|-<br />
|lx810l <br />
|Epson LX-810L<br />
|-<br />
|ap2000 <br />
|Epson ActionPrinter 2000<br />
|-<br />
|printer <br />
|Centronics Printer<br />
|-<br />
|digiblst <br />
|[[Digiblaster]] (DIY)<br />
|}<br />
<br />
*for "-exp"<br />
{|class="wikitable"<br />
|-<br />
|ssa1 <br />
|[[Amstrad SSA-1 Speech Synthesizer]]<br />
|-<br />
|dkspeech <br />
|[[Dk'tronics Speech Synthesizer]]<br />
|-<br />
|rom <br />
|ROM Box<br />
|-<br />
|multiface2 <br />
|[[Multiface II]]<br />
|-<br />
|pds <br />
|[[PDS development system|Programmers Development System (CPC Target)]]<br />
|-<br />
|rs232 <br />
|Pace RS232C interface<br />
|-<br />
|amsrs232 <br />
|[[Original Amstrad RS232 interface|Amstrad RS232C interface]]<br />
|-<br />
|sf2 <br />
|[[SYMBiFACE II]]<br />
|-<br />
|amdrum <br />
|[[Amdrum]]<br />
|-<br />
|playcity <br />
|[[PlayCity]]<br />
|-<br />
|smartwatch <br />
|[[Dobbertin Smart Watch]]<br />
|-<br />
|brunword4<br />
|[[BrunWord]] Elite MK4<br />
|-<br />
|hd20<br />
|[[Dobbertin Harddisc]]<br />
|-<br />
|doubler<br />
|[[Draysoft Doubler]]<br />
|-<br />
|transtape<br />
|HM [[Transtape]]<br />
|}<br />
<br />
===Loading external ROMs===<br />
<br />
The ROM Box expansion can be used to load external ROMs such as [[MAXAM]]:<br />
<br />
mame cpc6128 -exp rom -rom1 /path/to/MAXAM.ROM<br />
<br />
Up to 8 external ROMs (-rom1 to -rom8) are supported this way.<br />
<br />
===[[Dobbertin Harddisc]]===<br />
<br />
From the [http://www.cpcwiki.eu/forum/emulators/got-bored-again/msg102272/#msg102272 forum post]:<br />
<br />
To use, add -exp hd20 to the commandline, which will also allow you to add -hard <filename>.<br />
Code:<br />
<br />
mame cpc6128 -exp hd20 -hard1 disk.chd<br />
<br />
Only MAME CHDs are supported, you can create a blank hard disk image using chdman. Geometry is 615/4/17.<br />
Code:<br />
<br />
chdman createhd -o disk.chd -c none -chs 615,4,17<br />
<br />
(-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)<br />
<br />
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.<br />
<br />
See http://mahlemiut.marpirc.net/cpc_hd20.avi, a quick demo loading a game from HD.<br />
<br />
==CRT simulation==<br />
[[File:MAME BGFX Linux detail.png|thumb|BGFX output with default shader settings on Linux]]<br />
[[File:Cpc hlsl shader mess detail.png|thumb|HLSL "1980s" shader (Windows); MAME config used is on image description page]]<br />
MAME can use shaders to simulate typical CRT graphics artifacts such as scanlines, colors bleeding into each other, jitter, and display curvature.<br />
<br />
The easiest way to do this (works on Windows, OS X, and Linux) in recent versions of MAME is to enable [https://github.com/bkaradzic/bgfx BGFX] video output: Put this in your mame.ini:<br />
<br />
video bgfx<br />
bgfx_screen_chains hlsl<br />
<br />
(You may also have to set bgfx_path to the bgfx directory if MAME cannot find the shaders.)<br />
<br />
Check with F11 if you still get 100% performance. If not, adjust frame skip with F8/F9.<br />
<br />
Also, if you press the tilde (~) and then cursor up/down, you can adjust the shader settings. These are not saved at the moment though.[http://docs.mamedev.org/advanced/bgfx.html]<br />
<br />
Older methods are manual HLSL and GLSL configurations, here are some examples:<br />
*Windows (using HLSL shaders)<br />
**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)<br />
**A German shader tutorial: [http://www.aep-emu.de/PNphpBB2-file-viewtopic-p-94168.html]<br />
*Linux (using GLSL shaders): MAME tutorial [http://www.mameau.com/mame-glsl-shaders-setup/]<br />
<br />
==Remaining issues with CPC emulation==<br />
<br />
*MAME may fail to read DSK images with certain kinds of copy protection. Speedlock seems to work fine though.<br />
*MAME cannot write to disc images in DSK format; only MFI (MESS floppy image) and MFM (HxCFloppyEmulator floppy image) are supported for writing.<br />
*Some demo tricks may be broken in MAME, e.g. overscan pictures are horizontally misaligned (i.e., shifted to the right).<br />
*CPC+/GX4000 emulation still has some obvious graphics glitches.<br />
*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.<br />
<br />
==Compiling to JavaScript==<br />
<br />
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.<br />
<br />
==Links==<br />
<br />
*{{EnWiki}}<br />
*[http://mamedev.org/ Official site]<br />
*[http://www.mess.org/mess:howto MESS user's manual]<br />
*[[Media:CPC_ROMs_for_MAME.zip|CPC ROMs for MAME]]<br />
<br />
[[Category:Emulator]]</div>Mornhttps://www.cpcwiki.eu/index.php?title=MAME&diff=96002MAME2016-07-14T12:33:09Z<p>Morn: /* CRT simulation */</p>
<hr />
<div>[[File:Mess sysinfo.png|thumb|upright=.9|The MAME system info box for the CPC6128]]<br />
[[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]]''.]]<br />
'''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.<br />
<br />
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.<br />
<br />
==Emulated systems==<br />
<br />
Currently, [http://www.progettoemma.net/mess/sysset.php 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).<br />
<br />
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.<br />
<br />
==Installation==<br />
<br />
MAME runs on Windows, Mac OS X, Linux, and FreeBSD. You can get Windows binaries from [http://mamedev.org/release.html mamedev.org].<br />
<br />
On OS X, you can install MAME via [http://brew.sh/ Homebrew]:<br />
brew tap homebrew/games<br />
brew install mame<br />
<br />
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:<br />
alias mame=/usr/share/sdlmame/sdlmame<br />
<br />
==Starting MAME; command line arguments; MAME menu; quitting==<br />
[[File:MAME menu CPC.png|thumb|upright|The MAME menu]]<br />
First get the [[Media:CPC_ROMs_for_MAME.zip|CPC ROMs for MAME]] and unzip them into the MAME roms folder.<br />
<br />
Typical command line to start MAME in CPC mode (windowed mode and with a disc inserted in drive A):<br />
mame cpc6128 -skip_gameinfo -window -flop1 disk.dsk<br />
<br />
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).<br />
<br />
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.<br />
<br />
You can use the "-ab" commandline option to type text into MAME, e.g.<br />
mame cpc6128 -flop1 disk.dsk -ab "run\"disc\n"<br />
will boot the disc.<br />
<br />
===Device options for the CPC from [http://www.progettoemma.net/mess/extra.html sysinfo.dat]===<br />
{|class="wikitable"<br />
|'''Name'''<br />
|'''Argument'''<br />
|'''Allowed file extensions'''<br />
|-<br />
|Printer<br />
| -prin<br />
|.prn<br />
|-<br />
|Snapshot<br />
| -dump<br />
|.sna<br />
|-<br />
|Disk drive A<br />
| -flop1<br />
|rowspan="2"|.dsk; .d77; .d88; .1dd; .dfi; .imd; .ipf; .mfi; .mfm<br />
|-<br />
|Disk drive B<br />
| -flop2<br />
|-<br />
|Tape<br />
| -cass<br />
|.wav; .cdt<br />
|-<br />
|Cartridge<br />
| -cart<br />
|.cpr; .bin (Plus series and GX4000 only)<br />
|}<br />
<br />
Supported file types can also be shown with the "-listmedia" command line option.<br />
<br />
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.<br />
mame cpc6128 -flop1 disk.zip/disk0.dsk<br />
<br />
===Python script to start MAME in CPC mode===<br />
On Linux, you can also set your file manager (e.g. Nautilus or Konqueror) to open .dsk files with the following Python script:<br />
<pre><br />
#!/usr/bin/env python<br />
<br />
# Call as<br />
# "cpc" : emulated keyboard<br />
# "cpcn" : natural<br />
<br />
import os, os.path, zipfile<br />
from sys import argv<br />
<br />
if 'cpcn' in argv[0]:<br />
nat = '-natural'<br />
else:<br />
nat = ''<br />
<br />
s = "/usr/share/sdlmame/sdlmame cpc6128 -skip_gameinfo -window %s -keymap -keymap_file /usr/share/sdlmame/keymaps/km-de.txt" % nat<br />
<br />
def checkzip(t):<br />
"Check if file is a ZIP file; use the first file in the archive"<br />
if t[-4:].lower() == '.zip':<br />
a = zipfile.ZipFile(t).namelist()<br />
t = os.path.join(t, a[0])<br />
return t<br />
<br />
if len(argv) > 1:<br />
for x in range(1, len(argv)):<br />
s += ' -flop%u "%s"' % (x, checkzip(argv[x]))<br />
os.system(s)<br />
</pre><br />
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.<br />
<br />
==GUI front-ends==<br />
[[File:Mameui.png|thumb|MAMEUI64 on Windows]]<br />
[[File:Messmenu.png|thumb|MessMenu on OS X with a CPC ROM selected. Currently, seven different CPC models are supported, including some regional variants (French and Swedish).]]<br />
<br />
Various GUI front-ends for MAME/MESS exist for Windows, Linux, and OS X:<br />
<br />
*[http://mame32fx.altervista.org/ MAMEUIFX] (Windows)<br />
*[http://www.mameui.info/ MAMEUI64] (Windows)<br />
*[http://qmc2.arcadehits.net/ QMC2] (Windows, OS X, Linux)<br />
<br />
==Keyboard layouts==<br />
<br />
MAME supports two keyboard modes:<br />
* '''emulated''' (the default; keys are assigned based on key position on the emulated hardware)<br />
* '''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)<br />
<br />
To use a German keyboard in emulated keyboard mode, start MAME e.g. with (key map path on Linux):<br />
mame cpc6128 -keymap -keymap_file /usr/share/sdlmame/keymaps/km-de.txt<br />
<br />
You can also put these settings in your mame.ini like this:<br />
keymap 1<br />
keymap_file /usr/share/sdlmame/keymaps/km-de.txt<br />
<br />
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.<br />
<br />
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.<br />
<br />
==CPC artwork==<br />
[[File:MAME with CPC artwork.png|thumb|MAME window with monitor type set to green and optional CPC artwork]]<br />
You can add optional bezel artwork to MAME to simulate a CPC monitor:<br />
*[[Media:Cpc6128 mame artwork.zip|MAME artwork]] (CPC6128/GT65 bezel)<br />
<br />
Rename this file to cpc6128.zip and put it in MAME's artwork folder (~/.mame/artwork/ on Linux).<br />
<br />
==ROMs and extension hardware==<br />
<br />
[[Media:CPC_ROMs_for_MAME.zip|CPC ROMs for MAME]]. Just unzip the file and move the ZIPs inside into the MAME ROM folder.<br />
<br />
===General notes about MAME and ROMs===<br />
<br />
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.)<br />
<br />
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.<br />
<br />
===Slot options (extension hardware)===<br />
[[File:MESS with Dobbertin Smart Watch.png|thumb|upright=1.4||MAME with the Dobbertin Smart Watch ROM loaded (-exp smartwatch)]]<br />
[[File:Brunword mame.png|thumb|upright=1.4||BrunWord MK4 (ROM) main menu in MAME 0.162 (-exp brunword4)]]<br />
<br />
You can get a list of slot options with<br />
<br />
mame cpc6128 -lslot<br />
<br />
These are (as of MAME 0.168):<br />
<br />
*for "-centronics"<br />
{|class="wikitable"<br />
|-<br />
|pl80 <br />
|COMX PL-80<br />
|-<br />
|ex800 <br />
|Epson EX-800<br />
|-<br />
|lx800 <br />
|Epson LX-800<br />
|-<br />
|lx810l <br />
|Epson LX-810L<br />
|-<br />
|ap2000 <br />
|Epson ActionPrinter 2000<br />
|-<br />
|printer <br />
|Centronics Printer<br />
|-<br />
|digiblst <br />
|[[Digiblaster]] (DIY)<br />
|}<br />
<br />
*for "-exp"<br />
{|class="wikitable"<br />
|-<br />
|ssa1 <br />
|[[Amstrad SSA-1 Speech Synthesizer]]<br />
|-<br />
|dkspeech <br />
|[[Dk'tronics Speech Synthesizer]]<br />
|-<br />
|rom <br />
|ROM Box<br />
|-<br />
|multiface2 <br />
|[[Multiface II]]<br />
|-<br />
|pds <br />
|[[PDS development system|Programmers Development System (CPC Target)]]<br />
|-<br />
|rs232 <br />
|Pace RS232C interface<br />
|-<br />
|amsrs232 <br />
|[[Original Amstrad RS232 interface|Amstrad RS232C interface]]<br />
|-<br />
|sf2 <br />
|[[SYMBiFACE II]]<br />
|-<br />
|amdrum <br />
|[[Amdrum]]<br />
|-<br />
|playcity <br />
|[[PlayCity]]<br />
|-<br />
|smartwatch <br />
|[[Dobbertin Smart Watch]]<br />
|-<br />
|brunword4<br />
|[[BrunWord]] Elite MK4<br />
|-<br />
|hd20<br />
|[[Dobbertin Harddisc]]<br />
|-<br />
|doubler<br />
|[[Draysoft Doubler]]<br />
|-<br />
|transtape<br />
|HM [[Transtape]]<br />
|}<br />
<br />
===Loading external ROMs===<br />
<br />
The ROM Box expansion can be used to load external ROMs such as [[MAXAM]]:<br />
<br />
mame cpc6128 -exp rom -rom1 /path/to/MAXAM.ROM<br />
<br />
Up to 8 external ROMs (-rom1 to -rom8) are supported this way.<br />
<br />
===[[Dobbertin Harddisc]]===<br />
<br />
From the [http://www.cpcwiki.eu/forum/emulators/got-bored-again/msg102272/#msg102272 forum post]:<br />
<br />
To use, add -exp hd20 to the commandline, which will also allow you to add -hard <filename>.<br />
Code:<br />
<br />
mame cpc6128 -exp hd20 -hard1 disk.chd<br />
<br />
Only MAME CHDs are supported, you can create a blank hard disk image using chdman. Geometry is 615/4/17.<br />
Code:<br />
<br />
chdman createhd -o disk.chd -c none -chs 615,4,17<br />
<br />
(-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)<br />
<br />
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.<br />
<br />
See http://mahlemiut.marpirc.net/cpc_hd20.avi, a quick demo loading a game from HD.<br />
<br />
==CRT simulation==<br />
[[File:MAME BGFX Linux detail.png|thumb|BGFX output with default shader settings on Linux]]<br />
[[File:Cpc hlsl shader mess detail.png|thumb|HLSL "1980s" shader (Windows); MAME config used is on image description page]]<br />
MAME can use shaders to simulate typical CRT graphics artifacts such as scanlines, colors bleeding into each other, jitter, and display curvature.<br />
<br />
The easiest way to do this (works on Windows, OS X, and Linux) in recent versions of MAME is to enable [https://github.com/bkaradzic/bgfx BGFX] video output: Put this in your mame.ini:<br />
<br />
video bgfx<br />
bgfx_screen_chains hlsl<br />
<br />
(You may also have to set bgfx_path to the bgfx directory if MAME cannot find the shaders.)<br />
<br />
Check with F11 if you still get 100% performance. If not, adjust frame skip with F8/F9.<br />
<br />
Also, if you press the tilde (~) and then cursor up/down, you can adjust the shader settings. These are not saved at the moment though.[http://docs.mamedev.org/advanced/bgfx.html]<br />
<br />
Older methods are manual HLSL and GLSL configurations, here are some examples:<br />
*Windows (using HLSL shaders)<br />
**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)<br />
**A German shader tutorial: [http://www.aep-emu.de/PNphpBB2-file-viewtopic-p-94168.html]<br />
*Linux (using GLSL shaders): MAME tutorial [http://www.mameau.com/mame-glsl-shaders-setup/]<br />
<br />
==Remaining issues with CPC emulation==<br />
<br />
*MAME may fail to read DSK images with certain kinds of copy protection. Speedlock seems to work fine though.<br />
*MAME cannot write to disc images in DSK format; only MFI (MESS floppy image) and MFM (HxCFloppyEmulator floppy image) are supported for writing.<br />
*Some demo tricks may be broken in MAME, e.g. overscan pictures are horizontally misaligned (i.e., shifted to the right).<br />
*CPC+/GX4000 emulation still has some obvious graphics glitches.<br />
*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.<br />
<br />
==Compiling to JavaScript==<br />
<br />
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.<br />
<br />
==Links==<br />
<br />
*{{EnWiki}}<br />
*[http://mamedev.org/ Official site]<br />
*[http://www.mess.org/mess:howto MESS user's manual]<br />
*[[Media:CPC_ROMs_for_MAME.zip|CPC ROMs for MAME]]<br />
<br />
[[Category:Emulator]]</div>Mornhttps://www.cpcwiki.eu/index.php?title=MAME&diff=96001MAME2016-07-14T12:16:29Z<p>Morn: /* CRT simulation */</p>
<hr />
<div>[[File:Mess sysinfo.png|thumb|upright=.9|The MAME system info box for the CPC6128]]<br />
[[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]]''.]]<br />
'''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.<br />
<br />
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.<br />
<br />
==Emulated systems==<br />
<br />
Currently, [http://www.progettoemma.net/mess/sysset.php 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).<br />
<br />
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.<br />
<br />
==Installation==<br />
<br />
MAME runs on Windows, Mac OS X, Linux, and FreeBSD. You can get Windows binaries from [http://mamedev.org/release.html mamedev.org].<br />
<br />
On OS X, you can install MAME via [http://brew.sh/ Homebrew]:<br />
brew tap homebrew/games<br />
brew install mame<br />
<br />
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:<br />
alias mame=/usr/share/sdlmame/sdlmame<br />
<br />
==Starting MAME; command line arguments; MAME menu; quitting==<br />
[[File:MAME menu CPC.png|thumb|upright|The MAME menu]]<br />
First get the [[Media:CPC_ROMs_for_MAME.zip|CPC ROMs for MAME]] and unzip them into the MAME roms folder.<br />
<br />
Typical command line to start MAME in CPC mode (windowed mode and with a disc inserted in drive A):<br />
mame cpc6128 -skip_gameinfo -window -flop1 disk.dsk<br />
<br />
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).<br />
<br />
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.<br />
<br />
You can use the "-ab" commandline option to type text into MAME, e.g.<br />
mame cpc6128 -flop1 disk.dsk -ab "run\"disc\n"<br />
will boot the disc.<br />
<br />
===Device options for the CPC from [http://www.progettoemma.net/mess/extra.html sysinfo.dat]===<br />
{|class="wikitable"<br />
|'''Name'''<br />
|'''Argument'''<br />
|'''Allowed file extensions'''<br />
|-<br />
|Printer<br />
| -prin<br />
|.prn<br />
|-<br />
|Snapshot<br />
| -dump<br />
|.sna<br />
|-<br />
|Disk drive A<br />
| -flop1<br />
|rowspan="2"|.dsk; .d77; .d88; .1dd; .dfi; .imd; .ipf; .mfi; .mfm<br />
|-<br />
|Disk drive B<br />
| -flop2<br />
|-<br />
|Tape<br />
| -cass<br />
|.wav; .cdt<br />
|-<br />
|Cartridge<br />
| -cart<br />
|.cpr; .bin (Plus series and GX4000 only)<br />
|}<br />
<br />
Supported file types can also be shown with the "-listmedia" command line option.<br />
<br />
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.<br />
mame cpc6128 -flop1 disk.zip/disk0.dsk<br />
<br />
===Python script to start MAME in CPC mode===<br />
On Linux, you can also set your file manager (e.g. Nautilus or Konqueror) to open .dsk files with the following Python script:<br />
<pre><br />
#!/usr/bin/env python<br />
<br />
# Call as<br />
# "cpc" : emulated keyboard<br />
# "cpcn" : natural<br />
<br />
import os, os.path, zipfile<br />
from sys import argv<br />
<br />
if 'cpcn' in argv[0]:<br />
nat = '-natural'<br />
else:<br />
nat = ''<br />
<br />
s = "/usr/share/sdlmame/sdlmame cpc6128 -skip_gameinfo -window %s -keymap -keymap_file /usr/share/sdlmame/keymaps/km-de.txt" % nat<br />
<br />
def checkzip(t):<br />
"Check if file is a ZIP file; use the first file in the archive"<br />
if t[-4:].lower() == '.zip':<br />
a = zipfile.ZipFile(t).namelist()<br />
t = os.path.join(t, a[0])<br />
return t<br />
<br />
if len(argv) > 1:<br />
for x in range(1, len(argv)):<br />
s += ' -flop%u "%s"' % (x, checkzip(argv[x]))<br />
os.system(s)<br />
</pre><br />
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.<br />
<br />
==GUI front-ends==<br />
[[File:Mameui.png|thumb|MAMEUI64 on Windows]]<br />
[[File:Messmenu.png|thumb|MessMenu on OS X with a CPC ROM selected. Currently, seven different CPC models are supported, including some regional variants (French and Swedish).]]<br />
<br />
Various GUI front-ends for MAME/MESS exist for Windows, Linux, and OS X:<br />
<br />
*[http://mame32fx.altervista.org/ MAMEUIFX] (Windows)<br />
*[http://www.mameui.info/ MAMEUI64] (Windows)<br />
*[http://qmc2.arcadehits.net/ QMC2] (Windows, OS X, Linux)<br />
<br />
==Keyboard layouts==<br />
<br />
MAME supports two keyboard modes:<br />
* '''emulated''' (the default; keys are assigned based on key position on the emulated hardware)<br />
* '''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)<br />
<br />
To use a German keyboard in emulated keyboard mode, start MAME e.g. with (key map path on Linux):<br />
mame cpc6128 -keymap -keymap_file /usr/share/sdlmame/keymaps/km-de.txt<br />
<br />
You can also put these settings in your mame.ini like this:<br />
keymap 1<br />
keymap_file /usr/share/sdlmame/keymaps/km-de.txt<br />
<br />
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.<br />
<br />
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.<br />
<br />
==CPC artwork==<br />
[[File:MAME with CPC artwork.png|thumb|MAME window with monitor type set to green and optional CPC artwork]]<br />
You can add optional bezel artwork to MAME to simulate a CPC monitor:<br />
*[[Media:Cpc6128 mame artwork.zip|MAME artwork]] (CPC6128/GT65 bezel)<br />
<br />
Rename this file to cpc6128.zip and put it in MAME's artwork folder (~/.mame/artwork/ on Linux).<br />
<br />
==ROMs and extension hardware==<br />
<br />
[[Media:CPC_ROMs_for_MAME.zip|CPC ROMs for MAME]]. Just unzip the file and move the ZIPs inside into the MAME ROM folder.<br />
<br />
===General notes about MAME and ROMs===<br />
<br />
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.)<br />
<br />
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.<br />
<br />
===Slot options (extension hardware)===<br />
[[File:MESS with Dobbertin Smart Watch.png|thumb|upright=1.4||MAME with the Dobbertin Smart Watch ROM loaded (-exp smartwatch)]]<br />
[[File:Brunword mame.png|thumb|upright=1.4||BrunWord MK4 (ROM) main menu in MAME 0.162 (-exp brunword4)]]<br />
<br />
You can get a list of slot options with<br />
<br />
mame cpc6128 -lslot<br />
<br />
These are (as of MAME 0.168):<br />
<br />
*for "-centronics"<br />
{|class="wikitable"<br />
|-<br />
|pl80 <br />
|COMX PL-80<br />
|-<br />
|ex800 <br />
|Epson EX-800<br />
|-<br />
|lx800 <br />
|Epson LX-800<br />
|-<br />
|lx810l <br />
|Epson LX-810L<br />
|-<br />
|ap2000 <br />
|Epson ActionPrinter 2000<br />
|-<br />
|printer <br />
|Centronics Printer<br />
|-<br />
|digiblst <br />
|[[Digiblaster]] (DIY)<br />
|}<br />
<br />
*for "-exp"<br />
{|class="wikitable"<br />
|-<br />
|ssa1 <br />
|[[Amstrad SSA-1 Speech Synthesizer]]<br />
|-<br />
|dkspeech <br />
|[[Dk'tronics Speech Synthesizer]]<br />
|-<br />
|rom <br />
|ROM Box<br />
|-<br />
|multiface2 <br />
|[[Multiface II]]<br />
|-<br />
|pds <br />
|[[PDS development system|Programmers Development System (CPC Target)]]<br />
|-<br />
|rs232 <br />
|Pace RS232C interface<br />
|-<br />
|amsrs232 <br />
|[[Original Amstrad RS232 interface|Amstrad RS232C interface]]<br />
|-<br />
|sf2 <br />
|[[SYMBiFACE II]]<br />
|-<br />
|amdrum <br />
|[[Amdrum]]<br />
|-<br />
|playcity <br />
|[[PlayCity]]<br />
|-<br />
|smartwatch <br />
|[[Dobbertin Smart Watch]]<br />
|-<br />
|brunword4<br />
|[[BrunWord]] Elite MK4<br />
|-<br />
|hd20<br />
|[[Dobbertin Harddisc]]<br />
|-<br />
|doubler<br />
|[[Draysoft Doubler]]<br />
|-<br />
|transtape<br />
|HM [[Transtape]]<br />
|}<br />
<br />
===Loading external ROMs===<br />
<br />
The ROM Box expansion can be used to load external ROMs such as [[MAXAM]]:<br />
<br />
mame cpc6128 -exp rom -rom1 /path/to/MAXAM.ROM<br />
<br />
Up to 8 external ROMs (-rom1 to -rom8) are supported this way.<br />
<br />
===[[Dobbertin Harddisc]]===<br />
<br />
From the [http://www.cpcwiki.eu/forum/emulators/got-bored-again/msg102272/#msg102272 forum post]:<br />
<br />
To use, add -exp hd20 to the commandline, which will also allow you to add -hard <filename>.<br />
Code:<br />
<br />
mame cpc6128 -exp hd20 -hard1 disk.chd<br />
<br />
Only MAME CHDs are supported, you can create a blank hard disk image using chdman. Geometry is 615/4/17.<br />
Code:<br />
<br />
chdman createhd -o disk.chd -c none -chs 615,4,17<br />
<br />
(-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)<br />
<br />
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.<br />
<br />
See http://mahlemiut.marpirc.net/cpc_hd20.avi, a quick demo loading a game from HD.<br />
<br />
==CRT simulation==<br />
[[File:MAME BGFX Linux detail.png|thumb|BGFX output with default shader settings on Linux]]<br />
[[File:Cpc hlsl shader mess detail.png|thumb|HLSL "1980s" shader (Windows); MAME config used is on image description page]]<br />
MAME can use shaders to simulate typical CRT graphics artifacts such as scanlines, colors bleeding into each other, jitter, and display curvature.<br />
<br />
The easiest way to do this (works on Windows, OS X, and Linux) in recent versions of MAME is to enable [https://github.com/bkaradzic/bgfx BGFX] video output: Put this in your mame.ini:<br />
<br />
video bgfx<br />
bgfx_screen_chains hlsl<br />
<br />
You should check with F11 if you get 100% performance with BGFX and if not, adjust frame skipping with F8/F9.<br />
<br />
Also, if you press the tilde (~) and then cursor up/down, you can adjust the shader settings. These are not saved at the moment though.[http://docs.mamedev.org/advanced/bgfx.html]<br />
<br />
Older methods are manual HLSL and GLSL configurations, here are some examples:<br />
*Windows (using HLSL shaders)<br />
**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)<br />
**A German shader tutorial: [http://www.aep-emu.de/PNphpBB2-file-viewtopic-p-94168.html]<br />
*Linux (using GLSL shaders): MAME tutorial [http://www.mameau.com/mame-glsl-shaders-setup/]<br />
<br />
==Remaining issues with CPC emulation==<br />
<br />
*MAME may fail to read DSK images with certain kinds of copy protection. Speedlock seems to work fine though.<br />
*MAME cannot write to disc images in DSK format; only MFI (MESS floppy image) and MFM (HxCFloppyEmulator floppy image) are supported for writing.<br />
*Some demo tricks may be broken in MAME, e.g. overscan pictures are horizontally misaligned (i.e., shifted to the right).<br />
*CPC+/GX4000 emulation still has some obvious graphics glitches.<br />
*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.<br />
<br />
==Compiling to JavaScript==<br />
<br />
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.<br />
<br />
==Links==<br />
<br />
*{{EnWiki}}<br />
*[http://mamedev.org/ Official site]<br />
*[http://www.mess.org/mess:howto MESS user's manual]<br />
*[[Media:CPC_ROMs_for_MAME.zip|CPC ROMs for MAME]]<br />
<br />
[[Category:Emulator]]</div>Mornhttps://www.cpcwiki.eu/index.php?title=MAME&diff=96000MAME2016-07-14T12:11:46Z<p>Morn: /* CRT simulation */</p>
<hr />
<div>[[File:Mess sysinfo.png|thumb|upright=.9|The MAME system info box for the CPC6128]]<br />
[[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]]''.]]<br />
'''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.<br />
<br />
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.<br />
<br />
==Emulated systems==<br />
<br />
Currently, [http://www.progettoemma.net/mess/sysset.php 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).<br />
<br />
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.<br />
<br />
==Installation==<br />
<br />
MAME runs on Windows, Mac OS X, Linux, and FreeBSD. You can get Windows binaries from [http://mamedev.org/release.html mamedev.org].<br />
<br />
On OS X, you can install MAME via [http://brew.sh/ Homebrew]:<br />
brew tap homebrew/games<br />
brew install mame<br />
<br />
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:<br />
alias mame=/usr/share/sdlmame/sdlmame<br />
<br />
==Starting MAME; command line arguments; MAME menu; quitting==<br />
[[File:MAME menu CPC.png|thumb|upright|The MAME menu]]<br />
First get the [[Media:CPC_ROMs_for_MAME.zip|CPC ROMs for MAME]] and unzip them into the MAME roms folder.<br />
<br />
Typical command line to start MAME in CPC mode (windowed mode and with a disc inserted in drive A):<br />
mame cpc6128 -skip_gameinfo -window -flop1 disk.dsk<br />
<br />
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).<br />
<br />
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.<br />
<br />
You can use the "-ab" commandline option to type text into MAME, e.g.<br />
mame cpc6128 -flop1 disk.dsk -ab "run\"disc\n"<br />
will boot the disc.<br />
<br />
===Device options for the CPC from [http://www.progettoemma.net/mess/extra.html sysinfo.dat]===<br />
{|class="wikitable"<br />
|'''Name'''<br />
|'''Argument'''<br />
|'''Allowed file extensions'''<br />
|-<br />
|Printer<br />
| -prin<br />
|.prn<br />
|-<br />
|Snapshot<br />
| -dump<br />
|.sna<br />
|-<br />
|Disk drive A<br />
| -flop1<br />
|rowspan="2"|.dsk; .d77; .d88; .1dd; .dfi; .imd; .ipf; .mfi; .mfm<br />
|-<br />
|Disk drive B<br />
| -flop2<br />
|-<br />
|Tape<br />
| -cass<br />
|.wav; .cdt<br />
|-<br />
|Cartridge<br />
| -cart<br />
|.cpr; .bin (Plus series and GX4000 only)<br />
|}<br />
<br />
Supported file types can also be shown with the "-listmedia" command line option.<br />
<br />
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.<br />
mame cpc6128 -flop1 disk.zip/disk0.dsk<br />
<br />
===Python script to start MAME in CPC mode===<br />
On Linux, you can also set your file manager (e.g. Nautilus or Konqueror) to open .dsk files with the following Python script:<br />
<pre><br />
#!/usr/bin/env python<br />
<br />
# Call as<br />
# "cpc" : emulated keyboard<br />
# "cpcn" : natural<br />
<br />
import os, os.path, zipfile<br />
from sys import argv<br />
<br />
if 'cpcn' in argv[0]:<br />
nat = '-natural'<br />
else:<br />
nat = ''<br />
<br />
s = "/usr/share/sdlmame/sdlmame cpc6128 -skip_gameinfo -window %s -keymap -keymap_file /usr/share/sdlmame/keymaps/km-de.txt" % nat<br />
<br />
def checkzip(t):<br />
"Check if file is a ZIP file; use the first file in the archive"<br />
if t[-4:].lower() == '.zip':<br />
a = zipfile.ZipFile(t).namelist()<br />
t = os.path.join(t, a[0])<br />
return t<br />
<br />
if len(argv) > 1:<br />
for x in range(1, len(argv)):<br />
s += ' -flop%u "%s"' % (x, checkzip(argv[x]))<br />
os.system(s)<br />
</pre><br />
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.<br />
<br />
==GUI front-ends==<br />
[[File:Mameui.png|thumb|MAMEUI64 on Windows]]<br />
[[File:Messmenu.png|thumb|MessMenu on OS X with a CPC ROM selected. Currently, seven different CPC models are supported, including some regional variants (French and Swedish).]]<br />
<br />
Various GUI front-ends for MAME/MESS exist for Windows, Linux, and OS X:<br />
<br />
*[http://mame32fx.altervista.org/ MAMEUIFX] (Windows)<br />
*[http://www.mameui.info/ MAMEUI64] (Windows)<br />
*[http://qmc2.arcadehits.net/ QMC2] (Windows, OS X, Linux)<br />
<br />
==Keyboard layouts==<br />
<br />
MAME supports two keyboard modes:<br />
* '''emulated''' (the default; keys are assigned based on key position on the emulated hardware)<br />
* '''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)<br />
<br />
To use a German keyboard in emulated keyboard mode, start MAME e.g. with (key map path on Linux):<br />
mame cpc6128 -keymap -keymap_file /usr/share/sdlmame/keymaps/km-de.txt<br />
<br />
You can also put these settings in your mame.ini like this:<br />
keymap 1<br />
keymap_file /usr/share/sdlmame/keymaps/km-de.txt<br />
<br />
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.<br />
<br />
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.<br />
<br />
==CPC artwork==<br />
[[File:MAME with CPC artwork.png|thumb|MAME window with monitor type set to green and optional CPC artwork]]<br />
You can add optional bezel artwork to MAME to simulate a CPC monitor:<br />
*[[Media:Cpc6128 mame artwork.zip|MAME artwork]] (CPC6128/GT65 bezel)<br />
<br />
Rename this file to cpc6128.zip and put it in MAME's artwork folder (~/.mame/artwork/ on Linux).<br />
<br />
==ROMs and extension hardware==<br />
<br />
[[Media:CPC_ROMs_for_MAME.zip|CPC ROMs for MAME]]. Just unzip the file and move the ZIPs inside into the MAME ROM folder.<br />
<br />
===General notes about MAME and ROMs===<br />
<br />
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.)<br />
<br />
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.<br />
<br />
===Slot options (extension hardware)===<br />
[[File:MESS with Dobbertin Smart Watch.png|thumb|upright=1.4||MAME with the Dobbertin Smart Watch ROM loaded (-exp smartwatch)]]<br />
[[File:Brunword mame.png|thumb|upright=1.4||BrunWord MK4 (ROM) main menu in MAME 0.162 (-exp brunword4)]]<br />
<br />
You can get a list of slot options with<br />
<br />
mame cpc6128 -lslot<br />
<br />
These are (as of MAME 0.168):<br />
<br />
*for "-centronics"<br />
{|class="wikitable"<br />
|-<br />
|pl80 <br />
|COMX PL-80<br />
|-<br />
|ex800 <br />
|Epson EX-800<br />
|-<br />
|lx800 <br />
|Epson LX-800<br />
|-<br />
|lx810l <br />
|Epson LX-810L<br />
|-<br />
|ap2000 <br />
|Epson ActionPrinter 2000<br />
|-<br />
|printer <br />
|Centronics Printer<br />
|-<br />
|digiblst <br />
|[[Digiblaster]] (DIY)<br />
|}<br />
<br />
*for "-exp"<br />
{|class="wikitable"<br />
|-<br />
|ssa1 <br />
|[[Amstrad SSA-1 Speech Synthesizer]]<br />
|-<br />
|dkspeech <br />
|[[Dk'tronics Speech Synthesizer]]<br />
|-<br />
|rom <br />
|ROM Box<br />
|-<br />
|multiface2 <br />
|[[Multiface II]]<br />
|-<br />
|pds <br />
|[[PDS development system|Programmers Development System (CPC Target)]]<br />
|-<br />
|rs232 <br />
|Pace RS232C interface<br />
|-<br />
|amsrs232 <br />
|[[Original Amstrad RS232 interface|Amstrad RS232C interface]]<br />
|-<br />
|sf2 <br />
|[[SYMBiFACE II]]<br />
|-<br />
|amdrum <br />
|[[Amdrum]]<br />
|-<br />
|playcity <br />
|[[PlayCity]]<br />
|-<br />
|smartwatch <br />
|[[Dobbertin Smart Watch]]<br />
|-<br />
|brunword4<br />
|[[BrunWord]] Elite MK4<br />
|-<br />
|hd20<br />
|[[Dobbertin Harddisc]]<br />
|-<br />
|doubler<br />
|[[Draysoft Doubler]]<br />
|-<br />
|transtape<br />
|HM [[Transtape]]<br />
|}<br />
<br />
===Loading external ROMs===<br />
<br />
The ROM Box expansion can be used to load external ROMs such as [[MAXAM]]:<br />
<br />
mame cpc6128 -exp rom -rom1 /path/to/MAXAM.ROM<br />
<br />
Up to 8 external ROMs (-rom1 to -rom8) are supported this way.<br />
<br />
===[[Dobbertin Harddisc]]===<br />
<br />
From the [http://www.cpcwiki.eu/forum/emulators/got-bored-again/msg102272/#msg102272 forum post]:<br />
<br />
To use, add -exp hd20 to the commandline, which will also allow you to add -hard <filename>.<br />
Code:<br />
<br />
mame cpc6128 -exp hd20 -hard1 disk.chd<br />
<br />
Only MAME CHDs are supported, you can create a blank hard disk image using chdman. Geometry is 615/4/17.<br />
Code:<br />
<br />
chdman createhd -o disk.chd -c none -chs 615,4,17<br />
<br />
(-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)<br />
<br />
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.<br />
<br />
See http://mahlemiut.marpirc.net/cpc_hd20.avi, a quick demo loading a game from HD.<br />
<br />
==CRT simulation==<br />
[[File:MAME BGFX Linux detail.png|thumb|BGFX output with default shader settings on Linux ]]<br />
[[File:Cpc hlsl shader mess detail.png|thumb|HLSL "1980s" shader (Windows); MAME config used is on image description page]]<br />
MAME can use shaders to simulate typical CRT graphics artifacts such as scanlines, colors bleeding into each other, jitter, and display curvature.<br />
<br />
The easiest way to do this (works on Windows, OS X, and Linux) in recent versions of MAME is to enable [https://github.com/bkaradzic/bgfx BGFX] video output: Put this in your mame.ini:<br />
<br />
video bgfx<br />
bgfx_screen_chains hlsl<br />
<br />
You should check with F11 if you get 100% performance with BGFX and if not, adjust frame skipping with F8/F9.<br />
<br />
Also, if you press the tilde (~) and then cursor up/down, you can adjust the shader settings. These are not saved at the moment though.[http://docs.mamedev.org/advanced/bgfx.html]<br />
<br />
Older methods are manual HLSL and GLSL configurations, here are some examples:<br />
*Windows (using HLSL shaders)<br />
**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)<br />
**A German shader tutorial: [http://www.aep-emu.de/PNphpBB2-file-viewtopic-p-94168.html]<br />
*Linux (using GLSL shaders): MAME tutorial [http://www.mameau.com/mame-glsl-shaders-setup/]<br />
<br />
==Remaining issues with CPC emulation==<br />
<br />
*MAME may fail to read DSK images with certain kinds of copy protection. Speedlock seems to work fine though.<br />
*MAME cannot write to disc images in DSK format; only MFI (MESS floppy image) and MFM (HxCFloppyEmulator floppy image) are supported for writing.<br />
*Some demo tricks may be broken in MAME, e.g. overscan pictures are horizontally misaligned (i.e., shifted to the right).<br />
*CPC+/GX4000 emulation still has some obvious graphics glitches.<br />
*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.<br />
<br />
==Compiling to JavaScript==<br />
<br />
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.<br />
<br />
==Links==<br />
<br />
*{{EnWiki}}<br />
*[http://mamedev.org/ Official site]<br />
*[http://www.mess.org/mess:howto MESS user's manual]<br />
*[[Media:CPC_ROMs_for_MAME.zip|CPC ROMs for MAME]]<br />
<br />
[[Category:Emulator]]</div>Mornhttps://www.cpcwiki.eu/index.php?title=File:MAME_BGFX_Linux_detail.png&diff=95999File:MAME BGFX Linux detail.png2016-07-14T12:10:51Z<p>Morn: BGFX output with default shader settings in MAME on Linux</p>
<hr />
<div>BGFX output with default shader settings in MAME on Linux</div>Mornhttps://www.cpcwiki.eu/index.php?title=MAME&diff=95998MAME2016-07-14T11:58:57Z<p>Morn: /* CRT simulation */</p>
<hr />
<div>[[File:Mess sysinfo.png|thumb|upright=.9|The MAME system info box for the CPC6128]]<br />
[[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]]''.]]<br />
'''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.<br />
<br />
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.<br />
<br />
==Emulated systems==<br />
<br />
Currently, [http://www.progettoemma.net/mess/sysset.php 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).<br />
<br />
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.<br />
<br />
==Installation==<br />
<br />
MAME runs on Windows, Mac OS X, Linux, and FreeBSD. You can get Windows binaries from [http://mamedev.org/release.html mamedev.org].<br />
<br />
On OS X, you can install MAME via [http://brew.sh/ Homebrew]:<br />
brew tap homebrew/games<br />
brew install mame<br />
<br />
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:<br />
alias mame=/usr/share/sdlmame/sdlmame<br />
<br />
==Starting MAME; command line arguments; MAME menu; quitting==<br />
[[File:MAME menu CPC.png|thumb|upright|The MAME menu]]<br />
First get the [[Media:CPC_ROMs_for_MAME.zip|CPC ROMs for MAME]] and unzip them into the MAME roms folder.<br />
<br />
Typical command line to start MAME in CPC mode (windowed mode and with a disc inserted in drive A):<br />
mame cpc6128 -skip_gameinfo -window -flop1 disk.dsk<br />
<br />
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).<br />
<br />
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.<br />
<br />
You can use the "-ab" commandline option to type text into MAME, e.g.<br />
mame cpc6128 -flop1 disk.dsk -ab "run\"disc\n"<br />
will boot the disc.<br />
<br />
===Device options for the CPC from [http://www.progettoemma.net/mess/extra.html sysinfo.dat]===<br />
{|class="wikitable"<br />
|'''Name'''<br />
|'''Argument'''<br />
|'''Allowed file extensions'''<br />
|-<br />
|Printer<br />
| -prin<br />
|.prn<br />
|-<br />
|Snapshot<br />
| -dump<br />
|.sna<br />
|-<br />
|Disk drive A<br />
| -flop1<br />
|rowspan="2"|.dsk; .d77; .d88; .1dd; .dfi; .imd; .ipf; .mfi; .mfm<br />
|-<br />
|Disk drive B<br />
| -flop2<br />
|-<br />
|Tape<br />
| -cass<br />
|.wav; .cdt<br />
|-<br />
|Cartridge<br />
| -cart<br />
|.cpr; .bin (Plus series and GX4000 only)<br />
|}<br />
<br />
Supported file types can also be shown with the "-listmedia" command line option.<br />
<br />
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.<br />
mame cpc6128 -flop1 disk.zip/disk0.dsk<br />
<br />
===Python script to start MAME in CPC mode===<br />
On Linux, you can also set your file manager (e.g. Nautilus or Konqueror) to open .dsk files with the following Python script:<br />
<pre><br />
#!/usr/bin/env python<br />
<br />
# Call as<br />
# "cpc" : emulated keyboard<br />
# "cpcn" : natural<br />
<br />
import os, os.path, zipfile<br />
from sys import argv<br />
<br />
if 'cpcn' in argv[0]:<br />
nat = '-natural'<br />
else:<br />
nat = ''<br />
<br />
s = "/usr/share/sdlmame/sdlmame cpc6128 -skip_gameinfo -window %s -keymap -keymap_file /usr/share/sdlmame/keymaps/km-de.txt" % nat<br />
<br />
def checkzip(t):<br />
"Check if file is a ZIP file; use the first file in the archive"<br />
if t[-4:].lower() == '.zip':<br />
a = zipfile.ZipFile(t).namelist()<br />
t = os.path.join(t, a[0])<br />
return t<br />
<br />
if len(argv) > 1:<br />
for x in range(1, len(argv)):<br />
s += ' -flop%u "%s"' % (x, checkzip(argv[x]))<br />
os.system(s)<br />
</pre><br />
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.<br />
<br />
==GUI front-ends==<br />
[[File:Mameui.png|thumb|MAMEUI64 on Windows]]<br />
[[File:Messmenu.png|thumb|MessMenu on OS X with a CPC ROM selected. Currently, seven different CPC models are supported, including some regional variants (French and Swedish).]]<br />
<br />
Various GUI front-ends for MAME/MESS exist for Windows, Linux, and OS X:<br />
<br />
*[http://mame32fx.altervista.org/ MAMEUIFX] (Windows)<br />
*[http://www.mameui.info/ MAMEUI64] (Windows)<br />
*[http://qmc2.arcadehits.net/ QMC2] (Windows, OS X, Linux)<br />
<br />
==Keyboard layouts==<br />
<br />
MAME supports two keyboard modes:<br />
* '''emulated''' (the default; keys are assigned based on key position on the emulated hardware)<br />
* '''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)<br />
<br />
To use a German keyboard in emulated keyboard mode, start MAME e.g. with (key map path on Linux):<br />
mame cpc6128 -keymap -keymap_file /usr/share/sdlmame/keymaps/km-de.txt<br />
<br />
You can also put these settings in your mame.ini like this:<br />
keymap 1<br />
keymap_file /usr/share/sdlmame/keymaps/km-de.txt<br />
<br />
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.<br />
<br />
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.<br />
<br />
==CPC artwork==<br />
[[File:MAME with CPC artwork.png|thumb|MAME window with monitor type set to green and optional CPC artwork]]<br />
You can add optional bezel artwork to MAME to simulate a CPC monitor:<br />
*[[Media:Cpc6128 mame artwork.zip|MAME artwork]] (CPC6128/GT65 bezel)<br />
<br />
Rename this file to cpc6128.zip and put it in MAME's artwork folder (~/.mame/artwork/ on Linux).<br />
<br />
==ROMs and extension hardware==<br />
<br />
[[Media:CPC_ROMs_for_MAME.zip|CPC ROMs for MAME]]. Just unzip the file and move the ZIPs inside into the MAME ROM folder.<br />
<br />
===General notes about MAME and ROMs===<br />
<br />
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.)<br />
<br />
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.<br />
<br />
===Slot options (extension hardware)===<br />
[[File:MESS with Dobbertin Smart Watch.png|thumb|upright=1.4||MAME with the Dobbertin Smart Watch ROM loaded (-exp smartwatch)]]<br />
[[File:Brunword mame.png|thumb|upright=1.4||BrunWord MK4 (ROM) main menu in MAME 0.162 (-exp brunword4)]]<br />
<br />
You can get a list of slot options with<br />
<br />
mame cpc6128 -lslot<br />
<br />
These are (as of MAME 0.168):<br />
<br />
*for "-centronics"<br />
{|class="wikitable"<br />
|-<br />
|pl80 <br />
|COMX PL-80<br />
|-<br />
|ex800 <br />
|Epson EX-800<br />
|-<br />
|lx800 <br />
|Epson LX-800<br />
|-<br />
|lx810l <br />
|Epson LX-810L<br />
|-<br />
|ap2000 <br />
|Epson ActionPrinter 2000<br />
|-<br />
|printer <br />
|Centronics Printer<br />
|-<br />
|digiblst <br />
|[[Digiblaster]] (DIY)<br />
|}<br />
<br />
*for "-exp"<br />
{|class="wikitable"<br />
|-<br />
|ssa1 <br />
|[[Amstrad SSA-1 Speech Synthesizer]]<br />
|-<br />
|dkspeech <br />
|[[Dk'tronics Speech Synthesizer]]<br />
|-<br />
|rom <br />
|ROM Box<br />
|-<br />
|multiface2 <br />
|[[Multiface II]]<br />
|-<br />
|pds <br />
|[[PDS development system|Programmers Development System (CPC Target)]]<br />
|-<br />
|rs232 <br />
|Pace RS232C interface<br />
|-<br />
|amsrs232 <br />
|[[Original Amstrad RS232 interface|Amstrad RS232C interface]]<br />
|-<br />
|sf2 <br />
|[[SYMBiFACE II]]<br />
|-<br />
|amdrum <br />
|[[Amdrum]]<br />
|-<br />
|playcity <br />
|[[PlayCity]]<br />
|-<br />
|smartwatch <br />
|[[Dobbertin Smart Watch]]<br />
|-<br />
|brunword4<br />
|[[BrunWord]] Elite MK4<br />
|-<br />
|hd20<br />
|[[Dobbertin Harddisc]]<br />
|-<br />
|doubler<br />
|[[Draysoft Doubler]]<br />
|-<br />
|transtape<br />
|HM [[Transtape]]<br />
|}<br />
<br />
===Loading external ROMs===<br />
<br />
The ROM Box expansion can be used to load external ROMs such as [[MAXAM]]:<br />
<br />
mame cpc6128 -exp rom -rom1 /path/to/MAXAM.ROM<br />
<br />
Up to 8 external ROMs (-rom1 to -rom8) are supported this way.<br />
<br />
===[[Dobbertin Harddisc]]===<br />
<br />
From the [http://www.cpcwiki.eu/forum/emulators/got-bored-again/msg102272/#msg102272 forum post]:<br />
<br />
To use, add -exp hd20 to the commandline, which will also allow you to add -hard <filename>.<br />
Code:<br />
<br />
mame cpc6128 -exp hd20 -hard1 disk.chd<br />
<br />
Only MAME CHDs are supported, you can create a blank hard disk image using chdman. Geometry is 615/4/17.<br />
Code:<br />
<br />
chdman createhd -o disk.chd -c none -chs 615,4,17<br />
<br />
(-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)<br />
<br />
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.<br />
<br />
See http://mahlemiut.marpirc.net/cpc_hd20.avi, a quick demo loading a game from HD.<br />
<br />
==CRT simulation==<br />
[[File:Cpc shader mess.png|thumb|GLSL shader example (Linux)]]<br />
[[File:Cpc hlsl shader mess detail.png|thumb|HLSL "1980s" shader (Windows); MAME config used is on image description page]]<br />
MAME can use shaders to simulate typical CRT graphics artifacts such as scanlines, colors bleeding into each other, jitter, and display curvature.<br />
<br />
The easiest way to do this (works on Windows, OS X, and Linux) in recent versions of MAME is to enable [https://github.com/bkaradzic/bgfx BGFX] video output: Put this in your mame.ini:<br />
<br />
video bgfx<br />
bgfx_screen_chains hlsl<br />
<br />
You should check with F11 if you get 100% performance with BGFX and if not, adjust frame skipping with F8/F9.<br />
<br />
Also, if you press the tilde (~) and then cursor up/down, you can adjust the shader settings. These are not saved at the moment though.[http://docs.mamedev.org/advanced/bgfx.html]<br />
<br />
Older methods are manual HLSL and GLSL configurations, here are some examples:<br />
*Windows (using HLSL shaders)<br />
**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)<br />
**A German shader tutorial: [http://www.aep-emu.de/PNphpBB2-file-viewtopic-p-94168.html]<br />
*Linux (using GLSL shaders): MAME tutorial [http://www.mameau.com/mame-glsl-shaders-setup/]<br />
<br />
==Remaining issues with CPC emulation==<br />
<br />
*MAME may fail to read DSK images with certain kinds of copy protection. Speedlock seems to work fine though.<br />
*MAME cannot write to disc images in DSK format; only MFI (MESS floppy image) and MFM (HxCFloppyEmulator floppy image) are supported for writing.<br />
*Some demo tricks may be broken in MAME, e.g. overscan pictures are horizontally misaligned (i.e., shifted to the right).<br />
*CPC+/GX4000 emulation still has some obvious graphics glitches.<br />
*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.<br />
<br />
==Compiling to JavaScript==<br />
<br />
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.<br />
<br />
==Links==<br />
<br />
*{{EnWiki}}<br />
*[http://mamedev.org/ Official site]<br />
*[http://www.mess.org/mess:howto MESS user's manual]<br />
*[[Media:CPC_ROMs_for_MAME.zip|CPC ROMs for MAME]]<br />
<br />
[[Category:Emulator]]</div>Mornhttps://www.cpcwiki.eu/index.php?title=Experimentelle_2D-_und_3D-Animation._Der_PC_in_der_Grafik,_Werbung_und_Design&diff=95898Experimentelle 2D- und 3D-Animation. Der PC in der Grafik, Werbung und Design2016-06-21T12:18:10Z<p>Morn: </p>
<hr />
<div>[[File:Wagenknecht, 3-D animation, 1986.jpg|thumb|Cover]]<br />
[[File:Wagenknecht back cover.jpg|thumb|Back cover]]<br />
'''''Experimentelle 2D- und 3D-Animation. Der PC in der Grafik, Werbung und Design''''' ("Experimental 2-D and 3-D animation—the PC in graphics, advertising, and design") is a book by Fred Wagenknecht about creating simple 2-D and 3-D vector graphics in Locomotive BASIC.<br />
<br />
Somewhat confusingly, the book's subtitle refers to the PC rather than the CPC, but apparently this was supposed to mean home computers in general, not IBM-compatible PCs. Wagenknecht points out that while the programs were written for the CPC 464, porting to other BASIC implementations is relatively straightforward.<br />
<br />
The focus of the book is on short vector-based animations, although of course BASIC is much too slow to render them in real-time. Then again, the target audience of the book are, at least according to the subtitle, graphic designers and artists, who would presumably have the necessary equipment to e.g. print completed frames or store them on video tape or Super 8 film (chapter 6 deals with this).<br />
<br />
== Information ==<br />
{|{{Prettytable|width: 700px; font-size: 2em;}}<br />
<br />
|Title:|| '''Experimentelle 2D- und 3D-Animation. Der PC in der Grafik, Werbung und Design'''<br />
|-<br />
|Authors:|| Fred Wagenknecht<br />
|-<br />
|Publisher:|| Vogel Verlag und Druck<br />
|-<br />
|Year:|| 1986<br />
|-<br />
|Pages:|| 178<br />
|-<br />
|ISBN:|| '''3-80230-877-8'''<br />
|-<br />
|}<br />
<br />
==Sample programs==<br />
<br />
Three sample programs from the book are shown below. The actual source code in the book also has comments of course.<br />
<br />
===SHAPES.BAS (p.38)===<br />
[[File:Wagenknecht shapes.png|thumb|384px]]<br />
<br />
<pre>2 ' *** SHAPES ***<br />
3 '<br />
10 DEG:INK 0,0:INK 1,24:BORDER 1<br />
15 CLS<br />
20 d=30<br />
40 FOR alpha=0 TO 360 STEP 6<br />
60 RESTORE<br />
70 READ x,y<br />
80 GOSUB 190:PLOT bx,by<br />
90 FOR i=2 TO 5<br />
100 READ x,y<br />
110 GOSUB 190<br />
120 DRAW bx,by<br />
130 NEXT i<br />
140 d=d-1<br />
150 IF d<0 THEN 170<br />
160 NEXT alpha<br />
170 END<br />
190 xe=x*COS(alpha)-y*SIN(alpha)<br />
200 ye=SIN(alpha)+y*COS(alpha)<br />
210 bx=d*xe+320: by=d*ye+200<br />
220 RETURN<br />
230 DATA -5,5,5,5,5,-5,-5,-5,-5,5</pre><br />
<br />
===GEWINDE.BAS (pp. 122/123)===<br />
[[File:Wagenknecht gewinde.gif|right]]<br />
<br />
<pre>5 ' *** Gewindemutter ***<br />
6 '<br />
10 MODE 2:INK 0,0:INK 1,24:CLS<br />
20 DEG<br />
40 alpha=0<br />
50 beta=0<br />
60 abstand=20<br />
70 entf=500<br />
80 vx=320<br />
90 vy=210<br />
130 FOR beta=0 TO 360 STEP 18<br />
180 READ x,y,z:GOSUB 380:PLOT bx,by<br />
190 FOR i=1 TO 31:READ x,y,z:GOSUB 380<br />
200 DRAW bx,by<br />
210 NEXT i<br />
220 RESTORE<br />
340 FOR u=0 TO 360<br />
350 x=3*COS(u):y=3*SIN(u):z=0:GOSUB 380:PLOT bx,by:NEXT u<br />
351 FOR u=0 TO 360:x=3*COS(u):y=3*SIN(u):z=4<br />
352 GOSUB 380:PLOT bx,by:NEXT u:z=0<br />
353 FOR u=0 TO 1600 STEP 2:x=3*COS(u):y=3*SIN(u):z=z+0.005<br />
354 GOSUB 380:PLOT bx,by:NEXT u<br />
360 CLS:NEXT beta<br />
370 END<br />
380 '<br />
410 w1=SIN(alpha):w2=COS(alpha):w3=SIN(beta):w4=COS(beta)<br />
420 xp=-x*w1+y*w2<br />
430 yp=-x*w2*w4-y*w1*w4+z*w3<br />
440 zp=-x*w3*w1-y*w2*w1-z*w4+abstand<br />
450 bx=entf*xp/zp+vx<br />
460 by=vy-entf*yp/zp<br />
470 RETURN<br />
510 DATA 2,5,0,5,2,0,5,-2,0,2,-5,0,-2,-5,0,-5,-2,0,-5,2,0<br />
520 DATA -2,5,0,2,5,0<br />
530 DATA 2,5,4,5,2,4,5,2,0,5,2,4,5,-2,4,5,-2,0,5,-2,4<br />
540 DATA 2,-5,4,2,-5,0,2,-5,4,-2,-5,4,-2,-5,0,-2,-5,4<br />
550 DATA -5,-2,4,-5,-2,0,-5,-2,4,-5,2,4,-5,2,0,-5,2,4<br />
560 DATA -2,5,4,-2,5,0,-2,5,4,2,5,4</pre><br />
<br />
===KUGEL.BAS (pp. 90-92)===<br />
[[File:Wagenknecht kugel.gif|right]]<br />
<br />
<pre>30 ' Kugel mit umlaufender Schrift ("NEWS")<br />
40 '<br />
50 MODE 1:INK 0,0:BORDER 3<br />
60 INK 1,26:INK 2,2:INK 3,11<br />
70 DEG<br />
110 mx=320<br />
120 my=200<br />
130 w1=-30<br />
140 w2=0<br />
150 w3=0<br />
160 r=220<br />
170 kr=180<br />
180 kx=320<br />
190 ky=200<br />
230 FOR w3=300 TO -90 STEP -30<br />
300 '<br />
301 a(1)=COS(w2)*COS(w3)<br />
302 a(2)=-COS(w2)*SIN(w3)<br />
303 a(3)=SIN(w2)<br />
304 a(4)=COS(w1)*SIN(w3)+SIN(w1)*SIN(w2)*COS(w3)<br />
305 a(5)=COS(w1)*COS(w3)-SIN(w1)*SIN(w2)*SIN(w3)<br />
306 a(6)=-SIN(w1)*COS(w2)<br />
307 a(7)=SIN(w1)*SIN(w3)-COS(w1)*SIN(w2)*COS(w3)<br />
308 a(8)=SIN(w1)*COS(w3)+COS(w1)*SIN(w2)*SIN(w3)<br />
309 a(9)=COS(w1)*COS(w2)<br />
320 FOR a=0 TO 180 STEP 15<br />
330 GOSUB 770:p1=cx:p2=cy<br />
340 FOR h=0 TO 360 STEP 15<br />
350 GOSUB 770<br />
360 p3=cx:p4=cy:<br />
370 PLOT p1,p2,2:DRAW p3,p4,2<br />
380 p1=p3:p2=p4<br />
390 NEXT h,a<br />
400 '<br />
410 FOR h=-90 TO 90 STEP 15<br />
420 a=0<br />
430 GOSUB 770:p1=cx:p2=cy<br />
440 FOR a=0 TO 360 STEP 15<br />
450 GOSUB 770<br />
460 p3=cx:p4=cy<br />
470 PLOT p1,p2,3:DRAW p3,p4,3<br />
480 p1=p3:p2=p4<br />
490 NEXT a,h<br />
500 RESTORE<br />
510 ' N<br />
520 READ a,h:GOSUB 770<br />
530 PLOT bx,by,2<br />
540 FOR d=2 TO 10<br />
550 READ a,h:GOSUB 770<br />
560 DRAW bx,by,1: NEXT d<br />
570 ' E<br />
580 READ a,h:GOSUB 770<br />
590 PLOT bx,by<br />
600 FOR d=12 TO 19: READ a,h<br />
610 GOSUB 770<br />
620 DRAW bx,by,1: NEXT d<br />
630 ' W<br />
640 READ a,h: GOSUB 770<br />
650 PLOT bx,by<br />
660 FOR d=20 TO 31:READ a,h<br />
670 GOSUB 770:DRAW bx,by,1:NEXT d<br />
680 ' S<br />
690 READ a,h:GOSUB 770<br />
700 PLOT bx,by<br />
710 FOR d=33 TO 43:READ a,h<br />
720 GOSUB 770:DRAW bx,by,1:NEXT d<br />
721 text$="Bitte Taste druecken!":text1=39-LEN(text$):text2=text1/2:LOCATE text2,25:PRINT text$;:CLEAR INPUT<br />
722 IF INKEY$="" THEN 722<br />
730 CLS<br />
740 NEXT w3<br />
750 END<br />
770 '<br />
780 x=COS(h)*COS(a)<br />
790 y=COS(h)*SIN(a)<br />
800 z=SIN(h)<br />
900 xa=a(1)*x+a(2)*y+a(3)*z<br />
910 ya=a(4)*x+a(5)*y+a(6)*z<br />
920 za=a(7)*x+a(8)*y+a(9)*z<br />
930 bx=mx+r*xa: by=my+r*za :<br />
940 cx=kx+kr*xa:cy=ky+kr*za :<br />
950 RETURN<br />
970 DATA 0,-15,0,-5,0,5,0,15,4,5<br />
980 DATA 7.5,-5,15,-15,15,-5,15,5<br />
990 DATA 15,15<br />
1000 DATA 30,15,20,15,20,5,20,0,30,0<br />
1010 DATA 20,0,20,-5,20,-15,30,-15<br />
1020 DATA 35,15,36,5,38,-5,40,-15<br />
1030 DATA 42,-5,44,5,45,15,46,5,48,-5<br />
1040 DATA 50,-15,52,-5,54,5,55,15<br />
1050 DATA 75,5,75,10,70,15,65,15,60,10<br />
1060 DATA 60,0,75,0,75,-10,70,-15<br />
1070 DATA 65,-15,60,-10,60,-5</pre><br />
<br />
==Download==<br />
* [http://www.cpcwiki.eu/manuals/Wagenknecht,%203-D%20Animation.rar ''Experimentelle 2D- und 3D-Animation''] (RAR-compressed PDF; 33 MB). Not a perfect scan because inner margins on pages are extremely narrow.<br />
<br />
[[Category:Books]]<br />
[[Category:Book cover]]<br />
[[Category:Scanned books]]<br />
[[Category:Computer graphics books]]</div>Mornhttps://www.cpcwiki.eu/index.php?title=Experimentelle_2D-_und_3D-Animation._Der_PC_in_der_Grafik,_Werbung_und_Design&diff=95897Experimentelle 2D- und 3D-Animation. Der PC in der Grafik, Werbung und Design2016-06-21T12:15:56Z<p>Morn: </p>
<hr />
<div>[[File:Wagenknecht, 3-D animation, 1986.jpg|thumb|Cover]]<br />
[[File:Wagenknecht back cover.jpg|thumb|Back cover]]<br />
'''''Experimentelle 2D- und 3D-Animation. Der PC in der Grafik, Werbung und Design''''' ("Experimental 2-D and 3-D animation—the PC in graphics, advertising, and design") is a book by Fred Wagenknecht about creating simple 2-D and 3-D vector graphics in Locomotive BASIC.<br />
<br />
Somewhat confusingly, the book title refers to the PC rather than the CPC, but apparently this was supposed to mean home computers in general, not IBM-compatible PCs. Wagenknecht points out that while the programs were written for the CPC 464, porting to other BASIC implementations is relatively straightforward.<br />
<br />
The focus of the book is on short vector-based animations, although of course BASIC is much too slow to render them in real-time. Then again, the target audience of the book are, at least according to the subtitle, graphic designers and artists, who would presumably have the necessary equipment to e.g. print completed frames or store them on video tape or Super 8 film (chapter 6 deals with this).<br />
<br />
== Information ==<br />
{|{{Prettytable|width: 700px; font-size: 2em;}}<br />
<br />
|Title:|| '''Experimentelle 2D- und 3D-Animation. Der PC in der Grafik, Werbung und Design'''<br />
|-<br />
|Authors:|| Fred Wagenknecht<br />
|-<br />
|Publisher:|| Vogel Verlag und Druck<br />
|-<br />
|Year:|| 1986<br />
|-<br />
|Pages:|| 178<br />
|-<br />
|ISBN:|| '''3-80230-877-8'''<br />
|-<br />
|}<br />
<br />
==Sample programs==<br />
<br />
Three sample programs from the book are shown below. The actual source code in the book also has comments of course.<br />
<br />
===SHAPES.BAS (p.38)===<br />
[[File:Wagenknecht shapes.png|thumb|384px]]<br />
<br />
<pre>2 ' *** SHAPES ***<br />
3 '<br />
10 DEG:INK 0,0:INK 1,24:BORDER 1<br />
15 CLS<br />
20 d=30<br />
40 FOR alpha=0 TO 360 STEP 6<br />
60 RESTORE<br />
70 READ x,y<br />
80 GOSUB 190:PLOT bx,by<br />
90 FOR i=2 TO 5<br />
100 READ x,y<br />
110 GOSUB 190<br />
120 DRAW bx,by<br />
130 NEXT i<br />
140 d=d-1<br />
150 IF d<0 THEN 170<br />
160 NEXT alpha<br />
170 END<br />
190 xe=x*COS(alpha)-y*SIN(alpha)<br />
200 ye=SIN(alpha)+y*COS(alpha)<br />
210 bx=d*xe+320: by=d*ye+200<br />
220 RETURN<br />
230 DATA -5,5,5,5,5,-5,-5,-5,-5,5</pre><br />
<br />
===GEWINDE.BAS (pp. 122/123)===<br />
[[File:Wagenknecht gewinde.gif|right]]<br />
<br />
<pre>5 ' *** Gewindemutter ***<br />
6 '<br />
10 MODE 2:INK 0,0:INK 1,24:CLS<br />
20 DEG<br />
40 alpha=0<br />
50 beta=0<br />
60 abstand=20<br />
70 entf=500<br />
80 vx=320<br />
90 vy=210<br />
130 FOR beta=0 TO 360 STEP 18<br />
180 READ x,y,z:GOSUB 380:PLOT bx,by<br />
190 FOR i=1 TO 31:READ x,y,z:GOSUB 380<br />
200 DRAW bx,by<br />
210 NEXT i<br />
220 RESTORE<br />
340 FOR u=0 TO 360<br />
350 x=3*COS(u):y=3*SIN(u):z=0:GOSUB 380:PLOT bx,by:NEXT u<br />
351 FOR u=0 TO 360:x=3*COS(u):y=3*SIN(u):z=4<br />
352 GOSUB 380:PLOT bx,by:NEXT u:z=0<br />
353 FOR u=0 TO 1600 STEP 2:x=3*COS(u):y=3*SIN(u):z=z+0.005<br />
354 GOSUB 380:PLOT bx,by:NEXT u<br />
360 CLS:NEXT beta<br />
370 END<br />
380 '<br />
410 w1=SIN(alpha):w2=COS(alpha):w3=SIN(beta):w4=COS(beta)<br />
420 xp=-x*w1+y*w2<br />
430 yp=-x*w2*w4-y*w1*w4+z*w3<br />
440 zp=-x*w3*w1-y*w2*w1-z*w4+abstand<br />
450 bx=entf*xp/zp+vx<br />
460 by=vy-entf*yp/zp<br />
470 RETURN<br />
510 DATA 2,5,0,5,2,0,5,-2,0,2,-5,0,-2,-5,0,-5,-2,0,-5,2,0<br />
520 DATA -2,5,0,2,5,0<br />
530 DATA 2,5,4,5,2,4,5,2,0,5,2,4,5,-2,4,5,-2,0,5,-2,4<br />
540 DATA 2,-5,4,2,-5,0,2,-5,4,-2,-5,4,-2,-5,0,-2,-5,4<br />
550 DATA -5,-2,4,-5,-2,0,-5,-2,4,-5,2,4,-5,2,0,-5,2,4<br />
560 DATA -2,5,4,-2,5,0,-2,5,4,2,5,4</pre><br />
<br />
===KUGEL.BAS (pp. 90-92)===<br />
[[File:Wagenknecht kugel.gif|right]]<br />
<br />
<pre>30 ' Kugel mit umlaufender Schrift ("NEWS")<br />
40 '<br />
50 MODE 1:INK 0,0:BORDER 3<br />
60 INK 1,26:INK 2,2:INK 3,11<br />
70 DEG<br />
110 mx=320<br />
120 my=200<br />
130 w1=-30<br />
140 w2=0<br />
150 w3=0<br />
160 r=220<br />
170 kr=180<br />
180 kx=320<br />
190 ky=200<br />
230 FOR w3=300 TO -90 STEP -30<br />
300 '<br />
301 a(1)=COS(w2)*COS(w3)<br />
302 a(2)=-COS(w2)*SIN(w3)<br />
303 a(3)=SIN(w2)<br />
304 a(4)=COS(w1)*SIN(w3)+SIN(w1)*SIN(w2)*COS(w3)<br />
305 a(5)=COS(w1)*COS(w3)-SIN(w1)*SIN(w2)*SIN(w3)<br />
306 a(6)=-SIN(w1)*COS(w2)<br />
307 a(7)=SIN(w1)*SIN(w3)-COS(w1)*SIN(w2)*COS(w3)<br />
308 a(8)=SIN(w1)*COS(w3)+COS(w1)*SIN(w2)*SIN(w3)<br />
309 a(9)=COS(w1)*COS(w2)<br />
320 FOR a=0 TO 180 STEP 15<br />
330 GOSUB 770:p1=cx:p2=cy<br />
340 FOR h=0 TO 360 STEP 15<br />
350 GOSUB 770<br />
360 p3=cx:p4=cy:<br />
370 PLOT p1,p2,2:DRAW p3,p4,2<br />
380 p1=p3:p2=p4<br />
390 NEXT h,a<br />
400 '<br />
410 FOR h=-90 TO 90 STEP 15<br />
420 a=0<br />
430 GOSUB 770:p1=cx:p2=cy<br />
440 FOR a=0 TO 360 STEP 15<br />
450 GOSUB 770<br />
460 p3=cx:p4=cy<br />
470 PLOT p1,p2,3:DRAW p3,p4,3<br />
480 p1=p3:p2=p4<br />
490 NEXT a,h<br />
500 RESTORE<br />
510 ' N<br />
520 READ a,h:GOSUB 770<br />
530 PLOT bx,by,2<br />
540 FOR d=2 TO 10<br />
550 READ a,h:GOSUB 770<br />
560 DRAW bx,by,1: NEXT d<br />
570 ' E<br />
580 READ a,h:GOSUB 770<br />
590 PLOT bx,by<br />
600 FOR d=12 TO 19: READ a,h<br />
610 GOSUB 770<br />
620 DRAW bx,by,1: NEXT d<br />
630 ' W<br />
640 READ a,h: GOSUB 770<br />
650 PLOT bx,by<br />
660 FOR d=20 TO 31:READ a,h<br />
670 GOSUB 770:DRAW bx,by,1:NEXT d<br />
680 ' S<br />
690 READ a,h:GOSUB 770<br />
700 PLOT bx,by<br />
710 FOR d=33 TO 43:READ a,h<br />
720 GOSUB 770:DRAW bx,by,1:NEXT d<br />
721 text$="Bitte Taste druecken!":text1=39-LEN(text$):text2=text1/2:LOCATE text2,25:PRINT text$;:CLEAR INPUT<br />
722 IF INKEY$="" THEN 722<br />
730 CLS<br />
740 NEXT w3<br />
750 END<br />
770 '<br />
780 x=COS(h)*COS(a)<br />
790 y=COS(h)*SIN(a)<br />
800 z=SIN(h)<br />
900 xa=a(1)*x+a(2)*y+a(3)*z<br />
910 ya=a(4)*x+a(5)*y+a(6)*z<br />
920 za=a(7)*x+a(8)*y+a(9)*z<br />
930 bx=mx+r*xa: by=my+r*za :<br />
940 cx=kx+kr*xa:cy=ky+kr*za :<br />
950 RETURN<br />
970 DATA 0,-15,0,-5,0,5,0,15,4,5<br />
980 DATA 7.5,-5,15,-15,15,-5,15,5<br />
990 DATA 15,15<br />
1000 DATA 30,15,20,15,20,5,20,0,30,0<br />
1010 DATA 20,0,20,-5,20,-15,30,-15<br />
1020 DATA 35,15,36,5,38,-5,40,-15<br />
1030 DATA 42,-5,44,5,45,15,46,5,48,-5<br />
1040 DATA 50,-15,52,-5,54,5,55,15<br />
1050 DATA 75,5,75,10,70,15,65,15,60,10<br />
1060 DATA 60,0,75,0,75,-10,70,-15<br />
1070 DATA 65,-15,60,-10,60,-5</pre><br />
<br />
==Download==<br />
* [http://www.cpcwiki.eu/manuals/Wagenknecht,%203-D%20Animation.rar ''Experimentelle 2D- und 3D-Animation''] (RAR-compressed PDF; 33 MB). Not a perfect scan because inner margins on pages are extremely narrow.<br />
<br />
[[Category:Books]]<br />
[[Category:Book cover]]<br />
[[Category:Scanned books]]<br />
[[Category:Computer graphics books]]</div>Mornhttps://www.cpcwiki.eu/index.php?title=Intelligenz_in_BASIC_-_F%C3%BCr_Schneider_CPC_464/664/6128&diff=95896Intelligenz in BASIC - Für Schneider CPC 464/664/61282016-06-21T11:21:40Z<p>Morn: /* Downloads */</p>
<hr />
<div>[[File:Koch a.png|right|thumb|250px|Cover]]<br />
[[File:Koch b.png|right|thumb|250px|Back cover]]<br />
[[File:Koch disk.png|thumb|Disc]]<br />
<br />
Introduction to AI programming techniques on the CPC. Some topics covered: pattern recognition ("ACTSYM.MER"), maze solving ("LABYRATT.LRN"), expert systems ("PSYCHO.EXP"), ELIZA ("DEPRESS.DIA"), adaptive AI for games ("MOUSCHEX.LRN"), computer-generated poetry ("LOVEPOEM.ART"). The book includes a floppy disc with the programs.<br />
<br />
<gallery><br />
File:Koch game.png|MOUSCHEX, a learning computer AI<br />
File:Koch kunstwort.png|KUNSTWORT, for coining crazy new words<br />
File:Koch lab rat.png|LABYRATT, a learning rat in a maze<br />
File:Koch ocr.png|ACTSYM, a basic OCR program<br />
</gallery><br />
<br />
== Information ==<br />
{|{{Prettytable|width: 700px; font-size: 2em;}}<br />
<br />
|Title:|| '''Intelligenz in BASIC - Für Schneider CPC 464/664/6128'''<br />
|-<br />
|Authors:|| Karl-Heinz Koch<br />
|-<br />
|Publisher:|| [[Falken Verlag]]<br />
|-<br />
|Year:|| 1987<br />
|-<br />
|Pages:|| 160<br />
|-<br />
|ISBN:|| '''3-8068-4320-1'''<br />
|-<br />
|}<br />
<br />
== Table of contents ==<br />
<br />
*Einleitung...6<br />
*Kapitel 1: Intelligenz künstlich?...8<br />
*Kapitel 2: Kreative Intelligenz...28<br />
*Kapitel 3: Intelligentes BASIC...49<br />
*Kapitel 4: Auf ein Wort...111<br />
*Kapitel 5: Expertensysteme...124<br />
*Literaturverzeichnis...159<br />
*Register...160<br />
<br />
== Files on disc ==<br />
<br />
ACTSYM .MER 6K (pattern recognition,<br />
recognises "A", "C", and "T" on an 8x8 grid)<br />
BESTIMM .EXP 2K (expert system)<br />
DENKNETZ.EXP 5K (expert system)<br />
DEPRESS .DIA 9K (ELIZA-like program)<br />
DICEP .DEM 1K (print some die-rolling statistics)<br />
FANGEN .DEM 2K (catch the player character)<br />
GOLD10 .GEM 6K (AI implementation of ''Goldene Zehn'',<br />
a die-rolling game with three dice)<br />
KALEIDOS.ART 7K (create nice kaleidoscopic images)<br />
KUNSTWRT.DEM 1K (creates new words)<br />
LABY .GRF 2K (draws a labyrinth)<br />
LABYRATT.LRN 6K (a learning rat in a maze)<br />
LOVEPOEM.ART 5K (creates love poems)<br />
MOUSCHEX.LRN 8K (3x3 board game with a learning computer AI)<br />
MOZART .DND 22K (data file for "DENKNETZ" with the Mozart family tree)<br />
MUSTER .DEM 1K (find a substring in a string, like instr())<br />
PSYCHO .EXP 8K (multiple-choice psychology questionnaire)<br />
RATE .LRN 3K (learn to discriminate between objects based on<br />
user-supplied questions)<br />
STIFTE .DEM 1K (simple object classification demo)<br />
<br />
==Downloads==<br />
* [http://www.cpcwiki.eu/manuals/Koch,%20Intelligenz%20in%20BASIC.rar ''Intelligenz in BASIC''] (RAR-compressed PDF; 66 MB)<br />
* [[Media:Koch.zip|Koch.zip]] (DSK for emulators) <br />
<br />
<br />
[[Category:Books]]<br />
[[Category:Scanned books]]<br />
[[Category:Book cover]]<br />
[[Category:Artificial Intelligence books]]</div>Mornhttps://www.cpcwiki.eu/index.php?title=Experimentelle_2D-_und_3D-Animation._Der_PC_in_der_Grafik,_Werbung_und_Design&diff=95895Experimentelle 2D- und 3D-Animation. Der PC in der Grafik, Werbung und Design2016-06-21T11:21:31Z<p>Morn: /* Download */</p>
<hr />
<div>[[File:Wagenknecht, 3-D animation, 1986.jpg|thumb|Cover]]<br />
[[File:Wagenknecht back cover.jpg|thumb|Back cover]]<br />
'''''Experimentelle 2D- und 3D-Animation. Der PC in der Grafik, Werbung und Design''''' ("Experimental 2-D and 3-D animation—the PC in graphics, advertising, and design") is a book by Fred Wagenknecht about creating simple 2-D and 3-D vector graphics in Locomotive BASIC. Somewhat confusingly, the book title refers to PCs rather than the CPC, but is was meant to refer to home computers in general, not IBM PCs. Wagenknecht points out that while the programs were written for the 464, porting to other BASIC implementations is relatively straightforward.<br />
<br />
The focus of the book is on short vector-based animations, although of course BASIC is much too slow to render them in real-time. Then again, the target audience of the book are, at least according to the subtitle, graphic designers and artists, who would presumably have the necessary equipment e.g. print completed frames or store them on video tape or Super 8 film (chapter 6 deals with this).<br />
<br />
== Information ==<br />
{|{{Prettytable|width: 700px; font-size: 2em;}}<br />
<br />
|Title:|| '''Experimentelle 2D- und 3D-Animation. Der PC in der Grafik, Werbung und Design'''<br />
|-<br />
|Authors:|| Fred Wagenknecht<br />
|-<br />
|Publisher:|| Vogel Verlag und Druck<br />
|-<br />
|Year:|| 1986<br />
|-<br />
|Pages:|| 178<br />
|-<br />
|ISBN:|| '''3-80230-877-8'''<br />
|-<br />
|}<br />
<br />
==Sample programs==<br />
<br />
Three sample programs from the book are shown below. The actual source code in the book also has comments of course.<br />
<br />
===SHAPES.BAS (p.38)===<br />
[[File:Wagenknecht shapes.png|thumb|384px]]<br />
<br />
<pre>2 ' *** SHAPES ***<br />
3 '<br />
10 DEG:INK 0,0:INK 1,24:BORDER 1<br />
15 CLS<br />
20 d=30<br />
40 FOR alpha=0 TO 360 STEP 6<br />
60 RESTORE<br />
70 READ x,y<br />
80 GOSUB 190:PLOT bx,by<br />
90 FOR i=2 TO 5<br />
100 READ x,y<br />
110 GOSUB 190<br />
120 DRAW bx,by<br />
130 NEXT i<br />
140 d=d-1<br />
150 IF d<0 THEN 170<br />
160 NEXT alpha<br />
170 END<br />
190 xe=x*COS(alpha)-y*SIN(alpha)<br />
200 ye=SIN(alpha)+y*COS(alpha)<br />
210 bx=d*xe+320: by=d*ye+200<br />
220 RETURN<br />
230 DATA -5,5,5,5,5,-5,-5,-5,-5,5</pre><br />
<br />
===GEWINDE.BAS (pp. 122/123)===<br />
[[File:Wagenknecht gewinde.gif|right]]<br />
<br />
<pre>5 ' *** Gewindemutter ***<br />
6 '<br />
10 MODE 2:INK 0,0:INK 1,24:CLS<br />
20 DEG<br />
40 alpha=0<br />
50 beta=0<br />
60 abstand=20<br />
70 entf=500<br />
80 vx=320<br />
90 vy=210<br />
130 FOR beta=0 TO 360 STEP 18<br />
180 READ x,y,z:GOSUB 380:PLOT bx,by<br />
190 FOR i=1 TO 31:READ x,y,z:GOSUB 380<br />
200 DRAW bx,by<br />
210 NEXT i<br />
220 RESTORE<br />
340 FOR u=0 TO 360<br />
350 x=3*COS(u):y=3*SIN(u):z=0:GOSUB 380:PLOT bx,by:NEXT u<br />
351 FOR u=0 TO 360:x=3*COS(u):y=3*SIN(u):z=4<br />
352 GOSUB 380:PLOT bx,by:NEXT u:z=0<br />
353 FOR u=0 TO 1600 STEP 2:x=3*COS(u):y=3*SIN(u):z=z+0.005<br />
354 GOSUB 380:PLOT bx,by:NEXT u<br />
360 CLS:NEXT beta<br />
370 END<br />
380 '<br />
410 w1=SIN(alpha):w2=COS(alpha):w3=SIN(beta):w4=COS(beta)<br />
420 xp=-x*w1+y*w2<br />
430 yp=-x*w2*w4-y*w1*w4+z*w3<br />
440 zp=-x*w3*w1-y*w2*w1-z*w4+abstand<br />
450 bx=entf*xp/zp+vx<br />
460 by=vy-entf*yp/zp<br />
470 RETURN<br />
510 DATA 2,5,0,5,2,0,5,-2,0,2,-5,0,-2,-5,0,-5,-2,0,-5,2,0<br />
520 DATA -2,5,0,2,5,0<br />
530 DATA 2,5,4,5,2,4,5,2,0,5,2,4,5,-2,4,5,-2,0,5,-2,4<br />
540 DATA 2,-5,4,2,-5,0,2,-5,4,-2,-5,4,-2,-5,0,-2,-5,4<br />
550 DATA -5,-2,4,-5,-2,0,-5,-2,4,-5,2,4,-5,2,0,-5,2,4<br />
560 DATA -2,5,4,-2,5,0,-2,5,4,2,5,4</pre><br />
<br />
===KUGEL.BAS (pp. 90-92)===<br />
[[File:Wagenknecht kugel.gif|right]]<br />
<br />
<pre>30 ' Kugel mit umlaufender Schrift ("NEWS")<br />
40 '<br />
50 MODE 1:INK 0,0:BORDER 3<br />
60 INK 1,26:INK 2,2:INK 3,11<br />
70 DEG<br />
110 mx=320<br />
120 my=200<br />
130 w1=-30<br />
140 w2=0<br />
150 w3=0<br />
160 r=220<br />
170 kr=180<br />
180 kx=320<br />
190 ky=200<br />
230 FOR w3=300 TO -90 STEP -30<br />
300 '<br />
301 a(1)=COS(w2)*COS(w3)<br />
302 a(2)=-COS(w2)*SIN(w3)<br />
303 a(3)=SIN(w2)<br />
304 a(4)=COS(w1)*SIN(w3)+SIN(w1)*SIN(w2)*COS(w3)<br />
305 a(5)=COS(w1)*COS(w3)-SIN(w1)*SIN(w2)*SIN(w3)<br />
306 a(6)=-SIN(w1)*COS(w2)<br />
307 a(7)=SIN(w1)*SIN(w3)-COS(w1)*SIN(w2)*COS(w3)<br />
308 a(8)=SIN(w1)*COS(w3)+COS(w1)*SIN(w2)*SIN(w3)<br />
309 a(9)=COS(w1)*COS(w2)<br />
320 FOR a=0 TO 180 STEP 15<br />
330 GOSUB 770:p1=cx:p2=cy<br />
340 FOR h=0 TO 360 STEP 15<br />
350 GOSUB 770<br />
360 p3=cx:p4=cy:<br />
370 PLOT p1,p2,2:DRAW p3,p4,2<br />
380 p1=p3:p2=p4<br />
390 NEXT h,a<br />
400 '<br />
410 FOR h=-90 TO 90 STEP 15<br />
420 a=0<br />
430 GOSUB 770:p1=cx:p2=cy<br />
440 FOR a=0 TO 360 STEP 15<br />
450 GOSUB 770<br />
460 p3=cx:p4=cy<br />
470 PLOT p1,p2,3:DRAW p3,p4,3<br />
480 p1=p3:p2=p4<br />
490 NEXT a,h<br />
500 RESTORE<br />
510 ' N<br />
520 READ a,h:GOSUB 770<br />
530 PLOT bx,by,2<br />
540 FOR d=2 TO 10<br />
550 READ a,h:GOSUB 770<br />
560 DRAW bx,by,1: NEXT d<br />
570 ' E<br />
580 READ a,h:GOSUB 770<br />
590 PLOT bx,by<br />
600 FOR d=12 TO 19: READ a,h<br />
610 GOSUB 770<br />
620 DRAW bx,by,1: NEXT d<br />
630 ' W<br />
640 READ a,h: GOSUB 770<br />
650 PLOT bx,by<br />
660 FOR d=20 TO 31:READ a,h<br />
670 GOSUB 770:DRAW bx,by,1:NEXT d<br />
680 ' S<br />
690 READ a,h:GOSUB 770<br />
700 PLOT bx,by<br />
710 FOR d=33 TO 43:READ a,h<br />
720 GOSUB 770:DRAW bx,by,1:NEXT d<br />
721 text$="Bitte Taste druecken!":text1=39-LEN(text$):text2=text1/2:LOCATE text2,25:PRINT text$;:CLEAR INPUT<br />
722 IF INKEY$="" THEN 722<br />
730 CLS<br />
740 NEXT w3<br />
750 END<br />
770 '<br />
780 x=COS(h)*COS(a)<br />
790 y=COS(h)*SIN(a)<br />
800 z=SIN(h)<br />
900 xa=a(1)*x+a(2)*y+a(3)*z<br />
910 ya=a(4)*x+a(5)*y+a(6)*z<br />
920 za=a(7)*x+a(8)*y+a(9)*z<br />
930 bx=mx+r*xa: by=my+r*za :<br />
940 cx=kx+kr*xa:cy=ky+kr*za :<br />
950 RETURN<br />
970 DATA 0,-15,0,-5,0,5,0,15,4,5<br />
980 DATA 7.5,-5,15,-15,15,-5,15,5<br />
990 DATA 15,15<br />
1000 DATA 30,15,20,15,20,5,20,0,30,0<br />
1010 DATA 20,0,20,-5,20,-15,30,-15<br />
1020 DATA 35,15,36,5,38,-5,40,-15<br />
1030 DATA 42,-5,44,5,45,15,46,5,48,-5<br />
1040 DATA 50,-15,52,-5,54,5,55,15<br />
1050 DATA 75,5,75,10,70,15,65,15,60,10<br />
1060 DATA 60,0,75,0,75,-10,70,-15<br />
1070 DATA 65,-15,60,-10,60,-5</pre><br />
<br />
==Download==<br />
* [http://www.cpcwiki.eu/manuals/Wagenknecht,%203-D%20Animation.rar ''Experimentelle 2D- und 3D-Animation''] (RAR-compressed PDF; 33 MB). Not a perfect scan because inner margins on pages are extremely narrow.<br />
<br />
[[Category:Books]]<br />
[[Category:Book cover]]<br />
[[Category:Scanned books]]<br />
[[Category:Computer graphics books]]</div>Mornhttps://www.cpcwiki.eu/index.php?title=MAME&diff=94903MAME2016-01-06T18:10:18Z<p>Morn: /* GUI front-ends */</p>
<hr />
<div>[[File:Mess sysinfo.png|thumb|upright=.9|The MAME system info box for the CPC6128]]<br />
[[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]]''.]]<br />
'''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.<br />
<br />
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.<br />
<br />
==Emulated systems==<br />
<br />
Currently, [http://www.progettoemma.net/mess/sysset.php 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).<br />
<br />
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.<br />
<br />
==Installation==<br />
<br />
MAME runs on Windows, Mac OS X, Linux, and FreeBSD. You can get Windows binaries from [http://mamedev.org/release.html mamedev.org].<br />
<br />
On OS X, you can install MAME via [http://brew.sh/ Homebrew]:<br />
brew tap homebrew/games<br />
brew install mame<br />
<br />
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:<br />
alias mame=/usr/share/sdlmame/sdlmame<br />
<br />
==Starting MAME; command line arguments; MAME menu; quitting==<br />
[[File:MAME menu CPC.png|thumb|upright|The MAME menu]]<br />
First get the [[Media:CPC_ROMs_for_MAME.zip|CPC ROMs for MAME]] and unzip them into the MAME roms folder.<br />
<br />
Typical command line to start MAME in CPC mode (windowed mode and with a disc inserted in drive A):<br />
mame cpc6128 -skip_gameinfo -window -flop1 disk.dsk<br />
<br />
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).<br />
<br />
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.<br />
<br />
You can use the "-ab" commandline option to type text into MAME, e.g.<br />
mame cpc6128 -flop1 disk.dsk -ab "run\"disc\n"<br />
will boot the disc.<br />
<br />
===Device options for the CPC from [http://www.progettoemma.net/mess/extra.html sysinfo.dat]===<br />
{|class="wikitable"<br />
|'''Name'''<br />
|'''Argument'''<br />
|'''Allowed file extensions'''<br />
|-<br />
|Printer<br />
| -prin<br />
|.prn<br />
|-<br />
|Snapshot<br />
| -dump<br />
|.sna<br />
|-<br />
|Disk drive A<br />
| -flop1<br />
|rowspan="2"|.dsk; .d77; .d88; .1dd; .dfi; .imd; .ipf; .mfi; .mfm<br />
|-<br />
|Disk drive B<br />
| -flop2<br />
|-<br />
|Tape<br />
| -cass<br />
|.wav; .cdt<br />
|-<br />
|Cartridge<br />
| -cart<br />
|.cpr; .bin (Plus series and GX4000 only)<br />
|}<br />
<br />
Supported file types can also be shown with the "-listmedia" command line option.<br />
<br />
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.<br />
mame cpc6128 -flop1 disk.zip/disk0.dsk<br />
<br />
===Python script to start MAME in CPC mode===<br />
On Linux, you can also set your file manager (e.g. Nautilus or Konqueror) to open .dsk files with the following Python script:<br />
<pre><br />
#!/usr/bin/env python<br />
<br />
# Call as<br />
# "cpc" : emulated keyboard<br />
# "cpcn" : natural<br />
<br />
import os, os.path, zipfile<br />
from sys import argv<br />
<br />
if 'cpcn' in argv[0]:<br />
nat = '-natural'<br />
else:<br />
nat = ''<br />
<br />
s = "/usr/share/sdlmame/sdlmame cpc6128 -skip_gameinfo -window %s -keymap -keymap_file /usr/share/sdlmame/keymaps/km-de.txt" % nat<br />
<br />
def checkzip(t):<br />
"Check if file is a ZIP file; use the first file in the archive"<br />
if t[-4:].lower() == '.zip':<br />
a = zipfile.ZipFile(t).namelist()<br />
t = os.path.join(t, a[0])<br />
return t<br />
<br />
if len(argv) > 1:<br />
for x in range(1, len(argv)):<br />
s += ' -flop%u "%s"' % (x, checkzip(argv[x]))<br />
os.system(s)<br />
</pre><br />
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.<br />
<br />
==GUI front-ends==<br />
[[File:Mameui.png|thumb|MAMEUI64 on Windows]]<br />
[[File:Messmenu.png|thumb|MessMenu on OS X with a CPC ROM selected. Currently, seven different CPC models are supported, including some regional variants (French and Swedish).]]<br />
<br />
Various GUI front-ends for MAME/MESS exist for Windows, Linux, and OS X:<br />
<br />
*[http://mame32fx.altervista.org/ MAMEUIFX] (Windows)<br />
*[http://www.mameui.info/ MAMEUI64] (Windows)<br />
*[http://qmc2.arcadehits.net/ QMC2] (Windows, OS X, Linux)<br />
<br />
==Keyboard layouts==<br />
<br />
MAME supports two keyboard modes:<br />
* '''emulated''' (the default; keys are assigned based on key position on the emulated hardware)<br />
* '''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)<br />
<br />
To use a German keyboard in emulated keyboard mode, start MAME e.g. with (key map path on Linux):<br />
mame cpc6128 -keymap -keymap_file /usr/share/sdlmame/keymaps/km-de.txt<br />
<br />
You can also put these settings in your mame.ini like this:<br />
keymap 1<br />
keymap_file /usr/share/sdlmame/keymaps/km-de.txt<br />
<br />
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.<br />
<br />
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.<br />
<br />
==CPC artwork==<br />
[[File:MAME with CPC artwork.png|thumb|MAME window with monitor type set to green and optional CPC artwork]]<br />
You can add optional bezel artwork to MAME to simulate a CPC monitor:<br />
*[[Media:Cpc6128 mame artwork.zip|MAME artwork]] (CPC6128/GT65 bezel)<br />
<br />
Rename this file to cpc6128.zip and put it in MAME's artwork folder (~/.mame/artwork/ on Linux).<br />
<br />
==ROMs and extension hardware==<br />
<br />
[[Media:CPC_ROMs_for_MAME.zip|CPC ROMs for MAME]]. Just unzip the file and move the ZIPs inside into the MAME ROM folder.<br />
<br />
===General notes about MAME and ROMs===<br />
<br />
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.)<br />
<br />
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.<br />
<br />
===Slot options (extension hardware)===<br />
[[File:MESS with Dobbertin Smart Watch.png|thumb|upright=1.4||MAME with the Dobbertin Smart Watch ROM loaded (-exp smartwatch)]]<br />
[[File:Brunword mame.png|thumb|upright=1.4||BrunWord MK4 (ROM) main menu in MAME 0.162 (-exp brunword4)]]<br />
<br />
You can get a list of slot options with<br />
<br />
mame cpc6128 -lslot<br />
<br />
These are (as of MAME 0.168):<br />
<br />
*for "-centronics"<br />
{|class="wikitable"<br />
|-<br />
|pl80 <br />
|COMX PL-80<br />
|-<br />
|ex800 <br />
|Epson EX-800<br />
|-<br />
|lx800 <br />
|Epson LX-800<br />
|-<br />
|lx810l <br />
|Epson LX-810L<br />
|-<br />
|ap2000 <br />
|Epson ActionPrinter 2000<br />
|-<br />
|printer <br />
|Centronics Printer<br />
|-<br />
|digiblst <br />
|[[Digiblaster]] (DIY)<br />
|}<br />
<br />
*for "-exp"<br />
{|class="wikitable"<br />
|-<br />
|ssa1 <br />
|[[Amstrad SSA-1 Speech Synthesizer]]<br />
|-<br />
|dkspeech <br />
|[[Dk'tronics Speech Synthesizer]]<br />
|-<br />
|rom <br />
|ROM Box<br />
|-<br />
|multiface2 <br />
|[[Multiface II]]<br />
|-<br />
|pds <br />
|[[PDS development system|Programmers Development System (CPC Target)]]<br />
|-<br />
|rs232 <br />
|Pace RS232C interface<br />
|-<br />
|amsrs232 <br />
|[[Original Amstrad RS232 interface|Amstrad RS232C interface]]<br />
|-<br />
|sf2 <br />
|[[SYMBiFACE II]]<br />
|-<br />
|amdrum <br />
|[[Amdrum]]<br />
|-<br />
|playcity <br />
|[[PlayCity]]<br />
|-<br />
|smartwatch <br />
|[[Dobbertin Smart Watch]]<br />
|-<br />
|brunword4<br />
|[[BrunWord]] Elite MK4<br />
|-<br />
|hd20<br />
|[[Dobbertin Harddisc]]<br />
|-<br />
|doubler<br />
|[[Draysoft Doubler]]<br />
|-<br />
|transtape<br />
|HM [[Transtape]]<br />
|}<br />
<br />
===Loading external ROMs===<br />
<br />
The ROM Box expansion can be used to load external ROMs such as [[MAXAM]]:<br />
<br />
mame cpc6128 -exp rom -rom1 /path/to/MAXAM.ROM<br />
<br />
Up to 8 external ROMs (-rom1 to -rom8) are supported this way.<br />
<br />
===[[Dobbertin Harddisc]]===<br />
<br />
From the [http://www.cpcwiki.eu/forum/emulators/got-bored-again/msg102272/#msg102272 forum post]:<br />
<br />
To use, add -exp hd20 to the commandline, which will also allow you to add -hard <filename>.<br />
Code:<br />
<br />
mame cpc6128 -exp hd20 -hard1 disk.chd<br />
<br />
Only MAME CHDs are supported, you can create a blank hard disk image using chdman. Geometry is 615/4/17.<br />
Code:<br />
<br />
chdman createhd -o disk.chd -c none -chs 615,4,17<br />
<br />
(-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)<br />
<br />
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.<br />
<br />
See http://mahlemiut.marpirc.net/cpc_hd20.avi, a quick demo loading a game from HD.<br />
<br />
==CRT simulation==<br />
[[File:Cpc shader mess.png|thumb|GLSL shader example (Linux)]]<br />
[[File:Cpc hlsl shader mess detail.png|thumb|HLSL "1980s" shader (Windows); MAME config used is on image description page]]<br />
MAME can use shaders to simulate typical CRT graphics artifacts such as scanlines, colors bleeding into each other, jitter, and display curvature.<br />
<br />
Some example configurations:<br />
*Windows (using HLSL shaders)<br />
**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)<br />
**A German shader tutorial: [http://www.aep-emu.de/PNphpBB2-file-viewtopic-p-94168.html]<br />
*Linux (using GLSL shaders): MAME tutorial [http://www.mameau.com/mame-glsl-shaders-setup/]<br />
<br />
==Remaining issues with CPC emulation==<br />
<br />
*MAME may fail to read DSK images with certain kinds of copy protection. Speedlock seems to work fine though.<br />
*MAME cannot write to disc images in DSK format; only MFI (MESS floppy image) and MFM (HxCFloppyEmulator floppy image) are supported for writing.<br />
*Some demo tricks may be broken in MAME, e.g. overscan pictures are horizontally misaligned (i.e., shifted to the right).<br />
*CPC+/GX4000 emulation still has some obvious graphics glitches.<br />
*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.<br />
<br />
==Compiling to JavaScript==<br />
<br />
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.<br />
<br />
==Links==<br />
<br />
*{{EnWiki}}<br />
*[http://mamedev.org/ Official site]<br />
*[http://www.mess.org/mess:howto MESS user's manual]<br />
*[[Media:CPC_ROMs_for_MAME.zip|CPC ROMs for MAME]]<br />
<br />
[[Category:Emulator]]</div>Mornhttps://www.cpcwiki.eu/index.php?title=MAME&diff=94859MAME2015-12-28T16:45:17Z<p>Morn: /* JSMESS, a JavaScript port */</p>
<hr />
<div>[[File:Mess sysinfo.png|thumb|upright=.9|The MAME system info box for the CPC6128]]<br />
[[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]]''.]]<br />
'''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.<br />
<br />
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.<br />
<br />
==Emulated systems==<br />
<br />
Currently, [http://www.progettoemma.net/mess/sysset.php 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).<br />
<br />
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.<br />
<br />
==Installation==<br />
<br />
MAME runs on Windows, Mac OS X, Linux, and FreeBSD. You can get Windows binaries from [http://mamedev.org/release.html mamedev.org].<br />
<br />
On OS X, you can install MAME via [http://brew.sh/ Homebrew]:<br />
brew tap homebrew/games<br />
brew install mame<br />
<br />
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:<br />
alias mame=/usr/share/sdlmame/sdlmame<br />
<br />
==Starting MAME; command line arguments; MAME menu; quitting==<br />
[[File:MAME menu CPC.png|thumb|upright|The MAME menu]]<br />
First get the [[Media:CPC_ROMs_for_MAME.zip|CPC ROMs for MAME]] and unzip them into the MAME roms folder.<br />
<br />
Typical command line to start MAME in CPC mode (windowed mode and with a disc inserted in drive A):<br />
mame cpc6128 -skip_gameinfo -window -flop1 disk.dsk<br />
<br />
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).<br />
<br />
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.<br />
<br />
You can use the "-ab" commandline option to type text into MAME, e.g.<br />
mame cpc6128 -flop1 disk.dsk -ab "run\"disc\n"<br />
will boot the disc.<br />
<br />
===Device options for the CPC from [http://www.progettoemma.net/mess/extra.html sysinfo.dat]===<br />
{|class="wikitable"<br />
|'''Name'''<br />
|'''Argument'''<br />
|'''Allowed file extensions'''<br />
|-<br />
|Printer<br />
| -prin<br />
|.prn<br />
|-<br />
|Snapshot<br />
| -dump<br />
|.sna<br />
|-<br />
|Disk drive A<br />
| -flop1<br />
|rowspan="2"|.dsk; .d77; .d88; .1dd; .dfi; .imd; .ipf; .mfi; .mfm<br />
|-<br />
|Disk drive B<br />
| -flop2<br />
|-<br />
|Tape<br />
| -cass<br />
|.wav; .cdt<br />
|-<br />
|Cartridge<br />
| -cart<br />
|.cpr; .bin (Plus series and GX4000 only)<br />
|}<br />
<br />
Supported file types can also be shown with the "-listmedia" command line option.<br />
<br />
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.<br />
mame cpc6128 -flop1 disk.zip/disk0.dsk<br />
<br />
===Python script to start MAME in CPC mode===<br />
On Linux, you can also set your file manager (e.g. Nautilus or Konqueror) to open .dsk files with the following Python script:<br />
<pre><br />
#!/usr/bin/env python<br />
<br />
# Call as<br />
# "cpc" : emulated keyboard<br />
# "cpcn" : natural<br />
<br />
import os, os.path, zipfile<br />
from sys import argv<br />
<br />
if 'cpcn' in argv[0]:<br />
nat = '-natural'<br />
else:<br />
nat = ''<br />
<br />
s = "/usr/share/sdlmame/sdlmame cpc6128 -skip_gameinfo -window %s -keymap -keymap_file /usr/share/sdlmame/keymaps/km-de.txt" % nat<br />
<br />
def checkzip(t):<br />
"Check if file is a ZIP file; use the first file in the archive"<br />
if t[-4:].lower() == '.zip':<br />
a = zipfile.ZipFile(t).namelist()<br />
t = os.path.join(t, a[0])<br />
return t<br />
<br />
if len(argv) > 1:<br />
for x in range(1, len(argv)):<br />
s += ' -flop%u "%s"' % (x, checkzip(argv[x]))<br />
os.system(s)<br />
</pre><br />
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.<br />
<br />
==GUI front-ends==<br />
[[File:Mameui.png|thumb|MAMEUI64 on Windows]]<br />
[[File:Messmenu.png|thumb|MessMenu on OS X with a CPC ROM selected. Currently, seven different CPC models are supported, including some regional variants (French and Swedish).]]<br />
<br />
Various GUI front-ends for MAME/MESS exist for Windows, Linux, and OS X:<br />
<br />
*[http://www.mameui.info/ MAMEUI64] (Windows)<br />
*[http://qmc2.arcadehits.net/ QMC2] (Windows, OS X, Linux)<br />
<br />
==Keyboard layouts==<br />
<br />
MAME supports two keyboard modes:<br />
* '''emulated''' (the default; keys are assigned based on key position on the emulated hardware)<br />
* '''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)<br />
<br />
To use a German keyboard in emulated keyboard mode, start MAME e.g. with (key map path on Linux):<br />
mame cpc6128 -keymap -keymap_file /usr/share/sdlmame/keymaps/km-de.txt<br />
<br />
You can also put these settings in your mame.ini like this:<br />
keymap 1<br />
keymap_file /usr/share/sdlmame/keymaps/km-de.txt<br />
<br />
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.<br />
<br />
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.<br />
<br />
==CPC artwork==<br />
[[File:MAME with CPC artwork.png|thumb|MAME window with monitor type set to green and optional CPC artwork]]<br />
You can add optional bezel artwork to MAME to simulate a CPC monitor:<br />
*[[Media:Cpc6128 mame artwork.zip|MAME artwork]] (CPC6128/GT65 bezel)<br />
<br />
Rename this file to cpc6128.zip and put it in MAME's artwork folder (~/.mame/artwork/ on Linux).<br />
<br />
==ROMs and extension hardware==<br />
<br />
[[Media:CPC_ROMs_for_MAME.zip|CPC ROMs for MAME]]. Just unzip the file and move the ZIPs inside into the MAME ROM folder.<br />
<br />
===General notes about MAME and ROMs===<br />
<br />
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.)<br />
<br />
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.<br />
<br />
===Slot options (extension hardware)===<br />
[[File:MESS with Dobbertin Smart Watch.png|thumb|upright=1.4||MAME with the Dobbertin Smart Watch ROM loaded (-exp smartwatch)]]<br />
[[File:Brunword mame.png|thumb|upright=1.4||BrunWord MK4 (ROM) main menu in MAME 0.162 (-exp brunword4)]]<br />
<br />
You can get a list of slot options with<br />
<br />
mame cpc6128 -lslot<br />
<br />
These are (as of MAME 0.168):<br />
<br />
*for "-centronics"<br />
{|class="wikitable"<br />
|-<br />
|pl80 <br />
|COMX PL-80<br />
|-<br />
|ex800 <br />
|Epson EX-800<br />
|-<br />
|lx800 <br />
|Epson LX-800<br />
|-<br />
|lx810l <br />
|Epson LX-810L<br />
|-<br />
|ap2000 <br />
|Epson ActionPrinter 2000<br />
|-<br />
|printer <br />
|Centronics Printer<br />
|-<br />
|digiblst <br />
|[[Digiblaster]] (DIY)<br />
|}<br />
<br />
*for "-exp"<br />
{|class="wikitable"<br />
|-<br />
|ssa1 <br />
|[[Amstrad SSA-1 Speech Synthesizer]]<br />
|-<br />
|dkspeech <br />
|[[Dk'tronics Speech Synthesizer]]<br />
|-<br />
|rom <br />
|ROM Box<br />
|-<br />
|multiface2 <br />
|[[Multiface II]]<br />
|-<br />
|pds <br />
|[[PDS development system|Programmers Development System (CPC Target)]]<br />
|-<br />
|rs232 <br />
|Pace RS232C interface<br />
|-<br />
|amsrs232 <br />
|[[Original Amstrad RS232 interface|Amstrad RS232C interface]]<br />
|-<br />
|sf2 <br />
|[[SYMBiFACE II]]<br />
|-<br />
|amdrum <br />
|[[Amdrum]]<br />
|-<br />
|playcity <br />
|[[PlayCity]]<br />
|-<br />
|smartwatch <br />
|[[Dobbertin Smart Watch]]<br />
|-<br />
|brunword4<br />
|[[BrunWord]] Elite MK4<br />
|-<br />
|hd20<br />
|[[Dobbertin Harddisc]]<br />
|-<br />
|doubler<br />
|[[Draysoft Doubler]]<br />
|-<br />
|transtape<br />
|HM [[Transtape]]<br />
|}<br />
<br />
===Loading external ROMs===<br />
<br />
The ROM Box expansion can be used to load external ROMs such as [[MAXAM]]:<br />
<br />
mame cpc6128 -exp rom -rom1 /path/to/MAXAM.ROM<br />
<br />
Up to 8 external ROMs (-rom1 to -rom8) are supported this way.<br />
<br />
===[[Dobbertin Harddisc]]===<br />
<br />
From the [http://www.cpcwiki.eu/forum/emulators/got-bored-again/msg102272/#msg102272 forum post]:<br />
<br />
To use, add -exp hd20 to the commandline, which will also allow you to add -hard <filename>.<br />
Code:<br />
<br />
mame cpc6128 -exp hd20 -hard1 disk.chd<br />
<br />
Only MAME CHDs are supported, you can create a blank hard disk image using chdman. Geometry is 615/4/17.<br />
Code:<br />
<br />
chdman createhd -o disk.chd -c none -chs 615,4,17<br />
<br />
(-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)<br />
<br />
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.<br />
<br />
See http://mahlemiut.marpirc.net/cpc_hd20.avi, a quick demo loading a game from HD.<br />
<br />
==CRT simulation==<br />
[[File:Cpc shader mess.png|thumb|GLSL shader example (Linux)]]<br />
[[File:Cpc hlsl shader mess detail.png|thumb|HLSL "1980s" shader (Windows); MAME config used is on image description page]]<br />
MAME can use shaders to simulate typical CRT graphics artifacts such as scanlines, colors bleeding into each other, jitter, and display curvature.<br />
<br />
Some example configurations:<br />
*Windows (using HLSL shaders)<br />
**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)<br />
**A German shader tutorial: [http://www.aep-emu.de/PNphpBB2-file-viewtopic-p-94168.html]<br />
*Linux (using GLSL shaders): MAME tutorial [http://www.mameau.com/mame-glsl-shaders-setup/]<br />
<br />
==Remaining issues with CPC emulation==<br />
<br />
*MAME may fail to read DSK images with certain kinds of copy protection. Speedlock seems to work fine though.<br />
*MAME cannot write to disc images in DSK format; only MFI (MESS floppy image) and MFM (HxCFloppyEmulator floppy image) are supported for writing.<br />
*Some demo tricks may be broken in MAME, e.g. overscan pictures are horizontally misaligned (i.e., shifted to the right).<br />
*CPC+/GX4000 emulation still has some obvious graphics glitches.<br />
*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.<br />
<br />
==Compiling to JavaScript==<br />
<br />
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.<br />
<br />
==Links==<br />
<br />
*{{EnWiki}}<br />
*[http://mamedev.org/ Official site]<br />
*[http://www.mess.org/mess:howto MESS user's manual]<br />
*[[Media:CPC_ROMs_for_MAME.zip|CPC ROMs for MAME]]<br />
<br />
[[Category:Emulator]]</div>Mornhttps://www.cpcwiki.eu/index.php?title=JSMESS&diff=94858JSMESS2015-12-28T16:40:39Z<p>Morn: </p>
<hr />
<div>[[File:Jsmess in Chromium.png|thumb|upright=1.3|JSMESS emulating a CPC6128 in Chromium 30 on Linux (with copious debug messages)]]<br />
[[File:Jsmess firefox zoomed.png|thumb|upright=1.3|JSMESS in Firefox 24 (same rendering resolution but using page zoom to enlarge the CPC screen)]]<br />
'''JSMESS''' ("JavaScript MESS") was an ongoing JavaScript port of MESS (now simply called [[MAME]] as of 0.162) for modern web browsers like Chrome and Firefox. JSMESS is used by the Internet Archive to make their Historical Software Collection playable in web browsers.<br />
<br />
Since MAME 0.168 (released in November 2015), JSMESS is no longer necessary as MAME can compile to JavaScript (using Emscripten's emmake command) out of the box.[http://mamedev.org/releases/whatsnew_0168.txt]<br />
<br />
==History and development roadmap==<br />
<br />
The JSMESS project was originally proposed in a [http://ascii.textfiles.com/archives/3375 October 2011 blog post] by Jason Scott (of [http://www.textfiles.com/ textfiles.com], the [http://www.archiveteam.org/ Archive Team], and [http://archive.org/ The Internet Archive]). The idea was to have a system for preservation of old computers and game consoles that runs directly in the web browser without any plugins.<br />
<br />
Initial progress was slow because the Emscripten transcompiler had to be fixed and improved during development. In 2013, JSMESS reached a fairly usable state and was declared to be in public beta.<br />
<br />
Ideally JSMESS should later also have snapshot capabilities so if e.g. a certain feature is discussed on a web page, JSMESS can take you directly to that point in the game.<br />
<br />
Also, keymapping and a virtual keyboard on the screen are planned for JSMESS, although in principle you should already be able to create keymaps in MESS and use them with JSMESS.<br />
<br />
JSMESS development is headed toward its 1.0 release. The [https://github.com/jsmess/jsmess/wiki/JSMESS-v1.0-Systems list of systems] that are supposed to be officially supported by 1.0 also includes the CPC464/664/6128 (although the printer is erroneously listed as the program medium for the CPC).<br />
<br />
==Building from source==<br />
<br />
Unlike a normal port (that is translated only once), the JSMESS code is created by Emscripten directly from the MESS code every time you compile JSMESS. In the official version of JSMESS only a small selection of MESS machines can be compiled to JavaScript out of the box. Since compiling MESS in its entirety would create a JavaScript file that is far too big for web browsers to handle, one has to find out which parts of MESS are really needed for a given machine and create Makefiles with that subset. (JSMESS now also includes scripts that automate this task.)<br />
<br />
It is recommended to build JSMESS modules on Linux which also makes it easier to install the dependencies for Emscripten. The basis for JSMESS is MESS 0.142 and a custom version of Emscripten.<br />
<br />
A [https://github.com/mdoege/jsmess JSMESS fork] that includes the necessary Makefiles to build the CPC6128 version exists.<br />
<br />
==Features and status==<br />
<br />
As of October 2013, sound only works in Firefox and not in Chrome/Chromium. Emulation speed in Firefox is better than in Chrome, presumably because Firefox has better support for Emscripten's asm.js-based JS code. Internet Explorer 10 was supposedly supported very well by earlier versions of JSMESS with up to [https://github.com/jsmess/jsmess/wiki/Status 100% emulation performance] (including working sound) but the current JSMESS exits with an Emscripten error in IE 10.<br />
<br />
The joystick is mapped to Alt and the arrow keys by default. The development version of JSMESS at archive.org also has support for USB gamepads but no sound.<br />
<br />
==Usage on web pages and CPC6128 demo page==<br />
<br />
Right now the way to get JSMESS running on a page is to edit the top of messloader.js so that <tt>gamename</tt> points to a DSK file for drive A.<br />
<br />
Also, you need to provide the zipped ROM file. Note that the ROM file cpc6128.zip as on the demo page below also needs to contain the AMSDOS ROM from cpc464.zip because unlike regular MESS, JSMESS only loads a single ROM ZIP file per machine.<br />
<br />
This [http://mdoege.github.io/jsmess/ JSMESS CPC demo page] (with the ''[[Sub Hunter]]'' disc in drive A) also has a ZIP file download of the build with the JS, ZIPs, and HTML. Resolution is set to MODE 1 (384x272), but you can either set a higher resolution in messloader.js or use the zoom functionality of the browser to get a larger picture.<br />
<br />
==Links==<br />
;General info<br />
*[https://github.com/jsmess/jsmess Official site]<br />
*[http://archive.org/details/internetarchivecelebration20131024?start=2544 Video of Jason Scott presenting JSMESS and the Historical Software Collection] at the Internet Archive<br />
*[http://archiveteam.org/index.php?title=Javascript_Mess Archive Team wiki page] about JSMESS<br />
*[http://en.wikipedia.org/wiki/Jason_Scott_Sadofsky Jason Scott], initiator of the project, at Wikipedia<br />
;Code<br />
*[https://github.com/jsmess/jsmess GitHub source code repository] (without any CPC makefiles right now)<br />
*[https://github.com/mdoege/jsmess GitHub fork] with added CPC6128 makefiles<br />
;Demos<br />
*[http://mdoege.github.io/jsmess/ CPC6128/Sub Hunter demo page]<br />
*[https://archive.org/details/consolelivingroom The Console Living Room] at the Internet Archive<br />
<br />
[[Category:Emulator]]</div>Mornhttps://www.cpcwiki.eu/index.php?title=Emulators&diff=94834Emulators2015-12-16T13:00:38Z<p>Morn: /* Operating Systems */</p>
<hr />
<div>= Operating Systems =<br />
<br />
== Acorn RISC OS ==<br />
<br />
{| class="wikitable sortable" style="width:100%"<br />
! Name<br />
! Actual version<br />
! Last release<br />
! Emulated systems<br />
! License<br />
! Link<br />
|-<br />
| [[!CPC|!CPC]]<br />
| <br />
| Jul 28, 1996<br />
| [[CPC old generation|CPC range]]<br />
| Freeware<br />
| [ftp://ftp.lip6.fr/pub/amstrad/emulator/CPC0728.ZIP]<br />
|-<br />
| [[!CPCemu|!CPCemu]]<br />
| 1.10<br />
| Jun 4, 1997<br />
| [[CPC old generation|CPC range]]<br />
| Freeware<br />
| [ftp://ftp.lip6.fr/pub/amstrad/emulator/CPCEM110.ZIP]<br />
|}<br />
<br />
== AmigaOS ==<br />
<br />
{| class="wikitable sortable" style="width:100%"<br />
! Name<br />
! Actual version<br />
! Last release<br />
! Emulated systems<br />
! License<br />
! Link<br />
|-<br />
| [[A-CPC|A-CPC]]<br />
| 2.0<br />
| Apr 10, 1996<br />
| [[CPC old generation|CPC range]], [[Plus|Plus range]]<br />
| Shareware<br />
| [ftp://ftp.lip6.fr/pub/amstrad/emulator/ACPCDE20.LHA]<br />
|-<br />
| [[Ami-CPC|Ami-CPC]]<br />
| 0.46<br />
| Jan 21, 1998<br />
| [[CPC old generation|CPC range]]<br />
| Open source<br />
| [http://deplanque.chez.com/]<br />
|-<br />
| [[Arnold|Arnold]]<br />
| 1.15<br />
| Dec 17, 2012<br />
| [[CPC old generation|CPC range]], [[Plus|Plus range]], [[KC Compact]]<br />
| Open source<br />
| [http://hirudov.com/amiga/Arnold.php]<br />
|-<br />
| [[CPE|CPE]]<br />
| <br />
| Feb 24, 1995<br />
| [[CPC old generation|CPC range]]<br />
| Open source<br />
| [ftp://ftp.lip6.fr/pub/amstrad/emulator/ACPE_NEW.LHA]<br />
|-<br />
| [[Emu-CPC|Emu-CPC]]<br />
| 0.7<br />
| Sep 15, 1996<br />
| [[CPC old generation|CPC range]]<br />
| Freeware<br />
| [ftp://ftp.lip6.fr/pub/amstrad/emulator/EMUCPC07.LZX]<br />
|-<br />
| [[MESS|SDLMESS]]<br />
| 0.146u4<br />
| Aug 19, 2012<br />
| [[CPC old generation|CPC range]], [[Plus|Plus range]], [[KC Compact]], [[Aleste 520EX]] & lots of other computer systems<br />
| Open source<br />
| [http://se.os4depot.net/index.php?function=showfile&file=emulation/computer/sdl_mess.lha]<br />
|}<br />
<br />
== AMSDOS ==<br />
<br />
{| class="wikitable sortable" style="width:100%"<br />
! Name<br />
! Actual version<br />
! Last release<br />
! Emulated systems<br />
! License<br />
! Link<br />
|-<br />
| [[Pac-Man|Pac-Man]]<br />
| 1.1<br />
| Jun 5, 2014<br />
| [[Pac-Man arcade|Pac-Man Arcade]]<br />
| Open source<br />
| [http://www.cpcwiki.eu/forum/games/speed-up-patch-for-pac-man-emulator-for-cpc-by-syx-toto/msg81222/#msg81222]<br />
|-<br />
| [[ZXM|ZXM]]<br />
| <br />
| <br />
| [[ZX Spectrum|ZX Spectrum]]<br />
| <br />
| [ftp://ftp.nvg.unit.no/pub/cpc/misc/zxm.zip]<br />
|}<br />
<br />
== DOS ==<br />
<br />
{| class="wikitable sortable" style="width:100%"<br />
! Name<br />
! Actual version<br />
! Last release<br />
! Emulated systems<br />
! License<br />
! Link<br />
|-<br />
| [[Arnimedes|Arnimedes]] <br />
| 0.8a<br />
| Apr 15, 2000<br />
| [[CPC old generation|CPC range]]<br />
| Freeware<br />
| [http://www.arnimedes.de/]<br />
|-<br />
| [[CPCE|CPCE]] <br />
| 1.94<br />
| Jun 2, 2011<br />
| [[CPC old generation|CPC range]]<br />
| Freeware<br />
| [http://cngsoft.no-ip.org/cpce/]<br />
|-<br />
| [[CPCemu|CPCemu]] <br />
| 1.5<br />
| Jul 7, 1998<br />
| [[CPC old generation|CPC range]]<br />
| Freeware<br />
| [http://www.cpc-emu.org/]<br />
|-<br />
| [[NO$CPC|NO$CPC]]<br />
| 1.8<br />
| Nov 2, 2000<br />
| [[CPC old generation|CPC range]], [[Plus|Plus range]]<br />
| Freeware<br />
| [http://problemkaputt.de/cpc.htm]<br />
|-<br />
| [[CPCEMU (RWCPC)|RWCPC]]<br />
| <br />
| Mar 23, 1995<br />
| [[CPC old generation|CPC range]]<br />
| Freeware<br />
| [ftp://ftp.lip6.fr/pub/amstrad/emulator/RWCPC.ZIP]<br />
|-<br />
| [[SIMCPC|SIMCPC]]<br />
| <br />
| 1990<br />
| [[CPC old generation|CPC range]]<br />
| Shareware<br />
| [ftp://ftp.lip6.fr/pub/amstrad/emulator/SIMCPC.ZIP]<br />
|}<br />
<br />
== EXOS ==<br />
<br />
{| class="wikitable sortable" style="width:100%"<br />
! Name<br />
! Actual version<br />
! Last release<br />
! Emulated systems<br />
! License<br />
! Link<br />
|-<br />
| [[Software CPC Emulator|Software CPC Emulator]] <br />
| 1.3<br />
| Jan 11, 2013<br />
| [[CPC old generation|CPC range]]<br />
| Open source<br />
| [http://www.ep128.hu/Ep_Util/Prg/Amstrad_CPC_Emulator_13.rar]<br />
|}<br />
<br />
== Java / JVM ==<br />
<br />
{| class="wikitable sortable" style="width:100%"<br />
! Name<br />
! Actual version<br />
! Last release<br />
! Emulated systems<br />
! License<br />
! Link<br />
|-<br />
| [[Arnold Jnr|Arnold Jnr]]<br />
| <br />
| Aug 27, 2001<br />
| [[CPC old generation|CPC range]]<br />
| Open source<br />
| [http://www.arnoldemu.freeserve.co.uk/]<br />
|-<br />
| [[CPCInAJar|CPCInAJar]]<br />
|<br />
| Mar 16, 2011<br />
| [[CPC old generation|CPC range]]<br />
| Open source<br />
| [http://sourceforge.net/projects/cpcinajar/]<br />
|-<br />
| [[JavaCPC|JavaCPC Desktop]]<br />
| 2.9m<br />
| Jul 11, 2015<br />
| [[CPC old generation|CPC range]], [[KC Compact]]<br />
| Donationware<br />
| [http://cpc-live.com/download.php?view.2]<br />
|-<br />
| [[JavaCPC|JavaCPC Applet]]<br />
| <br />
| Jul 10, 2012<br />
| [[CPC old generation|CPC range]], [[Plus|Plus range]]<br />
| Donationware<br />
| [http://java.cpc-live.com/]<br />
|-<br />
| [[JavaGX4000|JavaGX4000]]<br />
| <br />
| Aug 25, 2013<br />
| [[CPC old generation|CPC range]], [[Plus|Plus range]]<br />
| Open source<br />
| [http://sourceforge.net/projects/javagx4000/]<br />
|-<br />
| [[JEMU|JEMU]]<br />
| <br />
| Feb 19, 2007<br />
| [[CPC old generation|CPC range]], [[BBC Micro]], [[VZ-300]], [[ZX Spectrum]], [[ZX80]], [[ZX81]]<br />
| Open source<br />
| [http://jemu.winape.net/]<br />
|-<br />
| [[JKCEMU|JKCEMU]]<br />
| 0.9.3<br />
| Dec 17, 2013<br />
| [[KC Compact]] & other computers from East Germany<br />
| Open source<br />
| [http://www.jens-mueller.org/jkcemu/kccompact.html]<br />
|-<br />
| [[WebCPC|WebCPC]]<br />
| r15<br />
| Dec 31, 2010<br />
| [[CPC old generation|CPC range]]<br />
| Open source<br />
| [http://sourceforge.net/projects/webcpc/]<br />
|}<br />
<br />
== JavaScript / HTML5 ==<br />
<br />
{| class="wikitable sortable" style="width:100%"<br />
|-<br />
! Name <br />
! Actual version <br />
! Last release <br />
! Emulated systems <br />
! License <br />
! Link<br />
|-<br />
| [[CPCBox|CPCBox]] <br />
| beta <br />
| Dec 28, 2013<br />
| [[CPC old generation|CPC range]] <br />
| Freeware <br />
| [http://www.cpcbox.com/]<br />
|-<br />
| [[JSMESS]] <br />
| 0.153<br />
| Oct 29, 2014<br />
| [[CPC old generation|CPC range]] & lots of other computer systems<br />
| Open source<br />
| [http://jsmess.textfiles.com/]<br />
|-<br />
| [[Roland javascript emulator|Roland]] <br />
| <br />
| Sep 24, 2011 <br />
| [[CPC old generation|CPC range]] <br />
| Open source <br />
| [http://roland.retrolandia.net/]<br />
|-<br />
| [[Griffin CPC emulator|Xiragon]]<br />
| <br />
| Nov 28, 2012<br />
| [[CPC old generation|CPC range]]<br />
| Open source<br />
| [http://xiragon.com/]<br />
|}<br />
<br />
== MorphOS ==<br />
<br />
{| class="wikitable sortable" style="width:100%"<br />
! Name<br />
! Actual version<br />
! Last release<br />
! Emulated systems<br />
! License<br />
! Link<br />
|-<br />
| [[ACE_(Emulator)|ACE]]<br />
| 1.11<br />
| Sep 28, 2015<br />
| [[CPC old generation|CPC range]], [[Plus|Plus range]]<br />
| Freeware<br />
| [http://ace.cpcscene.net/]<br />
|-<br />
| [[MESS|MESS]]<br />
| 0.113<br />
| Nov 1, 2007<br />
| [[CPC old generation|CPC range]], [[Plus|Plus range]], [[KC Compact]], [[Aleste 520EX]] & lots of other computer systems<br />
| Open source<br />
| [http://fabportnawak.free.fr/mame/]<br />
|}<br />
<br />
== OS X ==<br />
<br />
{| class="wikitable sortable" style="width:100%"<br />
! Name<br />
! Actual version<br />
! Last release<br />
! Emulated systems<br />
! License<br />
! Link<br />
|-<br />
| [[Arnold_(Emulator)|Arnold]] <br />
| 1.7.8<br />
| <br />
| [[CPC old generation|CPC range]], [[Plus|Plus range]], [[KC Compact]]<br />
| Open source<br />
| [http://www.bannister.org/software/arnold.htm]<br />
|-<br />
| [[CPCplusplus|CPC++]]<br />
| 2.0.0<br />
| Jan 14, 2003<br />
| [[CPC old generation|CPC range]]<br />
| Shareware<br />
| [http://bricerive.free.fr/cpc/cpcpp.html]<br />
|-<br />
| [[DSP|DSP]]<br />
| 0.16<br />
| Oct 29, 2015<br />
| [[CPC old generation|CPC range]], [[ZX Spectrum]], [[Nintendo NES]], [[ColecoVision]], [[Arcade]]<br />
| Open source<br />
| [https://github.com/leniad/dsp-emulator/]<br />
|-<br />
| [[MacCPC|MacCPC]]<br />
| 0.9.2<br />
| Jan 22, 2010<br />
| [[CPC old generation|CPC range]]<br />
| Freeware<br />
| [http://www.wincpc.ch/index.php?topic=projects-maccpc]<br />
|-<br />
| [[MESS|MAME (MESS)]]<br />
| 0.168<br />
| Nov 25, 2015<br />
| [[CPC old generation|CPC range]], [[Plus|Plus range]], [[KC Compact]], [[Aleste 520EX]] & lots of other computer systems<br />
| Open source<br />
| [http://wiki.mamedev.org/index.php/SDL_Supported_Platforms]<br />
|}<br />
<br />
== Unix / Linux ==<br />
<br />
{| class="wikitable sortable" style="width:100%"<br />
! Name<br />
! Actual version<br />
! Last release<br />
! Emulated systems<br />
! License<br />
! Link<br />
|-<br />
| [[Arnold_(Emulator)|Arnold]] <br />
| <br />
| Mar 17, 2009<br />
| [[CPC old generation|CPC range]], [[Plus|Plus range]], [[KC Compact]]<br />
| Open source<br />
| [http://arnold.berlios.de/]<br />
|-<br />
| [[CaPriCe|CaPriCe]] <br />
| 4.2.0<br />
| May 14, 2005<br />
| [[CPC old generation|CPC range]]<br />
| Open source<br />
| [http://sourceforge.net/projects/caprice32/]<br />
|-<br />
| [[Caprice Reloaded]]<br />
| r377<br />
| Jul 13, 2010<br />
| [[CPC old generation|CPC range]]<br />
| Open source<br />
| [http://aur.archlinux.org/packages.php?ID=38856]<br />
|-<br />
| [[CPCplusplus|CPC++]]<br />
| 1.5.0<br />
| <br />
| [[CPC old generation|CPC range]]<br />
| Shareware<br />
| [http://bricerive.free.fr/cpc/cpcpp.html]<br />
|-<br />
| [[cpc4x|cpc4x]] <br />
| 0.26<br />
| Dec 11, 2004<br />
| [[CPC old generation|CPC range]]<br />
| Open source<br />
| [http://www.ulrich-cordes.de/cpc/english/cpcemu.htm]<br />
|-<br />
| [[CPCemu|CPCemu]] <br />
| 1.7<br />
| Dec 6, 2009<br />
| [[CPC old generation|CPC range]]<br />
| Freeware<br />
| [http://www.cpc-emu.org/]<br />
|-<br />
| [[DSP|DSP]]<br />
| 0.16<br />
| Oct 29, 2015<br />
| [[CPC old generation|CPC range]], [[ZX Spectrum]], [[Nintendo NES]], [[ColecoVision]], [[Arcade]]<br />
| Open source<br />
| [https://github.com/leniad/dsp-emulator/]<br />
|-<br />
| [[ep128emu|ep128emu]]<br />
| 2.0.9.1<br />
| Jan 3, 2011<br />
| [[CPC old generation|CPC range]], [[ZX Spectrum]], [[Enterprise]]<br />
| Open source<br />
| [http://sourceforge.net/projects/ep128emu/]<br />
|-<br />
| [[MESS|MAME (MESS)]]<br />
| 0.168<br />
| Nov 25, 2015<br />
| [[CPC old generation|CPC range]], [[Plus|Plus range]], [[KC Compact]], [[Aleste 520EX]] & lots of other computer systems<br />
| Open source<br />
| [http://wiki.mamedev.org/index.php/SDL_Supported_Platforms]<br />
|-<br />
| [[Roland Emulator|Roland]] <br />
| 0.5b2<br />
| Jan 5, 2009<br />
| [[CPC old generation|CPC range]]<br />
| Open source<br />
| [http://cpcrulez.fr/emulateurs_download-WIN-ROLANDEMU.htm]<br />
|-<br />
| [[XCPC|Xcpc]]<br />
| <br />
| Jan 22, 2007<br />
| [[CPC old generation|CPC range]]<br />
| Open source<br />
| [http://xcpc.sourceforge.net/]<br />
|-<br />
| [[YACE|YACE]]<br />
| Unreleased?<br />
| Nov 12, 2014<br />
| [[CPC old generation|CPC range]]<br />
| Unreleased?<br />
| [http://www.youtube.com/watch?v=uxQkljwc0i4]<br />
|}<br />
<br />
== Windows ==<br />
<br />
{| class="wikitable sortable" style="width:100%"<br />
! Name<br />
! Actual version<br />
! Last release<br />
! Emulated systems<br />
! License<br />
! Link<br />
|-<br />
| [[Arnimedes|Arnimedes]] <br />
| 1.02<br />
| Jul 7, 2012<br />
| [[CPC old generation|CPC range]]<br />
| Freeware<br />
| [http://www.arnimedes.de/]<br />
|-<br />
| [[Arnold_(Emulator)|Arnold]] <br />
| <br />
| Jan 11, 2004<br />
| [[CPC old generation|CPC range]], [[Plus|Plus range]], [[KC Compact]]<br />
| Open source<br />
| [http://arnold.emuunlim.com/]<br />
|-<br />
| [[CaPriCe|CaPriCe]] <br />
| 4.2.0<br />
| May 14, 2005<br />
| [[CPC old generation|CPC range]]<br />
| Open source<br />
| [http://sourceforge.net/projects/caprice32/]<br />
|-<br />
| [[Caprice Reloaded]]<br />
| r533<br />
| Sep 25, 2011<br />
| [[CPC old generation|CPC range]]<br />
| Open source<br />
| [http://code.google.com/p/cpcsdk/]<br />
|-<br />
| [[Caprice32-Aleste|Caprice32-Aleste]] <br />
| 4.1.0<br />
| Nov 14, 2007<br />
| [[Aleste 520EX|Aleste 520EX]]<br />
| Open source<br />
| [http://aleste520.narod.ru/caprice.html]<br />
|-<br />
| [[CoPaCabana|CoPaCabana]]<br />
| 0.74<br />
| Apr 12, 2006<br />
| [[CPC old generation|CPC range]]<br />
| Freeware<br />
| [http://copacabana.emuunlim.com/]<br />
|-<br />
| [[CPC-em|CPC-em]] <br />
| 0.4<br />
| Jul 7, 2004<br />
| [[CPC old generation|CPC range]]<br />
| Open source<br />
| [http://cpc-em.emuunlim.com/]<br />
|-<br />
| [[CPC++|CPC++]] <br />
| b700<br />
| Mar 26, 2014<br />
| [[CPC old generation|CPC range]]<br />
| Freeware<br />
| [http://cpcrulez.fr/emulateurs_download-WIN-CPC_plus_plus.htm]<br />
|-<br />
| [[CPC3D/CPC32]] <br />
| 0.3<br />
| Feb 8, 2003<br />
| [[CPC old generation|CPC range]]<br />
| Freeware<br />
| [http://www.angelfire.com/retro2/cpc3d/]<br />
|-<br />
| [[CpcAlive|CpcAlive]] <br />
| 1.16<br />
| Dec 16, 2014<br />
| [[CPC old generation|CPC range]]<br />
| Freeware<br />
| [http://www.cpcalive.com/cpcalive_en.html]<br />
|-<br />
| [[CPCE|CPCE]] <br />
| 1.94<br />
| Jun 2, 2011<br />
| [[CPC old generation|CPC range]]<br />
| Freeware<br />
| [http://cngsoft.no-ip.org/cpce/]<br />
|-<br />
| [[CPCemu|CPCemu]] <br />
| 1.7<br />
| Dec 6, 2009<br />
| [[CPC old generation|CPC range]]<br />
| Freeware<br />
| [http://www.cpc-emu.org/]<br />
|-<br />
| [[CPCwin|CPCwin]] <br />
| 1.0<br />
| Dec 4, 1997<br />
| [[CPC old generation|CPC range]]<br />
| Freeware<br />
| [ftp://ftp.lip6.fr/pub/amstrad/emulator/CPCWIN10.ZIP]<br />
|-<br />
| [[CPE|CPE]]<br />
| 5.2<br />
| Apr 21, 1997<br />
| [[CPC old generation|CPC range]]<br />
| Freeware<br />
| [ftp://ftp.lip6.fr/pub/amstrad/emulator/CPE52.ZIP]<br />
|-<br />
| [[DSP|DSP]]<br />
| 0.16<br />
| Oct 29, 2015<br />
| [[CPC old generation|CPC range]], [[ZX Spectrum]], [[Nintendo NES]], [[ColecoVision]], [[Arcade]]<br />
| Open source<br />
| [https://github.com/leniad/dsp-emulator/]<br />
|-<br />
| [[ep128emu|ep128emu]]<br />
| 2.0.9.1<br />
| Jan 3, 2011<br />
| [[CPC old generation|CPC range]], [[ZX Spectrum]], [[Enterprise]]<br />
| Open source<br />
| [http://sourceforge.net/projects/ep128emu/]<br />
|-<br />
| [[MESS|MAME (MESS)]]<br />
| 0.168<br />
| Nov 25, 2015<br />
| [[CPC old generation|CPC range]], [[Plus|Plus range]], [[KC Compact]], [[Aleste 520EX]] & lots of other computer systems<br />
| Open source<br />
| [http://mamedev.org/release.html]<br />
|-<br />
| [[MTMW|MTMW]]<br />
| 1.30B<br />
| Jan 11, 2000<br />
| [[CPC old generation|CPC range]], [[Plus|Plus range]], [[ZX Spectrum]], [[ZX80]], [[ZX81]], [[Jupiter ACE]], [[Enterprise]]<br />
| Freeware<br />
| [ftp://ftp.lip6.fr/pub/amstrad/emulator/MTMW130B.ZIP]<br />
|-<br />
| [[NO$CPC|NO$CPC]]<br />
| 1.8<br />
| Nov 2, 2000<br />
| [[CPC old generation|CPC range]], [[Plus|Plus range]]<br />
| Freeware<br />
| [http://problemkaputt.de/cpc.htm]<br />
|-<br />
| [[PC-CPC|PC-CPC]] <br />
| 0.1at b29<br />
| Nov 17, 2011<br />
| [[CPC old generation|CPC range]]<br />
| Freeware<br />
| [http://cpcrulez.fr/emulateurs_download-WIN-PC-CPC.htm]<br />
|-<br />
| [[Roland Emulator|Roland]] <br />
| 0.5b2<br />
| Jan 5, 2009<br />
| [[CPC old generation|CPC range]]<br />
| Open source<br />
| [http://cpcrulez.fr/emulateurs_download-WIN-ROLANDEMU.htm]<br />
|-<br />
| [[Sugarbox|Sugarbox]]<br />
| 0.25<br />
| Oct 16, 2015<br />
| [[CPC old generation|CPC range]]<br />
| Freeware<br />
| [http://sugarbox.free.fr/]<br />
|-<br />
| [[vbCPC|vbCPC]] <br />
| 1.06<br />
| Apr 7, 2005<br />
| [[CPC old generation|CPC range]]<br />
| Freeware<br />
| [http://www.emu-france.com/news/9609-ordi-vbcpc-v1-0-6/]<br />
|-<br />
| [[VirtualCPC|Virtual CPC]] <br />
| 1.1<br />
| Aug 8, 2011<br />
| [[CPC old generation|CPC range]]<br />
| Freeware<br />
| [http://users.otenet.gr/~sulfonic/cpc/]<br />
|-<br />
| [[WinApe|WinAPE]] <br />
| 2.0b1<br />
| Nov 26, 2015<br />
| [[CPC old generation|CPC range]], [[Plus|Plus range]]<br />
| Freeware<br />
| [http://www.winape.net/]<br />
|-<br />
| [[WinCPC|WinCPC]] <br />
| 0.9.26<br />
| Feb 1, 2007<br />
| [[CPC old generation|CPC range]]<br />
| Freeware<br />
| [http://www.wincpc.ch/index.php?topic=projects-wincpc]<br />
|-<br />
| [[XNACPC|XNACPC]]<br />
| 1.0<br />
| Nov 11, 2011<br />
| [[CPC old generation|CPC range]]<br />
| Open source<br />
| [http://www.gavpugh.com/2011/11/11/xnacpc-xbox-360-amstrad-cpc-emulator-released/]<br />
|-<br />
| [[Yage|Yage]]<br />
| 0.91<br />
| Oct 24, 1998<br />
| [[CPC old generation|CPC range]]<br />
| Freeware<br />
| [ftp://ftp.lip6.fr/pub/amstrad/emulator/YAGE091.ZIP]<br />
|}<br />
<br />
== Multi-system ==<br />
<br />
{| class="wikitable sortable" style="width:100%"<br />
! Name<br />
! Actual version<br />
! Last release<br />
! Emulated systems<br />
! License<br />
! Link<br />
|-<br />
| RetroArch (libretro-cap32)<br />
| 1.2.2<br />
| Jul 19, 2015<br />
| [[CPC old generation|CPC range]]<br />
| Open source<br />
| [https://github.com/libretro/libretro-cap32] (libretro core)<br />
|}<br />
<br />
= Home Consoles =<br />
<br />
== Microsoft XBOX ==<br />
<br />
{| class="wikitable sortable" style="width:100%"<br />
! Name<br />
! Actual version<br />
! Last release<br />
! Emulated systems<br />
! License<br />
! Link<br />
|-<br />
| [[Arnold|ArnoldX]]<br />
| v5<br />
| Apr 20, 2010<br />
| [[CPC old generation|CPC range]], [[Plus|Plus range]]<br />
| <br />
| [http://forums.xbox-scene.com/index.php?showtopic=711667]<br />
|-<br />
| [[CoinOPS|CoinOPS]]<br />
| 5<br />
| Oct 18, 2012<br />
| [[CPC old generation|CPC range]] & lots of other computer systems<br />
| <br />
| [http://coinopsproject.freeforums.org/viewtopic.php?f=0&t=1213]<br />
|}<br />
<br />
== Microsoft Xbox 360 ==<br />
<br />
{| class="wikitable sortable" style="width:100%"<br />
! Name<br />
! Actual version<br />
! Last release<br />
! Emulated systems<br />
! License<br />
! Link<br />
|-<br />
| [[XNACPC|XNACPC]]<br />
| 1.0<br />
| Nov 11, 2011<br />
| [[CPC old generation|CPC range]]<br />
| Open source<br />
| [http://www.gavpugh.com/2011/11/11/xnacpc-xbox-360-amstrad-cpc-emulator-released/]<br />
|}<br />
<br />
== Nintendo Wii ==<br />
<br />
{| class="wikitable sortable" style="width:100%"<br />
! Name<br />
! Actual version<br />
! Last release<br />
! Emulated systems<br />
! License<br />
! Link<br />
|-<br />
| [[Wiituka|Wiituka]]<br />
| 0.98.8<br />
| May 15, 2009<br />
| [[CPC old generation|CPC range]]<br />
| Open source<br />
| [http://wiituka.dantoine.org/]<br />
|}<br />
<br />
== Sega Dreamcast ==<br />
<br />
{| class="wikitable sortable" style="width:100%"<br />
! Name<br />
! Actual version<br />
! Last release<br />
! Emulated systems<br />
! License<br />
! Link<br />
|-<br />
| [[CPCast|CPCast]]<br />
| <br />
| May 6, 2006<br />
| [[CPC old generation|CPC range]]<br />
| Freeware<br />
| [http://www.dcemu.co.uk/vbulletin/showthread.php?t=24100]<br />
|-<br />
| [[DreamCPC|DreamCPC]]<br />
| Alpha 3<br />
| Oct 16, 2005<br />
| [[CPC old generation|CPC range]]<br />
| Freeware<br />
| [http://jm1200.free.fr/index.php?r=2]<br />
|}<br />
<br />
== Sony PS2 ==<br />
<br />
{| class="wikitable sortable" style="width:100%"<br />
! Name<br />
! Actual version<br />
! Last release<br />
! Emulated systems<br />
! License<br />
! Link<br />
|-<br />
| [[PCPC|PCPC]]<br />
| <br />
| Dec 22, 2004<br />
| [[CPC old generation|CPC range]]<br />
| Open source<br />
| [http://ps2emu.dcemu.co.uk/pcpc.shtml]<br />
|}<br />
<br />
== Sony PS3 ==<br />
<br />
{| class="wikitable sortable" style="width:100%"<br />
! Name<br />
! Actual version<br />
! Last release<br />
! Emulated systems<br />
! License<br />
! Link<br />
|-<br />
| [[Caprice32|Caprice32]]<br />
| 4.1.0 DBG<br />
| Apr 9, 2012<br />
| [[CPC old generation|CPC range]]<br />
| Open source<br />
| [http://psx-scene.com/forums/content/caprice32-4-1-0-dbg-emulator-ps3-2119/]<br />
|}<br />
<br />
= Handheld Consoles =<br />
<br />
== Dingoo A320 / A330 ==<br />
<br />
{| class="wikitable sortable" style="width:100%"<br />
! Name<br />
! Actual version<br />
! Last release<br />
! Emulated systems<br />
! License<br />
! Link<br />
|-<br />
| [[Pituka|Pituka (Dingux)]]<br />
| 0.8pre<br />
| Aug 19, 2010<br />
| [[CPC old generation|CPC range]]<br />
| Open source<br />
| [http://david.dantoine.org/proyecto/4/]<br />
|-<br />
| [[Caprice|Dingux-CAP32]]<br />
| 1.1.2<br />
| Oct 17, 2009<br />
| [[CPC old generation|CPC range]]<br />
| Open source<br />
| [http://zx81.zx81.free.fr/serendipity/index.php?/categories/105-Amstrad/]<br />
|}<br />
<br />
== GamePark GP32 / GP2X / Wiz / Caanoo ==<br />
<br />
{| class="wikitable sortable" style="width:100%"<br />
! Name<br />
! Actual version<br />
! Last release<br />
! Emulated systems<br />
! License<br />
! Link<br />
|-<br />
| [[Pituka|Pituka (GP32)]]<br />
| 1d<br />
| May 15, 2010<br />
| [[CPC old generation|CPC range]]<br />
| Open source<br />
| [http://david.dantoine.org/proyecto/4/]<br />
|-<br />
| [[Caprice|CapriceGP2x]]<br />
| 0.5<br />
| Feb 22, 2006<br />
| [[CPC old generation|CPC range]]<br />
| Open source<br />
| [http://wiki.gp2x.org/wiki/CapriceGP2x]<br />
|-<br />
| [[Caprice|GP2X-CAP32]]<br />
| 1.5.1<br />
| Aug 29, 2009<br />
| [[CPC old generation|CPC range]]<br />
| Open source<br />
| [http://zx81.zx81.free.fr/serendipity/index.php?/categories/42-Amstrad/]<br />
|-<br />
| [[Caprice|Wiz-CAP32]]<br />
| 1.1.0<br />
| Aug 29, 2009<br />
| [[CPC old generation|CPC range]]<br />
| Open source<br />
| [http://zx81.zx81.free.fr/serendipity/index.php?/categories/89-Amstrad/]<br />
|-<br />
| [[Caprice|Caanoo-CAP32]]<br />
| 1.1.3<br />
| Apr 24, 2011<br />
| [[CPC old generation|CPC range]]<br />
| Open source<br />
| [http://zx81.zx81.free.fr/serendipity/index.php?/categories/165-Amstrad/]<br />
|}<br />
<br />
== GCW Zero ==<br />
<br />
{| class="wikitable sortable" style="width:100%"<br />
! Name<br />
! Actual version<br />
! Last release<br />
! Emulated systems<br />
! License<br />
! Link<br />
|-<br />
| [[Caprice|Dingux-CAP32]]<br />
| 1.1.2<br />
| May 25, 2014<br />
| [[CPC old generation|CPC range]]<br />
| Open source<br />
| [http://boards.dingoonity.org/gcw-releases/caprice32-%28amstrad-cpc%29/]<br />
|}<br />
<br />
== JXD S5110 / S601 & Yinlips G18 ==<br />
<br />
{| class="wikitable sortable" style="width:100%"<br />
! Name<br />
! Actual version<br />
! Last release<br />
! Emulated systems<br />
! License<br />
! Link<br />
|-<br />
| [[Caprice|JXD-CAP32]]<br />
| 1.1.1<br />
| Oct 27, 2012<br />
| [[CPC old generation|CPC range]]<br />
| Open source<br />
| [http://zx81.zx81.free.fr/serendipity/index.php?/categories/206-Amstrad/]<br />
|}<br />
<br />
== Nintendo DS ==<br />
<br />
{| class="wikitable sortable" style="width:100%"<br />
! Name<br />
! Actual version<br />
! Last release<br />
! Emulated systems<br />
! License<br />
! Link<br />
|-<br />
| [[AmeDS|AmeDS]] <br />
| 4.0<br />
| Apr 25, 2010<br />
| [[CPC old generation|CPC range]]<br />
| Freeware<br />
| [http://www.portabledev.com/pages/ds/jeuxdev.-perso/ameds.php]<br />
|-<br />
| [[CrocoDS|CrocoDS]]<br />
| 2.0<br />
| Nov 9, 2007<br />
| [[CPC old generation|CPC range]]<br />
| Freeware<br />
| [http://www.kyuran.be/blog/2007/11/09/crocods-20-2/]<br />
|}<br />
<br />
== Pandora ==<br />
<br />
{| class="wikitable sortable" style="width:100%"<br />
! Name<br />
! Actual version<br />
! Last release<br />
! Emulated systems<br />
! License<br />
! Link<br />
|-<br />
| [[Caprice|Pandora-CAP32]]<br />
| 1.1.0<br />
| Jun 27, 2010<br />
| [[CPC old generation|CPC range]]<br />
| Open source<br />
| [http://zx81.zx81.free.fr/serendipity/index.php?/categories/131-Amstrad/]<br />
|}<br />
<br />
== Sony PSP ==<br />
<br />
{| class="wikitable sortable" style="width:100%"<br />
! Name<br />
! Actual version<br />
! Last release<br />
! Emulated systems<br />
! License<br />
! Link<br />
|-<br />
| [[Caprice32 PSP]]<br />
| 4.2.0.2<br />
| Nov 28, 2007<br />
| [[CPC old generation|CPC range]]<br />
| Open source<br />
| [http://psp.akop.org/caprice32]<br />
|-<br />
| [[CPCPSP|CPCPSP]]<br />
| 0.1<br />
| Dec 24, 2005<br />
| [[CPC old generation|CPC range]]<br />
| Freeware<br />
| [http://dl.qj.net/psp/emulators/cpcpsp-v01.html]<br />
|-<br />
| [[PSPCAP32|PSPCAP32]]<br />
| 1.5.1<br />
| Aug 21, 2009<br />
| [[CPC old generation|CPC range]]<br />
| Open source<br />
| [http://zx81.zx81.free.fr/serendipity/index.php?/categories/3-Amstrad/]<br />
|}<br />
<br />
= Smartphones / PDA / SoC =<br />
<br />
== Android ==<br />
<br />
{| class="wikitable sortable" style="width:100%"<br />
! Name<br />
! Actual version<br />
! Last release<br />
! Emulated systems<br />
! License<br />
! Link<br />
|-<br />
| [[andcpc]]<br />
| 1.5.1<br />
| Apr 4, 2011<br />
| [[CPC old generation|CPC range]]<br />
| Open source<br />
| [http://code.google.com/p/andcpc/]<br />
|-<br />
| [[CPCDroid]]<br />
| 1.5.1<br />
| Mar 2, 2011<br />
| [[CPC old generation|CPC range]]<br />
| Open source<br />
| [http://fmsdevel.wisecoding.es/blog/cpcdroid---2011-03-02]<br />
|-<br />
| [[Droid-CPC]]<br />
| 1.01.3<br />
| Oct 12, 2014<br />
| [[CPC old generation|CPC range]]<br />
| Commercial<br />
| [http://play.google.com/store/apps/details?id=com.kokak.droidcpc]<br />
|}<br />
<br />
== BlackBerry ==<br />
<br />
{| class="wikitable sortable" style="width:100%"<br />
! Name<br />
! Actual version<br />
! Last release<br />
! Emulated systems<br />
! License<br />
! Link<br />
|-<br />
| [[BB-CPC|BB-CPC]]<br />
| 1.0.1.3<br />
| Jul 15, 2013<br />
| [[CPC old generation|CPC range]]<br />
| Commercial<br />
| [http://appworld.blackberry.com/webstore/content/30963891/]<br />
|}<br />
<br />
== iOS ==<br />
<br />
{| class="wikitable sortable" style="width:100%"<br />
! Name<br />
! Actual version<br />
! Last release<br />
! Emulated systems<br />
! License<br />
! Link<br />
|-<br />
| [[CrocoDS]]<br />
| 2.1<br />
| Jun 21, 2013<br />
| [[CPC old generation|CPC range]]<br />
| Open source<br />
| [http://github.com/redbug26/crocods]<br />
|}<br />
<br />
== Maemo ==<br />
<br />
{| class="wikitable sortable" style="width:100%"<br />
! Name<br />
! Actual version<br />
! Last release<br />
! Emulated systems<br />
! License<br />
! Link<br />
|-<br />
| [[CPCm]]<br />
| 1.20-1<br />
| Apr 27, 2010<br />
| [[CPC old generation|CPC range]]<br />
| Open source<br />
| [http://maemo.org/downloads/product/Maemo5/cpcm/]<br />
|}<br />
<br />
== Palm OS ==<br />
<br />
{| class="wikitable sortable" style="width:100%"<br />
! Name<br />
! Actual version<br />
! Last release<br />
! Emulated systems<br />
! License<br />
! Link<br />
|-<br />
| [[CaPriCe for Palm OS|CaPriCe for Palm OS]]<br />
| 2.8<br />
| Jun 28, 2011<br />
| [[CPC old generation|CPC range]]<br />
| Open source<br />
| [http://frederic.coste.pagesperso-orange.fr/cpc/cpc_en.htm]<br />
|-<br />
| [[CoPaCabana|CoPaCabana]]<br />
| 0.75<br />
| Dec 4, 2007<br />
| [[CPC old generation|CPC range]]<br />
| Freeware<br />
| [http://copacabana.emuunlim.com/]<br />
|}<br />
<br />
== Pocket PC ==<br />
<br />
{| class="wikitable sortable" style="width:100%"<br />
! Name<br />
! Actual version<br />
! Last release<br />
! Emulated systems<br />
! License<br />
! Link<br />
|-<br />
| [[CaPriCe|PocketCaprice]]<br />
| 0.9<br />
| Aug 19, 2007<br />
| [[CPC old generation|CPC range]]<br />
| Freeware<br />
| [http://www.clubic.com/telecharger-fiche44888-pocketcaprice.html]<br />
|}<br />
<br />
== Raspberry Pi ==<br />
<br />
{| class="wikitable sortable" style="width:100%"<br />
! Name<br />
! Actual version<br />
! Last release<br />
! Emulated systems<br />
! License<br />
! Link<br />
|-<br />
| [[CPC4Rpi|#CPC4Rpi]]<br />
| 1.1<br />
| Dec 19, 2013<br />
| [[CPC old generation|CPC range]]<br />
| Open source<br />
| [http://store.raspberrypi.com/projects/cpc4rpi]<br />
|-<br />
| [[CapriceRPI|CapriceRPI]]<br />
| 1.0<br />
| Aug 4, 2015<br />
| [[CPC old generation|CPC range]]<br />
| Open source<br />
| [https://github.com/KaosOverride/CapriceRPI]<br />
|}<br />
<br />
== Symbian ==<br />
<br />
{| class="wikitable sortable" style="width:100%"<br />
! Name<br />
! Actual version<br />
! Last release<br />
! Emulated systems<br />
! License<br />
! Link<br />
|-<br />
| [[S60-CPC|S60-CPC]]<br />
| 0.74<br />
| Feb 21, 2006<br />
| [[CPC old generation|CPC range]]<br />
| Open source<br />
| [http://kokak.free.fr/s60cpc.htm]<br />
|}<br />
<br />
= Hardware =<br />
<br />
*[[CPC TREX|CPC TREX]] TurboCPC core running on a terasIC T-Rex C1 FPGA board<br />
*[[C-ONE|CPC-ONE]] TurboCPC core running on the C-One FPGA board<br />
*[http://ralferoo.blogspot.fr/ CPC FPGA] CPC emulation running on a custom made FPGA board<br />
*[[FPGAmstrad|FPGAmstrad]] CPC emulation running on a NEXYS2 FPGA board<br />
*[https://code.google.com/p/mist-board/ MIST board] FPGA board implementing Amstrad CPC and various other 8-bit and 16-bit computers<br />
<br />
= Emulation Tools =<br />
<br />
*[[ConvImgCPC|ConvImgCPC]] <br />
*[[CPCDiskXP|CPCDiskXP]] <br />
*[[CPCGamesCD-CPCLoader|CPCGamesCD-CPCLoader]] <br />
*[[CPCTapeXP|CPCTapeXP]] <br />
*[[CPRTools|CPRTools]] <br />
*[[Dsktools|Dsktools]] <br />
*[[ManageDSK|ManageDSK]] <br />
*[[WriteDSK|WriteDSK]]<br />
<br />
= Emulator Detection =<br />
<br />
*[[Emulator_IDs|Emulator IDs]]<br />
<br />
[[Category:Emulator| ]]</div>Mornhttps://www.cpcwiki.eu/index.php?title=File:CPC_ROMs_for_MAME.zip&diff=94792File:CPC ROMs for MAME.zip2015-12-14T11:32:37Z<p>Morn: </p>
<hr />
<div>CPC ROMs for the MAME emulator. Just unzip and put in the ROM folder.</div>Mornhttps://www.cpcwiki.eu/index.php?title=File:CPC_ROMs_for_MAME.zip&diff=94791File:CPC ROMs for MAME.zip2015-12-14T11:32:22Z<p>Morn: Morn uploaded a new version of File:CPC ROMs for MAME.zip</p>
<hr />
<div>CPC ROMs for the MESS emulator. Just unzip and put in the ROM folder.</div>Mornhttps://www.cpcwiki.eu/index.php?title=MAME&diff=94788MAME2015-12-14T11:27:10Z<p>Morn: /* Slot options (extension hardware) */</p>
<hr />
<div>[[File:Mess sysinfo.png|thumb|upright=.9|The MAME system info box for the CPC6128]]<br />
[[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]]''.]]<br />
'''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.<br />
<br />
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.<br />
<br />
==Emulated systems==<br />
<br />
Currently, [http://www.progettoemma.net/mess/sysset.php 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).<br />
<br />
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.<br />
<br />
==Installation==<br />
<br />
MAME runs on Windows, Mac OS X, Linux, and FreeBSD. You can get Windows binaries from [http://mamedev.org/release.html mamedev.org].<br />
<br />
On OS X, you can install MAME via [http://brew.sh/ Homebrew]:<br />
brew tap homebrew/games<br />
brew install mame<br />
<br />
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:<br />
alias mame=/usr/share/sdlmame/sdlmame<br />
<br />
==Starting MAME; command line arguments; MAME menu; quitting==<br />
[[File:MAME menu CPC.png|thumb|upright|The MAME menu]]<br />
First get the [[Media:CPC_ROMs_for_MAME.zip|CPC ROMs for MAME]] and unzip them into the MAME roms folder.<br />
<br />
Typical command line to start MAME in CPC mode (windowed mode and with a disc inserted in drive A):<br />
mame cpc6128 -skip_gameinfo -window -flop1 disk.dsk<br />
<br />
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).<br />
<br />
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.<br />
<br />
You can use the "-ab" commandline option to type text into MAME, e.g.<br />
mame cpc6128 -flop1 disk.dsk -ab "run\"disc\n"<br />
will boot the disc.<br />
<br />
===Device options for the CPC from [http://www.progettoemma.net/mess/extra.html sysinfo.dat]===<br />
{|class="wikitable"<br />
|'''Name'''<br />
|'''Argument'''<br />
|'''Allowed file extensions'''<br />
|-<br />
|Printer<br />
| -prin<br />
|.prn<br />
|-<br />
|Snapshot<br />
| -dump<br />
|.sna<br />
|-<br />
|Disk drive A<br />
| -flop1<br />
|rowspan="2"|.dsk; .d77; .d88; .1dd; .dfi; .imd; .ipf; .mfi; .mfm<br />
|-<br />
|Disk drive B<br />
| -flop2<br />
|-<br />
|Tape<br />
| -cass<br />
|.wav; .cdt<br />
|-<br />
|Cartridge<br />
| -cart<br />
|.cpr; .bin (Plus series and GX4000 only)<br />
|}<br />
<br />
Supported file types can also be shown with the "-listmedia" command line option.<br />
<br />
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.<br />
mame cpc6128 -flop1 disk.zip/disk0.dsk<br />
<br />
===Python script to start MAME in CPC mode===<br />
On Linux, you can also set your file manager (e.g. Nautilus or Konqueror) to open .dsk files with the following Python script:<br />
<pre><br />
#!/usr/bin/env python<br />
<br />
# Call as<br />
# "cpc" : emulated keyboard<br />
# "cpcn" : natural<br />
<br />
import os, os.path, zipfile<br />
from sys import argv<br />
<br />
if 'cpcn' in argv[0]:<br />
nat = '-natural'<br />
else:<br />
nat = ''<br />
<br />
s = "/usr/share/sdlmame/sdlmame cpc6128 -skip_gameinfo -window %s -keymap -keymap_file /usr/share/sdlmame/keymaps/km-de.txt" % nat<br />
<br />
def checkzip(t):<br />
"Check if file is a ZIP file; use the first file in the archive"<br />
if t[-4:].lower() == '.zip':<br />
a = zipfile.ZipFile(t).namelist()<br />
t = os.path.join(t, a[0])<br />
return t<br />
<br />
if len(argv) > 1:<br />
for x in range(1, len(argv)):<br />
s += ' -flop%u "%s"' % (x, checkzip(argv[x]))<br />
os.system(s)<br />
</pre><br />
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.<br />
<br />
==GUI front-ends==<br />
[[File:Mameui.png|thumb|MAMEUI64 on Windows]]<br />
[[File:Messmenu.png|thumb|MessMenu on OS X with a CPC ROM selected. Currently, seven different CPC models are supported, including some regional variants (French and Swedish).]]<br />
<br />
Various GUI front-ends for MAME/MESS exist for Windows, Linux, and OS X:<br />
<br />
*[http://www.mameui.info/ MAMEUI64] (Windows)<br />
*[http://qmc2.arcadehits.net/ QMC2] (Windows, OS X, Linux)<br />
<br />
==Keyboard layouts==<br />
<br />
MAME supports two keyboard modes:<br />
* '''emulated''' (the default; keys are assigned based on key position on the emulated hardware)<br />
* '''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)<br />
<br />
To use a German keyboard in emulated keyboard mode, start MAME e.g. with (key map path on Linux):<br />
mame cpc6128 -keymap -keymap_file /usr/share/sdlmame/keymaps/km-de.txt<br />
<br />
You can also put these settings in your mame.ini like this:<br />
keymap 1<br />
keymap_file /usr/share/sdlmame/keymaps/km-de.txt<br />
<br />
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.<br />
<br />
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.<br />
<br />
==CPC artwork==<br />
[[File:MAME with CPC artwork.png|thumb|MAME window with monitor type set to green and optional CPC artwork]]<br />
You can add optional bezel artwork to MAME to simulate a CPC monitor:<br />
*[[Media:Cpc6128 mame artwork.zip|MAME artwork]] (CPC6128/GT65 bezel)<br />
<br />
Rename this file to cpc6128.zip and put it in MAME's artwork folder (~/.mame/artwork/ on Linux).<br />
<br />
==ROMs and extension hardware==<br />
<br />
[[Media:CPC_ROMs_for_MAME.zip|CPC ROMs for MAME]]. Just unzip the file and move the ZIPs inside into the MAME ROM folder.<br />
<br />
===General notes about MAME and ROMs===<br />
<br />
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.)<br />
<br />
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.<br />
<br />
===Slot options (extension hardware)===<br />
[[File:MESS with Dobbertin Smart Watch.png|thumb|upright=1.4||MAME with the Dobbertin Smart Watch ROM loaded (-exp smartwatch)]]<br />
[[File:Brunword mame.png|thumb|upright=1.4||BrunWord MK4 (ROM) main menu in MAME 0.162 (-exp brunword4)]]<br />
<br />
You can get a list of slot options with<br />
<br />
mame cpc6128 -lslot<br />
<br />
These are (as of MAME 0.168):<br />
<br />
*for "-centronics"<br />
{|class="wikitable"<br />
|-<br />
|pl80 <br />
|COMX PL-80<br />
|-<br />
|ex800 <br />
|Epson EX-800<br />
|-<br />
|lx800 <br />
|Epson LX-800<br />
|-<br />
|lx810l <br />
|Epson LX-810L<br />
|-<br />
|ap2000 <br />
|Epson ActionPrinter 2000<br />
|-<br />
|printer <br />
|Centronics Printer<br />
|-<br />
|digiblst <br />
|[[Digiblaster]] (DIY)<br />
|}<br />
<br />
*for "-exp"<br />
{|class="wikitable"<br />
|-<br />
|ssa1 <br />
|[[Amstrad SSA-1 Speech Synthesizer]]<br />
|-<br />
|dkspeech <br />
|[[Dk'tronics Speech Synthesizer]]<br />
|-<br />
|rom <br />
|ROM Box<br />
|-<br />
|multiface2 <br />
|[[Multiface II]]<br />
|-<br />
|pds <br />
|[[PDS development system|Programmers Development System (CPC Target)]]<br />
|-<br />
|rs232 <br />
|Pace RS232C interface<br />
|-<br />
|amsrs232 <br />
|[[Original Amstrad RS232 interface|Amstrad RS232C interface]]<br />
|-<br />
|sf2 <br />
|[[SYMBiFACE II]]<br />
|-<br />
|amdrum <br />
|[[Amdrum]]<br />
|-<br />
|playcity <br />
|[[PlayCity]]<br />
|-<br />
|smartwatch <br />
|[[Dobbertin Smart Watch]]<br />
|-<br />
|brunword4<br />
|[[BrunWord]] Elite MK4<br />
|-<br />
|hd20<br />
|[[Dobbertin Harddisc]]<br />
|-<br />
|doubler<br />
|[[Draysoft Doubler]]<br />
|-<br />
|transtape<br />
|HM [[Transtape]]<br />
|}<br />
<br />
===Loading external ROMs===<br />
<br />
The ROM Box expansion can be used to load external ROMs such as [[MAXAM]]:<br />
<br />
mame cpc6128 -exp rom -rom1 /path/to/MAXAM.ROM<br />
<br />
Up to 8 external ROMs (-rom1 to -rom8) are supported this way.<br />
<br />
===[[Dobbertin Harddisc]]===<br />
<br />
From the [http://www.cpcwiki.eu/forum/emulators/got-bored-again/msg102272/#msg102272 forum post]:<br />
<br />
To use, add -exp hd20 to the commandline, which will also allow you to add -hard <filename>.<br />
Code:<br />
<br />
mame cpc6128 -exp hd20 -hard1 disk.chd<br />
<br />
Only MAME CHDs are supported, you can create a blank hard disk image using chdman. Geometry is 615/4/17.<br />
Code:<br />
<br />
chdman createhd -o disk.chd -c none -chs 615,4,17<br />
<br />
(-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)<br />
<br />
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.<br />
<br />
See http://mahlemiut.marpirc.net/cpc_hd20.avi, a quick demo loading a game from HD.<br />
<br />
==CRT simulation==<br />
[[File:Cpc shader mess.png|thumb|GLSL shader example (Linux)]]<br />
[[File:Cpc hlsl shader mess detail.png|thumb|HLSL "1980s" shader (Windows); MAME config used is on image description page]]<br />
MAME can use shaders to simulate typical CRT graphics artifacts such as scanlines, colors bleeding into each other, jitter, and display curvature.<br />
<br />
Some example configurations:<br />
*Windows (using HLSL shaders)<br />
**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)<br />
**A German shader tutorial: [http://www.aep-emu.de/PNphpBB2-file-viewtopic-p-94168.html]<br />
*Linux (using GLSL shaders): MAME tutorial [http://www.mameau.com/mame-glsl-shaders-setup/]<br />
<br />
==Remaining issues with CPC emulation==<br />
<br />
*MAME may fail to read DSK images with certain kinds of copy protection. Speedlock seems to work fine though.<br />
*MAME cannot write to disc images in DSK format; only MFI (MESS floppy image) and MFM (HxCFloppyEmulator floppy image) are supported for writing.<br />
*Some demo tricks may be broken in MAME, e.g. overscan pictures are horizontally misaligned (i.e., shifted to the right).<br />
*CPC+/GX4000 emulation still has some obvious graphics glitches.<br />
*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.<br />
<br />
==JSMESS, a JavaScript port==<br />
<br />
There is an experimental port of MAME/MESS to JavaScript, see the [[JSMESS]] article for details.<br />
<br />
==Links==<br />
<br />
*{{EnWiki}}<br />
*[http://mamedev.org/ Official site]<br />
*[http://www.mess.org/mess:howto MESS user's manual]<br />
*[[Media:CPC_ROMs_for_MAME.zip|CPC ROMs for MAME]]<br />
<br />
[[Category:Emulator]]</div>Mornhttps://www.cpcwiki.eu/index.php?title=MAME&diff=94505MAME2015-10-29T11:45:44Z<p>Morn: /* Slot options (extension hardware) */</p>
<hr />
<div>[[File:Mess sysinfo.png|thumb|upright=.9|The MAME system info box for the CPC6128]]<br />
[[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]]''.]]<br />
'''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.<br />
<br />
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.<br />
<br />
==Emulated systems==<br />
<br />
Currently, [http://www.progettoemma.net/mess/sysset.php 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).<br />
<br />
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.<br />
<br />
==Installation==<br />
<br />
MAME runs on Windows, Mac OS X, Linux, and FreeBSD. You can get Windows binaries from [http://mamedev.org/release.html mamedev.org].<br />
<br />
On OS X, you can install MAME via [http://brew.sh/ Homebrew]:<br />
brew tap homebrew/games<br />
brew install mame<br />
<br />
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:<br />
alias mame=/usr/share/sdlmame/sdlmame<br />
<br />
==Starting MAME; command line arguments; MAME menu; quitting==<br />
[[File:MAME menu CPC.png|thumb|upright|The MAME menu]]<br />
First get the [[Media:CPC_ROMs_for_MAME.zip|CPC ROMs for MAME]] and unzip them into the MAME roms folder.<br />
<br />
Typical command line to start MAME in CPC mode (windowed mode and with a disc inserted in drive A):<br />
mame cpc6128 -skip_gameinfo -window -flop1 disk.dsk<br />
<br />
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).<br />
<br />
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.<br />
<br />
You can use the "-ab" commandline option to type text into MAME, e.g.<br />
mame cpc6128 -flop1 disk.dsk -ab "run\"disc\n"<br />
will boot the disc.<br />
<br />
===Device options for the CPC from [http://www.progettoemma.net/mess/extra.html sysinfo.dat]===<br />
{|class="wikitable"<br />
|'''Name'''<br />
|'''Argument'''<br />
|'''Allowed file extensions'''<br />
|-<br />
|Printer<br />
| -prin<br />
|.prn<br />
|-<br />
|Snapshot<br />
| -dump<br />
|.sna<br />
|-<br />
|Disk drive A<br />
| -flop1<br />
|rowspan="2"|.dsk; .d77; .d88; .1dd; .dfi; .imd; .ipf; .mfi; .mfm<br />
|-<br />
|Disk drive B<br />
| -flop2<br />
|-<br />
|Tape<br />
| -cass<br />
|.wav; .cdt<br />
|-<br />
|Cartridge<br />
| -cart<br />
|.cpr; .bin (Plus series and GX4000 only)<br />
|}<br />
<br />
Supported file types can also be shown with the "-listmedia" command line option.<br />
<br />
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.<br />
mame cpc6128 -flop1 disk.zip/disk0.dsk<br />
<br />
===Python script to start MAME in CPC mode===<br />
On Linux, you can also set your file manager (e.g. Nautilus or Konqueror) to open .dsk files with the following Python script:<br />
<pre><br />
#!/usr/bin/env python<br />
<br />
# Call as<br />
# "cpc" : emulated keyboard<br />
# "cpcn" : natural<br />
<br />
import os, os.path, zipfile<br />
from sys import argv<br />
<br />
if 'cpcn' in argv[0]:<br />
nat = '-natural'<br />
else:<br />
nat = ''<br />
<br />
s = "/usr/share/sdlmame/sdlmame cpc6128 -skip_gameinfo -window %s -keymap -keymap_file /usr/share/sdlmame/keymaps/km-de.txt" % nat<br />
<br />
def checkzip(t):<br />
"Check if file is a ZIP file; use the first file in the archive"<br />
if t[-4:].lower() == '.zip':<br />
a = zipfile.ZipFile(t).namelist()<br />
t = os.path.join(t, a[0])<br />
return t<br />
<br />
if len(argv) > 1:<br />
for x in range(1, len(argv)):<br />
s += ' -flop%u "%s"' % (x, checkzip(argv[x]))<br />
os.system(s)<br />
</pre><br />
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.<br />
<br />
==GUI front-ends==<br />
[[File:Mameui.png|thumb|MAMEUI64 on Windows]]<br />
[[File:Messmenu.png|thumb|MessMenu on OS X with a CPC ROM selected. Currently, seven different CPC models are supported, including some regional variants (French and Swedish).]]<br />
<br />
Various GUI front-ends for MAME/MESS exist for Windows, Linux, and OS X:<br />
<br />
*[http://www.mameui.info/ MAMEUI64] (Windows)<br />
*[http://qmc2.arcadehits.net/ QMC2] (Windows, OS X, Linux)<br />
<br />
==Keyboard layouts==<br />
<br />
MAME supports two keyboard modes:<br />
* '''emulated''' (the default; keys are assigned based on key position on the emulated hardware)<br />
* '''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)<br />
<br />
To use a German keyboard in emulated keyboard mode, start MAME e.g. with (key map path on Linux):<br />
mame cpc6128 -keymap -keymap_file /usr/share/sdlmame/keymaps/km-de.txt<br />
<br />
You can also put these settings in your mame.ini like this:<br />
keymap 1<br />
keymap_file /usr/share/sdlmame/keymaps/km-de.txt<br />
<br />
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.<br />
<br />
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.<br />
<br />
==CPC artwork==<br />
[[File:MAME with CPC artwork.png|thumb|MAME window with monitor type set to green and optional CPC artwork]]<br />
You can add optional bezel artwork to MAME to simulate a CPC monitor:<br />
*[[Media:Cpc6128 mame artwork.zip|MAME artwork]] (CPC6128/GT65 bezel)<br />
<br />
Rename this file to cpc6128.zip and put it in MAME's artwork folder (~/.mame/artwork/ on Linux).<br />
<br />
==ROMs and extension hardware==<br />
<br />
[[Media:CPC_ROMs_for_MAME.zip|CPC ROMs for MAME]]. Just unzip the file and move the ZIPs inside into the MAME ROM folder.<br />
<br />
===General notes about MAME and ROMs===<br />
<br />
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.)<br />
<br />
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.<br />
<br />
===Slot options (extension hardware)===<br />
[[File:MESS with Dobbertin Smart Watch.png|thumb|upright=1.4||MAME with the Dobbertin Smart Watch ROM loaded (-exp smartwatch)]]<br />
[[File:Brunword mame.png|thumb|upright=1.4||BrunWord MK4 (ROM) main menu in MAME 0.162 (-exp brunword4)]]<br />
<br />
You can get a list of slot options with<br />
<br />
mame cpc6128 -lslot<br />
<br />
These are (as of MAME 0.167):<br />
<br />
*for "-centronics"<br />
{|class="wikitable"<br />
|-<br />
|pl80 <br />
|COMX PL-80<br />
|-<br />
|ex800 <br />
|Epson EX-800<br />
|-<br />
|lx800 <br />
|Epson LX-800<br />
|-<br />
|lx810l <br />
|Epson LX-810L<br />
|-<br />
|ap2000 <br />
|Epson ActionPrinter 2000<br />
|-<br />
|printer <br />
|Centronics Printer<br />
|-<br />
|digiblst <br />
|[[Digiblaster]] (DIY)<br />
|}<br />
<br />
*for "-exp"<br />
{|class="wikitable"<br />
|-<br />
|ssa1 <br />
|[[Amstrad SSA-1 Speech Synthesizer]]<br />
|-<br />
|dkspeech <br />
|[[Dk'tronics Speech Synthesizer]]<br />
|-<br />
|rom <br />
|ROM Box<br />
|-<br />
|multiface2 <br />
|[[Multiface II]]<br />
|-<br />
|pds <br />
|[[PDS development system|Programmers Development System (CPC Target)]]<br />
|-<br />
|rs232 <br />
|Pace RS232C interface<br />
|-<br />
|amsrs232 <br />
|[[Original Amstrad RS232 interface|Amstrad RS232C interface]]<br />
|-<br />
|sf2 <br />
|[[SYMBiFACE II]]<br />
|-<br />
|amdrum <br />
|[[Amdrum]]<br />
|-<br />
|playcity <br />
|[[PlayCity]]<br />
|-<br />
|smartwatch <br />
|[[Dobbertin Smart Watch]]<br />
|-<br />
|brunword4<br />
|[[BrunWord]] Elite MK4<br />
|-<br />
|hd20<br />
|[[Dobbertin Harddisc]]<br />
|-<br />
|doubler<br />
|[[Draysoft Doubler]]<br />
|}<br />
<br />
===Loading external ROMs===<br />
<br />
The ROM Box expansion can be used to load external ROMs such as [[MAXAM]]:<br />
<br />
mame cpc6128 -exp rom -rom1 /path/to/MAXAM.ROM<br />
<br />
Up to 8 external ROMs (-rom1 to -rom8) are supported this way.<br />
<br />
===[[Dobbertin Harddisc]]===<br />
<br />
From the [http://www.cpcwiki.eu/forum/emulators/got-bored-again/msg102272/#msg102272 forum post]:<br />
<br />
To use, add -exp hd20 to the commandline, which will also allow you to add -hard <filename>.<br />
Code:<br />
<br />
mame cpc6128 -exp hd20 -hard1 disk.chd<br />
<br />
Only MAME CHDs are supported, you can create a blank hard disk image using chdman. Geometry is 615/4/17.<br />
Code:<br />
<br />
chdman createhd -o disk.chd -c none -chs 615,4,17<br />
<br />
(-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)<br />
<br />
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.<br />
<br />
See http://mahlemiut.marpirc.net/cpc_hd20.avi, a quick demo loading a game from HD.<br />
<br />
==CRT simulation==<br />
[[File:Cpc shader mess.png|thumb|GLSL shader example (Linux)]]<br />
[[File:Cpc hlsl shader mess detail.png|thumb|HLSL "1980s" shader (Windows); MAME config used is on image description page]]<br />
MAME can use shaders to simulate typical CRT graphics artifacts such as scanlines, colors bleeding into each other, jitter, and display curvature.<br />
<br />
Some example configurations:<br />
*Windows (using HLSL shaders)<br />
**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)<br />
**A German shader tutorial: [http://www.aep-emu.de/PNphpBB2-file-viewtopic-p-94168.html]<br />
*Linux (using GLSL shaders): MAME tutorial [http://www.mameau.com/mame-glsl-shaders-setup/]<br />
<br />
==Remaining issues with CPC emulation==<br />
<br />
*MAME may fail to read DSK images with certain kinds of copy protection. Speedlock seems to work fine though.<br />
*MAME cannot write to disc images in DSK format; only MFI (MESS floppy image) and MFM (HxCFloppyEmulator floppy image) are supported for writing.<br />
*Some demo tricks may be broken in MAME, e.g. overscan pictures are horizontally misaligned (i.e., shifted to the right).<br />
*CPC+/GX4000 emulation still has some obvious graphics glitches.<br />
*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.<br />
<br />
==JSMESS, a JavaScript port==<br />
<br />
There is an experimental port of MAME/MESS to JavaScript, see the [[JSMESS]] article for details.<br />
<br />
==Links==<br />
<br />
*{{EnWiki}}<br />
*[http://mamedev.org/ Official site]<br />
*[http://www.mess.org/mess:howto MESS user's manual]<br />
*[[Media:CPC_ROMs_for_MAME.zip|CPC ROMs for MAME]]<br />
<br />
[[Category:Emulator]]</div>Mornhttps://www.cpcwiki.eu/index.php?title=Sensational_Games_for_the_Amstrad_CPC464&diff=94170Sensational Games for the Amstrad CPC4642015-09-13T11:44:06Z<p>Morn: </p>
<hr />
<div>[[Image:419px-Sensational Games for the Amstrad CPC 464.jpg|right|thumb|250px|Frontpage]]<br />
<br />
<br />
== Information ==<br />
{|{{Prettytable|width: 700px; font-size: 2em;}}<br />
<br />
|Title:|| '''Sensational Games for the Amstrad CPC 464'''<br />
|-<br />
|Authors:|| Jim Gregory<br />
|-<br />
|Publisher:|| [[Granada Publishing]]<br />
|-<br />
|Publisher:|| [[Collins]]<br />
|-<br />
|Year:|| 1984<br />
|-<br />
|Pages:|| 200<br />
|-<br />
|ISBN:|| '''0-246-12614-0''' ( on Granada Publishing )<br />
|-<br />
|ISBN:|| '''0-00-383121-3''' ( on Collins )<br />
|-<br />
|}<br />
<br />
== Contents ==<br />
<br />
<pre><br />
<br />
Preface.<br />
<br />
Introduction.<br />
<br />
Techniques used in the Programs.<br />
<br />
Subroutines.<br />
<br />
1. Text games.<br />
2. Classic games.<br />
3. Two-player games.<br />
4. Dice games.<br />
5. Card games.<br />
6. Mind games.<br />
7. Arcade style games.<br />
8. Educational games.<br />
9. Utility collection.<br />
<br />
Appendix 1: Complete Amstrad character codes.<br />
Appendix 2: Defined character design aid.<br />
Appendix 3: 20, 40 & 80-column screen layout planner.<br />
Appendix 4: Amstrad memory map.<br />
Appendix 5: Amstrad colour table.<br />
Appendix 6: Quick syntax checker.<br />
<br />
</pre><br />
<br />
==Download==<br />
<br />
*[http://forum.classic-computing.de/index.php?page=Thread&threadID=8221 PDF] (52 MB)<br />
<br />
[[Category:Books]] [[Category:Book cover]]</div>Mornhttps://www.cpcwiki.eu/index.php?title=Emulators&diff=93999Emulators2015-08-03T21:58:33Z<p>Morn: /* Operating Systems */</p>
<hr />
<div>= Operating Systems =<br />
<br />
== Acorn RISC OS ==<br />
<br />
{| class="wikitable sortable" style="width:100%"<br />
! Name<br />
! Actual version<br />
! Last release<br />
! Emulated systems<br />
! License<br />
! Link<br />
|-<br />
| [[!CPC|!CPC]]<br />
| <br />
| Jul 28, 1996<br />
| [[CPC old generation|CPC range]]<br />
| Freeware<br />
| [ftp://ftp.lip6.fr/pub/amstrad/emulator/CPC0728.ZIP]<br />
|-<br />
| [[!CPCemu|!CPCemu]]<br />
| 1.10<br />
| Jun 4, 1997<br />
| [[CPC old generation|CPC range]]<br />
| Freeware<br />
| [ftp://ftp.lip6.fr/pub/amstrad/emulator/CPCEM110.ZIP]<br />
|}<br />
<br />
== AmigaOS ==<br />
<br />
{| class="wikitable sortable" style="width:100%"<br />
! Name<br />
! Actual version<br />
! Last release<br />
! Emulated systems<br />
! License<br />
! Link<br />
|-<br />
| [[A-CPC|A-CPC]]<br />
| 2.0<br />
| Apr 10, 1996<br />
| [[CPC old generation|CPC range]], [[Plus|Plus range]]<br />
| Shareware<br />
| [ftp://ftp.lip6.fr/pub/amstrad/emulator/ACPCDE20.LHA]<br />
|-<br />
| [[Ami-CPC|Ami-CPC]]<br />
| 0.46<br />
| Jan 21, 1998<br />
| [[CPC old generation|CPC range]]<br />
| Open source<br />
| [http://deplanque.chez.com/]<br />
|-<br />
| [[Arnold|Arnold]]<br />
| 1.15<br />
| Dec 17, 2012<br />
| [[CPC old generation|CPC range]], [[Plus|Plus range]], [[KC Compact]]<br />
| Open source<br />
| [http://hirudov.com/amiga/Arnold.php]<br />
|-<br />
| [[CPE|CPE]]<br />
| <br />
| Feb 24, 1995<br />
| [[CPC old generation|CPC range]]<br />
| Open source<br />
| [ftp://ftp.lip6.fr/pub/amstrad/emulator/ACPE_NEW.LHA]<br />
|-<br />
| [[Emu-CPC|Emu-CPC]]<br />
| 0.7<br />
| Sep 15, 1996<br />
| [[CPC old generation|CPC range]]<br />
| Freeware<br />
| [ftp://ftp.lip6.fr/pub/amstrad/emulator/EMUCPC07.LZX]<br />
|-<br />
| [[MESS|SDLMESS]]<br />
| 0.146u4<br />
| Aug 19, 2012<br />
| [[CPC old generation|CPC range]], [[Plus|Plus range]], [[KC Compact]], [[Aleste 520EX]] & lots of other computer systems<br />
| Open source<br />
| [http://se.os4depot.net/index.php?function=showfile&file=emulation/computer/sdl_mess.lha]<br />
|}<br />
<br />
== AMSDOS ==<br />
<br />
{| class="wikitable sortable" style="width:100%"<br />
! Name<br />
! Actual version<br />
! Last release<br />
! Emulated systems<br />
! License<br />
! Link<br />
|-<br />
| [[Pac-Man|Pac-Man]]<br />
| 1.1<br />
| Jun 5, 2014<br />
| [[Pac-Man arcade|Pac-Man Arcade]]<br />
| Open source<br />
| [http://www.cpcwiki.eu/forum/games/speed-up-patch-for-pac-man-emulator-for-cpc-by-syx-toto/msg81222/#msg81222]<br />
|-<br />
| [[ZXM|ZXM]]<br />
| <br />
| <br />
| [[ZX Spectrum|ZX Spectrum]]<br />
| <br />
| [ftp://ftp.nvg.unit.no/pub/cpc/misc/zxm.zip]<br />
|}<br />
<br />
== DOS ==<br />
<br />
{| class="wikitable sortable" style="width:100%"<br />
! Name<br />
! Actual version<br />
! Last release<br />
! Emulated systems<br />
! License<br />
! Link<br />
|-<br />
| [[Arnimedes|Arnimedes]] <br />
| 0.8a<br />
| Apr 15, 2000<br />
| [[CPC old generation|CPC range]]<br />
| Freeware<br />
| [http://www.arnimedes.de/]<br />
|-<br />
| [[CPCE|CPCE]] <br />
| 1.94<br />
| Jun 2, 2011<br />
| [[CPC old generation|CPC range]]<br />
| Freeware<br />
| [http://cngsoft.no-ip.org/cpce/]<br />
|-<br />
| [[CPCemu|CPCemu]] <br />
| 1.5<br />
| Jul 7, 1998<br />
| [[CPC old generation|CPC range]]<br />
| Freeware<br />
| [http://www.cpc-emu.org/]<br />
|-<br />
| [[NO$CPC|NO$CPC]]<br />
| 1.8<br />
| Nov 2, 2000<br />
| [[CPC old generation|CPC range]], [[Plus|Plus range]]<br />
| Freeware<br />
| [http://problemkaputt.de/cpc.htm]<br />
|-<br />
| [[CPCEMU (RWCPC)|RWCPC]]<br />
| <br />
| Mar 23, 1995<br />
| [[CPC old generation|CPC range]]<br />
| Freeware<br />
| [ftp://ftp.lip6.fr/pub/amstrad/emulator/RWCPC.ZIP]<br />
|-<br />
| [[SIMCPC|SIMCPC]]<br />
| <br />
| 1990<br />
| [[CPC old generation|CPC range]]<br />
| Shareware<br />
| [ftp://ftp.lip6.fr/pub/amstrad/emulator/SIMCPC.ZIP]<br />
|}<br />
<br />
== EXOS ==<br />
<br />
{| class="wikitable sortable" style="width:100%"<br />
! Name<br />
! Actual version<br />
! Last release<br />
! Emulated systems<br />
! License<br />
! Link<br />
|-<br />
| [[Software CPC Emulator|Software CPC Emulator]] <br />
| 1.3<br />
| Jan 11, 2013<br />
| [[CPC old generation|CPC range]]<br />
| Open source<br />
| [http://www.ep128.hu/Ep_Util/Prg/Amstrad_CPC_Emulator_13.rar]<br />
|}<br />
<br />
== Java / JVM ==<br />
<br />
{| class="wikitable sortable" style="width:100%"<br />
! Name<br />
! Actual version<br />
! Last release<br />
! Emulated systems<br />
! License<br />
! Link<br />
|-<br />
| [[Arnold Jnr|Arnold Jnr]]<br />
| <br />
| Aug 27, 2001<br />
| [[CPC old generation|CPC range]]<br />
| Open source<br />
| [http://www.arnoldemu.freeserve.co.uk/]<br />
|-<br />
| [[CPCInAJar|CPCInAJar]]<br />
|<br />
| Mar 16, 2011<br />
| [[CPC old generation|CPC range]]<br />
| Open source<br />
| [http://sourceforge.net/projects/cpcinajar/]<br />
|-<br />
| [[JavaCPC|JavaCPC Desktop]]<br />
| 2.9m<br />
| Jul 11, 2015<br />
| [[CPC old generation|CPC range]], [[KC Compact]]<br />
| Donationware<br />
| [http://cpc-live.com/download.php?view.2]<br />
|-<br />
| [[JavaCPC|JavaCPC Applet]]<br />
| <br />
| Jul 10, 2012<br />
| [[CPC old generation|CPC range]], [[Plus|Plus range]]<br />
| Donationware<br />
| [http://java.cpc-live.com/]<br />
|-<br />
| [[JavaGX4000|JavaGX4000]]<br />
| <br />
| Aug 25, 2013<br />
| [[CPC old generation|CPC range]], [[Plus|Plus range]]<br />
| Open source<br />
| [http://sourceforge.net/projects/javagx4000/]<br />
|-<br />
| [[JEMU|JEMU]]<br />
| <br />
| Feb 19, 2007<br />
| [[CPC old generation|CPC range]], [[BBC Micro]], [[VZ-300]], [[ZX Spectrum]], [[ZX80]], [[ZX81]]<br />
| Open source<br />
| [http://jemu.winape.net/]<br />
|-<br />
| [[JKCEMU|JKCEMU]]<br />
| 0.9.3<br />
| Dec 17, 2013<br />
| [[KC Compact]] & other computers from East Germany<br />
| Open source<br />
| [http://www.jens-mueller.org/jkcemu/kccompact.html]<br />
|-<br />
| [[WebCPC|WebCPC]]<br />
| r15<br />
| Dec 31, 2010<br />
| [[CPC old generation|CPC range]]<br />
| Open source<br />
| [http://sourceforge.net/projects/webcpc/]<br />
|}<br />
<br />
== JavaScript / HTML5 ==<br />
<br />
{| class="wikitable sortable" style="width:100%"<br />
|-<br />
! Name <br />
! Actual version <br />
! Last release <br />
! Emulated systems <br />
! License <br />
! Link<br />
|-<br />
| [[CPCBox|CPCBox]] <br />
| beta <br />
| Dec 28, 2013<br />
| [[CPC old generation|CPC range]] <br />
| Freeware <br />
| [http://www.cpcbox.com/]<br />
|-<br />
| [[Griffin CPC emulator|Dan Griffin's CPC Emulator]]<br />
| <br />
| Nov 28, 2012<br />
| [[CPC old generation|CPC range]]<br />
| Open source<br />
| [http://xiragon.com/]<br />
|-<br />
| [[JSMESS]] <br />
| 0.142<br />
| Nov 3, 2013<br />
| [[CPC old generation|CPC range]] & lots of other computer systems<br />
| Open source<br />
| [http://jsmess.textfiles.com/]<br />
|-<br />
| [[Roland javascript emulator|Roland]] <br />
| <br />
| Sep 24, 2011 <br />
| [[CPC old generation|CPC range]] <br />
| Open source <br />
| [http://roland.retrolandia.net/]<br />
|}<br />
<br />
== MorphOS ==<br />
<br />
{| class="wikitable sortable" style="width:100%"<br />
! Name<br />
! Actual version<br />
! Last release<br />
! Emulated systems<br />
! License<br />
! Link<br />
|-<br />
| [[ACE_(Emulator)|ACE]]<br />
| 1.10<br />
| May 15, 2015<br />
| [[CPC old generation|CPC range]], [[Plus|Plus range]]<br />
| Freeware<br />
| [http://ace.cpcscene.net/]<br />
|-<br />
| [[MESS|MESS]]<br />
| 0.113<br />
| Nov 1, 2007<br />
| [[CPC old generation|CPC range]], [[Plus|Plus range]], [[KC Compact]], [[Aleste 520EX]] & lots of other computer systems<br />
| Open source<br />
| [http://fabportnawak.free.fr/mame/]<br />
|}<br />
<br />
== OS X ==<br />
<br />
{| class="wikitable sortable" style="width:100%"<br />
! Name<br />
! Actual version<br />
! Last release<br />
! Emulated systems<br />
! License<br />
! Link<br />
|-<br />
| [[Arnold_(Emulator)|Arnold]] <br />
| 1.7.8<br />
| <br />
| [[CPC old generation|CPC range]], [[Plus|Plus range]], [[KC Compact]]<br />
| Open source<br />
| [http://www.bannister.org/software/arnold.htm]<br />
|-<br />
| [[CPCplusplus|CPC++]]<br />
| 2.0.0<br />
| Jan 14, 2003<br />
| [[CPC old generation|CPC range]]<br />
| Shareware<br />
| [http://bricerive.free.fr/cpc/cpcpp.html]<br />
|-<br />
| [[DSP|DSP]]<br />
| 0.15b2<br />
| Feb 6, 2015<br />
| [[CPC old generation|CPC range]], [[ZX Spectrum]], [[Nintendo NES]], [[ColecoVision]], [[Arcade]]<br />
| Open source<br />
| [http://code.google.com/p/dsp-emulator/]<br />
|-<br />
| [[MacCPC|MacCPC]]<br />
| 0.9.2<br />
| Jan 22, 2010<br />
| [[CPC old generation|CPC range]]<br />
| Freeware<br />
| [http://www.wincpc.ch/index.php?topic=projects-maccpc]<br />
|-<br />
| [[MESS|MAME (MESS)]]<br />
| 0.164<br />
| Jul 29, 2015<br />
| [[CPC old generation|CPC range]], [[Plus|Plus range]], [[KC Compact]], [[Aleste 520EX]] & lots of other computer systems<br />
| Open source<br />
| [http://wiki.mamedev.org/index.php/SDL_Supported_Platforms]<br />
|}<br />
<br />
== Unix / Linux ==<br />
<br />
{| class="wikitable sortable" style="width:100%"<br />
! Name<br />
! Actual version<br />
! Last release<br />
! Emulated systems<br />
! License<br />
! Link<br />
|-<br />
| [[Arnold_(Emulator)|Arnold]] <br />
| <br />
| Mar 17, 2009<br />
| [[CPC old generation|CPC range]], [[Plus|Plus range]], [[KC Compact]]<br />
| Open source<br />
| [http://arnold.berlios.de/]<br />
|-<br />
| [[CaPriCe|CaPriCe]] <br />
| 4.2.0<br />
| May 14, 2005<br />
| [[CPC old generation|CPC range]]<br />
| Open source<br />
| [http://sourceforge.net/projects/caprice32/]<br />
|-<br />
| [[Caprice Reloaded]]<br />
| r377<br />
| Jul 13, 2010<br />
| [[CPC old generation|CPC range]]<br />
| Open source<br />
| [http://aur.archlinux.org/packages.php?ID=38856]<br />
|-<br />
| [[CPCplusplus|CPC++]]<br />
| 1.5.0<br />
| <br />
| [[CPC old generation|CPC range]]<br />
| Shareware<br />
| [http://bricerive.free.fr/cpc/cpcpp.html]<br />
|-<br />
| [[cpc4x|cpc4x]] <br />
| 0.26<br />
| Dec 11, 2004<br />
| [[CPC old generation|CPC range]]<br />
| Open source<br />
| [http://www.ulrich-cordes.de/cpc/english/cpcemu.htm]<br />
|-<br />
| [[CPCemu|CPCemu]] <br />
| 1.7<br />
| Dec 6, 2009<br />
| [[CPC old generation|CPC range]]<br />
| Freeware<br />
| [http://www.cpc-emu.org/]<br />
|-<br />
| [[DSP|DSP]]<br />
| 0.15b2<br />
| Feb 6, 2015<br />
| [[CPC old generation|CPC range]], [[ZX Spectrum]], [[Nintendo NES]], [[ColecoVision]], [[Arcade]]<br />
| Open source<br />
| [http://code.google.com/p/dsp-emulator/]<br />
|-<br />
| [[ep128emu|ep128emu]]<br />
| 2.0.9.1<br />
| Jan 3, 2011<br />
| [[CPC old generation|CPC range]], [[ZX Spectrum]], [[Enterprise]]<br />
| Open source<br />
| [http://sourceforge.net/projects/ep128emu/]<br />
|-<br />
| [[MESS|MAME (MESS)]]<br />
| 0.164<br />
| Jul 29, 2015<br />
| [[CPC old generation|CPC range]], [[Plus|Plus range]], [[KC Compact]], [[Aleste 520EX]] & lots of other computer systems<br />
| Open source<br />
| [http://wiki.mamedev.org/index.php/SDL_Supported_Platforms]<br />
|-<br />
| [[Roland Emulator|Roland]] <br />
| 0.5b2<br />
| Jan 5, 2009<br />
| [[CPC old generation|CPC range]]<br />
| Open source<br />
| [http://cpcrulez.fr/emulateurs_download-WIN-ROLANDEMU.htm]<br />
|-<br />
| [[XCPC|Xcpc]]<br />
| <br />
| Jan 22, 2007<br />
| [[CPC old generation|CPC range]]<br />
| Open source<br />
| [http://xcpc.sourceforge.net/]<br />
|-<br />
| [[YACE|YACE]]<br />
| Unreleased?<br />
| Nov 12, 2014<br />
| [[CPC old generation|CPC range]]<br />
| Unreleased?<br />
| [http://www.youtube.com/watch?v=uxQkljwc0i4]<br />
|}<br />
<br />
== Windows ==<br />
<br />
{| class="wikitable sortable" style="width:100%"<br />
! Name<br />
! Actual version<br />
! Last release<br />
! Emulated systems<br />
! License<br />
! Link<br />
|-<br />
| [[Arnimedes|Arnimedes]] <br />
| 1.02<br />
| Jul 7, 2012<br />
| [[CPC old generation|CPC range]]<br />
| Freeware<br />
| [http://www.arnimedes.de/]<br />
|-<br />
| [[Arnold_(Emulator)|Arnold]] <br />
| <br />
| Jan 11, 2004<br />
| [[CPC old generation|CPC range]], [[Plus|Plus range]], [[KC Compact]]<br />
| Open source<br />
| [http://arnold.emuunlim.com/]<br />
|-<br />
| [[CaPriCe|CaPriCe]] <br />
| 4.2.0<br />
| May 14, 2005<br />
| [[CPC old generation|CPC range]]<br />
| Open source<br />
| [http://sourceforge.net/projects/caprice32/]<br />
|-<br />
| [[Caprice Reloaded]]<br />
| r533<br />
| Sep 25, 2011<br />
| [[CPC old generation|CPC range]]<br />
| Open source<br />
| [http://code.google.com/p/cpcsdk/]<br />
|-<br />
| [[Caprice32-Aleste|Caprice32-Aleste]] <br />
| 4.1.0<br />
| Nov 14, 2007<br />
| [[Aleste 520EX|Aleste 520EX]]<br />
| Open source<br />
| [http://aleste520.narod.ru/caprice.html]<br />
|-<br />
| [[CoPaCabana|CoPaCabana]]<br />
| 0.74<br />
| Apr 12, 2006<br />
| [[CPC old generation|CPC range]]<br />
| Freeware<br />
| [http://copacabana.emuunlim.com/]<br />
|-<br />
| [[CPC-em|CPC-em]] <br />
| 0.4<br />
| Jul 7, 2004<br />
| [[CPC old generation|CPC range]]<br />
| Open source<br />
| [http://cpc-em.emuunlim.com/]<br />
|-<br />
| [[CPC++|CPC++]] <br />
| b700<br />
| Mar 26, 2014<br />
| [[CPC old generation|CPC range]]<br />
| Freeware<br />
| [http://cpcrulez.fr/emulateurs_download-WIN-CPC_plus_plus.htm]<br />
|-<br />
| [[CPC3D/CPC32]] <br />
| 0.3<br />
| Feb 8, 2003<br />
| [[CPC old generation|CPC range]]<br />
| Freeware<br />
| [http://www.angelfire.com/retro2/cpc3d/]<br />
|-<br />
| [[CpcAlive|CpcAlive]] <br />
| 1.16<br />
| Dec 16, 2014<br />
| [[CPC old generation|CPC range]]<br />
| Freeware<br />
| [http://www.cpcalive.com/cpcalive_en.html]<br />
|-<br />
| [[CPCE|CPCE]] <br />
| 1.94<br />
| Jun 2, 2011<br />
| [[CPC old generation|CPC range]]<br />
| Freeware<br />
| [http://cngsoft.no-ip.org/cpce/]<br />
|-<br />
| [[CPCemu|CPCemu]] <br />
| 1.7<br />
| Dec 6, 2009<br />
| [[CPC old generation|CPC range]]<br />
| Freeware<br />
| [http://www.cpc-emu.org/]<br />
|-<br />
| [[CPCwin|CPCwin]] <br />
| 1.0<br />
| Dec 4, 1997<br />
| [[CPC old generation|CPC range]]<br />
| Freeware<br />
| [ftp://ftp.lip6.fr/pub/amstrad/emulator/CPCWIN10.ZIP]<br />
|-<br />
| [[CPE|CPE]]<br />
| 5.2<br />
| Apr 21, 1997<br />
| [[CPC old generation|CPC range]]<br />
| Freeware<br />
| [ftp://ftp.lip6.fr/pub/amstrad/emulator/CPE52.ZIP]<br />
|-<br />
| [[DSP|DSP]]<br />
| 0.15b2<br />
| Feb 6, 2015<br />
| [[CPC old generation|CPC range]], [[ZX Spectrum]], [[Nintendo NES]], [[ColecoVision]], [[Arcade]]<br />
| Open source<br />
| [http://code.google.com/p/dsp-emulator/]<br />
|-<br />
| [[ep128emu|ep128emu]]<br />
| 2.0.9.1<br />
| Jan 3, 2011<br />
| [[CPC old generation|CPC range]], [[ZX Spectrum]], [[Enterprise]]<br />
| Open source<br />
| [http://sourceforge.net/projects/ep128emu/]<br />
|-<br />
| [[MESS|MAME (MESS)]]<br />
| 0.164<br />
| Jul 29, 2015<br />
| [[CPC old generation|CPC range]], [[Plus|Plus range]], [[KC Compact]], [[Aleste 520EX]] & lots of other computer systems<br />
| Open source<br />
| [http://mamedev.org/release.html]<br />
|-<br />
| [[MTMW|MTMW]]<br />
| 1.30B<br />
| Jan 11, 2000<br />
| [[CPC old generation|CPC range]], [[Plus|Plus range]], [[ZX Spectrum]], [[ZX80]], [[ZX81]], [[Jupiter ACE]], [[Enterprise]]<br />
| Freeware<br />
| [ftp://ftp.lip6.fr/pub/amstrad/emulator/MTMW130B.ZIP]<br />
|-<br />
| [[NO$CPC|NO$CPC]]<br />
| 1.8<br />
| Nov 2, 2000<br />
| [[CPC old generation|CPC range]], [[Plus|Plus range]]<br />
| Freeware<br />
| [http://problemkaputt.de/cpc.htm]<br />
|-<br />
| [[PC-CPC|PC-CPC]] <br />
| 0.1at b29<br />
| Nov 17, 2011<br />
| [[CPC old generation|CPC range]]<br />
| Freeware<br />
| [http://cpcrulez.fr/emulateurs_download-WIN-PC-CPC.htm]<br />
|-<br />
| [[Roland Emulator|Roland]] <br />
| 0.5b2<br />
| Jan 5, 2009<br />
| [[CPC old generation|CPC range]]<br />
| Open source<br />
| [http://cpcrulez.fr/emulateurs_download-WIN-ROLANDEMU.htm]<br />
|-<br />
| [[Sugarbox|Sugarbox]]<br />
| 0.24<br />
| Mar 31, 2015<br />
| [[CPC old generation|CPC range]]<br />
| Freeware<br />
| [http://sugarbox.free.fr/]<br />
|-<br />
| [[vbCPC|vbCPC]] <br />
| 1.06<br />
| Apr 7, 2005<br />
| [[CPC old generation|CPC range]]<br />
| Freeware<br />
| [http://www.emu-france.com/news/9609-ordi-vbcpc-v1-0-6/]<br />
|-<br />
| [[VirtualCPC|Virtual CPC]] <br />
| 1.1<br />
| Aug 8, 2011<br />
| [[CPC old generation|CPC range]]<br />
| Freeware<br />
| [http://users.otenet.gr/~sulfonic/cpc/]<br />
|-<br />
| [[WinApe|WinApe]] <br />
| 2.0a18<br />
| Jul 26, 2011<br />
| [[CPC old generation|CPC range]], [[Plus|Plus range]]<br />
| Freeware<br />
| [http://www.winape.net/]<br />
|-<br />
| [[WinCPC|WinCPC]] <br />
| 0.9.26<br />
| Feb 1, 2007<br />
| [[CPC old generation|CPC range]]<br />
| Freeware<br />
| [http://www.wincpc.ch/index.php?topic=projects-wincpc]<br />
|-<br />
| [[XNACPC|XNACPC]]<br />
| 1.0<br />
| Nov 11, 2011<br />
| [[CPC old generation|CPC range]]<br />
| Open source<br />
| [http://www.gavpugh.com/2011/11/11/xnacpc-xbox-360-amstrad-cpc-emulator-released/]<br />
|-<br />
| [[Yage|Yage]]<br />
| 0.91<br />
| Oct 24, 1998<br />
| [[CPC old generation|CPC range]]<br />
| Freeware<br />
| [ftp://ftp.lip6.fr/pub/amstrad/emulator/YAGE091.ZIP]<br />
|}<br />
<br />
= Home Consoles =<br />
<br />
== Microsoft XBOX ==<br />
<br />
{| class="wikitable sortable" style="width:100%"<br />
! Name<br />
! Actual version<br />
! Last release<br />
! Emulated systems<br />
! License<br />
! Link<br />
|-<br />
| [[Arnold|ArnoldX]]<br />
| v5<br />
| Apr 20, 2010<br />
| [[CPC old generation|CPC range]], [[Plus|Plus range]]<br />
| <br />
| [http://forums.xbox-scene.com/index.php?showtopic=711667]<br />
|-<br />
| [[CoinOPS|CoinOPS]]<br />
| 5<br />
| Oct 18, 2012<br />
| [[CPC old generation|CPC range]] & lots of other computer systems<br />
| <br />
| [http://coinopsproject.freeforums.org/viewtopic.php?f=0&t=1213]<br />
|}<br />
<br />
== Microsoft Xbox 360 ==<br />
<br />
{| class="wikitable sortable" style="width:100%"<br />
! Name<br />
! Actual version<br />
! Last release<br />
! Emulated systems<br />
! License<br />
! Link<br />
|-<br />
| [[XNACPC|XNACPC]]<br />
| 1.0<br />
| Nov 11, 2011<br />
| [[CPC old generation|CPC range]]<br />
| Open source<br />
| [http://www.gavpugh.com/2011/11/11/xnacpc-xbox-360-amstrad-cpc-emulator-released/]<br />
|}<br />
<br />
== Nintendo Wii ==<br />
<br />
{| class="wikitable sortable" style="width:100%"<br />
! Name<br />
! Actual version<br />
! Last release<br />
! Emulated systems<br />
! License<br />
! Link<br />
|-<br />
| [[Wiituka|Wiituka]]<br />
| 0.98.8<br />
| May 15, 2009<br />
| [[CPC old generation|CPC range]]<br />
| Open source<br />
| [http://wiituka.dantoine.org/]<br />
|}<br />
<br />
== Sega Dreamcast ==<br />
<br />
{| class="wikitable sortable" style="width:100%"<br />
! Name<br />
! Actual version<br />
! Last release<br />
! Emulated systems<br />
! License<br />
! Link<br />
|-<br />
| [[CPCast|CPCast]]<br />
| <br />
| May 6, 2006<br />
| [[CPC old generation|CPC range]]<br />
| Freeware<br />
| [http://www.dcemu.co.uk/vbulletin/showthread.php?t=24100]<br />
|-<br />
| [[DreamCPC|DreamCPC]]<br />
| Alpha 3<br />
| Oct 16, 2005<br />
| [[CPC old generation|CPC range]]<br />
| Freeware<br />
| [http://jm1200.free.fr/index.php?r=2]<br />
|}<br />
<br />
== Sony PS2 ==<br />
<br />
{| class="wikitable sortable" style="width:100%"<br />
! Name<br />
! Actual version<br />
! Last release<br />
! Emulated systems<br />
! License<br />
! Link<br />
|-<br />
| [[PCPC|PCPC]]<br />
| <br />
| Dec 22, 2004<br />
| [[CPC old generation|CPC range]]<br />
| Open source<br />
| [http://ps2emu.dcemu.co.uk/pcpc.shtml]<br />
|}<br />
<br />
== Sony PS3 ==<br />
<br />
{| class="wikitable sortable" style="width:100%"<br />
! Name<br />
! Actual version<br />
! Last release<br />
! Emulated systems<br />
! License<br />
! Link<br />
|-<br />
| [[Caprice32|Caprice32]]<br />
| 4.1.0 DBG<br />
| Apr 9, 2012<br />
| [[CPC old generation|CPC range]]<br />
| Open source<br />
| [http://psx-scene.com/forums/content/caprice32-4-1-0-dbg-emulator-ps3-2119/]<br />
|}<br />
<br />
= Handheld Consoles =<br />
<br />
== Dingoo A320 / A330 ==<br />
<br />
{| class="wikitable sortable" style="width:100%"<br />
! Name<br />
! Actual version<br />
! Last release<br />
! Emulated systems<br />
! License<br />
! Link<br />
|-<br />
| [[Pituka|Pituka (Dingux)]]<br />
| 0.8pre<br />
| Aug 19, 2010<br />
| [[CPC old generation|CPC range]]<br />
| Open source<br />
| [http://david.dantoine.org/proyecto/4/]<br />
|-<br />
| [[Caprice|Dingux-CAP32]]<br />
| 1.1.2<br />
| Oct 17, 2009<br />
| [[CPC old generation|CPC range]]<br />
| Open source<br />
| [http://zx81.zx81.free.fr/serendipity/index.php?/categories/105-Amstrad/]<br />
|}<br />
<br />
== GamePark GP32 / GP2X / Wiz / Caanoo ==<br />
<br />
{| class="wikitable sortable" style="width:100%"<br />
! Name<br />
! Actual version<br />
! Last release<br />
! Emulated systems<br />
! License<br />
! Link<br />
|-<br />
| [[Pituka|Pituka (GP32)]]<br />
| 1d<br />
| May 15, 2010<br />
| [[CPC old generation|CPC range]]<br />
| Open source<br />
| [http://david.dantoine.org/proyecto/4/]<br />
|-<br />
| [[Caprice|CapriceGP2x]]<br />
| 0.5<br />
| Feb 22, 2006<br />
| [[CPC old generation|CPC range]]<br />
| Open source<br />
| [http://wiki.gp2x.org/wiki/CapriceGP2x]<br />
|-<br />
| [[Caprice|GP2X-CAP32]]<br />
| 1.5.1<br />
| Aug 29, 2009<br />
| [[CPC old generation|CPC range]]<br />
| Open source<br />
| [http://zx81.zx81.free.fr/serendipity/index.php?/categories/42-Amstrad/]<br />
|-<br />
| [[Caprice|Wiz-CAP32]]<br />
| 1.1.0<br />
| Aug 29, 2009<br />
| [[CPC old generation|CPC range]]<br />
| Open source<br />
| [http://zx81.zx81.free.fr/serendipity/index.php?/categories/89-Amstrad/]<br />
|-<br />
| [[Caprice|Caanoo-CAP32]]<br />
| 1.1.3<br />
| Apr 24, 2011<br />
| [[CPC old generation|CPC range]]<br />
| Open source<br />
| [http://zx81.zx81.free.fr/serendipity/index.php?/categories/165-Amstrad/]<br />
|}<br />
<br />
== GCW Zero ==<br />
<br />
{| class="wikitable sortable" style="width:100%"<br />
! Name<br />
! Actual version<br />
! Last release<br />
! Emulated systems<br />
! License<br />
! Link<br />
|-<br />
| [[Caprice|Dingux-CAP32]]<br />
| 1.1.2<br />
| May 25, 2014<br />
| [[CPC old generation|CPC range]]<br />
| Open source<br />
| [http://boards.dingoonity.org/gcw-releases/caprice32-%28amstrad-cpc%29/]<br />
|}<br />
<br />
== JXD S5110 / S601 & Yinlips G18 ==<br />
<br />
{| class="wikitable sortable" style="width:100%"<br />
! Name<br />
! Actual version<br />
! Last release<br />
! Emulated systems<br />
! License<br />
! Link<br />
|-<br />
| [[Caprice|JXD-CAP32]]<br />
| 1.1.1<br />
| Oct 27, 2012<br />
| [[CPC old generation|CPC range]]<br />
| Open source<br />
| [http://zx81.zx81.free.fr/serendipity/index.php?/categories/206-Amstrad/]<br />
|}<br />
<br />
== Nintendo DS ==<br />
<br />
{| class="wikitable sortable" style="width:100%"<br />
! Name<br />
! Actual version<br />
! Last release<br />
! Emulated systems<br />
! License<br />
! Link<br />
|-<br />
| [[AmeDS|AmeDS]] <br />
| 4.0<br />
| Apr 25, 2010<br />
| [[CPC old generation|CPC range]]<br />
| Freeware<br />
| [http://www.portabledev.com/pages/ds/jeuxdev.-perso/ameds.php]<br />
|-<br />
| [[CrocoDS|CrocoDS]]<br />
| 2.0<br />
| Nov 9, 2007<br />
| [[CPC old generation|CPC range]]<br />
| Freeware<br />
| [http://www.kyuran.be/blog/2007/11/09/crocods-20-2/]<br />
|}<br />
<br />
== Pandora ==<br />
<br />
{| class="wikitable sortable" style="width:100%"<br />
! Name<br />
! Actual version<br />
! Last release<br />
! Emulated systems<br />
! License<br />
! Link<br />
|-<br />
| [[Caprice|Pandora-CAP32]]<br />
| 1.1.0<br />
| Jun 27, 2010<br />
| [[CPC old generation|CPC range]]<br />
| Open source<br />
| [http://zx81.zx81.free.fr/serendipity/index.php?/categories/131-Amstrad/]<br />
|}<br />
<br />
== Sony PSP ==<br />
<br />
{| class="wikitable sortable" style="width:100%"<br />
! Name<br />
! Actual version<br />
! Last release<br />
! Emulated systems<br />
! License<br />
! Link<br />
|-<br />
| [[Caprice32 PSP]]<br />
| 4.2.0.2<br />
| Nov 28, 2007<br />
| [[CPC old generation|CPC range]]<br />
| Open source<br />
| [http://psp.akop.org/caprice32]<br />
|-<br />
| [[CPCPSP|CPCPSP]]<br />
| 0.1<br />
| Dec 24, 2005<br />
| [[CPC old generation|CPC range]]<br />
| Freeware<br />
| [http://dl.qj.net/psp/emulators/cpcpsp-v01.html]<br />
|-<br />
| [[PSPCAP32|PSPCAP32]]<br />
| 1.5.1<br />
| Aug 21, 2009<br />
| [[CPC old generation|CPC range]]<br />
| Open source<br />
| [http://zx81.zx81.free.fr/serendipity/index.php?/categories/3-Amstrad/]<br />
|}<br />
<br />
= Smartphones / PDA / SoC =<br />
<br />
== Android ==<br />
<br />
{| class="wikitable sortable" style="width:100%"<br />
! Name<br />
! Actual version<br />
! Last release<br />
! Emulated systems<br />
! License<br />
! Link<br />
|-<br />
| [[andcpc]]<br />
| 1.5.1<br />
| Apr 4, 2011<br />
| [[CPC old generation|CPC range]]<br />
| Open source<br />
| [http://code.google.com/p/andcpc/]<br />
|-<br />
| [[CPCDroid]]<br />
| 1.5.1<br />
| Mar 2, 2011<br />
| [[CPC old generation|CPC range]]<br />
| Open source<br />
| [http://fmsdevel.wisecoding.es/blog/cpcdroid---2011-03-02]<br />
|-<br />
| [[Droid-CPC]]<br />
| 1.01.3<br />
| Oct 12, 2014<br />
| [[CPC old generation|CPC range]]<br />
| Commercial<br />
| [http://play.google.com/store/apps/details?id=com.kokak.droidcpc]<br />
|}<br />
<br />
== BlackBerry ==<br />
<br />
{| class="wikitable sortable" style="width:100%"<br />
! Name<br />
! Actual version<br />
! Last release<br />
! Emulated systems<br />
! License<br />
! Link<br />
|-<br />
| [[BB-CPC|BB-CPC]]<br />
| 1.0.1.3<br />
| Jul 15, 2013<br />
| [[CPC old generation|CPC range]]<br />
| Commercial<br />
| [http://appworld.blackberry.com/webstore/content/30963891/]<br />
|}<br />
<br />
== iOS ==<br />
<br />
{| class="wikitable sortable" style="width:100%"<br />
! Name<br />
! Actual version<br />
! Last release<br />
! Emulated systems<br />
! License<br />
! Link<br />
|-<br />
| [[CrocoDS]]<br />
| 2.1<br />
| Jun 21, 2013<br />
| [[CPC old generation|CPC range]]<br />
| Open source<br />
| [http://github.com/redbug26/crocods]<br />
|}<br />
<br />
== Maemo ==<br />
<br />
{| class="wikitable sortable" style="width:100%"<br />
! Name<br />
! Actual version<br />
! Last release<br />
! Emulated systems<br />
! License<br />
! Link<br />
|-<br />
| [[CPCm]]<br />
| 1.20-1<br />
| Apr 27, 2010<br />
| [[CPC old generation|CPC range]]<br />
| Open source<br />
| [http://maemo.org/downloads/product/Maemo5/cpcm/]<br />
|}<br />
<br />
== Palm OS ==<br />
<br />
{| class="wikitable sortable" style="width:100%"<br />
! Name<br />
! Actual version<br />
! Last release<br />
! Emulated systems<br />
! License<br />
! Link<br />
|-<br />
| [[CaPriCe for Palm OS|CaPriCe for Palm OS]]<br />
| 2.8<br />
| Jun 28, 2011<br />
| [[CPC old generation|CPC range]]<br />
| Open source<br />
| [http://frederic.coste.pagesperso-orange.fr/cpc/cpc_en.htm]<br />
|-<br />
| [[CoPaCabana|CoPaCabana]]<br />
| 0.75<br />
| Dec 4, 2007<br />
| [[CPC old generation|CPC range]]<br />
| Freeware<br />
| [http://copacabana.emuunlim.com/]<br />
|}<br />
<br />
== Pocket PC ==<br />
<br />
{| class="wikitable sortable" style="width:100%"<br />
! Name<br />
! Actual version<br />
! Last release<br />
! Emulated systems<br />
! License<br />
! Link<br />
|-<br />
| [[CaPriCe|PocketCaprice]]<br />
| 0.9<br />
| Aug 19, 2007<br />
| [[CPC old generation|CPC range]]<br />
| Freeware<br />
| [http://www.clubic.com/telecharger-fiche44888-pocketcaprice.html]<br />
|}<br />
<br />
== Raspberry Pi / Pi 2 ==<br />
<br />
{| class="wikitable sortable" style="width:100%"<br />
! Name<br />
! Actual version<br />
! Last release<br />
! Emulated systems<br />
! License<br />
! Link<br />
|-<br />
| [[CPC4Rpi|#CPC4Rpi]]<br />
| 1.1<br />
| Dec 19, 2013<br />
| [[CPC old generation|CPC range]]<br />
| Open source<br />
| [http://store.raspberrypi.com/projects/cpc4rpi]<br />
|-<br />
| [[CapriceRPI2|CapriceRPI2]]<br />
| <br />
| Mar 18, 2015<br />
| [[CPC old generation|CPC range]]<br />
| Open source<br />
| [http://www.cpcwiki.eu/forum/emulators/capricerpi2/]<br />
|}<br />
<br />
== Symbian ==<br />
<br />
{| class="wikitable sortable" style="width:100%"<br />
! Name<br />
! Actual version<br />
! Last release<br />
! Emulated systems<br />
! License<br />
! Link<br />
|-<br />
| [[S60-CPC|S60-CPC]]<br />
| 0.74<br />
| Feb 21, 2006<br />
| [[CPC old generation|CPC range]]<br />
| Open source<br />
| [http://kokak.free.fr/s60cpc.htm]<br />
|}<br />
<br />
= Hardware =<br />
<br />
*[[CPC TREX|CPC TREX]] TurboCPC core running on a terasIC T-Rex C1 FPGA board<br />
*[[C-ONE|CPC-ONE]] TurboCPC core running on the C-One FPGA board<br />
*[http://ralferoo.blogspot.fr/ CPC FPGA] CPC emulation running on a custom made FPGA board<br />
*[[FPGAmstrad|FPGAmstrad]] CPC emulation running on a NEXYS2 FPGA board<br />
*[https://code.google.com/p/mist-board/ MIST board] FPGA board implementing Amstrad CPC and various other 8-bit and 16-bit computers<br />
<br />
= Emulation Tools =<br />
<br />
*[[ConvImgCPC|ConvImgCPC]] <br />
*[[CPCDiskXP|CPCDiskXP]] <br />
*[[CPCGamesCD-CPCLoader|CPCGamesCD-CPCLoader]] <br />
*[[CPCTapeXP|CPCTapeXP]] <br />
*[[CPRTools|CPRTools]] <br />
*[[Dsktools|Dsktools]] <br />
*[[ManageDSK|ManageDSK]] <br />
*[[WriteDSK|WriteDSK]]<br />
<br />
= Emulator Detection =<br />
<br />
*[[Emulator_IDs|Emulator IDs]]<br />
<br />
[[Category:Emulator| ]]</div>Mornhttps://www.cpcwiki.eu/index.php?title=MAME&diff=93982MAME2015-07-23T10:47:04Z<p>Morn: /* Keyboard layouts */</p>
<hr />
<div>[[File:Mess sysinfo.png|thumb|upright=.9|The MAME system info box for the CPC6128]]<br />
[[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]]''.]]<br />
'''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.<br />
<br />
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.<br />
<br />
==Emulated systems==<br />
<br />
Currently, [http://www.progettoemma.net/mess/sysset.php 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).<br />
<br />
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.<br />
<br />
==Installation==<br />
<br />
MAME runs on Windows, Mac OS X, Linux, and FreeBSD. You can get Windows binaries from [http://mamedev.org/release.html mamedev.org].<br />
<br />
On OS X, you can install MAME via [http://brew.sh/ Homebrew]:<br />
brew tap homebrew/games<br />
brew install mame<br />
<br />
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:<br />
alias mame=/usr/share/sdlmame/sdlmame<br />
<br />
==Starting MAME; command line arguments; MAME menu; quitting==<br />
[[File:MAME menu CPC.png|thumb|upright|The MAME menu]]<br />
First get the [[Media:CPC_ROMs_for_MAME.zip|CPC ROMs for MAME]] and unzip them into the MAME roms folder.<br />
<br />
Typical command line to start MAME in CPC mode (windowed mode and with a disc inserted in drive A):<br />
mame cpc6128 -skip_gameinfo -window -flop1 disk.dsk<br />
<br />
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).<br />
<br />
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.<br />
<br />
You can use the "-ab" commandline option to type text into MAME, e.g.<br />
mame cpc6128 -flop1 disk.dsk -ab "run\"disc\n"<br />
will boot the disc.<br />
<br />
===Device options for the CPC from [http://www.progettoemma.net/mess/extra.html sysinfo.dat]===<br />
{|class="wikitable"<br />
|'''Name'''<br />
|'''Argument'''<br />
|'''Allowed file extensions'''<br />
|-<br />
|Printer<br />
| -prin<br />
|.prn<br />
|-<br />
|Snapshot<br />
| -dump<br />
|.sna<br />
|-<br />
|Disk drive A<br />
| -flop1<br />
|rowspan="2"|.dsk; .d77; .d88; .1dd; .dfi; .imd; .ipf; .mfi; .mfm<br />
|-<br />
|Disk drive B<br />
| -flop2<br />
|-<br />
|Tape<br />
| -cass<br />
|.wav; .cdt<br />
|-<br />
|Cartridge<br />
| -cart<br />
|.cpr; .bin (Plus series and GX4000 only)<br />
|}<br />
<br />
Supported file types can also be shown with the "-listmedia" command line option.<br />
<br />
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.<br />
mame cpc6128 -flop1 disk.zip/disk0.dsk<br />
<br />
===Python script to start MAME in CPC mode===<br />
On Linux, you can also set your file manager (e.g. Nautilus or Konqueror) to open .dsk files with the following Python script:<br />
<pre><br />
#!/usr/bin/env python<br />
<br />
# Call as<br />
# "cpc" : emulated keyboard<br />
# "cpcn" : natural<br />
<br />
import os, os.path, zipfile<br />
from sys import argv<br />
<br />
if 'cpcn' in argv[0]:<br />
nat = '-natural'<br />
else:<br />
nat = ''<br />
<br />
s = "/usr/share/sdlmame/sdlmame cpc6128 -skip_gameinfo -window %s -keymap -keymap_file /usr/share/sdlmame/keymaps/km-de.txt" % nat<br />
<br />
def checkzip(t):<br />
"Check if file is a ZIP file; use the first file in the archive"<br />
if t[-4:].lower() == '.zip':<br />
a = zipfile.ZipFile(t).namelist()<br />
t = os.path.join(t, a[0])<br />
return t<br />
<br />
if len(argv) > 1:<br />
for x in range(1, len(argv)):<br />
s += ' -flop%u "%s"' % (x, checkzip(argv[x]))<br />
os.system(s)<br />
</pre><br />
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.<br />
<br />
==GUI front-ends==<br />
[[File:Mameui.png|thumb|MAMEUI64 on Windows]]<br />
[[File:Messmenu.png|thumb|MessMenu on OS X with a CPC ROM selected. Currently, seven different CPC models are supported, including some regional variants (French and Swedish).]]<br />
<br />
Various GUI front-ends for MAME/MESS exist for Windows, Linux, and OS X:<br />
<br />
*[http://www.mameui.info/ MAMEUI64] (Windows)<br />
*[http://qmc2.arcadehits.net/ QMC2] (Windows, OS X, Linux)<br />
<br />
==Keyboard layouts==<br />
<br />
MAME supports two keyboard modes:<br />
* '''emulated''' (the default; keys are assigned based on key position on the emulated hardware)<br />
* '''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)<br />
<br />
To use a German keyboard in emulated keyboard mode, start MAME e.g. with (key map path on Linux):<br />
mame cpc6128 -keymap -keymap_file /usr/share/sdlmame/keymaps/km-de.txt<br />
<br />
You can also put these settings in your mame.ini like this:<br />
keymap 1<br />
keymap_file /usr/share/sdlmame/keymaps/km-de.txt<br />
<br />
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.<br />
<br />
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.<br />
<br />
==CPC artwork==<br />
[[File:MAME with CPC artwork.png|thumb|MAME window with monitor type set to green and optional CPC artwork]]<br />
You can add optional bezel artwork to MAME to simulate a CPC monitor:<br />
*[[Media:Cpc6128 mame artwork.zip|MAME artwork]] (CPC6128/GT65 bezel)<br />
<br />
Rename this file to cpc6128.zip and put it in MAME's artwork folder (~/.mame/artwork/ on Linux).<br />
<br />
==ROMs and extension hardware==<br />
<br />
[[Media:CPC_ROMs_for_MAME.zip|CPC ROMs for MAME]]. Just unzip the file and move the ZIPs inside into the MAME ROM folder.<br />
<br />
===General notes about MAME and ROMs===<br />
<br />
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.)<br />
<br />
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.<br />
<br />
===Slot options (extension hardware)===<br />
[[File:MESS with Dobbertin Smart Watch.png|thumb|upright=1.4||MAME with the Dobbertin Smart Watch ROM loaded (-exp smartwatch)]]<br />
[[File:Brunword mame.png|thumb|upright=1.4||BrunWord MK4 (ROM) main menu in MAME 0.162 (-exp brunword4)]]<br />
<br />
You can get a list of slot options with<br />
<br />
mame cpc6128 -lslot<br />
<br />
These are (as of MAME 0.163):<br />
<br />
*for "-centronics"<br />
{|class="wikitable"<br />
|-<br />
|pl80 <br />
|COMX PL-80<br />
|-<br />
|ex800 <br />
|Epson EX-800<br />
|-<br />
|lx800 <br />
|Epson LX-800<br />
|-<br />
|lx810l <br />
|Epson LX-810L<br />
|-<br />
|ap2000 <br />
|Epson ActionPrinter 2000<br />
|-<br />
|printer <br />
|Centronics Printer<br />
|-<br />
|digiblst <br />
|[[Digiblaster]] (DIY)<br />
|}<br />
<br />
*for "-exp"<br />
{|class="wikitable"<br />
|-<br />
|ssa1 <br />
|[[Amstrad SSA-1 Speech Synthesizer]]<br />
|-<br />
|dkspeech <br />
|[[Dk'tronics Speech Synthesizer]]<br />
|-<br />
|rom <br />
|ROM Box<br />
|-<br />
|multiface2 <br />
|[[Multiface II]]<br />
|-<br />
|pds <br />
|[[PDS development system|Programmers Development System (CPC Target)]]<br />
|-<br />
|rs232 <br />
|Pace RS232C interface<br />
|-<br />
|amsrs232 <br />
|[[Original Amstrad RS232 interface|Amstrad RS232C interface]]<br />
|-<br />
|sf2 <br />
|[[SYMBiFACE II]]<br />
|-<br />
|amdrum <br />
|[[Amdrum]]<br />
|-<br />
|playcity <br />
|[[PlayCity]]<br />
|-<br />
|smartwatch <br />
|[[Dobbertin Smart Watch]]<br />
|-<br />
|brunword4<br />
|[[BrunWord]] Elite MK4<br />
|-<br />
|hd20<br />
|[[Dobbertin Harddisc]]<br />
|}<br />
<br />
===Loading external ROMs===<br />
<br />
The ROM Box expansion can be used to load external ROMs such as [[MAXAM]]:<br />
<br />
mame cpc6128 -exp rom -rom1 /path/to/MAXAM.ROM<br />
<br />
Up to 8 external ROMs (-rom1 to -rom8) are supported this way.<br />
<br />
===[[Dobbertin Harddisc]]===<br />
<br />
From the [http://www.cpcwiki.eu/forum/emulators/got-bored-again/msg102272/#msg102272 forum post]:<br />
<br />
To use, add -exp hd20 to the commandline, which will also allow you to add -hard <filename>.<br />
Code:<br />
<br />
mame cpc6128 -exp hd20 -hard1 disk.chd<br />
<br />
Only MAME CHDs are supported, you can create a blank hard disk image using chdman. Geometry is 615/4/17.<br />
Code:<br />
<br />
chdman createhd -o disk.chd -c none -chs 615,4,17<br />
<br />
(-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)<br />
<br />
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.<br />
<br />
See http://mahlemiut.marpirc.net/cpc_hd20.avi, a quick demo loading a game from HD.<br />
<br />
==CRT simulation==<br />
[[File:Cpc shader mess.png|thumb|GLSL shader example (Linux)]]<br />
[[File:Cpc hlsl shader mess detail.png|thumb|HLSL "1980s" shader (Windows); MAME config used is on image description page]]<br />
MAME can use shaders to simulate typical CRT graphics artifacts such as scanlines, colors bleeding into each other, jitter, and display curvature.<br />
<br />
Some example configurations:<br />
*Windows (using HLSL shaders)<br />
**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)<br />
**A German shader tutorial: [http://www.aep-emu.de/PNphpBB2-file-viewtopic-p-94168.html]<br />
*Linux (using GLSL shaders): MAME tutorial [http://www.mameau.com/mame-glsl-shaders-setup/]<br />
<br />
==Remaining issues with CPC emulation==<br />
<br />
*MAME may fail to read DSK images with certain kinds of copy protection. Speedlock seems to work fine though.<br />
*MAME cannot write to disc images in DSK format; only MFI (MESS floppy image) and MFM (HxCFloppyEmulator floppy image) are supported for writing.<br />
*Some demo tricks may be broken in MAME, e.g. overscan pictures are horizontally misaligned (i.e., shifted to the right).<br />
*CPC+/GX4000 emulation still has some obvious graphics glitches.<br />
*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.<br />
<br />
==JSMESS, a JavaScript port==<br />
<br />
There is an experimental port of MAME/MESS to JavaScript, see the [[JSMESS]] article for details.<br />
<br />
==Links==<br />
<br />
*{{EnWiki}}<br />
*[http://mamedev.org/ Official site]<br />
*[http://www.mess.org/mess:howto MESS user's manual]<br />
*[[Media:CPC_ROMs_for_MAME.zip|CPC ROMs for MAME]]<br />
<br />
[[Category:Emulator]]</div>Mornhttps://www.cpcwiki.eu/index.php?title=MAME&diff=93981MAME2015-07-23T10:44:34Z<p>Morn: /* Starting MAME; command line arguments; MAME menu; quitting */</p>
<hr />
<div>[[File:Mess sysinfo.png|thumb|upright=.9|The MAME system info box for the CPC6128]]<br />
[[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]]''.]]<br />
'''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.<br />
<br />
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.<br />
<br />
==Emulated systems==<br />
<br />
Currently, [http://www.progettoemma.net/mess/sysset.php 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).<br />
<br />
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.<br />
<br />
==Installation==<br />
<br />
MAME runs on Windows, Mac OS X, Linux, and FreeBSD. You can get Windows binaries from [http://mamedev.org/release.html mamedev.org].<br />
<br />
On OS X, you can install MAME via [http://brew.sh/ Homebrew]:<br />
brew tap homebrew/games<br />
brew install mame<br />
<br />
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:<br />
alias mame=/usr/share/sdlmame/sdlmame<br />
<br />
==Starting MAME; command line arguments; MAME menu; quitting==<br />
[[File:MAME menu CPC.png|thumb|upright|The MAME menu]]<br />
First get the [[Media:CPC_ROMs_for_MAME.zip|CPC ROMs for MAME]] and unzip them into the MAME roms folder.<br />
<br />
Typical command line to start MAME in CPC mode (windowed mode and with a disc inserted in drive A):<br />
mame cpc6128 -skip_gameinfo -window -flop1 disk.dsk<br />
<br />
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).<br />
<br />
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.<br />
<br />
You can use the "-ab" commandline option to type text into MAME, e.g.<br />
mame cpc6128 -flop1 disk.dsk -ab "run\"disc\n"<br />
will boot the disc.<br />
<br />
===Device options for the CPC from [http://www.progettoemma.net/mess/extra.html sysinfo.dat]===<br />
{|class="wikitable"<br />
|'''Name'''<br />
|'''Argument'''<br />
|'''Allowed file extensions'''<br />
|-<br />
|Printer<br />
| -prin<br />
|.prn<br />
|-<br />
|Snapshot<br />
| -dump<br />
|.sna<br />
|-<br />
|Disk drive A<br />
| -flop1<br />
|rowspan="2"|.dsk; .d77; .d88; .1dd; .dfi; .imd; .ipf; .mfi; .mfm<br />
|-<br />
|Disk drive B<br />
| -flop2<br />
|-<br />
|Tape<br />
| -cass<br />
|.wav; .cdt<br />
|-<br />
|Cartridge<br />
| -cart<br />
|.cpr; .bin (Plus series and GX4000 only)<br />
|}<br />
<br />
Supported file types can also be shown with the "-listmedia" command line option.<br />
<br />
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.<br />
mame cpc6128 -flop1 disk.zip/disk0.dsk<br />
<br />
===Python script to start MAME in CPC mode===<br />
On Linux, you can also set your file manager (e.g. Nautilus or Konqueror) to open .dsk files with the following Python script:<br />
<pre><br />
#!/usr/bin/env python<br />
<br />
# Call as<br />
# "cpc" : emulated keyboard<br />
# "cpcn" : natural<br />
<br />
import os, os.path, zipfile<br />
from sys import argv<br />
<br />
if 'cpcn' in argv[0]:<br />
nat = '-natural'<br />
else:<br />
nat = ''<br />
<br />
s = "/usr/share/sdlmame/sdlmame cpc6128 -skip_gameinfo -window %s -keymap -keymap_file /usr/share/sdlmame/keymaps/km-de.txt" % nat<br />
<br />
def checkzip(t):<br />
"Check if file is a ZIP file; use the first file in the archive"<br />
if t[-4:].lower() == '.zip':<br />
a = zipfile.ZipFile(t).namelist()<br />
t = os.path.join(t, a[0])<br />
return t<br />
<br />
if len(argv) > 1:<br />
for x in range(1, len(argv)):<br />
s += ' -flop%u "%s"' % (x, checkzip(argv[x]))<br />
os.system(s)<br />
</pre><br />
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.<br />
<br />
==GUI front-ends==<br />
[[File:Mameui.png|thumb|MAMEUI64 on Windows]]<br />
[[File:Messmenu.png|thumb|MessMenu on OS X with a CPC ROM selected. Currently, seven different CPC models are supported, including some regional variants (French and Swedish).]]<br />
<br />
Various GUI front-ends for MAME/MESS exist for Windows, Linux, and OS X:<br />
<br />
*[http://www.mameui.info/ MAMEUI64] (Windows)<br />
*[http://qmc2.arcadehits.net/ QMC2] (Windows, OS X, Linux)<br />
<br />
==Keyboard layouts==<br />
<br />
MAME supports two keyboard modes:<br />
* '''emulated''' (the default; keys are assigned based on key position on the emulated hardware)<br />
* '''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)<br />
<br />
To use a German keyboard in emulated keyboard mode, start MAME e.g. with (key map path on Linux):<br />
mame cpc6128 -keymap -keymap_file /usr/share/sdlmame/keymaps/km-de.txt<br />
<br />
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.<br />
<br />
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.<br />
<br />
==CPC artwork==<br />
[[File:MAME with CPC artwork.png|thumb|MAME window with monitor type set to green and optional CPC artwork]]<br />
You can add optional bezel artwork to MAME to simulate a CPC monitor:<br />
*[[Media:Cpc6128 mame artwork.zip|MAME artwork]] (CPC6128/GT65 bezel)<br />
<br />
Rename this file to cpc6128.zip and put it in MAME's artwork folder (~/.mame/artwork/ on Linux).<br />
<br />
==ROMs and extension hardware==<br />
<br />
[[Media:CPC_ROMs_for_MAME.zip|CPC ROMs for MAME]]. Just unzip the file and move the ZIPs inside into the MAME ROM folder.<br />
<br />
===General notes about MAME and ROMs===<br />
<br />
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.)<br />
<br />
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.<br />
<br />
===Slot options (extension hardware)===<br />
[[File:MESS with Dobbertin Smart Watch.png|thumb|upright=1.4||MAME with the Dobbertin Smart Watch ROM loaded (-exp smartwatch)]]<br />
[[File:Brunword mame.png|thumb|upright=1.4||BrunWord MK4 (ROM) main menu in MAME 0.162 (-exp brunword4)]]<br />
<br />
You can get a list of slot options with<br />
<br />
mame cpc6128 -lslot<br />
<br />
These are (as of MAME 0.163):<br />
<br />
*for "-centronics"<br />
{|class="wikitable"<br />
|-<br />
|pl80 <br />
|COMX PL-80<br />
|-<br />
|ex800 <br />
|Epson EX-800<br />
|-<br />
|lx800 <br />
|Epson LX-800<br />
|-<br />
|lx810l <br />
|Epson LX-810L<br />
|-<br />
|ap2000 <br />
|Epson ActionPrinter 2000<br />
|-<br />
|printer <br />
|Centronics Printer<br />
|-<br />
|digiblst <br />
|[[Digiblaster]] (DIY)<br />
|}<br />
<br />
*for "-exp"<br />
{|class="wikitable"<br />
|-<br />
|ssa1 <br />
|[[Amstrad SSA-1 Speech Synthesizer]]<br />
|-<br />
|dkspeech <br />
|[[Dk'tronics Speech Synthesizer]]<br />
|-<br />
|rom <br />
|ROM Box<br />
|-<br />
|multiface2 <br />
|[[Multiface II]]<br />
|-<br />
|pds <br />
|[[PDS development system|Programmers Development System (CPC Target)]]<br />
|-<br />
|rs232 <br />
|Pace RS232C interface<br />
|-<br />
|amsrs232 <br />
|[[Original Amstrad RS232 interface|Amstrad RS232C interface]]<br />
|-<br />
|sf2 <br />
|[[SYMBiFACE II]]<br />
|-<br />
|amdrum <br />
|[[Amdrum]]<br />
|-<br />
|playcity <br />
|[[PlayCity]]<br />
|-<br />
|smartwatch <br />
|[[Dobbertin Smart Watch]]<br />
|-<br />
|brunword4<br />
|[[BrunWord]] Elite MK4<br />
|-<br />
|hd20<br />
|[[Dobbertin Harddisc]]<br />
|}<br />
<br />
===Loading external ROMs===<br />
<br />
The ROM Box expansion can be used to load external ROMs such as [[MAXAM]]:<br />
<br />
mame cpc6128 -exp rom -rom1 /path/to/MAXAM.ROM<br />
<br />
Up to 8 external ROMs (-rom1 to -rom8) are supported this way.<br />
<br />
===[[Dobbertin Harddisc]]===<br />
<br />
From the [http://www.cpcwiki.eu/forum/emulators/got-bored-again/msg102272/#msg102272 forum post]:<br />
<br />
To use, add -exp hd20 to the commandline, which will also allow you to add -hard <filename>.<br />
Code:<br />
<br />
mame cpc6128 -exp hd20 -hard1 disk.chd<br />
<br />
Only MAME CHDs are supported, you can create a blank hard disk image using chdman. Geometry is 615/4/17.<br />
Code:<br />
<br />
chdman createhd -o disk.chd -c none -chs 615,4,17<br />
<br />
(-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)<br />
<br />
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.<br />
<br />
See http://mahlemiut.marpirc.net/cpc_hd20.avi, a quick demo loading a game from HD.<br />
<br />
==CRT simulation==<br />
[[File:Cpc shader mess.png|thumb|GLSL shader example (Linux)]]<br />
[[File:Cpc hlsl shader mess detail.png|thumb|HLSL "1980s" shader (Windows); MAME config used is on image description page]]<br />
MAME can use shaders to simulate typical CRT graphics artifacts such as scanlines, colors bleeding into each other, jitter, and display curvature.<br />
<br />
Some example configurations:<br />
*Windows (using HLSL shaders)<br />
**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)<br />
**A German shader tutorial: [http://www.aep-emu.de/PNphpBB2-file-viewtopic-p-94168.html]<br />
*Linux (using GLSL shaders): MAME tutorial [http://www.mameau.com/mame-glsl-shaders-setup/]<br />
<br />
==Remaining issues with CPC emulation==<br />
<br />
*MAME may fail to read DSK images with certain kinds of copy protection. Speedlock seems to work fine though.<br />
*MAME cannot write to disc images in DSK format; only MFI (MESS floppy image) and MFM (HxCFloppyEmulator floppy image) are supported for writing.<br />
*Some demo tricks may be broken in MAME, e.g. overscan pictures are horizontally misaligned (i.e., shifted to the right).<br />
*CPC+/GX4000 emulation still has some obvious graphics glitches.<br />
*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.<br />
<br />
==JSMESS, a JavaScript port==<br />
<br />
There is an experimental port of MAME/MESS to JavaScript, see the [[JSMESS]] article for details.<br />
<br />
==Links==<br />
<br />
*{{EnWiki}}<br />
*[http://mamedev.org/ Official site]<br />
*[http://www.mess.org/mess:howto MESS user's manual]<br />
*[[Media:CPC_ROMs_for_MAME.zip|CPC ROMs for MAME]]<br />
<br />
[[Category:Emulator]]</div>Mornhttps://www.cpcwiki.eu/index.php?title=MAME&diff=93896MAME2015-07-02T14:51:40Z<p>Morn: /* Starting MAME; command line arguments; MAME menu; quitting */</p>
<hr />
<div>[[File:Mess sysinfo.png|thumb|upright=.9|The MAME system info box for the CPC6128]]<br />
[[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]]''.]]<br />
'''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.<br />
<br />
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.<br />
<br />
==Emulated systems==<br />
<br />
Currently, [http://www.progettoemma.net/mess/sysset.php 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).<br />
<br />
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.<br />
<br />
==Installation==<br />
<br />
MAME runs on Windows, Mac OS X, Linux, and FreeBSD. You can get Windows binaries from [http://mamedev.org/release.html mamedev.org].<br />
<br />
On OS X, you can install MAME via [http://brew.sh/ Homebrew]:<br />
brew tap homebrew/games<br />
brew install mame<br />
<br />
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:<br />
alias mame=/usr/share/sdlmame/sdlmame<br />
<br />
==Starting MAME; command line arguments; MAME menu; quitting==<br />
[[File:MAME menu CPC.png|thumb|upright|The MAME menu]]<br />
First get the [[Media:CPC_ROMs_for_MAME.zip|CPC ROMs for MAME]] and unzip them into the MAME roms folder.<br />
<br />
Typical command line to start MAME in CPC mode (windowed mode and with a disc inserted in drive A):<br />
mame cpc6128 -skip_gameinfo -window -flop1 disk.dsk<br />
<br />
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).<br />
<br />
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.<br />
<br />
===Device options for the CPC from [http://www.progettoemma.net/mess/extra.html sysinfo.dat]===<br />
{|class="wikitable"<br />
|'''Name'''<br />
|'''Argument'''<br />
|'''Allowed file extensions'''<br />
|-<br />
|Printer<br />
| -prin<br />
|.prn<br />
|-<br />
|Snapshot<br />
| -dump<br />
|.sna<br />
|-<br />
|Disk drive A<br />
| -flop1<br />
|rowspan="2"|.dsk; .d77; .d88; .1dd; .dfi; .imd; .ipf; .mfi; .mfm<br />
|-<br />
|Disk drive B<br />
| -flop2<br />
|-<br />
|Tape<br />
| -cass<br />
|.wav; .cdt<br />
|-<br />
|Cartridge<br />
| -cart<br />
|.cpr; .bin (Plus series and GX4000 only)<br />
|}<br />
<br />
Supported file types can also be shown with the "-listmedia" command line option.<br />
<br />
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.<br />
mame cpc6128 -flop1 disk.zip/disk0.dsk<br />
<br />
===Python script to start MAME in CPC mode===<br />
On Linux, you can also set your file manager (e.g. Nautilus or Konqueror) to open .dsk files with the following Python script:<br />
<pre><br />
#!/usr/bin/env python<br />
<br />
# Call as<br />
# "cpc" : emulated keyboard<br />
# "cpcn" : natural<br />
<br />
import os, os.path, zipfile<br />
from sys import argv<br />
<br />
if 'cpcn' in argv[0]:<br />
nat = '-natural'<br />
else:<br />
nat = ''<br />
<br />
s = "/usr/share/sdlmame/sdlmame cpc6128 -skip_gameinfo -window %s -keymap -keymap_file /usr/share/sdlmame/keymaps/km-de.txt" % nat<br />
<br />
def checkzip(t):<br />
"Check if file is a ZIP file; use the first file in the archive"<br />
if t[-4:].lower() == '.zip':<br />
a = zipfile.ZipFile(t).namelist()<br />
t = os.path.join(t, a[0])<br />
return t<br />
<br />
if len(argv) > 1:<br />
for x in range(1, len(argv)):<br />
s += ' -flop%u "%s"' % (x, checkzip(argv[x]))<br />
os.system(s)<br />
</pre><br />
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.<br />
<br />
==GUI front-ends==<br />
[[File:Mameui.png|thumb|MAMEUI64 on Windows]]<br />
[[File:Messmenu.png|thumb|MessMenu on OS X with a CPC ROM selected. Currently, seven different CPC models are supported, including some regional variants (French and Swedish).]]<br />
<br />
Various GUI front-ends for MAME/MESS exist for Windows, Linux, and OS X:<br />
<br />
*[http://www.mameui.info/ MAMEUI64] (Windows)<br />
*[http://qmc2.arcadehits.net/ QMC2] (Windows, OS X, Linux)<br />
<br />
==Keyboard layouts==<br />
<br />
MAME supports two keyboard modes:<br />
* '''emulated''' (the default; keys are assigned based on key position on the emulated hardware)<br />
* '''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)<br />
<br />
To use a German keyboard in emulated keyboard mode, start MAME e.g. with (key map path on Linux):<br />
mame cpc6128 -keymap -keymap_file /usr/share/sdlmame/keymaps/km-de.txt<br />
<br />
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.<br />
<br />
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.<br />
<br />
==CPC artwork==<br />
[[File:MAME with CPC artwork.png|thumb|MAME window with monitor type set to green and optional CPC artwork]]<br />
You can add optional bezel artwork to MAME to simulate a CPC monitor:<br />
*[[Media:Cpc6128 mame artwork.zip|MAME artwork]] (CPC6128/GT65 bezel)<br />
<br />
Rename this file to cpc6128.zip and put it in MAME's artwork folder (~/.mame/artwork/ on Linux).<br />
<br />
==ROMs and extension hardware==<br />
<br />
[[Media:CPC_ROMs_for_MAME.zip|CPC ROMs for MAME]]. Just unzip the file and move the ZIPs inside into the MAME ROM folder.<br />
<br />
===General notes about MAME and ROMs===<br />
<br />
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.)<br />
<br />
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.<br />
<br />
===Slot options (extension hardware)===<br />
[[File:MESS with Dobbertin Smart Watch.png|thumb|upright=1.4||MAME with the Dobbertin Smart Watch ROM loaded (-exp smartwatch)]]<br />
[[File:Brunword mame.png|thumb|upright=1.4||BrunWord MK4 (ROM) main menu in MAME 0.162 (-exp brunword4)]]<br />
<br />
You can get a list of slot options with<br />
<br />
mame cpc6128 -lslot<br />
<br />
These are (as of MAME 0.163):<br />
<br />
*for "-centronics"<br />
{|class="wikitable"<br />
|-<br />
|pl80 <br />
|COMX PL-80<br />
|-<br />
|ex800 <br />
|Epson EX-800<br />
|-<br />
|lx800 <br />
|Epson LX-800<br />
|-<br />
|lx810l <br />
|Epson LX-810L<br />
|-<br />
|ap2000 <br />
|Epson ActionPrinter 2000<br />
|-<br />
|printer <br />
|Centronics Printer<br />
|-<br />
|digiblst <br />
|[[Digiblaster]] (DIY)<br />
|}<br />
<br />
*for "-exp"<br />
{|class="wikitable"<br />
|-<br />
|ssa1 <br />
|[[Amstrad SSA-1 Speech Synthesizer]]<br />
|-<br />
|dkspeech <br />
|[[Dk'tronics Speech Synthesizer]]<br />
|-<br />
|rom <br />
|ROM Box<br />
|-<br />
|multiface2 <br />
|[[Multiface II]]<br />
|-<br />
|pds <br />
|[[PDS development system|Programmers Development System (CPC Target)]]<br />
|-<br />
|rs232 <br />
|Pace RS232C interface<br />
|-<br />
|amsrs232 <br />
|[[Original Amstrad RS232 interface|Amstrad RS232C interface]]<br />
|-<br />
|sf2 <br />
|[[SYMBiFACE II]]<br />
|-<br />
|amdrum <br />
|[[Amdrum]]<br />
|-<br />
|playcity <br />
|[[PlayCity]]<br />
|-<br />
|smartwatch <br />
|[[Dobbertin Smart Watch]]<br />
|-<br />
|brunword4<br />
|[[BrunWord]] Elite MK4<br />
|-<br />
|hd20<br />
|[[Dobbertin Harddisc]]<br />
|}<br />
<br />
===Loading external ROMs===<br />
<br />
The ROM Box expansion can be used to load external ROMs such as [[MAXAM]]:<br />
<br />
mame cpc6128 -exp rom -rom1 /path/to/MAXAM.ROM<br />
<br />
Up to 8 external ROMs (-rom1 to -rom8) are supported this way.<br />
<br />
===[[Dobbertin Harddisc]]===<br />
<br />
From the [http://www.cpcwiki.eu/forum/emulators/got-bored-again/msg102272/#msg102272 forum post]:<br />
<br />
To use, add -exp hd20 to the commandline, which will also allow you to add -hard <filename>.<br />
Code:<br />
<br />
mame cpc6128 -exp hd20 -hard1 disk.chd<br />
<br />
Only MAME CHDs are supported, you can create a blank hard disk image using chdman. Geometry is 615/4/17.<br />
Code:<br />
<br />
chdman createhd -o disk.chd -c none -chs 615,4,17<br />
<br />
(-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)<br />
<br />
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.<br />
<br />
See http://mahlemiut.marpirc.net/cpc_hd20.avi, a quick demo loading a game from HD.<br />
<br />
==CRT simulation==<br />
[[File:Cpc shader mess.png|thumb|GLSL shader example (Linux)]]<br />
[[File:Cpc hlsl shader mess detail.png|thumb|HLSL "1980s" shader (Windows); MAME config used is on image description page]]<br />
MAME can use shaders to simulate typical CRT graphics artifacts such as scanlines, colors bleeding into each other, jitter, and display curvature.<br />
<br />
Some example configurations:<br />
*Windows (using HLSL shaders)<br />
**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)<br />
**A German shader tutorial: [http://www.aep-emu.de/PNphpBB2-file-viewtopic-p-94168.html]<br />
*Linux (using GLSL shaders): MAME tutorial [http://www.mameau.com/mame-glsl-shaders-setup/]<br />
<br />
==Remaining issues with CPC emulation==<br />
<br />
*MAME may fail to read DSK images with certain kinds of copy protection. Speedlock seems to work fine though.<br />
*MAME cannot write to disc images in DSK format; only MFI (MESS floppy image) and MFM (HxCFloppyEmulator floppy image) are supported for writing.<br />
*Some demo tricks may be broken in MAME, e.g. overscan pictures are horizontally misaligned (i.e., shifted to the right).<br />
*CPC+/GX4000 emulation still has some obvious graphics glitches.<br />
*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.<br />
<br />
==JSMESS, a JavaScript port==<br />
<br />
There is an experimental port of MAME/MESS to JavaScript, see the [[JSMESS]] article for details.<br />
<br />
==Links==<br />
<br />
*{{EnWiki}}<br />
*[http://mamedev.org/ Official site]<br />
*[http://www.mess.org/mess:howto MESS user's manual]<br />
*[[Media:CPC_ROMs_for_MAME.zip|CPC ROMs for MAME]]<br />
<br />
[[Category:Emulator]]</div>Mornhttps://www.cpcwiki.eu/index.php?title=File:MAME_menu_CPC.png&diff=93895File:MAME menu CPC.png2015-07-02T14:50:22Z<p>Morn: </p>
<hr />
<div></div>Mornhttps://www.cpcwiki.eu/index.php?title=MAME&diff=93894MAME2015-07-02T14:41:30Z<p>Morn: </p>
<hr />
<div>[[File:Mess sysinfo.png|thumb|upright=.9|The MAME system info box for the CPC6128]]<br />
[[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]]''.]]<br />
'''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.<br />
<br />
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.<br />
<br />
==Emulated systems==<br />
<br />
Currently, [http://www.progettoemma.net/mess/sysset.php 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).<br />
<br />
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.<br />
<br />
==Installation==<br />
<br />
MAME runs on Windows, Mac OS X, Linux, and FreeBSD. You can get Windows binaries from [http://mamedev.org/release.html mamedev.org].<br />
<br />
On OS X, you can install MAME via [http://brew.sh/ Homebrew]:<br />
brew tap homebrew/games<br />
brew install mame<br />
<br />
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:<br />
alias mame=/usr/share/sdlmame/sdlmame<br />
<br />
==Starting MAME; command line arguments; MAME menu; quitting==<br />
<br />
First get the [[Media:CPC_ROMs_for_MAME.zip|CPC ROMs for MAME]] and unzip them into the MAME roms folder.<br />
<br />
Typical command line to start MAME in CPC mode (windowed mode and with a disc inserted in drive A):<br />
mame cpc6128 -skip_gameinfo -window -flop1 disk.dsk<br />
<br />
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).<br />
<br />
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.<br />
<br />
===Device options for the CPC from [http://www.progettoemma.net/mess/extra.html sysinfo.dat]===<br />
{|class="wikitable"<br />
|'''Name'''<br />
|'''Argument'''<br />
|'''Allowed file extensions'''<br />
|-<br />
|Printer<br />
| -prin<br />
|.prn<br />
|-<br />
|Snapshot<br />
| -dump<br />
|.sna<br />
|-<br />
|Disk drive A<br />
| -flop1<br />
|rowspan="2"|.dsk; .d77; .d88; .1dd; .dfi; .imd; .ipf; .mfi; .mfm<br />
|-<br />
|Disk drive B<br />
| -flop2<br />
|-<br />
|Tape<br />
| -cass<br />
|.wav; .cdt<br />
|-<br />
|Cartridge<br />
| -cart<br />
|.cpr; .bin (Plus series and GX4000 only)<br />
|}<br />
<br />
Supported file types can also be shown with the "-listmedia" command line option.<br />
<br />
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.<br />
mame cpc6128 -flop1 disk.zip/disk0.dsk<br />
<br />
===Python script to start MAME in CPC mode===<br />
On Linux, you can also set your file manager (e.g. Nautilus or Konqueror) to open .dsk files with the following Python script:<br />
<pre><br />
#!/usr/bin/env python<br />
<br />
# Call as<br />
# "cpc" : emulated keyboard<br />
# "cpcn" : natural<br />
<br />
import os, os.path, zipfile<br />
from sys import argv<br />
<br />
if 'cpcn' in argv[0]:<br />
nat = '-natural'<br />
else:<br />
nat = ''<br />
<br />
s = "/usr/share/sdlmame/sdlmame cpc6128 -skip_gameinfo -window %s -keymap -keymap_file /usr/share/sdlmame/keymaps/km-de.txt" % nat<br />
<br />
def checkzip(t):<br />
"Check if file is a ZIP file; use the first file in the archive"<br />
if t[-4:].lower() == '.zip':<br />
a = zipfile.ZipFile(t).namelist()<br />
t = os.path.join(t, a[0])<br />
return t<br />
<br />
if len(argv) > 1:<br />
for x in range(1, len(argv)):<br />
s += ' -flop%u "%s"' % (x, checkzip(argv[x]))<br />
os.system(s)<br />
</pre><br />
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.<br />
<br />
==GUI front-ends==<br />
[[File:Mameui.png|thumb|MAMEUI64 on Windows]]<br />
[[File:Messmenu.png|thumb|MessMenu on OS X with a CPC ROM selected. Currently, seven different CPC models are supported, including some regional variants (French and Swedish).]]<br />
<br />
Various GUI front-ends for MAME/MESS exist for Windows, Linux, and OS X:<br />
<br />
*[http://www.mameui.info/ MAMEUI64] (Windows)<br />
*[http://qmc2.arcadehits.net/ QMC2] (Windows, OS X, Linux)<br />
<br />
==Keyboard layouts==<br />
<br />
MAME supports two keyboard modes:<br />
* '''emulated''' (the default; keys are assigned based on key position on the emulated hardware)<br />
* '''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)<br />
<br />
To use a German keyboard in emulated keyboard mode, start MAME e.g. with (key map path on Linux):<br />
mame cpc6128 -keymap -keymap_file /usr/share/sdlmame/keymaps/km-de.txt<br />
<br />
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.<br />
<br />
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.<br />
<br />
==CPC artwork==<br />
[[File:MAME with CPC artwork.png|thumb|MAME window with monitor type set to green and optional CPC artwork]]<br />
You can add optional bezel artwork to MAME to simulate a CPC monitor:<br />
*[[Media:Cpc6128 mame artwork.zip|MAME artwork]] (CPC6128/GT65 bezel)<br />
<br />
Rename this file to cpc6128.zip and put it in MAME's artwork folder (~/.mame/artwork/ on Linux).<br />
<br />
==ROMs and extension hardware==<br />
<br />
[[Media:CPC_ROMs_for_MAME.zip|CPC ROMs for MAME]]. Just unzip the file and move the ZIPs inside into the MAME ROM folder.<br />
<br />
===General notes about MAME and ROMs===<br />
<br />
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.)<br />
<br />
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.<br />
<br />
===Slot options (extension hardware)===<br />
[[File:MESS with Dobbertin Smart Watch.png|thumb|upright=1.4||MAME with the Dobbertin Smart Watch ROM loaded (-exp smartwatch)]]<br />
[[File:Brunword mame.png|thumb|upright=1.4||BrunWord MK4 (ROM) main menu in MAME 0.162 (-exp brunword4)]]<br />
<br />
You can get a list of slot options with<br />
<br />
mame cpc6128 -lslot<br />
<br />
These are (as of MAME 0.163):<br />
<br />
*for "-centronics"<br />
{|class="wikitable"<br />
|-<br />
|pl80 <br />
|COMX PL-80<br />
|-<br />
|ex800 <br />
|Epson EX-800<br />
|-<br />
|lx800 <br />
|Epson LX-800<br />
|-<br />
|lx810l <br />
|Epson LX-810L<br />
|-<br />
|ap2000 <br />
|Epson ActionPrinter 2000<br />
|-<br />
|printer <br />
|Centronics Printer<br />
|-<br />
|digiblst <br />
|[[Digiblaster]] (DIY)<br />
|}<br />
<br />
*for "-exp"<br />
{|class="wikitable"<br />
|-<br />
|ssa1 <br />
|[[Amstrad SSA-1 Speech Synthesizer]]<br />
|-<br />
|dkspeech <br />
|[[Dk'tronics Speech Synthesizer]]<br />
|-<br />
|rom <br />
|ROM Box<br />
|-<br />
|multiface2 <br />
|[[Multiface II]]<br />
|-<br />
|pds <br />
|[[PDS development system|Programmers Development System (CPC Target)]]<br />
|-<br />
|rs232 <br />
|Pace RS232C interface<br />
|-<br />
|amsrs232 <br />
|[[Original Amstrad RS232 interface|Amstrad RS232C interface]]<br />
|-<br />
|sf2 <br />
|[[SYMBiFACE II]]<br />
|-<br />
|amdrum <br />
|[[Amdrum]]<br />
|-<br />
|playcity <br />
|[[PlayCity]]<br />
|-<br />
|smartwatch <br />
|[[Dobbertin Smart Watch]]<br />
|-<br />
|brunword4<br />
|[[BrunWord]] Elite MK4<br />
|-<br />
|hd20<br />
|[[Dobbertin Harddisc]]<br />
|}<br />
<br />
===Loading external ROMs===<br />
<br />
The ROM Box expansion can be used to load external ROMs such as [[MAXAM]]:<br />
<br />
mame cpc6128 -exp rom -rom1 /path/to/MAXAM.ROM<br />
<br />
Up to 8 external ROMs (-rom1 to -rom8) are supported this way.<br />
<br />
===[[Dobbertin Harddisc]]===<br />
<br />
From the [http://www.cpcwiki.eu/forum/emulators/got-bored-again/msg102272/#msg102272 forum post]:<br />
<br />
To use, add -exp hd20 to the commandline, which will also allow you to add -hard <filename>.<br />
Code:<br />
<br />
mame cpc6128 -exp hd20 -hard1 disk.chd<br />
<br />
Only MAME CHDs are supported, you can create a blank hard disk image using chdman. Geometry is 615/4/17.<br />
Code:<br />
<br />
chdman createhd -o disk.chd -c none -chs 615,4,17<br />
<br />
(-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)<br />
<br />
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.<br />
<br />
See http://mahlemiut.marpirc.net/cpc_hd20.avi, a quick demo loading a game from HD.<br />
<br />
==CRT simulation==<br />
[[File:Cpc shader mess.png|thumb|GLSL shader example (Linux)]]<br />
[[File:Cpc hlsl shader mess detail.png|thumb|HLSL "1980s" shader (Windows); MAME config used is on image description page]]<br />
MAME can use shaders to simulate typical CRT graphics artifacts such as scanlines, colors bleeding into each other, jitter, and display curvature.<br />
<br />
Some example configurations:<br />
*Windows (using HLSL shaders)<br />
**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)<br />
**A German shader tutorial: [http://www.aep-emu.de/PNphpBB2-file-viewtopic-p-94168.html]<br />
*Linux (using GLSL shaders): MAME tutorial [http://www.mameau.com/mame-glsl-shaders-setup/]<br />
<br />
==Remaining issues with CPC emulation==<br />
<br />
*MAME may fail to read DSK images with certain kinds of copy protection. Speedlock seems to work fine though.<br />
*MAME cannot write to disc images in DSK format; only MFI (MESS floppy image) and MFM (HxCFloppyEmulator floppy image) are supported for writing.<br />
*Some demo tricks may be broken in MAME, e.g. overscan pictures are horizontally misaligned (i.e., shifted to the right).<br />
*CPC+/GX4000 emulation still has some obvious graphics glitches.<br />
*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.<br />
<br />
==JSMESS, a JavaScript port==<br />
<br />
There is an experimental port of MAME/MESS to JavaScript, see the [[JSMESS]] article for details.<br />
<br />
==Links==<br />
<br />
*{{EnWiki}}<br />
*[http://mamedev.org/ Official site]<br />
*[http://www.mess.org/mess:howto MESS user's manual]<br />
*[[Media:CPC_ROMs_for_MAME.zip|CPC ROMs for MAME]]<br />
<br />
[[Category:Emulator]]</div>Mornhttps://www.cpcwiki.eu/index.php?title=MAME&diff=93893MAME2015-07-02T12:51:08Z<p>Morn: /* Starting MAME; command line arguments; MAME menu; quitting */</p>
<hr />
<div>[[File:Mess sysinfo.png|thumb|upright=.9|The MAME system info box for the CPC6128]]<br />
[[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]]''.]]<br />
'''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.<br />
<br />
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.<br />
<br />
==Emulated systems==<br />
<br />
Currently, [http://www.progettoemma.net/mess/sysset.php 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).<br />
<br />
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.<br />
<br />
==Installation==<br />
<br />
MAME runs on Windows, Mac OS X, Linux, and FreeBSD. You can get Windows binaries from [http://mamedev.org/release.html mamedev.org].<br />
<br />
On OS X, you can install MAME via [http://brew.sh/ Homebrew]:<br />
brew tap homebrew/games<br />
brew install mame<br />
<br />
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:<br />
alias mame=/usr/share/sdlmame/sdlmame<br />
<br />
==Starting MAME; command line arguments; MAME menu; quitting==<br />
<br />
First get the [[Media:CPC_ROMs_for_MAME.zip|CPC ROMs for MAME]] and unzip them into the MAME roms folder.<br />
<br />
Typical command line to start MAME in CPC mode (windowed mode and with a disc inserted in drive A):<br />
mame cpc6128 -skip_gameinfo -window -flop1 disk.dsk<br />
<br />
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).<br />
<br />
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.<br />
<br />
;Device options for the CPC from [http://www.progettoemma.net/mess/extra.html sysinfo.dat]<br />
{|class="wikitable"<br />
|'''Name'''<br />
|'''Argument'''<br />
|'''Allowed file extensions'''<br />
|-<br />
|Printer<br />
| -prin<br />
|.prn<br />
|-<br />
|Snapshot<br />
| -dump<br />
|.sna<br />
|-<br />
|Disk drive A<br />
| -flop1<br />
|rowspan="2"|.dsk; .d77; .d88; .1dd; .dfi; .imd; .ipf; .mfi; .mfm<br />
|-<br />
|Disk drive B<br />
| -flop2<br />
|-<br />
|Tape<br />
| -cass<br />
|.wav; .cdt<br />
|-<br />
|Cartridge<br />
| -cart<br />
|.cpr; .bin (Plus series and GX4000 only)<br />
|}<br />
<br />
Supported file types can also be shown with the "-listmedia" command line option.<br />
<br />
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.<br />
mame cpc6128 -flop1 disk.zip/disk0.dsk<br />
<br />
===Python script===<br />
On Linux, you can also set your file manager (e.g. Nautilus or Konqueror) to open .dsk files with the following Python script:<br />
<pre><br />
#!/usr/bin/env python<br />
<br />
# Call as<br />
# "cpc" : emulated keyboard<br />
# "cpcn" : natural<br />
<br />
import os, os.path, zipfile<br />
from sys import argv<br />
<br />
if 'cpcn' in argv[0]:<br />
nat = '-natural'<br />
else:<br />
nat = ''<br />
<br />
s = "/usr/share/sdlmame/sdlmame cpc6128 -skip_gameinfo -window %s -keymap -keymap_file /usr/share/sdlmame/keymaps/km-de.txt" % nat<br />
<br />
def checkzip(t):<br />
"Check if file is a ZIP file; use the first file in the archive"<br />
if t[-4:].lower() == '.zip':<br />
a = zipfile.ZipFile(t).namelist()<br />
t = os.path.join(t, a[0])<br />
return t<br />
<br />
if len(argv) > 1:<br />
for x in range(1, len(argv)):<br />
s += ' -flop%u "%s"' % (x, checkzip(argv[x]))<br />
os.system(s)<br />
</pre><br />
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.<br />
<br />
==GUI front-ends==<br />
[[File:Mameui.png|thumb|MAMEUI64 on Windows]]<br />
[[File:Messmenu.png|thumb|MessMenu on OS X with a CPC ROM selected. Currently, seven different CPC models are supported, including some regional variants (French and Swedish).]]<br />
<br />
Various GUI front-ends for MAME/MESS exist for Windows, Linux, and OS X:<br />
<br />
*[http://www.mameui.info/ MAMEUI64] (Windows)<br />
*[http://qmc2.arcadehits.net/ QMC2] (Windows, OS X, Linux)<br />
<br />
==Keyboard layouts==<br />
<br />
MAME supports two keyboard modes:<br />
* '''emulated''' (the default; keys are assigned based on key position on the emulated hardware)<br />
* '''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)<br />
<br />
To use a German keyboard in emulated keyboard mode, start MAME e.g. with (key map path on Linux):<br />
mame cpc6128 -keymap -keymap_file /usr/share/sdlmame/keymaps/km-de.txt<br />
<br />
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.<br />
<br />
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.<br />
<br />
==CPC artwork==<br />
[[File:MAME with CPC artwork.png|thumb|MAME window with monitor type set to green and optional CPC artwork]]<br />
You can add optional bezel artwork to MAME to simulate a CPC monitor:<br />
*[[Media:Cpc6128 mame artwork.zip|MAME artwork]] (CPC6128/GT65 bezel)<br />
<br />
Rename this file to cpc6128.zip and put it in MAME's artwork folder (~/.mame/artwork/ on Linux).<br />
<br />
==ROMs and extension hardware==<br />
<br />
[[Media:CPC_ROMs_for_MAME.zip|CPC ROMs for MAME]]. Just unzip the file and move the ZIPs inside into the MAME ROM folder.<br />
<br />
;General notes about MAME and ROMs<br />
<br />
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.)<br />
<br />
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.<br />
<br />
;Slot options (extension hardware)<br />
[[File:MESS with Dobbertin Smart Watch.png|thumb|upright=1.4||MAME with the Dobbertin Smart Watch ROM loaded (-exp smartwatch)]]<br />
[[File:Brunword mame.png|thumb|upright=1.4||BrunWord MK4 (ROM) main menu in MAME 0.162 (-exp brunword4)]]<br />
<br />
You can get a list of slot options with<br />
<br />
mame cpc6128 -lslot<br />
<br />
These are (as of MAME 0.163):<br />
<br />
*for "-centronics"<br />
{|class="wikitable"<br />
|-<br />
|pl80 <br />
|COMX PL-80<br />
|-<br />
|ex800 <br />
|Epson EX-800<br />
|-<br />
|lx800 <br />
|Epson LX-800<br />
|-<br />
|lx810l <br />
|Epson LX-810L<br />
|-<br />
|ap2000 <br />
|Epson ActionPrinter 2000<br />
|-<br />
|printer <br />
|Centronics Printer<br />
|-<br />
|digiblst <br />
|[[Digiblaster]] (DIY)<br />
|}<br />
<br />
*for "-exp"<br />
{|class="wikitable"<br />
|-<br />
|ssa1 <br />
|[[Amstrad SSA-1 Speech Synthesizer]]<br />
|-<br />
|dkspeech <br />
|[[Dk'tronics Speech Synthesizer]]<br />
|-<br />
|rom <br />
|ROM Box<br />
|-<br />
|multiface2 <br />
|[[Multiface II]]<br />
|-<br />
|pds <br />
|[[PDS development system|Programmers Development System (CPC Target)]]<br />
|-<br />
|rs232 <br />
|Pace RS232C interface<br />
|-<br />
|amsrs232 <br />
|[[Original Amstrad RS232 interface|Amstrad RS232C interface]]<br />
|-<br />
|sf2 <br />
|[[SYMBiFACE II]]<br />
|-<br />
|amdrum <br />
|[[Amdrum]]<br />
|-<br />
|playcity <br />
|[[PlayCity]]<br />
|-<br />
|smartwatch <br />
|[[Dobbertin Smart Watch]]<br />
|-<br />
|brunword4<br />
|[[BrunWord]] Elite MK4<br />
|-<br />
|hd20<br />
|[[Dobbertin Harddisc]]<br />
|}<br />
<br />
;Loading external ROMs<br />
<br />
The ROM Box expansion can be used to load external ROMs such as [[MAXAM]]:<br />
<br />
mame cpc6128 -exp rom -rom1 /path/to/MAXAM.ROM<br />
<br />
Up to 8 external ROMs (-rom1 to -rom8) are supported this way.<br />
<br />
;[[Dobbertin Harddisc]]<br />
<br />
From the [http://www.cpcwiki.eu/forum/emulators/got-bored-again/msg102272/#msg102272 forum post]:<br />
<br />
To use, add -exp hd20 to the commandline, which will also allow you to add -hard <filename>.<br />
Code:<br />
<br />
mame cpc6128 -exp hd20 -hard1 disk.chd<br />
<br />
Only MAME CHDs are supported, you can create a blank hard disk image using chdman. Geometry is 615/4/17.<br />
Code:<br />
<br />
chdman createhd -o disk.chd -c none -chs 615,4,17<br />
<br />
(-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)<br />
<br />
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.<br />
<br />
See http://mahlemiut.marpirc.net/cpc_hd20.avi, a quick demo loading a game from HD.<br />
<br />
==CRT simulation==<br />
[[File:Cpc shader mess.png|thumb|GLSL shader example (Linux)]]<br />
[[File:Cpc hlsl shader mess detail.png|thumb|HLSL "1980s" shader (Windows); MAME config used is on image description page]]<br />
MAME can use shaders to simulate typical CRT graphics artifacts such as scanlines, colors bleeding into each other, jitter, and display curvature.<br />
<br />
Some example configurations:<br />
*Windows (using HLSL shaders)<br />
**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)<br />
**A German shader tutorial: [http://www.aep-emu.de/PNphpBB2-file-viewtopic-p-94168.html]<br />
*Linux (using GLSL shaders): MAME tutorial [http://www.mameau.com/mame-glsl-shaders-setup/]<br />
<br />
==Remaining issues with CPC emulation==<br />
<br />
*MAME may fail to read DSK images with certain kinds of copy protection. Speedlock seems to work fine though.<br />
*MAME cannot write to disc images in DSK format; only MFI (MESS floppy image) and MFM (HxCFloppyEmulator floppy image) are supported for writing.<br />
*Some demo tricks may be broken in MAME, e.g. overscan pictures are horizontally misaligned (i.e., shifted to the right).<br />
*CPC+/GX4000 emulation still has some obvious graphics glitches.<br />
*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.<br />
<br />
==JSMESS, a JavaScript port==<br />
<br />
There is an experimental port of MAME/MESS to JavaScript, see the [[JSMESS]] article for details.<br />
<br />
==Links==<br />
<br />
*{{EnWiki}}<br />
*[http://mamedev.org/ Official site]<br />
*[http://www.mess.org/mess:howto MESS user's manual]<br />
*[[Media:CPC_ROMs_for_MAME.zip|CPC ROMs for MAME]]<br />
<br />
[[Category:Emulator]]</div>Mornhttps://www.cpcwiki.eu/index.php?title=MAME&diff=93890MAME2015-07-02T11:03:30Z<p>Morn: </p>
<hr />
<div>[[File:Mess sysinfo.png|thumb|upright=.9|The MAME system info box for the CPC6128]]<br />
[[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]]''.]]<br />
'''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.<br />
<br />
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.<br />
<br />
==Emulated systems==<br />
<br />
Currently, [http://www.progettoemma.net/mess/sysset.php 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).<br />
<br />
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.<br />
<br />
==Installation==<br />
<br />
MAME runs on Windows, Mac OS X, Linux, and FreeBSD. You can get Windows binaries from [http://mamedev.org/release.html mamedev.org].<br />
<br />
On OS X, you can install MAME via [http://brew.sh/ Homebrew]:<br />
brew tap homebrew/games<br />
brew install mame<br />
<br />
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:<br />
alias mame=/usr/share/sdlmame/sdlmame<br />
<br />
==Starting MAME; command line arguments; MAME menu; quitting==<br />
<br />
First get the [[Media:CPC_ROMs_for_MAME.zip|CPC ROMs for MAME]] and unzip them into the MAME roms folder.<br />
<br />
Typical command line to start MAME in CPC mode (windowed mode and with a disc inserted in drive A):<br />
mame cpc6128 -skip_gameinfo -window -flop1 disk.dsk<br />
<br />
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).<br />
<br />
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.<br />
<br />
;Device options for the CPC from [http://www.progettoemma.net/mess/extra.html sysinfo.dat]<br />
{|class="wikitable"<br />
|'''Name'''<br />
|'''Argument'''<br />
|'''Allowed file extensions'''<br />
|-<br />
|Printer<br />
| -prin<br />
|.prn<br />
|-<br />
|Snapshot<br />
| -dump<br />
|.sna<br />
|-<br />
|Disk drive A<br />
| -flop1<br />
|rowspan="2"|.dsk; .d77; .d88; .1dd; .dfi; .imd; .ipf; .mfi; .mfm<br />
|-<br />
|Disk drive B<br />
| -flop2<br />
|-<br />
|Tape<br />
| -cass<br />
|.wav; .cdt<br />
|-<br />
|Cartridge<br />
| -cart<br />
|.cpr; .bin (Plus series and GX4000 only)<br />
|}<br />
<br />
Supported file types can also be shown with the "-listmedia" command line option.<br />
<br />
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.<br />
mame cpc6128 -flop1 disk.zip/disk0.dsk<br />
<br />
On Linux, you can also set your file manager (e.g. Nautilus or Konqueror) to open .dsk files with the following Python script:<br />
<pre><br />
#!/usr/bin/env python<br />
<br />
# Call as<br />
# "cpc" : emulated keyboard<br />
# "cpcn" : natural<br />
<br />
import os<br />
from sys import argv<br />
<br />
if 'cpcn' in argv[0]:<br />
nat = '-natural'<br />
else:<br />
nat = ''<br />
<br />
s = "/usr/share/sdlmame/sdlmame cpc6128 -skip_gameinfo -window %s -keymap -keymap_file /usr/share/sdlmame/keymaps/km-de.txt" % nat<br />
<br />
if len(argv) > 1:<br />
for x in range(1, len(argv)):<br />
s += ' -flop%u "%s"' % (x, argv[x])<br />
os.system(s)<br />
</pre><br />
This script should open a MAME window with the disc inserted in drive A. (Note that this also selects the German keymap.)<br />
<br />
==GUI front-ends==<br />
[[File:Mameui.png|thumb|MAMEUI64 on Windows]]<br />
[[File:Messmenu.png|thumb|MessMenu on OS X with a CPC ROM selected. Currently, seven different CPC models are supported, including some regional variants (French and Swedish).]]<br />
<br />
Various GUI front-ends for MAME/MESS exist for Windows, Linux, and OS X:<br />
<br />
*[http://www.mameui.info/ MAMEUI64] (Windows)<br />
*[http://qmc2.arcadehits.net/ QMC2] (Windows, OS X, Linux)<br />
<br />
==Keyboard layouts==<br />
<br />
MAME supports two keyboard modes:<br />
* '''emulated''' (the default; keys are assigned based on key position on the emulated hardware)<br />
* '''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)<br />
<br />
To use a German keyboard in emulated keyboard mode, start MAME e.g. with (key map path on Linux):<br />
mame cpc6128 -keymap -keymap_file /usr/share/sdlmame/keymaps/km-de.txt<br />
<br />
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.<br />
<br />
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.<br />
<br />
==CPC artwork==<br />
[[File:MAME with CPC artwork.png|thumb|MAME window with monitor type set to green and optional CPC artwork]]<br />
You can add optional bezel artwork to MAME to simulate a CPC monitor:<br />
*[[Media:Cpc6128 mame artwork.zip|MAME artwork]] (CPC6128/GT65 bezel)<br />
<br />
Rename this file to cpc6128.zip and put it in MAME's artwork folder (~/.mame/artwork/ on Linux).<br />
<br />
==ROMs and extension hardware==<br />
<br />
[[Media:CPC_ROMs_for_MAME.zip|CPC ROMs for MAME]]. Just unzip the file and move the ZIPs inside into the MAME ROM folder.<br />
<br />
;General notes about MAME and ROMs<br />
<br />
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.)<br />
<br />
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.<br />
<br />
;Slot options (extension hardware)<br />
[[File:MESS with Dobbertin Smart Watch.png|thumb|upright=1.4||MAME with the Dobbertin Smart Watch ROM loaded (-exp smartwatch)]]<br />
[[File:Brunword mame.png|thumb|upright=1.4||BrunWord MK4 (ROM) main menu in MAME 0.162 (-exp brunword4)]]<br />
<br />
You can get a list of slot options with<br />
<br />
mame cpc6128 -lslot<br />
<br />
These are (as of MAME 0.163):<br />
<br />
*for "-centronics"<br />
{|class="wikitable"<br />
|-<br />
|pl80 <br />
|COMX PL-80<br />
|-<br />
|ex800 <br />
|Epson EX-800<br />
|-<br />
|lx800 <br />
|Epson LX-800<br />
|-<br />
|lx810l <br />
|Epson LX-810L<br />
|-<br />
|ap2000 <br />
|Epson ActionPrinter 2000<br />
|-<br />
|printer <br />
|Centronics Printer<br />
|-<br />
|digiblst <br />
|[[Digiblaster]] (DIY)<br />
|}<br />
<br />
*for "-exp"<br />
{|class="wikitable"<br />
|-<br />
|ssa1 <br />
|[[Amstrad SSA-1 Speech Synthesizer]]<br />
|-<br />
|dkspeech <br />
|[[Dk'tronics Speech Synthesizer]]<br />
|-<br />
|rom <br />
|ROM Box<br />
|-<br />
|multiface2 <br />
|[[Multiface II]]<br />
|-<br />
|pds <br />
|[[PDS development system|Programmers Development System (CPC Target)]]<br />
|-<br />
|rs232 <br />
|Pace RS232C interface<br />
|-<br />
|amsrs232 <br />
|[[Original Amstrad RS232 interface|Amstrad RS232C interface]]<br />
|-<br />
|sf2 <br />
|[[SYMBiFACE II]]<br />
|-<br />
|amdrum <br />
|[[Amdrum]]<br />
|-<br />
|playcity <br />
|[[PlayCity]]<br />
|-<br />
|smartwatch <br />
|[[Dobbertin Smart Watch]]<br />
|-<br />
|brunword4<br />
|[[BrunWord]] Elite MK4<br />
|-<br />
|hd20<br />
|[[Dobbertin Harddisc]]<br />
|}<br />
<br />
;Loading external ROMs<br />
<br />
The ROM Box expansion can be used to load external ROMs such as [[MAXAM]]:<br />
<br />
mame cpc6128 -exp rom -rom1 /path/to/MAXAM.ROM<br />
<br />
Up to 8 external ROMs (-rom1 to -rom8) are supported this way.<br />
<br />
;[[Dobbertin Harddisc]]<br />
<br />
From the [http://www.cpcwiki.eu/forum/emulators/got-bored-again/msg102272/#msg102272 forum post]:<br />
<br />
To use, add -exp hd20 to the commandline, which will also allow you to add -hard <filename>.<br />
Code:<br />
<br />
mame cpc6128 -exp hd20 -hard1 disk.chd<br />
<br />
Only MAME CHDs are supported, you can create a blank hard disk image using chdman. Geometry is 615/4/17.<br />
Code:<br />
<br />
chdman createhd -o disk.chd -c none -chs 615,4,17<br />
<br />
(-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)<br />
<br />
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.<br />
<br />
See http://mahlemiut.marpirc.net/cpc_hd20.avi, a quick demo loading a game from HD.<br />
<br />
==CRT simulation==<br />
[[File:Cpc shader mess.png|thumb|GLSL shader example (Linux)]]<br />
[[File:Cpc hlsl shader mess detail.png|thumb|HLSL "1980s" shader (Windows); MAME config used is on image description page]]<br />
MAME can use shaders to simulate typical CRT graphics artifacts such as scanlines, colors bleeding into each other, jitter, and display curvature.<br />
<br />
Some example configurations:<br />
*Windows (using HLSL shaders)<br />
**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)<br />
**A German shader tutorial: [http://www.aep-emu.de/PNphpBB2-file-viewtopic-p-94168.html]<br />
*Linux (using GLSL shaders): MAME tutorial [http://www.mameau.com/mame-glsl-shaders-setup/]<br />
<br />
==Remaining issues with CPC emulation==<br />
<br />
*MAME may fail to read DSK images with certain kinds of copy protection. Speedlock seems to work fine though.<br />
*MAME cannot write to disc images in DSK format; only MFI (MESS floppy image) and MFM (HxCFloppyEmulator floppy image) are supported for writing.<br />
*Some demo tricks may be broken in MAME, e.g. overscan pictures are horizontally misaligned (i.e., shifted to the right).<br />
*CPC+/GX4000 emulation still has some obvious graphics glitches.<br />
*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.<br />
<br />
==JSMESS, a JavaScript port==<br />
<br />
There is an experimental port of MAME/MESS to JavaScript, see the [[JSMESS]] article for details.<br />
<br />
==Links==<br />
<br />
*{{EnWiki}}<br />
*[http://mamedev.org/ Official site]<br />
*[http://www.mess.org/mess:howto MESS user's manual]<br />
*[[Media:CPC_ROMs_for_MAME.zip|CPC ROMs for MAME]]<br />
<br />
[[Category:Emulator]]</div>Mornhttps://www.cpcwiki.eu/index.php?title=MAME&diff=93889MAME2015-07-02T11:01:40Z<p>Morn: /* CPC artwork */</p>
<hr />
<div>[[File:Mess sysinfo.png|thumb|upright=.9|The MAME system info box for the CPC6128]]<br />
[[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]]''.]]<br />
'''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.<br />
<br />
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.<br />
<br />
==Emulated systems==<br />
<br />
Currently, [http://www.progettoemma.net/mess/sysset.php 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).<br />
<br />
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.<br />
<br />
==Installation==<br />
<br />
MAME runs on Windows, Mac OS X, Linux, and FreeBSD. You can get Windows binaries from [http://mamedev.org/release.html mamedev.org].<br />
<br />
On OS X, you can install MAME via [http://brew.sh/ Homebrew]:<br />
brew tap homebrew/games<br />
brew install mame<br />
<br />
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:<br />
alias mame=/usr/share/sdlmame/sdlmame<br />
<br />
==Starting MAME; command line arguments; MAME menu; quitting==<br />
<br />
First get the [[Media:CPC_ROMs_for_MAME.zip|CPC ROMs for MAME]] and unzip them into the MAME roms folder.<br />
<br />
Typical command line to start MAME in CPC mode (windowed mode and with a disc inserted in drive A):<br />
mame cpc6128 -skip_gameinfo -window -flop1 disk.dsk<br />
<br />
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).<br />
<br />
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.<br />
<br />
;Device options for the CPC from [http://www.progettoemma.net/mess/extra.html sysinfo.dat]<br />
{|class="wikitable"<br />
|'''Name'''<br />
|'''Argument'''<br />
|'''Allowed file extensions'''<br />
|-<br />
|Printer<br />
| -prin<br />
|.prn<br />
|-<br />
|Snapshot<br />
| -dump<br />
|.sna<br />
|-<br />
|Disk drive A<br />
| -flop1<br />
|rowspan="2"|.dsk; .d77; .d88; .1dd; .dfi; .imd; .ipf; .mfi; .mfm<br />
|-<br />
|Disk drive B<br />
| -flop2<br />
|-<br />
|Tape<br />
| -cass<br />
|.wav; .cdt<br />
|-<br />
|Cartridge<br />
| -cart<br />
|.cpr; .bin (Plus series and GX4000 only)<br />
|}<br />
<br />
Supported file types can also be shown with the "-listmedia" command line option.<br />
<br />
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.<br />
mame cpc6128 -flop1 disk.zip/disk0.dsk<br />
<br />
On Linux, you can also set your file manager (e.g. Nautilus or Konqueror) to open .dsk files with the following Python script:<br />
<pre><br />
#!/usr/bin/env python<br />
<br />
# Call as<br />
# "cpc" : emulated keyboard<br />
# "cpcn" : natural<br />
<br />
import os<br />
from sys import argv<br />
<br />
if 'cpcn' in argv[0]:<br />
nat = '-natural'<br />
else:<br />
nat = ''<br />
<br />
s = "/usr/share/sdlmame/sdlmame cpc6128 -skip_gameinfo -window %s -keymap -keymap_file /usr/share/sdlmame/keymaps/km-de.txt" % nat<br />
<br />
if len(argv) > 1:<br />
for x in range(1, len(argv)):<br />
s += ' -flop%u "%s"' % (x, argv[x])<br />
os.system(s)<br />
</pre><br />
This script should open a MAME window with the disc inserted in drive A. (Note that this also selects the German keymap.)<br />
<br />
==Keyboard layouts==<br />
<br />
MAME supports two keyboard modes:<br />
* '''emulated''' (the default; keys are assigned based on key position on the emulated hardware)<br />
* '''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)<br />
<br />
To use a German keyboard in emulated keyboard mode, start MAME e.g. with (key map path on Linux):<br />
mame cpc6128 -keymap -keymap_file /usr/share/sdlmame/keymaps/km-de.txt<br />
<br />
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.<br />
<br />
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.<br />
<br />
==CPC artwork==<br />
[[File:MAME with CPC artwork.png|thumb|MAME window with monitor type set to green and optional CPC artwork]]<br />
You can add optional bezel artwork to MAME to simulate a CPC monitor:<br />
*[[Media:Cpc6128 mame artwork.zip|MAME artwork]] (CPC6128/GT65 bezel)<br />
<br />
Rename this file to cpc6128.zip and put it in MAME's artwork folder (~/.mame/artwork/ on Linux).<br />
<br />
==ROMs and extension hardware==<br />
<br />
[[Media:CPC_ROMs_for_MAME.zip|CPC ROMs for MAME]]. Just unzip the file and move the ZIPs inside into the MAME ROM folder.<br />
<br />
;General notes about MAME and ROMs<br />
<br />
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.)<br />
<br />
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.<br />
<br />
;Slot options (extension hardware)<br />
[[File:MESS with Dobbertin Smart Watch.png|thumb|upright=1.4||MAME with the Dobbertin Smart Watch ROM loaded (-exp smartwatch)]]<br />
[[File:Brunword mame.png|thumb|upright=1.4||BrunWord MK4 (ROM) main menu in MAME 0.162 (-exp brunword4)]]<br />
<br />
You can get a list of slot options with<br />
<br />
mame cpc6128 -lslot<br />
<br />
These are (as of MAME 0.163):<br />
<br />
*for "-centronics"<br />
{|class="wikitable"<br />
|-<br />
|pl80 <br />
|COMX PL-80<br />
|-<br />
|ex800 <br />
|Epson EX-800<br />
|-<br />
|lx800 <br />
|Epson LX-800<br />
|-<br />
|lx810l <br />
|Epson LX-810L<br />
|-<br />
|ap2000 <br />
|Epson ActionPrinter 2000<br />
|-<br />
|printer <br />
|Centronics Printer<br />
|-<br />
|digiblst <br />
|[[Digiblaster]] (DIY)<br />
|}<br />
<br />
*for "-exp"<br />
{|class="wikitable"<br />
|-<br />
|ssa1 <br />
|[[Amstrad SSA-1 Speech Synthesizer]]<br />
|-<br />
|dkspeech <br />
|[[Dk'tronics Speech Synthesizer]]<br />
|-<br />
|rom <br />
|ROM Box<br />
|-<br />
|multiface2 <br />
|[[Multiface II]]<br />
|-<br />
|pds <br />
|[[PDS development system|Programmers Development System (CPC Target)]]<br />
|-<br />
|rs232 <br />
|Pace RS232C interface<br />
|-<br />
|amsrs232 <br />
|[[Original Amstrad RS232 interface|Amstrad RS232C interface]]<br />
|-<br />
|sf2 <br />
|[[SYMBiFACE II]]<br />
|-<br />
|amdrum <br />
|[[Amdrum]]<br />
|-<br />
|playcity <br />
|[[PlayCity]]<br />
|-<br />
|smartwatch <br />
|[[Dobbertin Smart Watch]]<br />
|-<br />
|brunword4<br />
|[[BrunWord]] Elite MK4<br />
|-<br />
|hd20<br />
|[[Dobbertin Harddisc]]<br />
|}<br />
<br />
;Loading external ROMs<br />
<br />
The ROM Box expansion can be used to load external ROMs such as [[MAXAM]]:<br />
<br />
mame cpc6128 -exp rom -rom1 /path/to/MAXAM.ROM<br />
<br />
Up to 8 external ROMs (-rom1 to -rom8) are supported this way.<br />
<br />
;[[Dobbertin Harddisc]]<br />
<br />
From the [http://www.cpcwiki.eu/forum/emulators/got-bored-again/msg102272/#msg102272 forum post]:<br />
<br />
To use, add -exp hd20 to the commandline, which will also allow you to add -hard <filename>.<br />
Code:<br />
<br />
mame cpc6128 -exp hd20 -hard1 disk.chd<br />
<br />
Only MAME CHDs are supported, you can create a blank hard disk image using chdman. Geometry is 615/4/17.<br />
Code:<br />
<br />
chdman createhd -o disk.chd -c none -chs 615,4,17<br />
<br />
(-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)<br />
<br />
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.<br />
<br />
See http://mahlemiut.marpirc.net/cpc_hd20.avi, a quick demo loading a game from HD.<br />
<br />
==GUI front-ends==<br />
[[File:Mameui.png|thumb|MAMEUI64 on Windows]]<br />
[[File:Messmenu.png|thumb|MessMenu on OS X with a CPC ROM selected. Currently, seven different CPC models are supported, including some regional variants (French and Swedish).]]<br />
<br />
Various GUI front-ends for MAME/MESS exist for Windows, Linux, and OS X:<br />
<br />
*[http://www.mameui.info/ MAMEUI64] (Windows)<br />
*[http://qmc2.arcadehits.net/ QMC2] (Windows, OS X, Linux)<br />
<br />
==CRT simulation==<br />
[[File:Cpc shader mess.png|thumb|GLSL shader example (Linux)]]<br />
[[File:Cpc hlsl shader mess detail.png|thumb|HLSL "1980s" shader (Windows); MAME config used is on image description page]]<br />
MAME can use shaders to simulate typical CRT graphics artifacts such as scanlines, colors bleeding into each other, jitter, and display curvature.<br />
<br />
Some example configurations:<br />
*Windows (using HLSL shaders)<br />
**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)<br />
**A German shader tutorial: [http://www.aep-emu.de/PNphpBB2-file-viewtopic-p-94168.html]<br />
*Linux (using GLSL shaders): MAME tutorial [http://www.mameau.com/mame-glsl-shaders-setup/]<br />
<br />
==Remaining issues with CPC emulation==<br />
<br />
*MAME may fail to read DSK images with certain kinds of copy protection. Speedlock seems to work fine though.<br />
*MAME cannot write to disc images in DSK format; only MFI (MESS floppy image) and MFM (HxCFloppyEmulator floppy image) are supported for writing.<br />
*Some demo tricks may be broken in MAME, e.g. overscan pictures are horizontally misaligned (i.e., shifted to the right).<br />
*CPC+/GX4000 emulation still has some obvious graphics glitches.<br />
*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.<br />
<br />
==JSMESS, a JavaScript port==<br />
<br />
There is an experimental port of MAME/MESS to JavaScript, see the [[JSMESS]] article for details.<br />
<br />
==Links==<br />
<br />
*{{EnWiki}}<br />
*[http://mamedev.org/ Official site]<br />
*[http://www.mess.org/mess:howto MESS user's manual]<br />
*[[Media:CPC_ROMs_for_MAME.zip|CPC ROMs for MAME]]<br />
<br />
[[Category:Emulator]]</div>Mornhttps://www.cpcwiki.eu/index.php?title=File:MAME_with_CPC_artwork.png&diff=93888File:MAME with CPC artwork.png2015-07-01T22:13:13Z<p>Morn: Morn uploaded a new version of File:MAME with CPC artwork.png</p>
<hr />
<div></div>Mornhttps://www.cpcwiki.eu/index.php?title=MAME&diff=93887MAME2015-07-01T20:56:17Z<p>Morn: /* CPC artwork */</p>
<hr />
<div>[[File:Mess sysinfo.png|thumb|upright=.9|The MAME system info box for the CPC6128]]<br />
[[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]]''.]]<br />
'''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.<br />
<br />
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.<br />
<br />
==Emulated systems==<br />
<br />
Currently, [http://www.progettoemma.net/mess/sysset.php 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).<br />
<br />
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.<br />
<br />
==Installation==<br />
<br />
MAME runs on Windows, Mac OS X, Linux, and FreeBSD. You can get Windows binaries from [http://mamedev.org/release.html mamedev.org].<br />
<br />
On OS X, you can install MAME via [http://brew.sh/ Homebrew]:<br />
brew tap homebrew/games<br />
brew install mame<br />
<br />
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:<br />
alias mame=/usr/share/sdlmame/sdlmame<br />
<br />
==Starting MAME; command line arguments; MAME menu; quitting==<br />
<br />
First get the [[Media:CPC_ROMs_for_MAME.zip|CPC ROMs for MAME]] and unzip them into the MAME roms folder.<br />
<br />
Typical command line to start MAME in CPC mode (windowed mode and with a disc inserted in drive A):<br />
mame cpc6128 -skip_gameinfo -window -flop1 disk.dsk<br />
<br />
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).<br />
<br />
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.<br />
<br />
;Device options for the CPC from [http://www.progettoemma.net/mess/extra.html sysinfo.dat]<br />
{|class="wikitable"<br />
|'''Name'''<br />
|'''Argument'''<br />
|'''Allowed file extensions'''<br />
|-<br />
|Printer<br />
| -prin<br />
|.prn<br />
|-<br />
|Snapshot<br />
| -dump<br />
|.sna<br />
|-<br />
|Disk drive A<br />
| -flop1<br />
|rowspan="2"|.dsk; .d77; .d88; .1dd; .dfi; .imd; .ipf; .mfi; .mfm<br />
|-<br />
|Disk drive B<br />
| -flop2<br />
|-<br />
|Tape<br />
| -cass<br />
|.wav; .cdt<br />
|-<br />
|Cartridge<br />
| -cart<br />
|.cpr; .bin (Plus series and GX4000 only)<br />
|}<br />
<br />
Supported file types can also be shown with the "-listmedia" command line option.<br />
<br />
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.<br />
mame cpc6128 -flop1 disk.zip/disk0.dsk<br />
<br />
On Linux, you can also set your file manager (e.g. Nautilus or Konqueror) to open .dsk files with the following Python script:<br />
<pre><br />
#!/usr/bin/env python<br />
<br />
# Call as<br />
# "cpc" : emulated keyboard<br />
# "cpcn" : natural<br />
<br />
import os<br />
from sys import argv<br />
<br />
if 'cpcn' in argv[0]:<br />
nat = '-natural'<br />
else:<br />
nat = ''<br />
<br />
s = "/usr/share/sdlmame/sdlmame cpc6128 -skip_gameinfo -window %s -keymap -keymap_file /usr/share/sdlmame/keymaps/km-de.txt" % nat<br />
<br />
if len(argv) > 1:<br />
for x in range(1, len(argv)):<br />
s += ' -flop%u "%s"' % (x, argv[x])<br />
os.system(s)<br />
</pre><br />
This script should open a MAME window with the disc inserted in drive A. (Note that this also selects the German keymap.)<br />
<br />
==Keyboard layouts==<br />
<br />
MAME supports two keyboard modes:<br />
* '''emulated''' (the default; keys are assigned based on key position on the emulated hardware)<br />
* '''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)<br />
<br />
To use a German keyboard in emulated keyboard mode, start MAME e.g. with (key map path on Linux):<br />
mame cpc6128 -keymap -keymap_file /usr/share/sdlmame/keymaps/km-de.txt<br />
<br />
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.<br />
<br />
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.<br />
<br />
==CPC artwork==<br />
[[File:MAME with CPC artwork.png|thumb|MAME window with monitor type set to green and optional CPC artwork]]<br />
[[Media:Cpc6128 mame artwork.zip|MAME artwork]] (CPC6128/GT65 bezel)<br />
<br />
Rename file to cpc6128.zip and put it in MAME's artwork folder.<br />
<br />
==ROMs and extension hardware==<br />
<br />
[[Media:CPC_ROMs_for_MAME.zip|CPC ROMs for MAME]]. Just unzip the file and move the ZIPs inside into the MAME ROM folder.<br />
<br />
;General notes about MAME and ROMs<br />
<br />
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.)<br />
<br />
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.<br />
<br />
;Slot options (extension hardware)<br />
[[File:MESS with Dobbertin Smart Watch.png|thumb|upright=1.4||MAME with the Dobbertin Smart Watch ROM loaded (-exp smartwatch)]]<br />
[[File:Brunword mame.png|thumb|upright=1.4||BrunWord MK4 (ROM) main menu in MAME 0.162 (-exp brunword4)]]<br />
<br />
You can get a list of slot options with<br />
<br />
mame cpc6128 -lslot<br />
<br />
These are (as of MAME 0.163):<br />
<br />
*for "-centronics"<br />
{|class="wikitable"<br />
|-<br />
|pl80 <br />
|COMX PL-80<br />
|-<br />
|ex800 <br />
|Epson EX-800<br />
|-<br />
|lx800 <br />
|Epson LX-800<br />
|-<br />
|lx810l <br />
|Epson LX-810L<br />
|-<br />
|ap2000 <br />
|Epson ActionPrinter 2000<br />
|-<br />
|printer <br />
|Centronics Printer<br />
|-<br />
|digiblst <br />
|[[Digiblaster]] (DIY)<br />
|}<br />
<br />
*for "-exp"<br />
{|class="wikitable"<br />
|-<br />
|ssa1 <br />
|[[Amstrad SSA-1 Speech Synthesizer]]<br />
|-<br />
|dkspeech <br />
|[[Dk'tronics Speech Synthesizer]]<br />
|-<br />
|rom <br />
|ROM Box<br />
|-<br />
|multiface2 <br />
|[[Multiface II]]<br />
|-<br />
|pds <br />
|[[PDS development system|Programmers Development System (CPC Target)]]<br />
|-<br />
|rs232 <br />
|Pace RS232C interface<br />
|-<br />
|amsrs232 <br />
|[[Original Amstrad RS232 interface|Amstrad RS232C interface]]<br />
|-<br />
|sf2 <br />
|[[SYMBiFACE II]]<br />
|-<br />
|amdrum <br />
|[[Amdrum]]<br />
|-<br />
|playcity <br />
|[[PlayCity]]<br />
|-<br />
|smartwatch <br />
|[[Dobbertin Smart Watch]]<br />
|-<br />
|brunword4<br />
|[[BrunWord]] Elite MK4<br />
|-<br />
|hd20<br />
|[[Dobbertin Harddisc]]<br />
|}<br />
<br />
;Loading external ROMs<br />
<br />
The ROM Box expansion can be used to load external ROMs such as [[MAXAM]]:<br />
<br />
mame cpc6128 -exp rom -rom1 /path/to/MAXAM.ROM<br />
<br />
Up to 8 external ROMs (-rom1 to -rom8) are supported this way.<br />
<br />
;[[Dobbertin Harddisc]]<br />
<br />
From the [http://www.cpcwiki.eu/forum/emulators/got-bored-again/msg102272/#msg102272 forum post]:<br />
<br />
To use, add -exp hd20 to the commandline, which will also allow you to add -hard <filename>.<br />
Code:<br />
<br />
mame cpc6128 -exp hd20 -hard1 disk.chd<br />
<br />
Only MAME CHDs are supported, you can create a blank hard disk image using chdman. Geometry is 615/4/17.<br />
Code:<br />
<br />
chdman createhd -o disk.chd -c none -chs 615,4,17<br />
<br />
(-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)<br />
<br />
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.<br />
<br />
See http://mahlemiut.marpirc.net/cpc_hd20.avi, a quick demo loading a game from HD.<br />
<br />
==GUI front-ends==<br />
[[File:Mameui.png|thumb|MAMEUI64 on Windows]]<br />
[[File:Messmenu.png|thumb|MessMenu on OS X with a CPC ROM selected. Currently, seven different CPC models are supported, including some regional variants (French and Swedish).]]<br />
<br />
Various GUI front-ends for MAME/MESS exist for Windows, Linux, and OS X:<br />
<br />
*[http://www.mameui.info/ MAMEUI64] (Windows)<br />
*[http://qmc2.arcadehits.net/ QMC2] (Windows, OS X, Linux)<br />
<br />
==CRT simulation==<br />
[[File:Cpc shader mess.png|thumb|GLSL shader example (Linux)]]<br />
[[File:Cpc hlsl shader mess detail.png|thumb|HLSL "1980s" shader (Windows); MAME config used is on image description page]]<br />
MAME can use shaders to simulate typical CRT graphics artifacts such as scanlines, colors bleeding into each other, jitter, and display curvature.<br />
<br />
Some example configurations:<br />
*Windows (using HLSL shaders)<br />
**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)<br />
**A German shader tutorial: [http://www.aep-emu.de/PNphpBB2-file-viewtopic-p-94168.html]<br />
*Linux (using GLSL shaders): MAME tutorial [http://www.mameau.com/mame-glsl-shaders-setup/]<br />
<br />
==Remaining issues with CPC emulation==<br />
<br />
*MAME may fail to read DSK images with certain kinds of copy protection. Speedlock seems to work fine though.<br />
*MAME cannot write to disc images in DSK format; only MFI (MESS floppy image) and MFM (HxCFloppyEmulator floppy image) are supported for writing.<br />
*Some demo tricks may be broken in MAME, e.g. overscan pictures are horizontally misaligned (i.e., shifted to the right).<br />
*CPC+/GX4000 emulation still has some obvious graphics glitches.<br />
*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.<br />
<br />
==JSMESS, a JavaScript port==<br />
<br />
There is an experimental port of MAME/MESS to JavaScript, see the [[JSMESS]] article for details.<br />
<br />
==Links==<br />
<br />
*{{EnWiki}}<br />
*[http://mamedev.org/ Official site]<br />
*[http://www.mess.org/mess:howto MESS user's manual]<br />
*[[Media:CPC_ROMs_for_MAME.zip|CPC ROMs for MAME]]<br />
<br />
[[Category:Emulator]]</div>Mornhttps://www.cpcwiki.eu/index.php?title=MAME&diff=93886MAME2015-07-01T20:53:32Z<p>Morn: /* Keyboard layouts */</p>
<hr />
<div>[[File:Mess sysinfo.png|thumb|upright=.9|The MAME system info box for the CPC6128]]<br />
[[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]]''.]]<br />
'''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.<br />
<br />
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.<br />
<br />
==Emulated systems==<br />
<br />
Currently, [http://www.progettoemma.net/mess/sysset.php 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).<br />
<br />
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.<br />
<br />
==Installation==<br />
<br />
MAME runs on Windows, Mac OS X, Linux, and FreeBSD. You can get Windows binaries from [http://mamedev.org/release.html mamedev.org].<br />
<br />
On OS X, you can install MAME via [http://brew.sh/ Homebrew]:<br />
brew tap homebrew/games<br />
brew install mame<br />
<br />
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:<br />
alias mame=/usr/share/sdlmame/sdlmame<br />
<br />
==Starting MAME; command line arguments; MAME menu; quitting==<br />
<br />
First get the [[Media:CPC_ROMs_for_MAME.zip|CPC ROMs for MAME]] and unzip them into the MAME roms folder.<br />
<br />
Typical command line to start MAME in CPC mode (windowed mode and with a disc inserted in drive A):<br />
mame cpc6128 -skip_gameinfo -window -flop1 disk.dsk<br />
<br />
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).<br />
<br />
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.<br />
<br />
;Device options for the CPC from [http://www.progettoemma.net/mess/extra.html sysinfo.dat]<br />
{|class="wikitable"<br />
|'''Name'''<br />
|'''Argument'''<br />
|'''Allowed file extensions'''<br />
|-<br />
|Printer<br />
| -prin<br />
|.prn<br />
|-<br />
|Snapshot<br />
| -dump<br />
|.sna<br />
|-<br />
|Disk drive A<br />
| -flop1<br />
|rowspan="2"|.dsk; .d77; .d88; .1dd; .dfi; .imd; .ipf; .mfi; .mfm<br />
|-<br />
|Disk drive B<br />
| -flop2<br />
|-<br />
|Tape<br />
| -cass<br />
|.wav; .cdt<br />
|-<br />
|Cartridge<br />
| -cart<br />
|.cpr; .bin (Plus series and GX4000 only)<br />
|}<br />
<br />
Supported file types can also be shown with the "-listmedia" command line option.<br />
<br />
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.<br />
mame cpc6128 -flop1 disk.zip/disk0.dsk<br />
<br />
On Linux, you can also set your file manager (e.g. Nautilus or Konqueror) to open .dsk files with the following Python script:<br />
<pre><br />
#!/usr/bin/env python<br />
<br />
# Call as<br />
# "cpc" : emulated keyboard<br />
# "cpcn" : natural<br />
<br />
import os<br />
from sys import argv<br />
<br />
if 'cpcn' in argv[0]:<br />
nat = '-natural'<br />
else:<br />
nat = ''<br />
<br />
s = "/usr/share/sdlmame/sdlmame cpc6128 -skip_gameinfo -window %s -keymap -keymap_file /usr/share/sdlmame/keymaps/km-de.txt" % nat<br />
<br />
if len(argv) > 1:<br />
for x in range(1, len(argv)):<br />
s += ' -flop%u "%s"' % (x, argv[x])<br />
os.system(s)<br />
</pre><br />
This script should open a MAME window with the disc inserted in drive A. (Note that this also selects the German keymap.)<br />
<br />
==Keyboard layouts==<br />
<br />
MAME supports two keyboard modes:<br />
* '''emulated''' (the default; keys are assigned based on key position on the emulated hardware)<br />
* '''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)<br />
<br />
To use a German keyboard in emulated keyboard mode, start MAME e.g. with (key map path on Linux):<br />
mame cpc6128 -keymap -keymap_file /usr/share/sdlmame/keymaps/km-de.txt<br />
<br />
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.<br />
<br />
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.<br />
<br />
==CPC artwork==<br />
[[File:MAME with CPC artwork.png|thumb|MAME window with CPC artwork]]<br />
[[Media:Cpc6128 mame artwork.zip|MAME artwork]] (CPC6128/GT65 bezel)<br />
<br />
Rename file to cpc6128.zip and put it in MAME's artwork folder.<br />
<br />
==ROMs and extension hardware==<br />
<br />
[[Media:CPC_ROMs_for_MAME.zip|CPC ROMs for MAME]]. Just unzip the file and move the ZIPs inside into the MAME ROM folder.<br />
<br />
;General notes about MAME and ROMs<br />
<br />
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.)<br />
<br />
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.<br />
<br />
;Slot options (extension hardware)<br />
[[File:MESS with Dobbertin Smart Watch.png|thumb|upright=1.4||MAME with the Dobbertin Smart Watch ROM loaded (-exp smartwatch)]]<br />
[[File:Brunword mame.png|thumb|upright=1.4||BrunWord MK4 (ROM) main menu in MAME 0.162 (-exp brunword4)]]<br />
<br />
You can get a list of slot options with<br />
<br />
mame cpc6128 -lslot<br />
<br />
These are (as of MAME 0.163):<br />
<br />
*for "-centronics"<br />
{|class="wikitable"<br />
|-<br />
|pl80 <br />
|COMX PL-80<br />
|-<br />
|ex800 <br />
|Epson EX-800<br />
|-<br />
|lx800 <br />
|Epson LX-800<br />
|-<br />
|lx810l <br />
|Epson LX-810L<br />
|-<br />
|ap2000 <br />
|Epson ActionPrinter 2000<br />
|-<br />
|printer <br />
|Centronics Printer<br />
|-<br />
|digiblst <br />
|[[Digiblaster]] (DIY)<br />
|}<br />
<br />
*for "-exp"<br />
{|class="wikitable"<br />
|-<br />
|ssa1 <br />
|[[Amstrad SSA-1 Speech Synthesizer]]<br />
|-<br />
|dkspeech <br />
|[[Dk'tronics Speech Synthesizer]]<br />
|-<br />
|rom <br />
|ROM Box<br />
|-<br />
|multiface2 <br />
|[[Multiface II]]<br />
|-<br />
|pds <br />
|[[PDS development system|Programmers Development System (CPC Target)]]<br />
|-<br />
|rs232 <br />
|Pace RS232C interface<br />
|-<br />
|amsrs232 <br />
|[[Original Amstrad RS232 interface|Amstrad RS232C interface]]<br />
|-<br />
|sf2 <br />
|[[SYMBiFACE II]]<br />
|-<br />
|amdrum <br />
|[[Amdrum]]<br />
|-<br />
|playcity <br />
|[[PlayCity]]<br />
|-<br />
|smartwatch <br />
|[[Dobbertin Smart Watch]]<br />
|-<br />
|brunword4<br />
|[[BrunWord]] Elite MK4<br />
|-<br />
|hd20<br />
|[[Dobbertin Harddisc]]<br />
|}<br />
<br />
;Loading external ROMs<br />
<br />
The ROM Box expansion can be used to load external ROMs such as [[MAXAM]]:<br />
<br />
mame cpc6128 -exp rom -rom1 /path/to/MAXAM.ROM<br />
<br />
Up to 8 external ROMs (-rom1 to -rom8) are supported this way.<br />
<br />
;[[Dobbertin Harddisc]]<br />
<br />
From the [http://www.cpcwiki.eu/forum/emulators/got-bored-again/msg102272/#msg102272 forum post]:<br />
<br />
To use, add -exp hd20 to the commandline, which will also allow you to add -hard <filename>.<br />
Code:<br />
<br />
mame cpc6128 -exp hd20 -hard1 disk.chd<br />
<br />
Only MAME CHDs are supported, you can create a blank hard disk image using chdman. Geometry is 615/4/17.<br />
Code:<br />
<br />
chdman createhd -o disk.chd -c none -chs 615,4,17<br />
<br />
(-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)<br />
<br />
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.<br />
<br />
See http://mahlemiut.marpirc.net/cpc_hd20.avi, a quick demo loading a game from HD.<br />
<br />
==GUI front-ends==<br />
[[File:Mameui.png|thumb|MAMEUI64 on Windows]]<br />
[[File:Messmenu.png|thumb|MessMenu on OS X with a CPC ROM selected. Currently, seven different CPC models are supported, including some regional variants (French and Swedish).]]<br />
<br />
Various GUI front-ends for MAME/MESS exist for Windows, Linux, and OS X:<br />
<br />
*[http://www.mameui.info/ MAMEUI64] (Windows)<br />
*[http://qmc2.arcadehits.net/ QMC2] (Windows, OS X, Linux)<br />
<br />
==CRT simulation==<br />
[[File:Cpc shader mess.png|thumb|GLSL shader example (Linux)]]<br />
[[File:Cpc hlsl shader mess detail.png|thumb|HLSL "1980s" shader (Windows); MAME config used is on image description page]]<br />
MAME can use shaders to simulate typical CRT graphics artifacts such as scanlines, colors bleeding into each other, jitter, and display curvature.<br />
<br />
Some example configurations:<br />
*Windows (using HLSL shaders)<br />
**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)<br />
**A German shader tutorial: [http://www.aep-emu.de/PNphpBB2-file-viewtopic-p-94168.html]<br />
*Linux (using GLSL shaders): MAME tutorial [http://www.mameau.com/mame-glsl-shaders-setup/]<br />
<br />
==Remaining issues with CPC emulation==<br />
<br />
*MAME may fail to read DSK images with certain kinds of copy protection. Speedlock seems to work fine though.<br />
*MAME cannot write to disc images in DSK format; only MFI (MESS floppy image) and MFM (HxCFloppyEmulator floppy image) are supported for writing.<br />
*Some demo tricks may be broken in MAME, e.g. overscan pictures are horizontally misaligned (i.e., shifted to the right).<br />
*CPC+/GX4000 emulation still has some obvious graphics glitches.<br />
*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.<br />
<br />
==JSMESS, a JavaScript port==<br />
<br />
There is an experimental port of MAME/MESS to JavaScript, see the [[JSMESS]] article for details.<br />
<br />
==Links==<br />
<br />
*{{EnWiki}}<br />
*[http://mamedev.org/ Official site]<br />
*[http://www.mess.org/mess:howto MESS user's manual]<br />
*[[Media:CPC_ROMs_for_MAME.zip|CPC ROMs for MAME]]<br />
<br />
[[Category:Emulator]]</div>Mornhttps://www.cpcwiki.eu/index.php?title=File:MAME_with_CPC_artwork.png&diff=93885File:MAME with CPC artwork.png2015-07-01T20:50:17Z<p>Morn: </p>
<hr />
<div></div>Mornhttps://www.cpcwiki.eu/index.php?title=File:Cpc6128_mame_artwork.zip&diff=93884File:Cpc6128 mame artwork.zip2015-07-01T20:49:27Z<p>Morn: CPC6128/GT65 MAME bezel artwork. Rename to cpc6128.zip and put it in MAME's artwork folder.</p>
<hr />
<div>CPC6128/GT65 MAME bezel artwork. Rename to cpc6128.zip and put it in MAME's artwork folder.</div>Mornhttps://www.cpcwiki.eu/index.php?title=MAME&diff=93863MAME2015-06-28T14:29:10Z<p>Morn: /* Starting MAME; command line arguments; MAME menu; quitting */</p>
<hr />
<div>[[File:Mess sysinfo.png|thumb|upright=.9|The MAME system info box for the CPC6128]]<br />
[[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]]''.]]<br />
'''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.<br />
<br />
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.<br />
<br />
==Emulated systems==<br />
<br />
Currently, [http://www.progettoemma.net/mess/sysset.php 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).<br />
<br />
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.<br />
<br />
==Installation==<br />
<br />
MAME runs on Windows, Mac OS X, Linux, and FreeBSD. You can get Windows binaries from [http://mamedev.org/release.html mamedev.org].<br />
<br />
On OS X, you can install MAME via [http://brew.sh/ Homebrew]:<br />
brew tap homebrew/games<br />
brew install mame<br />
<br />
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:<br />
alias mame=/usr/share/sdlmame/sdlmame<br />
<br />
==Starting MAME; command line arguments; MAME menu; quitting==<br />
<br />
First get the [[Media:CPC_ROMs_for_MAME.zip|CPC ROMs for MAME]] and unzip them into the MAME roms folder.<br />
<br />
Typical command line to start MAME in CPC mode (windowed mode and with a disc inserted in drive A):<br />
mame cpc6128 -skip_gameinfo -window -flop1 disk.dsk<br />
<br />
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).<br />
<br />
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.<br />
<br />
;Device options for the CPC from [http://www.progettoemma.net/mess/extra.html sysinfo.dat]<br />
{|class="wikitable"<br />
|'''Name'''<br />
|'''Argument'''<br />
|'''Allowed file extensions'''<br />
|-<br />
|Printer<br />
| -prin<br />
|.prn<br />
|-<br />
|Snapshot<br />
| -dump<br />
|.sna<br />
|-<br />
|Disk drive A<br />
| -flop1<br />
|rowspan="2"|.dsk; .d77; .d88; .1dd; .dfi; .imd; .ipf; .mfi; .mfm<br />
|-<br />
|Disk drive B<br />
| -flop2<br />
|-<br />
|Tape<br />
| -cass<br />
|.wav; .cdt<br />
|-<br />
|Cartridge<br />
| -cart<br />
|.cpr; .bin (Plus series and GX4000 only)<br />
|}<br />
<br />
Supported file types can also be shown with the "-listmedia" command line option.<br />
<br />
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.<br />
mame cpc6128 -flop1 disk.zip/disk0.dsk<br />
<br />
On Linux, you can also set your file manager (e.g. Nautilus or Konqueror) to open .dsk files with the following Python script:<br />
<pre><br />
#!/usr/bin/env python<br />
<br />
# Call as<br />
# "cpc" : emulated keyboard<br />
# "cpcn" : natural<br />
<br />
import os<br />
from sys import argv<br />
<br />
if 'cpcn' in argv[0]:<br />
nat = '-natural'<br />
else:<br />
nat = ''<br />
<br />
s = "/usr/share/sdlmame/sdlmame cpc6128 -skip_gameinfo -window %s -keymap -keymap_file /usr/share/sdlmame/keymaps/km-de.txt" % nat<br />
<br />
if len(argv) > 1:<br />
for x in range(1, len(argv)):<br />
s += ' -flop%u "%s"' % (x, argv[x])<br />
os.system(s)<br />
</pre><br />
This script should open a MAME window with the disc inserted in drive A. (Note that this also selects the German keymap.)<br />
<br />
==Keyboard layouts==<br />
<br />
MAME supports two keyboard modes:<br />
* '''emulated''' (the default; keys are assigned based on key position on the emulated hardware)<br />
* '''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)<br />
<br />
To use a German keyboard in emulated keyboard mode, start MAME e.g. with (key map path on Linux):<br />
mame cpc6128 -keymap -keymap_file /usr/share/sdlmame/keymaps/km-de.txt<br />
<br />
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.<br />
<br />
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.<br />
<br />
==ROMs and extension hardware==<br />
<br />
[[Media:CPC_ROMs_for_MAME.zip|CPC ROMs for MAME]]. Just unzip the file and move the ZIPs inside into the MAME ROM folder.<br />
<br />
;General notes about MAME and ROMs<br />
<br />
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.)<br />
<br />
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.<br />
<br />
;Slot options (extension hardware)<br />
[[File:MESS with Dobbertin Smart Watch.png|thumb|upright=1.4||MAME with the Dobbertin Smart Watch ROM loaded (-exp smartwatch)]]<br />
[[File:Brunword mame.png|thumb|upright=1.4||BrunWord MK4 (ROM) main menu in MAME 0.162 (-exp brunword4)]]<br />
<br />
You can get a list of slot options with<br />
<br />
mame cpc6128 -lslot<br />
<br />
These are (as of MAME 0.163):<br />
<br />
*for "-centronics"<br />
{|class="wikitable"<br />
|-<br />
|pl80 <br />
|COMX PL-80<br />
|-<br />
|ex800 <br />
|Epson EX-800<br />
|-<br />
|lx800 <br />
|Epson LX-800<br />
|-<br />
|lx810l <br />
|Epson LX-810L<br />
|-<br />
|ap2000 <br />
|Epson ActionPrinter 2000<br />
|-<br />
|printer <br />
|Centronics Printer<br />
|-<br />
|digiblst <br />
|[[Digiblaster]] (DIY)<br />
|}<br />
<br />
*for "-exp"<br />
{|class="wikitable"<br />
|-<br />
|ssa1 <br />
|[[Amstrad SSA-1 Speech Synthesizer]]<br />
|-<br />
|dkspeech <br />
|[[Dk'tronics Speech Synthesizer]]<br />
|-<br />
|rom <br />
|ROM Box<br />
|-<br />
|multiface2 <br />
|[[Multiface II]]<br />
|-<br />
|pds <br />
|[[PDS development system|Programmers Development System (CPC Target)]]<br />
|-<br />
|rs232 <br />
|Pace RS232C interface<br />
|-<br />
|amsrs232 <br />
|[[Original Amstrad RS232 interface|Amstrad RS232C interface]]<br />
|-<br />
|sf2 <br />
|[[SYMBiFACE II]]<br />
|-<br />
|amdrum <br />
|[[Amdrum]]<br />
|-<br />
|playcity <br />
|[[PlayCity]]<br />
|-<br />
|smartwatch <br />
|[[Dobbertin Smart Watch]]<br />
|-<br />
|brunword4<br />
|[[BrunWord]] Elite MK4<br />
|-<br />
|hd20<br />
|[[Dobbertin Harddisc]]<br />
|}<br />
<br />
;Loading external ROMs<br />
<br />
The ROM Box expansion can be used to load external ROMs such as [[MAXAM]]:<br />
<br />
mame cpc6128 -exp rom -rom1 /path/to/MAXAM.ROM<br />
<br />
Up to 8 external ROMs (-rom1 to -rom8) are supported this way.<br />
<br />
;[[Dobbertin Harddisc]]<br />
<br />
From the [http://www.cpcwiki.eu/forum/emulators/got-bored-again/msg102272/#msg102272 forum post]:<br />
<br />
To use, add -exp hd20 to the commandline, which will also allow you to add -hard <filename>.<br />
Code:<br />
<br />
mame cpc6128 -exp hd20 -hard1 disk.chd<br />
<br />
Only MAME CHDs are supported, you can create a blank hard disk image using chdman. Geometry is 615/4/17.<br />
Code:<br />
<br />
chdman createhd -o disk.chd -c none -chs 615,4,17<br />
<br />
(-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)<br />
<br />
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.<br />
<br />
See http://mahlemiut.marpirc.net/cpc_hd20.avi, a quick demo loading a game from HD.<br />
<br />
==GUI front-ends==<br />
[[File:Mameui.png|thumb|MAMEUI64 on Windows]]<br />
[[File:Messmenu.png|thumb|MessMenu on OS X with a CPC ROM selected. Currently, seven different CPC models are supported, including some regional variants (French and Swedish).]]<br />
<br />
Various GUI front-ends for MAME/MESS exist for Windows, Linux, and OS X:<br />
<br />
*[http://www.mameui.info/ MAMEUI64] (Windows)<br />
*[http://qmc2.arcadehits.net/ QMC2] (Windows, OS X, Linux)<br />
<br />
==CRT simulation==<br />
[[File:Cpc shader mess.png|thumb|GLSL shader example (Linux)]]<br />
[[File:Cpc hlsl shader mess detail.png|thumb|HLSL "1980s" shader (Windows); MAME config used is on image description page]]<br />
MAME can use shaders to simulate typical CRT graphics artifacts such as scanlines, colors bleeding into each other, jitter, and display curvature.<br />
<br />
Some example configurations:<br />
*Windows (using HLSL shaders)<br />
**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)<br />
**A German shader tutorial: [http://www.aep-emu.de/PNphpBB2-file-viewtopic-p-94168.html]<br />
*Linux (using GLSL shaders): MAME tutorial [http://www.mameau.com/mame-glsl-shaders-setup/]<br />
<br />
==Remaining issues with CPC emulation==<br />
<br />
*MAME may fail to read DSK images with certain kinds of copy protection. Speedlock seems to work fine though.<br />
*MAME cannot write to disc images in DSK format; only MFI (MESS floppy image) and MFM (HxCFloppyEmulator floppy image) are supported for writing.<br />
*Some demo tricks may be broken in MAME, e.g. overscan pictures are horizontally misaligned (i.e., shifted to the right).<br />
*CPC+/GX4000 emulation still has some obvious graphics glitches.<br />
*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.<br />
<br />
==JSMESS, a JavaScript port==<br />
<br />
There is an experimental port of MAME/MESS to JavaScript, see the [[JSMESS]] article for details.<br />
<br />
==Links==<br />
<br />
*{{EnWiki}}<br />
*[http://mamedev.org/ Official site]<br />
*[http://www.mess.org/mess:howto MESS user's manual]<br />
*[[Media:CPC_ROMs_for_MAME.zip|CPC ROMs for MAME]]<br />
<br />
[[Category:Emulator]]</div>Mornhttps://www.cpcwiki.eu/index.php?title=MAME&diff=93862MAME2015-06-28T14:27:10Z<p>Morn: /* Starting MAME; command line arguments; MAME menu; quitting */</p>
<hr />
<div>[[File:Mess sysinfo.png|thumb|upright=.9|The MAME system info box for the CPC6128]]<br />
[[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]]''.]]<br />
'''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.<br />
<br />
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.<br />
<br />
==Emulated systems==<br />
<br />
Currently, [http://www.progettoemma.net/mess/sysset.php 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).<br />
<br />
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.<br />
<br />
==Installation==<br />
<br />
MAME runs on Windows, Mac OS X, Linux, and FreeBSD. You can get Windows binaries from [http://mamedev.org/release.html mamedev.org].<br />
<br />
On OS X, you can install MAME via [http://brew.sh/ Homebrew]:<br />
brew tap homebrew/games<br />
brew install mame<br />
<br />
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:<br />
alias mame=/usr/share/sdlmame/sdlmame<br />
<br />
==Starting MAME; command line arguments; MAME menu; quitting==<br />
<br />
First get the [[Media:CPC_ROMs_for_MAME.zip|CPC ROMs for MAME]] and unzip them into the MAME roms folder.<br />
<br />
Typical command line to start MAME in CPC mode (windowed mode and with a disc inserted in drive A):<br />
mame cpc6128 -skip_gameinfo -window -flop1 disk.dsk<br />
<br />
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).<br />
<br />
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.<br />
<br />
;Device options for the CPC from [http://www.progettoemma.net/mess/extra.html sysinfo.dat]<br />
{|class="wikitable"<br />
|'''Name'''<br />
|'''Argument'''<br />
|'''Allowed file extensions'''<br />
|-<br />
|Printer<br />
| -prin<br />
|.prn<br />
|-<br />
|Snapshot<br />
| -dump<br />
|.sna<br />
|-<br />
|Disk drive A<br />
| -flop1<br />
|rowspan="2"|.dsk; .d77; .d88; .1dd; .dfi; .imd; .ipf; .mfi; .mfm<br />
|-<br />
|Disk drive B<br />
| -flop2<br />
|-<br />
|Tape<br />
| -cass<br />
|.wav; .cdt<br />
|-<br />
|Cartridge<br />
| -cart<br />
|.cpr; .bin (Plus series and GX4000 only)<br />
|}<br />
<br />
Supported file types can also be shown with the "-listmedia" command line option.<br />
<br />
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.<br />
mame cpc6128 -flop1 disk.zip/disk0.dsk<br />
<br />
On Linux, you can also set your file manager (e.g. Nautilus or Konqueror) to open .dsk files with the following Python script:<br />
<pre><br />
#!/usr/bin/env python<br />
<br />
# Call as<br />
# "cpc" : emulated keyboard<br />
# "cpcn" : natural<br />
<br />
import os<br />
from sys import argv<br />
<br />
if 'cpcn' in argv[0]:<br />
nat = '-natural'<br />
else:<br />
nat = ''<br />
<br />
s = "/usr/share/sdlmame/sdlmame cpc6128 -skip_gameinfo -window %s -keymap -keymap_file /usr/share/sdlmame/keymaps/km-de.txt" % nat<br />
<br />
if len(argv) > 1:<br />
for x in range(1, len(argv)):<br />
s += ' -flop%u "%s"' % (x, argv[x])<br />
os.system(s)<br />
</pre><br />
(Note that this uses the German keymap.)<br />
<br />
==Keyboard layouts==<br />
<br />
MAME supports two keyboard modes:<br />
* '''emulated''' (the default; keys are assigned based on key position on the emulated hardware)<br />
* '''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)<br />
<br />
To use a German keyboard in emulated keyboard mode, start MAME e.g. with (key map path on Linux):<br />
mame cpc6128 -keymap -keymap_file /usr/share/sdlmame/keymaps/km-de.txt<br />
<br />
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.<br />
<br />
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.<br />
<br />
==ROMs and extension hardware==<br />
<br />
[[Media:CPC_ROMs_for_MAME.zip|CPC ROMs for MAME]]. Just unzip the file and move the ZIPs inside into the MAME ROM folder.<br />
<br />
;General notes about MAME and ROMs<br />
<br />
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.)<br />
<br />
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.<br />
<br />
;Slot options (extension hardware)<br />
[[File:MESS with Dobbertin Smart Watch.png|thumb|upright=1.4||MAME with the Dobbertin Smart Watch ROM loaded (-exp smartwatch)]]<br />
[[File:Brunword mame.png|thumb|upright=1.4||BrunWord MK4 (ROM) main menu in MAME 0.162 (-exp brunword4)]]<br />
<br />
You can get a list of slot options with<br />
<br />
mame cpc6128 -lslot<br />
<br />
These are (as of MAME 0.163):<br />
<br />
*for "-centronics"<br />
{|class="wikitable"<br />
|-<br />
|pl80 <br />
|COMX PL-80<br />
|-<br />
|ex800 <br />
|Epson EX-800<br />
|-<br />
|lx800 <br />
|Epson LX-800<br />
|-<br />
|lx810l <br />
|Epson LX-810L<br />
|-<br />
|ap2000 <br />
|Epson ActionPrinter 2000<br />
|-<br />
|printer <br />
|Centronics Printer<br />
|-<br />
|digiblst <br />
|[[Digiblaster]] (DIY)<br />
|}<br />
<br />
*for "-exp"<br />
{|class="wikitable"<br />
|-<br />
|ssa1 <br />
|[[Amstrad SSA-1 Speech Synthesizer]]<br />
|-<br />
|dkspeech <br />
|[[Dk'tronics Speech Synthesizer]]<br />
|-<br />
|rom <br />
|ROM Box<br />
|-<br />
|multiface2 <br />
|[[Multiface II]]<br />
|-<br />
|pds <br />
|[[PDS development system|Programmers Development System (CPC Target)]]<br />
|-<br />
|rs232 <br />
|Pace RS232C interface<br />
|-<br />
|amsrs232 <br />
|[[Original Amstrad RS232 interface|Amstrad RS232C interface]]<br />
|-<br />
|sf2 <br />
|[[SYMBiFACE II]]<br />
|-<br />
|amdrum <br />
|[[Amdrum]]<br />
|-<br />
|playcity <br />
|[[PlayCity]]<br />
|-<br />
|smartwatch <br />
|[[Dobbertin Smart Watch]]<br />
|-<br />
|brunword4<br />
|[[BrunWord]] Elite MK4<br />
|-<br />
|hd20<br />
|[[Dobbertin Harddisc]]<br />
|}<br />
<br />
;Loading external ROMs<br />
<br />
The ROM Box expansion can be used to load external ROMs such as [[MAXAM]]:<br />
<br />
mame cpc6128 -exp rom -rom1 /path/to/MAXAM.ROM<br />
<br />
Up to 8 external ROMs (-rom1 to -rom8) are supported this way.<br />
<br />
;[[Dobbertin Harddisc]]<br />
<br />
From the [http://www.cpcwiki.eu/forum/emulators/got-bored-again/msg102272/#msg102272 forum post]:<br />
<br />
To use, add -exp hd20 to the commandline, which will also allow you to add -hard <filename>.<br />
Code:<br />
<br />
mame cpc6128 -exp hd20 -hard1 disk.chd<br />
<br />
Only MAME CHDs are supported, you can create a blank hard disk image using chdman. Geometry is 615/4/17.<br />
Code:<br />
<br />
chdman createhd -o disk.chd -c none -chs 615,4,17<br />
<br />
(-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)<br />
<br />
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.<br />
<br />
See http://mahlemiut.marpirc.net/cpc_hd20.avi, a quick demo loading a game from HD.<br />
<br />
==GUI front-ends==<br />
[[File:Mameui.png|thumb|MAMEUI64 on Windows]]<br />
[[File:Messmenu.png|thumb|MessMenu on OS X with a CPC ROM selected. Currently, seven different CPC models are supported, including some regional variants (French and Swedish).]]<br />
<br />
Various GUI front-ends for MAME/MESS exist for Windows, Linux, and OS X:<br />
<br />
*[http://www.mameui.info/ MAMEUI64] (Windows)<br />
*[http://qmc2.arcadehits.net/ QMC2] (Windows, OS X, Linux)<br />
<br />
==CRT simulation==<br />
[[File:Cpc shader mess.png|thumb|GLSL shader example (Linux)]]<br />
[[File:Cpc hlsl shader mess detail.png|thumb|HLSL "1980s" shader (Windows); MAME config used is on image description page]]<br />
MAME can use shaders to simulate typical CRT graphics artifacts such as scanlines, colors bleeding into each other, jitter, and display curvature.<br />
<br />
Some example configurations:<br />
*Windows (using HLSL shaders)<br />
**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)<br />
**A German shader tutorial: [http://www.aep-emu.de/PNphpBB2-file-viewtopic-p-94168.html]<br />
*Linux (using GLSL shaders): MAME tutorial [http://www.mameau.com/mame-glsl-shaders-setup/]<br />
<br />
==Remaining issues with CPC emulation==<br />
<br />
*MAME may fail to read DSK images with certain kinds of copy protection. Speedlock seems to work fine though.<br />
*MAME cannot write to disc images in DSK format; only MFI (MESS floppy image) and MFM (HxCFloppyEmulator floppy image) are supported for writing.<br />
*Some demo tricks may be broken in MAME, e.g. overscan pictures are horizontally misaligned (i.e., shifted to the right).<br />
*CPC+/GX4000 emulation still has some obvious graphics glitches.<br />
*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.<br />
<br />
==JSMESS, a JavaScript port==<br />
<br />
There is an experimental port of MAME/MESS to JavaScript, see the [[JSMESS]] article for details.<br />
<br />
==Links==<br />
<br />
*{{EnWiki}}<br />
*[http://mamedev.org/ Official site]<br />
*[http://www.mess.org/mess:howto MESS user's manual]<br />
*[[Media:CPC_ROMs_for_MAME.zip|CPC ROMs for MAME]]<br />
<br />
[[Category:Emulator]]</div>Mornhttps://www.cpcwiki.eu/index.php?title=MAME&diff=93845MAME2015-06-26T17:31:56Z<p>Morn: /* GUI front-ends */</p>
<hr />
<div>[[File:Mess sysinfo.png|thumb|upright=.9|The MAME system info box for the CPC6128]]<br />
[[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]]''.]]<br />
'''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.<br />
<br />
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.<br />
<br />
==Emulated systems==<br />
<br />
Currently, [http://www.progettoemma.net/mess/sysset.php 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).<br />
<br />
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.<br />
<br />
==Installation==<br />
<br />
MAME runs on Windows, Mac OS X, Linux, and FreeBSD. You can get Windows binaries from [http://mamedev.org/release.html mamedev.org].<br />
<br />
On OS X, you can install MAME via [http://brew.sh/ Homebrew]:<br />
brew tap homebrew/games<br />
brew install mame<br />
<br />
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:<br />
alias mame=/usr/share/sdlmame/sdlmame<br />
<br />
==Starting MAME; command line arguments; MAME menu; quitting==<br />
<br />
First get the [[Media:CPC_ROMs_for_MAME.zip|CPC ROMs for MAME]] and unzip them into the MAME roms folder.<br />
<br />
Typical command line to start MAME in CPC mode (windowed mode and with a disc inserted in drive A):<br />
mame cpc6128 -skip_gameinfo -window -flop1 disk.dsk<br />
<br />
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).<br />
<br />
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.<br />
<br />
;Device options for the CPC from [http://www.progettoemma.net/mess/extra.html sysinfo.dat]<br />
{|class="wikitable"<br />
|'''Name'''<br />
|'''Argument'''<br />
|'''Allowed file extensions'''<br />
|-<br />
|Printer<br />
| -prin<br />
|.prn<br />
|-<br />
|Snapshot<br />
| -dump<br />
|.sna<br />
|-<br />
|Disk drive A<br />
| -flop1<br />
|rowspan="2"|.dsk; .d77; .d88; .1dd; .dfi; .imd; .ipf; .mfi; .mfm<br />
|-<br />
|Disk drive B<br />
| -flop2<br />
|-<br />
|Tape<br />
| -cass<br />
|.wav; .cdt<br />
|-<br />
|Cartridge<br />
| -cart<br />
|.cpr; .bin (Plus series and GX4000 only)<br />
|}<br />
<br />
Supported file types can also be shown with the "-listmedia" command line option.<br />
<br />
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.<br />
mame cpc6128 -flop1 disk.zip/disk0.dsk<br />
<br />
==Keyboard layouts==<br />
<br />
MAME supports two keyboard modes:<br />
* '''emulated''' (the default; keys are assigned based on key position on the emulated hardware)<br />
* '''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)<br />
<br />
To use a German keyboard in emulated keyboard mode, start MAME e.g. with (key map path on Linux):<br />
mame cpc6128 -keymap -keymap_file /usr/share/sdlmame/keymaps/km-de.txt<br />
<br />
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.<br />
<br />
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.<br />
<br />
==ROMs and extension hardware==<br />
<br />
[[Media:CPC_ROMs_for_MAME.zip|CPC ROMs for MAME]]. Just unzip the file and move the ZIPs inside into the MAME ROM folder.<br />
<br />
;General notes about MAME and ROMs<br />
<br />
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.)<br />
<br />
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.<br />
<br />
;Slot options (extension hardware)<br />
[[File:MESS with Dobbertin Smart Watch.png|thumb|upright=1.4||MAME with the Dobbertin Smart Watch ROM loaded (-exp smartwatch)]]<br />
[[File:Brunword mame.png|thumb|upright=1.4||BrunWord MK4 (ROM) main menu in MAME 0.162 (-exp brunword4)]]<br />
<br />
You can get a list of slot options with<br />
<br />
mame cpc6128 -lslot<br />
<br />
These are (as of MAME 0.163):<br />
<br />
*for "-centronics"<br />
{|class="wikitable"<br />
|-<br />
|pl80 <br />
|COMX PL-80<br />
|-<br />
|ex800 <br />
|Epson EX-800<br />
|-<br />
|lx800 <br />
|Epson LX-800<br />
|-<br />
|lx810l <br />
|Epson LX-810L<br />
|-<br />
|ap2000 <br />
|Epson ActionPrinter 2000<br />
|-<br />
|printer <br />
|Centronics Printer<br />
|-<br />
|digiblst <br />
|[[Digiblaster]] (DIY)<br />
|}<br />
<br />
*for "-exp"<br />
{|class="wikitable"<br />
|-<br />
|ssa1 <br />
|[[Amstrad SSA-1 Speech Synthesizer]]<br />
|-<br />
|dkspeech <br />
|[[Dk'tronics Speech Synthesizer]]<br />
|-<br />
|rom <br />
|ROM Box<br />
|-<br />
|multiface2 <br />
|[[Multiface II]]<br />
|-<br />
|pds <br />
|[[PDS development system|Programmers Development System (CPC Target)]]<br />
|-<br />
|rs232 <br />
|Pace RS232C interface<br />
|-<br />
|amsrs232 <br />
|[[Original Amstrad RS232 interface|Amstrad RS232C interface]]<br />
|-<br />
|sf2 <br />
|[[SYMBiFACE II]]<br />
|-<br />
|amdrum <br />
|[[Amdrum]]<br />
|-<br />
|playcity <br />
|[[PlayCity]]<br />
|-<br />
|smartwatch <br />
|[[Dobbertin Smart Watch]]<br />
|-<br />
|brunword4<br />
|[[BrunWord]] Elite MK4<br />
|-<br />
|hd20<br />
|[[Dobbertin Harddisc]]<br />
|}<br />
<br />
;Loading external ROMs<br />
<br />
The ROM Box expansion can be used to load external ROMs such as [[MAXAM]]:<br />
<br />
mame cpc6128 -exp rom -rom1 /path/to/MAXAM.ROM<br />
<br />
Up to 8 external ROMs (-rom1 to -rom8) are supported this way.<br />
<br />
;[[Dobbertin Harddisc]]<br />
<br />
From the [http://www.cpcwiki.eu/forum/emulators/got-bored-again/msg102272/#msg102272 forum post]:<br />
<br />
To use, add -exp hd20 to the commandline, which will also allow you to add -hard <filename>.<br />
Code:<br />
<br />
mame cpc6128 -exp hd20 -hard1 disk.chd<br />
<br />
Only MAME CHDs are supported, you can create a blank hard disk image using chdman. Geometry is 615/4/17.<br />
Code:<br />
<br />
chdman createhd -o disk.chd -c none -chs 615,4,17<br />
<br />
(-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)<br />
<br />
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.<br />
<br />
See http://mahlemiut.marpirc.net/cpc_hd20.avi, a quick demo loading a game from HD.<br />
<br />
==GUI front-ends==<br />
[[File:Mameui.png|thumb|MAMEUI64 on Windows]]<br />
[[File:Messmenu.png|thumb|MessMenu on OS X with a CPC ROM selected. Currently, seven different CPC models are supported, including some regional variants (French and Swedish).]]<br />
<br />
Various GUI front-ends for MAME/MESS exist for Windows, Linux, and OS X:<br />
<br />
*[http://www.mameui.info/ MAMEUI64] (Windows)<br />
*[http://qmc2.arcadehits.net/ QMC2] (Windows, OS X, Linux)<br />
<br />
==CRT simulation==<br />
[[File:Cpc shader mess.png|thumb|GLSL shader example (Linux)]]<br />
[[File:Cpc hlsl shader mess detail.png|thumb|HLSL "1980s" shader (Windows); MAME config used is on image description page]]<br />
MAME can use shaders to simulate typical CRT graphics artifacts such as scanlines, colors bleeding into each other, jitter, and display curvature.<br />
<br />
Some example configurations:<br />
*Windows (using HLSL shaders)<br />
**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)<br />
**A German shader tutorial: [http://www.aep-emu.de/PNphpBB2-file-viewtopic-p-94168.html]<br />
*Linux (using GLSL shaders): MAME tutorial [http://www.mameau.com/mame-glsl-shaders-setup/]<br />
<br />
==Remaining issues with CPC emulation==<br />
<br />
*MAME may fail to read DSK images with certain kinds of copy protection. Speedlock seems to work fine though.<br />
*MAME cannot write to disc images in DSK format; only MFI (MESS floppy image) and MFM (HxCFloppyEmulator floppy image) are supported for writing.<br />
*Some demo tricks may be broken in MAME, e.g. overscan pictures are horizontally misaligned (i.e., shifted to the right).<br />
*CPC+/GX4000 emulation still has some obvious graphics glitches.<br />
*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.<br />
<br />
==JSMESS, a JavaScript port==<br />
<br />
There is an experimental port of MAME/MESS to JavaScript, see the [[JSMESS]] article for details.<br />
<br />
==Links==<br />
<br />
*{{EnWiki}}<br />
*[http://mamedev.org/ Official site]<br />
*[http://www.mess.org/mess:howto MESS user's manual]<br />
*[[Media:CPC_ROMs_for_MAME.zip|CPC ROMs for MAME]]<br />
<br />
[[Category:Emulator]]</div>Mornhttps://www.cpcwiki.eu/index.php?title=File:Mameui.png&diff=93844File:Mameui.png2015-06-26T17:30:49Z<p>Morn: </p>
<hr />
<div></div>Mornhttps://www.cpcwiki.eu/index.php?title=MAME&diff=93843MAME2015-06-26T17:13:02Z<p>Morn: /* CRT simulation */</p>
<hr />
<div>[[File:Mess sysinfo.png|thumb|upright=.9|The MAME system info box for the CPC6128]]<br />
[[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]]''.]]<br />
'''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.<br />
<br />
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.<br />
<br />
==Emulated systems==<br />
<br />
Currently, [http://www.progettoemma.net/mess/sysset.php 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).<br />
<br />
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.<br />
<br />
==Installation==<br />
<br />
MAME runs on Windows, Mac OS X, Linux, and FreeBSD. You can get Windows binaries from [http://mamedev.org/release.html mamedev.org].<br />
<br />
On OS X, you can install MAME via [http://brew.sh/ Homebrew]:<br />
brew tap homebrew/games<br />
brew install mame<br />
<br />
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:<br />
alias mame=/usr/share/sdlmame/sdlmame<br />
<br />
==Starting MAME; command line arguments; MAME menu; quitting==<br />
<br />
First get the [[Media:CPC_ROMs_for_MAME.zip|CPC ROMs for MAME]] and unzip them into the MAME roms folder.<br />
<br />
Typical command line to start MAME in CPC mode (windowed mode and with a disc inserted in drive A):<br />
mame cpc6128 -skip_gameinfo -window -flop1 disk.dsk<br />
<br />
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).<br />
<br />
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.<br />
<br />
;Device options for the CPC from [http://www.progettoemma.net/mess/extra.html sysinfo.dat]<br />
{|class="wikitable"<br />
|'''Name'''<br />
|'''Argument'''<br />
|'''Allowed file extensions'''<br />
|-<br />
|Printer<br />
| -prin<br />
|.prn<br />
|-<br />
|Snapshot<br />
| -dump<br />
|.sna<br />
|-<br />
|Disk drive A<br />
| -flop1<br />
|rowspan="2"|.dsk; .d77; .d88; .1dd; .dfi; .imd; .ipf; .mfi; .mfm<br />
|-<br />
|Disk drive B<br />
| -flop2<br />
|-<br />
|Tape<br />
| -cass<br />
|.wav; .cdt<br />
|-<br />
|Cartridge<br />
| -cart<br />
|.cpr; .bin (Plus series and GX4000 only)<br />
|}<br />
<br />
Supported file types can also be shown with the "-listmedia" command line option.<br />
<br />
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.<br />
mame cpc6128 -flop1 disk.zip/disk0.dsk<br />
<br />
==Keyboard layouts==<br />
<br />
MAME supports two keyboard modes:<br />
* '''emulated''' (the default; keys are assigned based on key position on the emulated hardware)<br />
* '''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)<br />
<br />
To use a German keyboard in emulated keyboard mode, start MAME e.g. with (key map path on Linux):<br />
mame cpc6128 -keymap -keymap_file /usr/share/sdlmame/keymaps/km-de.txt<br />
<br />
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.<br />
<br />
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.<br />
<br />
==ROMs and extension hardware==<br />
<br />
[[Media:CPC_ROMs_for_MAME.zip|CPC ROMs for MAME]]. Just unzip the file and move the ZIPs inside into the MAME ROM folder.<br />
<br />
;General notes about MAME and ROMs<br />
<br />
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.)<br />
<br />
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.<br />
<br />
;Slot options (extension hardware)<br />
[[File:MESS with Dobbertin Smart Watch.png|thumb|upright=1.4||MAME with the Dobbertin Smart Watch ROM loaded (-exp smartwatch)]]<br />
[[File:Brunword mame.png|thumb|upright=1.4||BrunWord MK4 (ROM) main menu in MAME 0.162 (-exp brunword4)]]<br />
<br />
You can get a list of slot options with<br />
<br />
mame cpc6128 -lslot<br />
<br />
These are (as of MAME 0.163):<br />
<br />
*for "-centronics"<br />
{|class="wikitable"<br />
|-<br />
|pl80 <br />
|COMX PL-80<br />
|-<br />
|ex800 <br />
|Epson EX-800<br />
|-<br />
|lx800 <br />
|Epson LX-800<br />
|-<br />
|lx810l <br />
|Epson LX-810L<br />
|-<br />
|ap2000 <br />
|Epson ActionPrinter 2000<br />
|-<br />
|printer <br />
|Centronics Printer<br />
|-<br />
|digiblst <br />
|[[Digiblaster]] (DIY)<br />
|}<br />
<br />
*for "-exp"<br />
{|class="wikitable"<br />
|-<br />
|ssa1 <br />
|[[Amstrad SSA-1 Speech Synthesizer]]<br />
|-<br />
|dkspeech <br />
|[[Dk'tronics Speech Synthesizer]]<br />
|-<br />
|rom <br />
|ROM Box<br />
|-<br />
|multiface2 <br />
|[[Multiface II]]<br />
|-<br />
|pds <br />
|[[PDS development system|Programmers Development System (CPC Target)]]<br />
|-<br />
|rs232 <br />
|Pace RS232C interface<br />
|-<br />
|amsrs232 <br />
|[[Original Amstrad RS232 interface|Amstrad RS232C interface]]<br />
|-<br />
|sf2 <br />
|[[SYMBiFACE II]]<br />
|-<br />
|amdrum <br />
|[[Amdrum]]<br />
|-<br />
|playcity <br />
|[[PlayCity]]<br />
|-<br />
|smartwatch <br />
|[[Dobbertin Smart Watch]]<br />
|-<br />
|brunword4<br />
|[[BrunWord]] Elite MK4<br />
|-<br />
|hd20<br />
|[[Dobbertin Harddisc]]<br />
|}<br />
<br />
;Loading external ROMs<br />
<br />
The ROM Box expansion can be used to load external ROMs such as [[MAXAM]]:<br />
<br />
mame cpc6128 -exp rom -rom1 /path/to/MAXAM.ROM<br />
<br />
Up to 8 external ROMs (-rom1 to -rom8) are supported this way.<br />
<br />
;[[Dobbertin Harddisc]]<br />
<br />
From the [http://www.cpcwiki.eu/forum/emulators/got-bored-again/msg102272/#msg102272 forum post]:<br />
<br />
To use, add -exp hd20 to the commandline, which will also allow you to add -hard <filename>.<br />
Code:<br />
<br />
mame cpc6128 -exp hd20 -hard1 disk.chd<br />
<br />
Only MAME CHDs are supported, you can create a blank hard disk image using chdman. Geometry is 615/4/17.<br />
Code:<br />
<br />
chdman createhd -o disk.chd -c none -chs 615,4,17<br />
<br />
(-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)<br />
<br />
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.<br />
<br />
See http://mahlemiut.marpirc.net/cpc_hd20.avi, a quick demo loading a game from HD.<br />
<br />
==GUI front-ends==<br />
[[File:Messmenu.png|thumb|MessMenu on OS X with a CPC ROM selected. Currently, seven different CPC models are supported, including some regional variants (French and Swedish).]]<br />
<br />
Various GUI front-ends for MAME/MESS exist for Windows, Linux, and OS X:<br />
<br />
*[http://www.mameui.info/ MAMEUI64] (Windows)<br />
*[http://qmc2.arcadehits.net/ QMC2] (Windows, OS X, Linux)<br />
<br />
==CRT simulation==<br />
[[File:Cpc shader mess.png|thumb|GLSL shader example (Linux)]]<br />
[[File:Cpc hlsl shader mess detail.png|thumb|HLSL "1980s" shader (Windows); MAME config used is on image description page]]<br />
MAME can use shaders to simulate typical CRT graphics artifacts such as scanlines, colors bleeding into each other, jitter, and display curvature.<br />
<br />
Some example configurations:<br />
*Windows (using HLSL shaders)<br />
**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)<br />
**A German shader tutorial: [http://www.aep-emu.de/PNphpBB2-file-viewtopic-p-94168.html]<br />
*Linux (using GLSL shaders): MAME tutorial [http://www.mameau.com/mame-glsl-shaders-setup/]<br />
<br />
==Remaining issues with CPC emulation==<br />
<br />
*MAME may fail to read DSK images with certain kinds of copy protection. Speedlock seems to work fine though.<br />
*MAME cannot write to disc images in DSK format; only MFI (MESS floppy image) and MFM (HxCFloppyEmulator floppy image) are supported for writing.<br />
*Some demo tricks may be broken in MAME, e.g. overscan pictures are horizontally misaligned (i.e., shifted to the right).<br />
*CPC+/GX4000 emulation still has some obvious graphics glitches.<br />
*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.<br />
<br />
==JSMESS, a JavaScript port==<br />
<br />
There is an experimental port of MAME/MESS to JavaScript, see the [[JSMESS]] article for details.<br />
<br />
==Links==<br />
<br />
*{{EnWiki}}<br />
*[http://mamedev.org/ Official site]<br />
*[http://www.mess.org/mess:howto MESS user's manual]<br />
*[[Media:CPC_ROMs_for_MAME.zip|CPC ROMs for MAME]]<br />
<br />
[[Category:Emulator]]</div>Mornhttps://www.cpcwiki.eu/index.php?title=MAME&diff=93842MAME2015-06-26T17:11:53Z<p>Morn: /* GUI front-ends */</p>
<hr />
<div>[[File:Mess sysinfo.png|thumb|upright=.9|The MAME system info box for the CPC6128]]<br />
[[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]]''.]]<br />
'''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.<br />
<br />
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.<br />
<br />
==Emulated systems==<br />
<br />
Currently, [http://www.progettoemma.net/mess/sysset.php 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).<br />
<br />
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.<br />
<br />
==Installation==<br />
<br />
MAME runs on Windows, Mac OS X, Linux, and FreeBSD. You can get Windows binaries from [http://mamedev.org/release.html mamedev.org].<br />
<br />
On OS X, you can install MAME via [http://brew.sh/ Homebrew]:<br />
brew tap homebrew/games<br />
brew install mame<br />
<br />
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:<br />
alias mame=/usr/share/sdlmame/sdlmame<br />
<br />
==Starting MAME; command line arguments; MAME menu; quitting==<br />
<br />
First get the [[Media:CPC_ROMs_for_MAME.zip|CPC ROMs for MAME]] and unzip them into the MAME roms folder.<br />
<br />
Typical command line to start MAME in CPC mode (windowed mode and with a disc inserted in drive A):<br />
mame cpc6128 -skip_gameinfo -window -flop1 disk.dsk<br />
<br />
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).<br />
<br />
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.<br />
<br />
;Device options for the CPC from [http://www.progettoemma.net/mess/extra.html sysinfo.dat]<br />
{|class="wikitable"<br />
|'''Name'''<br />
|'''Argument'''<br />
|'''Allowed file extensions'''<br />
|-<br />
|Printer<br />
| -prin<br />
|.prn<br />
|-<br />
|Snapshot<br />
| -dump<br />
|.sna<br />
|-<br />
|Disk drive A<br />
| -flop1<br />
|rowspan="2"|.dsk; .d77; .d88; .1dd; .dfi; .imd; .ipf; .mfi; .mfm<br />
|-<br />
|Disk drive B<br />
| -flop2<br />
|-<br />
|Tape<br />
| -cass<br />
|.wav; .cdt<br />
|-<br />
|Cartridge<br />
| -cart<br />
|.cpr; .bin (Plus series and GX4000 only)<br />
|}<br />
<br />
Supported file types can also be shown with the "-listmedia" command line option.<br />
<br />
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.<br />
mame cpc6128 -flop1 disk.zip/disk0.dsk<br />
<br />
==Keyboard layouts==<br />
<br />
MAME supports two keyboard modes:<br />
* '''emulated''' (the default; keys are assigned based on key position on the emulated hardware)<br />
* '''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)<br />
<br />
To use a German keyboard in emulated keyboard mode, start MAME e.g. with (key map path on Linux):<br />
mame cpc6128 -keymap -keymap_file /usr/share/sdlmame/keymaps/km-de.txt<br />
<br />
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.<br />
<br />
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.<br />
<br />
==ROMs and extension hardware==<br />
<br />
[[Media:CPC_ROMs_for_MAME.zip|CPC ROMs for MAME]]. Just unzip the file and move the ZIPs inside into the MAME ROM folder.<br />
<br />
;General notes about MAME and ROMs<br />
<br />
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.)<br />
<br />
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.<br />
<br />
;Slot options (extension hardware)<br />
[[File:MESS with Dobbertin Smart Watch.png|thumb|upright=1.4||MAME with the Dobbertin Smart Watch ROM loaded (-exp smartwatch)]]<br />
[[File:Brunword mame.png|thumb|upright=1.4||BrunWord MK4 (ROM) main menu in MAME 0.162 (-exp brunword4)]]<br />
<br />
You can get a list of slot options with<br />
<br />
mame cpc6128 -lslot<br />
<br />
These are (as of MAME 0.163):<br />
<br />
*for "-centronics"<br />
{|class="wikitable"<br />
|-<br />
|pl80 <br />
|COMX PL-80<br />
|-<br />
|ex800 <br />
|Epson EX-800<br />
|-<br />
|lx800 <br />
|Epson LX-800<br />
|-<br />
|lx810l <br />
|Epson LX-810L<br />
|-<br />
|ap2000 <br />
|Epson ActionPrinter 2000<br />
|-<br />
|printer <br />
|Centronics Printer<br />
|-<br />
|digiblst <br />
|[[Digiblaster]] (DIY)<br />
|}<br />
<br />
*for "-exp"<br />
{|class="wikitable"<br />
|-<br />
|ssa1 <br />
|[[Amstrad SSA-1 Speech Synthesizer]]<br />
|-<br />
|dkspeech <br />
|[[Dk'tronics Speech Synthesizer]]<br />
|-<br />
|rom <br />
|ROM Box<br />
|-<br />
|multiface2 <br />
|[[Multiface II]]<br />
|-<br />
|pds <br />
|[[PDS development system|Programmers Development System (CPC Target)]]<br />
|-<br />
|rs232 <br />
|Pace RS232C interface<br />
|-<br />
|amsrs232 <br />
|[[Original Amstrad RS232 interface|Amstrad RS232C interface]]<br />
|-<br />
|sf2 <br />
|[[SYMBiFACE II]]<br />
|-<br />
|amdrum <br />
|[[Amdrum]]<br />
|-<br />
|playcity <br />
|[[PlayCity]]<br />
|-<br />
|smartwatch <br />
|[[Dobbertin Smart Watch]]<br />
|-<br />
|brunword4<br />
|[[BrunWord]] Elite MK4<br />
|-<br />
|hd20<br />
|[[Dobbertin Harddisc]]<br />
|}<br />
<br />
;Loading external ROMs<br />
<br />
The ROM Box expansion can be used to load external ROMs such as [[MAXAM]]:<br />
<br />
mame cpc6128 -exp rom -rom1 /path/to/MAXAM.ROM<br />
<br />
Up to 8 external ROMs (-rom1 to -rom8) are supported this way.<br />
<br />
;[[Dobbertin Harddisc]]<br />
<br />
From the [http://www.cpcwiki.eu/forum/emulators/got-bored-again/msg102272/#msg102272 forum post]:<br />
<br />
To use, add -exp hd20 to the commandline, which will also allow you to add -hard <filename>.<br />
Code:<br />
<br />
mame cpc6128 -exp hd20 -hard1 disk.chd<br />
<br />
Only MAME CHDs are supported, you can create a blank hard disk image using chdman. Geometry is 615/4/17.<br />
Code:<br />
<br />
chdman createhd -o disk.chd -c none -chs 615,4,17<br />
<br />
(-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)<br />
<br />
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.<br />
<br />
See http://mahlemiut.marpirc.net/cpc_hd20.avi, a quick demo loading a game from HD.<br />
<br />
==GUI front-ends==<br />
[[File:Messmenu.png|thumb|MessMenu on OS X with a CPC ROM selected. Currently, seven different CPC models are supported, including some regional variants (French and Swedish).]]<br />
<br />
Various GUI front-ends for MAME/MESS exist for Windows, Linux, and OS X:<br />
<br />
*[http://www.mameui.info/ MAMEUI64] (Windows)<br />
*[http://qmc2.arcadehits.net/ QMC2] (Windows, OS X, Linux)<br />
<br />
==CRT simulation==<br />
[[File:Cpc shader mess.png|thumb|upright=1.5|GLSL shader example]]<br />
[[File:Cpc hlsl shader mess detail.png|thumb|HLSL "1980s" shader (detail); MAME config used is on image description page]]<br />
MAME can use shaders to simulate typical CRT graphics artifacts such as scanlines, colors bleeding into each other, jitter, and display curvature.<br />
<br />
Some example configurations:<br />
*Windows (using HLSL shaders)<br />
**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)<br />
**A German shader tutorial: [http://www.aep-emu.de/PNphpBB2-file-viewtopic-p-94168.html]<br />
*Linux (using GLSL shaders): MAME tutorial [http://www.mameau.com/mame-glsl-shaders-setup/]<br />
<br />
==Remaining issues with CPC emulation==<br />
<br />
*MAME may fail to read DSK images with certain kinds of copy protection. Speedlock seems to work fine though.<br />
*MAME cannot write to disc images in DSK format; only MFI (MESS floppy image) and MFM (HxCFloppyEmulator floppy image) are supported for writing.<br />
*Some demo tricks may be broken in MAME, e.g. overscan pictures are horizontally misaligned (i.e., shifted to the right).<br />
*CPC+/GX4000 emulation still has some obvious graphics glitches.<br />
*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.<br />
<br />
==JSMESS, a JavaScript port==<br />
<br />
There is an experimental port of MAME/MESS to JavaScript, see the [[JSMESS]] article for details.<br />
<br />
==Links==<br />
<br />
*{{EnWiki}}<br />
*[http://mamedev.org/ Official site]<br />
*[http://www.mess.org/mess:howto MESS user's manual]<br />
*[[Media:CPC_ROMs_for_MAME.zip|CPC ROMs for MAME]]<br />
<br />
[[Category:Emulator]]</div>Mornhttps://www.cpcwiki.eu/index.php?title=MAME&diff=93839MAME2015-06-25T16:17:30Z<p>Morn: /* ROMs and extension hardware */</p>
<hr />
<div>[[File:Mess sysinfo.png|thumb|upright=.9|The MAME system info box for the CPC6128]]<br />
[[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]]''.]]<br />
'''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.<br />
<br />
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.<br />
<br />
==Emulated systems==<br />
<br />
Currently, [http://www.progettoemma.net/mess/sysset.php 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).<br />
<br />
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.<br />
<br />
==Installation==<br />
<br />
MAME runs on Windows, Mac OS X, Linux, and FreeBSD. You can get Windows binaries from [http://mamedev.org/release.html mamedev.org].<br />
<br />
On OS X, you can install MAME via [http://brew.sh/ Homebrew]:<br />
brew tap homebrew/games<br />
brew install mame<br />
<br />
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:<br />
alias mame=/usr/share/sdlmame/sdlmame<br />
<br />
==Starting MAME; command line arguments; MAME menu; quitting==<br />
<br />
First get the [[Media:CPC_ROMs_for_MAME.zip|CPC ROMs for MAME]] and unzip them into the MAME roms folder.<br />
<br />
Typical command line to start MAME in CPC mode (windowed mode and with a disc inserted in drive A):<br />
mame cpc6128 -skip_gameinfo -window -flop1 disk.dsk<br />
<br />
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).<br />
<br />
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.<br />
<br />
;Device options for the CPC from [http://www.progettoemma.net/mess/extra.html sysinfo.dat]<br />
{|class="wikitable"<br />
|'''Name'''<br />
|'''Argument'''<br />
|'''Allowed file extensions'''<br />
|-<br />
|Printer<br />
| -prin<br />
|.prn<br />
|-<br />
|Snapshot<br />
| -dump<br />
|.sna<br />
|-<br />
|Disk drive A<br />
| -flop1<br />
|rowspan="2"|.dsk; .d77; .d88; .1dd; .dfi; .imd; .ipf; .mfi; .mfm<br />
|-<br />
|Disk drive B<br />
| -flop2<br />
|-<br />
|Tape<br />
| -cass<br />
|.wav; .cdt<br />
|-<br />
|Cartridge<br />
| -cart<br />
|.cpr; .bin (Plus series and GX4000 only)<br />
|}<br />
<br />
Supported file types can also be shown with the "-listmedia" command line option.<br />
<br />
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.<br />
mame cpc6128 -flop1 disk.zip/disk0.dsk<br />
<br />
==Keyboard layouts==<br />
<br />
MAME supports two keyboard modes:<br />
* '''emulated''' (the default; keys are assigned based on key position on the emulated hardware)<br />
* '''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)<br />
<br />
To use a German keyboard in emulated keyboard mode, start MAME e.g. with (key map path on Linux):<br />
mame cpc6128 -keymap -keymap_file /usr/share/sdlmame/keymaps/km-de.txt<br />
<br />
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.<br />
<br />
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.<br />
<br />
==ROMs and extension hardware==<br />
<br />
[[Media:CPC_ROMs_for_MAME.zip|CPC ROMs for MAME]]. Just unzip the file and move the ZIPs inside into the MAME ROM folder.<br />
<br />
;General notes about MAME and ROMs<br />
<br />
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.)<br />
<br />
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.<br />
<br />
;Slot options (extension hardware)<br />
[[File:MESS with Dobbertin Smart Watch.png|thumb|upright=1.4||MAME with the Dobbertin Smart Watch ROM loaded (-exp smartwatch)]]<br />
[[File:Brunword mame.png|thumb|upright=1.4||BrunWord MK4 (ROM) main menu in MAME 0.162 (-exp brunword4)]]<br />
<br />
You can get a list of slot options with<br />
<br />
mame cpc6128 -lslot<br />
<br />
These are (as of MAME 0.163):<br />
<br />
*for "-centronics"<br />
{|class="wikitable"<br />
|-<br />
|pl80 <br />
|COMX PL-80<br />
|-<br />
|ex800 <br />
|Epson EX-800<br />
|-<br />
|lx800 <br />
|Epson LX-800<br />
|-<br />
|lx810l <br />
|Epson LX-810L<br />
|-<br />
|ap2000 <br />
|Epson ActionPrinter 2000<br />
|-<br />
|printer <br />
|Centronics Printer<br />
|-<br />
|digiblst <br />
|[[Digiblaster]] (DIY)<br />
|}<br />
<br />
*for "-exp"<br />
{|class="wikitable"<br />
|-<br />
|ssa1 <br />
|[[Amstrad SSA-1 Speech Synthesizer]]<br />
|-<br />
|dkspeech <br />
|[[Dk'tronics Speech Synthesizer]]<br />
|-<br />
|rom <br />
|ROM Box<br />
|-<br />
|multiface2 <br />
|[[Multiface II]]<br />
|-<br />
|pds <br />
|[[PDS development system|Programmers Development System (CPC Target)]]<br />
|-<br />
|rs232 <br />
|Pace RS232C interface<br />
|-<br />
|amsrs232 <br />
|[[Original Amstrad RS232 interface|Amstrad RS232C interface]]<br />
|-<br />
|sf2 <br />
|[[SYMBiFACE II]]<br />
|-<br />
|amdrum <br />
|[[Amdrum]]<br />
|-<br />
|playcity <br />
|[[PlayCity]]<br />
|-<br />
|smartwatch <br />
|[[Dobbertin Smart Watch]]<br />
|-<br />
|brunword4<br />
|[[BrunWord]] Elite MK4<br />
|-<br />
|hd20<br />
|[[Dobbertin Harddisc]]<br />
|}<br />
<br />
;Loading external ROMs<br />
<br />
The ROM Box expansion can be used to load external ROMs such as [[MAXAM]]:<br />
<br />
mame cpc6128 -exp rom -rom1 /path/to/MAXAM.ROM<br />
<br />
Up to 8 external ROMs (-rom1 to -rom8) are supported this way.<br />
<br />
;[[Dobbertin Harddisc]]<br />
<br />
From the [http://www.cpcwiki.eu/forum/emulators/got-bored-again/msg102272/#msg102272 forum post]:<br />
<br />
To use, add -exp hd20 to the commandline, which will also allow you to add -hard <filename>.<br />
Code:<br />
<br />
mame cpc6128 -exp hd20 -hard1 disk.chd<br />
<br />
Only MAME CHDs are supported, you can create a blank hard disk image using chdman. Geometry is 615/4/17.<br />
Code:<br />
<br />
chdman createhd -o disk.chd -c none -chs 615,4,17<br />
<br />
(-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)<br />
<br />
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.<br />
<br />
See http://mahlemiut.marpirc.net/cpc_hd20.avi, a quick demo loading a game from HD.<br />
<br />
==GUI front-ends==<br />
<br />
Various GUI front-ends for MAME exist for Windows, Linux, and OS X—see this list: [http://www.mess.org/mess:howto#frontends]<br />
<br />
[[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).]]<br />
<br />
==CRT simulation==<br />
[[File:Cpc shader mess.png|thumb|upright=1.5|GLSL shader example]]<br />
[[File:Cpc hlsl shader mess detail.png|thumb|HLSL "1980s" shader (detail); MAME config used is on image description page]]<br />
MAME can use shaders to simulate typical CRT graphics artifacts such as scanlines, colors bleeding into each other, jitter, and display curvature.<br />
<br />
Some example configurations:<br />
*Windows (using HLSL shaders)<br />
**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)<br />
**A German shader tutorial: [http://www.aep-emu.de/PNphpBB2-file-viewtopic-p-94168.html]<br />
*Linux (using GLSL shaders): MAME tutorial [http://www.mameau.com/mame-glsl-shaders-setup/]<br />
<br />
==Remaining issues with CPC emulation==<br />
<br />
*MAME may fail to read DSK images with certain kinds of copy protection. Speedlock seems to work fine though.<br />
*MAME cannot write to disc images in DSK format; only MFI (MESS floppy image) and MFM (HxCFloppyEmulator floppy image) are supported for writing.<br />
*Some demo tricks may be broken in MAME, e.g. overscan pictures are horizontally misaligned (i.e., shifted to the right).<br />
*CPC+/GX4000 emulation still has some obvious graphics glitches.<br />
*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.<br />
<br />
==JSMESS, a JavaScript port==<br />
<br />
There is an experimental port of MAME/MESS to JavaScript, see the [[JSMESS]] article for details.<br />
<br />
==Links==<br />
<br />
*{{EnWiki}}<br />
*[http://mamedev.org/ Official site]<br />
*[http://www.mess.org/mess:howto MESS user's manual]<br />
*[[Media:CPC_ROMs_for_MAME.zip|CPC ROMs for MAME]]<br />
<br />
[[Category:Emulator]]</div>Mornhttps://www.cpcwiki.eu/index.php?title=MAME&diff=93833MAME2015-06-22T23:18:06Z<p>Morn: /* Starting MAME; command line arguments; MAME menu; quitting */</p>
<hr />
<div>[[File:Mess sysinfo.png|thumb|upright=.9|The MAME system info box for the CPC6128]]<br />
[[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]]''.]]<br />
'''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.<br />
<br />
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.<br />
<br />
==Emulated systems==<br />
<br />
Currently, [http://www.progettoemma.net/mess/sysset.php 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).<br />
<br />
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.<br />
<br />
==Installation==<br />
<br />
MAME runs on Windows, Mac OS X, Linux, and FreeBSD. You can get Windows binaries from [http://mamedev.org/release.html mamedev.org].<br />
<br />
On OS X, you can install MAME via [http://brew.sh/ Homebrew]:<br />
brew tap homebrew/games<br />
brew install mame<br />
<br />
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:<br />
alias mame=/usr/share/sdlmame/sdlmame<br />
<br />
==Starting MAME; command line arguments; MAME menu; quitting==<br />
<br />
First get the [[Media:CPC_ROMs_for_MAME.zip|CPC ROMs for MAME]] and unzip them into the MAME roms folder.<br />
<br />
Typical command line to start MAME in CPC mode (windowed mode and with a disc inserted in drive A):<br />
mame cpc6128 -skip_gameinfo -window -flop1 disk.dsk<br />
<br />
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).<br />
<br />
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.<br />
<br />
;Device options for the CPC from [http://www.progettoemma.net/mess/extra.html sysinfo.dat]<br />
{|class="wikitable"<br />
|'''Name'''<br />
|'''Argument'''<br />
|'''Allowed file extensions'''<br />
|-<br />
|Printer<br />
| -prin<br />
|.prn<br />
|-<br />
|Snapshot<br />
| -dump<br />
|.sna<br />
|-<br />
|Disk drive A<br />
| -flop1<br />
|rowspan="2"|.dsk; .d77; .d88; .1dd; .dfi; .imd; .ipf; .mfi; .mfm<br />
|-<br />
|Disk drive B<br />
| -flop2<br />
|-<br />
|Tape<br />
| -cass<br />
|.wav; .cdt<br />
|-<br />
|Cartridge<br />
| -cart<br />
|.cpr; .bin (Plus series and GX4000 only)<br />
|}<br />
<br />
Supported file types can also be shown with the "-listmedia" command line option.<br />
<br />
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.<br />
mame cpc6128 -flop1 disk.zip/disk0.dsk<br />
<br />
==Keyboard layouts==<br />
<br />
MAME supports two keyboard modes:<br />
* '''emulated''' (the default; keys are assigned based on key position on the emulated hardware)<br />
* '''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)<br />
<br />
To use a German keyboard in emulated keyboard mode, start MAME e.g. with (key map path on Linux):<br />
mame cpc6128 -keymap -keymap_file /usr/share/sdlmame/keymaps/km-de.txt<br />
<br />
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.<br />
<br />
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.<br />
<br />
==ROMs and extension hardware==<br />
<br />
[[Media:CPC_ROMs_for_MAME.zip|CPC ROMs for MAME]]. Just unzip the file and move the ZIPs inside into the MAME ROM folder.<br />
<br />
;General notes about MAME and ROMs<br />
<br />
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.)<br />
<br />
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.<br />
<br />
;Slot options (extension hardware)<br />
[[File:MESS with Dobbertin Smart Watch.png|thumb|upright=1.4||MAME with the Dobbertin Smart Watch ROM loaded (-exp smartwatch)]]<br />
[[File:Brunword mame.png|thumb|upright=1.4||BrunWord MK4 (ROM) main menu in MAME 0.162 (-exp brunword4)]]<br />
<br />
You can get a list of slot options with<br />
<br />
mame cpc6128 -lslot<br />
<br />
These are (as of MAME 0.162):<br />
<br />
*for "-centronics"<br />
{|class="wikitable"<br />
|-<br />
|pl80 <br />
|COMX PL-80<br />
|-<br />
|ex800 <br />
|Epson EX-800<br />
|-<br />
|lx800 <br />
|Epson LX-800<br />
|-<br />
|lx810l <br />
|Epson LX-810L<br />
|-<br />
|ap2000 <br />
|Epson ActionPrinter 2000<br />
|-<br />
|printer <br />
|Centronics Printer<br />
|-<br />
|digiblst <br />
|[[Digiblaster]] (DIY)<br />
|}<br />
<br />
*for "-exp"<br />
{|class="wikitable"<br />
|-<br />
|ssa1 <br />
|[[Amstrad SSA-1 Speech Synthesizer]]<br />
|-<br />
|dkspeech <br />
|[[Dk'tronics Speech Synthesizer]]<br />
|-<br />
|rom <br />
|ROM Box<br />
|-<br />
|multiface2 <br />
|[[Multiface II]]<br />
|-<br />
|pds <br />
|[[PDS development system|Programmers Development System (CPC Target)]]<br />
|-<br />
|rs232 <br />
|Pace RS232C interface<br />
|-<br />
|amsrs232 <br />
|[[Original Amstrad RS232 interface|Amstrad RS232C interface]]<br />
|-<br />
|sf2 <br />
|[[SYMBiFACE II]]<br />
|-<br />
|amdrum <br />
|[[Amdrum]]<br />
|-<br />
|playcity <br />
|[[PlayCity]]<br />
|-<br />
|smartwatch <br />
|[[Dobbertin Smart Watch]]<br />
|-<br />
|brunword4<br />
|[[BrunWord]] Elite MK4<br />
|-<br />
|hd20<br />
|[[Dobbertin Harddisc]] (MAME 0.163)<br />
|}<br />
<br />
;Loading external ROMs<br />
<br />
The ROM Box expansion can be used to load external ROMs such as [[MAXAM]]:<br />
<br />
mame cpc6128 -exp rom -rom1 /path/to/MAXAM.ROM<br />
<br />
Up to 8 external ROMs (-rom1 to -rom8) are supported this way.<br />
<br />
;[[Dobbertin Harddisc]] (coming feature in MAME 0.163)<br />
<br />
From the [http://www.cpcwiki.eu/forum/emulators/got-bored-again/msg102272/#msg102272 forum post]:<br />
<br />
To use, add -exp hd20 to the commandline, which will also allow you to add -hard <filename>.<br />
Code:<br />
<br />
mame cpc6128 -exp hd20 -hard1 disk.chd<br />
<br />
Only MAME CHDs are supported, you can create a blank hard disk image using chdman. Geometry is 615/4/17.<br />
Code:<br />
<br />
chdman createhd -o disk.chd -c none -chs 615,4,17<br />
<br />
(-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)<br />
<br />
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.<br />
<br />
See http://mahlemiut.marpirc.net/cpc_hd20.avi, a quick demo loading a game from HD.<br />
<br />
==GUI front-ends==<br />
<br />
Various GUI front-ends for MAME exist for Windows, Linux, and OS X—see this list: [http://www.mess.org/mess:howto#frontends]<br />
<br />
[[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).]]<br />
<br />
==CRT simulation==<br />
[[File:Cpc shader mess.png|thumb|upright=1.5|GLSL shader example]]<br />
[[File:Cpc hlsl shader mess detail.png|thumb|HLSL "1980s" shader (detail); MAME config used is on image description page]]<br />
MAME can use shaders to simulate typical CRT graphics artifacts such as scanlines, colors bleeding into each other, jitter, and display curvature.<br />
<br />
Some example configurations:<br />
*Windows (using HLSL shaders)<br />
**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)<br />
**A German shader tutorial: [http://www.aep-emu.de/PNphpBB2-file-viewtopic-p-94168.html]<br />
*Linux (using GLSL shaders): MAME tutorial [http://www.mameau.com/mame-glsl-shaders-setup/]<br />
<br />
==Remaining issues with CPC emulation==<br />
<br />
*MAME may fail to read DSK images with certain kinds of copy protection. Speedlock seems to work fine though.<br />
*MAME cannot write to disc images in DSK format; only MFI (MESS floppy image) and MFM (HxCFloppyEmulator floppy image) are supported for writing.<br />
*Some demo tricks may be broken in MAME, e.g. overscan pictures are horizontally misaligned (i.e., shifted to the right).<br />
*CPC+/GX4000 emulation still has some obvious graphics glitches.<br />
*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.<br />
<br />
==JSMESS, a JavaScript port==<br />
<br />
There is an experimental port of MAME/MESS to JavaScript, see the [[JSMESS]] article for details.<br />
<br />
==Links==<br />
<br />
*{{EnWiki}}<br />
*[http://mamedev.org/ Official site]<br />
*[http://www.mess.org/mess:howto MESS user's manual]<br />
*[[Media:CPC_ROMs_for_MAME.zip|CPC ROMs for MAME]]<br />
<br />
[[Category:Emulator]]</div>Morn