Difference between revisions of "Emulators"

From CPCWiki - THE Amstrad CPC encyclopedia!
Jump to: navigation, search
(Copy-protection)
(Emulator Detection)
Line 1,599: Line 1,599:
  
 
If you want to promote usage of real CPC computers, you can detect CPC emulators by:
 
If you want to promote usage of real CPC computers, you can detect CPC emulators by:
*Checking if the memory is initialized with zeroes, as real machines have random memory values at boot
+
*Checking if the memory is initialized with zeroes, as real machines have random memory values at boot. [https://www.cpc-power.com/index.php?page=detail&num=3905 The Eternal Light] homebrew doesn't work on real machine because of this.
 
*Focusing on the minute details in Z80, CRTC and PPI chips. They are most often wrong in emulators
 
*Focusing on the minute details in Z80, CRTC and PPI chips. They are most often wrong in emulators
 
*Examining the FDC chip. It is only replicated more or less superficially in all emulators because the internals of the chip are still unknown
 
*Examining the FDC chip. It is only replicated more or less superficially in all emulators because the internals of the chip are still unknown

Revision as of 12:35, 9 January 2024

Vote for your favorite emulator

There is a poll on CPCWiki forum

Software Platforms (Full OS independance)

Java Platform

Emulator name External link Current version Latest release Developer tools Amstrad Plus Also emulates License
Arnold Jnr [1] Aug 27, 2001 - Open source
JavaCPC Desktop [2] JavaGX4000 CPCInAJar 3.0.2 Apr 8, 2022 KC Compact Donationware & Open source
JEMU [3] Feb 19, 2007 ZX Spectrum, ZX80/81, BBC Micro, VZ-300 Open source
WebCPC [4] JavaCPC Applet r15 Dec 31, 2010 - Open source

JS / Wasm / Web Platform

Emulator name External link Current version Latest release Developer tools Amstrad Plus Also emulates License
CPCBox [5] [6] BZH Games beta Dec 28, 2013 - Freeware
CrocoDS [7] Repo Jun 9, 2020 ⚠️ - Open source
Emularity (MAME) [8] JSMESS Classic Reload

CPC Games CPC Demos on Internet Archive

Oct 1, 2023 Lots of other computer systems Open source
Roland [9] Sep 24, 2011 - Open source
Ronald [10] Repo Sep 25, 2023 ⚠️ - Open source
RVMplayer [11] 0.1.1 May 6, 2023 ZX Spectrum Freeware
Tiny Emus [12] [13] yakc Online Old Games BZH Games

WebGL 3d 8-bit Amstrad CPC Games zpz

Nov 4, 2023 KC Compact, ZX Spectrum, VIC-20, Commodore 64, Acorn Atom, KC 85, KC 87, Z9001, Z1013, LC80 Open source
Xiragon [14] Nov 28, 2012 - Open source

LibRetro (API for emulators)

Emulator name Type External link Current version Latest release Developer tools Amstrad Plus Also emulates License
libretro-cap32 Emulation core [15] 4.5.3 Mar 16, 2022 - - Open source
libretro-crocods Emulation core [16] 0.1 Feb 28, 2017 - - Open source
MESS 2015 Emulation core [17] 0.160 circa 2015 - KC Compact, Aleste 520EX & lots of other computer systems Open source
SugarLibRetro Emulation core [18] (wraps independent lib CPCCore) git Jan 10, 2020 - - Open source
EmuVR Frontend [19] Dec 25, 2022 - Depends on emulation cores Donationware
Hackable Console Frontend [20] Mar 27, 2022 - Depends on emulation cores Open source
RetroArch Frontend [21] RetroAchievements 1.16.0 Sep 22, 2023 - Depends on emulation cores Donationware & Open source

Current Operating Systems

Desktop

Emulator name External link Windows macOS Linux Current version Latest release Developer tools Amstrad Plus Also emulates License
ACE-DL [22] Discord Based on ACE Dec 17, 2023 - Freeware
AMSpiriT [23] Forum 0.967b Dec 6, 2023 - Freeware
Arnimedes [24] 1.02 Jul 7, 2012 - Freeware
Arnold [25] Aeliss fork Arnold TNG macOS ⚠️ ⚠️ WIP May 13, 2017 ⚠️ KC Compact, Aleste 520EX Open source
Caprice Forever [26] 23.11 Nov 11, 2023 - Freeware & Outdated sources
Caprice32 [27] Old repo Linux Aleste Reloaded 4.6.0 Oct 8, 2022 ⚠️ - Donationware & Open source
Clock Signal [28] Linux Dec 28, 2023 ZX Spectrum, ZX80/81, Enterprise, MSX, Oric, ColecoVision, Acorn Electron, Apple II, VIC-20, Atari 2600, Atari ST, Macintosh Donationware & Open source
CoPaCabana [29] 0.74 Apr 12, 2006 ⚠️ - Donationware
CPC++ [30] ⚠️ b700 May 31, 2015 - Freeware
cpc4x [31] ⚠️ 0.26 Dec 11, 2004 - Open source
CPCEC [32] Repo CPCE CPCEG ⚠️ Aug 6, 2022 ⚠️ ZX Spectrum, Commodore 64, MSX (unreleased) Open source
cpcec-gtk [33] Feb 4, 2023 - Open source
CPCemu [34] 2.5 Aug 13, 2022 ⚠️ - Freeware
CPCEPower [35] 2105 Jun 4, 2021 - Donationware
CPCSharp [36] 1.0.0-beta1 Apr 7, 2021 ⚠️ - Open source
CPvC [37] Sep 30, 2022 - Open source
CrocoDS [38] Repo 4.0 beta3 Dec 10, 2023 ⚠️ - Open source
DSP [39] ⚠️ ⚠️ 0.22 Nov 15, 2023 ZX Spectrum, Commodore 64, Oric, ColecoVision, Game Boy, NES, SG-1000, Master System, Game Gear, Super Cassette Vision, PV-1000, PV-2000, Arcade Open source
ep128emu [40] ⚠️ ⚠️ 2.0.11.2 Apr 19, 2019 ⚠️ ZX Spectrum, Enterprise Donationware & Open source
MAME [41] macOS Other ports 0.261 Nov 29, 2023 ⚠️ KC Compact, Aleste 520EX & lots of other computer systems Open source
NO$CPC [42] 1.8 Nov 2, 2000 ⚠️ - Donationware
PC-CPC [43] Repo 0.1at b29 Nov 17, 2011 ⚠️ - Open source
Retro Virtual Machine [44] 2.1.11 Nov 13, 2023 ❌ Removed ZX Spectrum, MSX 1, ColecoVision, SG-1000, Master System Donationware
Roland [45] Repo 0.70 Apr 20, 2017 - Open source
Ronald [46] ⚠️ Sep 25, 2023 ⚠️ - Open source
SugarBox [47] Old site 2.0.2 Nov 29, 2023 ⚠️ - Open source
Virtual CPC [48] Archive 1.1 Aug 8, 2011 ⚠️ - Freeware
WinAPE [49] CPCwin 2.0b2 Jan 5, 2016 - Donationware
WinCPC / MacCPC [50] vbCPC 0.9.2 Jan 22, 2010 - Freeware
Xcpc [51] 0.38.1 Apr 8, 2023 - Open source
XNACPC [52] CPC3D 1.0 Nov 11, 2011 - Open source
YACE [53] ⚠️ Nov 12, 2014 - ❌ Unreleased
ZEsarUX [54] X Sep 8, 2023 ⚠️ PCW, ZX Spectrum, ZX80/81, MSX 1, ColecoVision, Spectravideo, Jupiter ACE, Sam Coupe, SG-1000, Master System, Sinclair QL, MK14, Z88 Donationware & Open source

Alternative OS

Emulator name External link AmigaOS PPC AROS MorphOS Haiku Developer tools Amstrad Plus Also emulates License
ACE Web site Plugins' repo v1.26 - Jan 1, 2024 v1.25.1 - Oct 15, 2023 Dozens of CPC hardware expansions thru plugins Freeware (plugins are Open Source)
Arnold AmigaOS AROS v1.15 - Dec 17, 2012 Oct 24, 2010 ⚠️ KC Compact Open source
Caprice32 [55] v4.2.0 - Oct 23, 2010 ⚠️ - Open source
MAME AmigaOS MorphOS Haiku MESS v0.146u4 - Aug 19, 2012 MESS v0.113 - Nov 1, 2007 v0.261-1 - Dec 1, 2023 ⚠️ KC Compact, Aleste 520EX & lots of other computer systems Open source
ZEsarUX [56] v10.10-1 - Oct 28, 2023 ⚠️ PCW, ZX Spectrum, ZX80/81, MSX 1, ColecoVision, Spectravideo, Jupiter ACE, Sam Coupe, SG-1000, Master System, Sinclair QL, MK14, Z88 Donationware & Open source

Mobile

Host system Emulator name External link Current version Latest release Amstrad Plus Also emulates License
Android andcpc [57] 1.5.1 Apr 4, 2011 - Open source
Android Azimuth [58] 1.11 Aug 22, 2023 - Adware and in-app purchases💲
Android CPCDroid [59] 1.5.1 Mar 2, 2011 - Open source
Android CPCemu [60] 2.5 Aug 14, 2022 - Freeware
Android Droid-CPC [61] 1.1.01 Dec 15, 2016 - Commercial💲
iOS CPCemu [62] 2.5 Aug 13, 2022 - Software available on request
iOS CrocoDS [63] Repo 2.1 Jun 21, 2013 - Open source

Discontinued Operating Systems

Host system Emulator name External link Current version Latest release Amstrad Plus Also emulates License
Acorn RISC OS !CPC [64] [65] Jul 28, 1996 - Open source
Acorn RISC OS !CPCemu [66] 1.21 Mar 22, 2016 - Open source
AmigaOS m68k A-CPC [67] 2.0 Mar 30, 2002 - Open source
AmigaOS m68k Ami-cpc [68] Ami-cpc2 0.46 Jan 21, 1998 - Open source
AmigaOS m68k CPE [69] Feb 24, 1995 - Open source
AmigaOS m68k EmuCPC [70] 0.7 Sep 15, 1996 - Open source
BlackBerry OS BB-CPC [71] (dead link) 1.0.1.3 Jul 15, 2013 - Commercial💲
Classic Mac OS CPC++ [72] 1.3.2 Oct 6, 1997 - Shareware💲
DOS AdvanceMESS [73] 3.9 Sep 8, 2018 KC Compact, Aleste 520EX & lots of other computer systems Open source
DOS Arnimedes [74] 0.8a Apr 15, 2000 - Freeware
DOS Caprice32 [75] 1.11 Sep 20, 1999 - Open source
DOS CPC [76] 0.55b May 16, 1997 - Freeware
DOS CPC-em [77] 0.4 Jul 7, 2004 - Open source
DOS CPCE [78] 1.94 Jun 2, 2011 - Freeware
DOS CPCemu [79] 1.5 Jul 7, 1998 - Freeware
DOS CPE [80] 5.2 Apr 21, 1997 - Open source
DOS NO$CPC [81] 1.8 Nov 2, 2000 - Freeware
DOS PC-CPC [82] Feb 3, 1998 - Open source
DOS RWCPC [83] Mar 23, 1995 - Freeware
DOS SIMCPC [84] Dec 10, 1989 - Shareware💲
DOS YAGE [85] 0.91 Oct 24, 1998 - Freeware
EXOS Software CPC Emulator [86] [87] 1.3 Jan 11, 2013 - Open source
Maemo CPCm [88] 1.20-1 Apr 27, 2010 - Open source
MSX-DOS EMU6CPC [89] Dec 17, 2018 - Freeware
Palm OS CaPriCe for Palm OS [90] 2.8 Jun 28, 2011 - Open source
Palm OS CoPaCabana [91] 0.75 Dec 4, 2007 - Freeware
Pocket PC PocketCaprice [92] 0.9 Aug 19, 2007 - Freeware
SunOS CPC++ [93] 1.3.0 Feb 22, 1997 - Shareware💲
Symbian S60-CPC [94] 0.74 Feb 21, 2006 - Open source
Windows 9x CPC-em [95] 0.3 Jan 22, 2004 - Open source
Windows 9x MTMW [96] 1.30B Jan 11, 2000 ZX Spectrum, ZX80/81, Enterprise, Jupiter ACE Freeware

Home Consoles

You can use RetroArch for Amstrad CPC emulation on Apple TV, Android TV, Nvidia Shield, Xbox One, Xbox Series, PS2, PS Vita TV, GameCube, Wii, Wii U and Switch. Or you can use these stand-alone CPC emulators:

Host system Emulator name External link Current version Latest release Amstrad Plus Also emulates License
Microsoft XBOX ArnoldX [97] [98] v5 Apr 20, 2010 - Freeware
Microsoft XBOX CoinOPS (RetroFE) [99] 5 Oct 18, 2012 Lots of other computer systems Freeware
Microsoft Xbox 360 XNACPC [100] 1.0 Nov 11, 2011 - Open source
Nintendo Wii Wiituka [101] 0.98.8 May 15, 2009 - Open source
Sega Dreamcast CPCast [102] May 6, 2006 - Freeware
Sega Dreamcast DreamCPC [103] Alpha 3 Oct 16, 2005 - Freeware
Sony PS2 CPC-em [104] 0.4 Dec 22, 2004 - Freeware
Sony PS3 Caprice32 [105] 4.1.0 DBG Apr 9, 2012 - Open source

Handheld Consoles

Note: Android-based handheld consoles (Razer Edge, Ayn Odin Pro, Retroid Pocket Flip, GPD XP, ...) will work with stand-alone Android CPC emulators or with RetroArch, same as an Android phone.

You can use RetroArch for Amstrad CPC emulation on PSP, PS Vita, DS, 3DS, Switch, Steam Deck, RetroFW, Miyoo and OpenDingux. Or you can use these stand-alone CPC emulators:

Host system Emulator name External link Current version Latest release Amstrad Plus Also emulates License
Dingoo A320 / A330 Pituka Dingux [106] 0.8pre Aug 19, 2010 - Open source
Dingoo A320 / A330 Dingux-CAP32 [107] 1.1.2 Oct 17, 2009 - Open source
GamePark Caanoo Caanoo-CAP32 [108] 1.1.3 Apr 24, 2011 - Open source
GamePark GP2x CapriceGP2x [109] 0.5 Feb 22, 2006 - Open source
GamePark GP2x GP2X-CAP32 [110] 1.5.1 Aug 29, 2009 - Open source
GamePark GP32 Pituka GP32 [111] 1d May 15, 2010 - Open source
GamePark Wiz Wiz-CAP32 [112] 1.1.0 Aug 29, 2009 - Open source
GCW Zero Dingux-CAP32 [113] 1.1.2 May 25, 2014 - Open source
JXD S5110 / S601 & Yinlips G18 JXD-CAP32 [114] 1.1.1 Oct 27, 2012 - Open source
Nintendo DS AmeDS [115] 4.0 Apr 25, 2010 - Freeware
Nintendo DS CrocoDS [116] Repo 2.0 Nov 9, 2007 - Open source
Nintendo GameBoy Advance Mini Amstrad Emulator [117] Dec 26, 2005 - Open source
Odroid GO CapriceESP32 [118] Dec 3, 2020 - Open source
OpenDingux CrocoDS [119] Repo Jan 15, 2020 - Open source
Pandora Pandora-CAP32 [120] 1.1.0 Jun 27, 2010 - Open source
Sony PSP Caprice32 PSP [121] 4.2.0.2 Nov 28, 2007 - Open source
Sony PSP CPCPSP [122] 0.1 Dec 24, 2005 - Freeware
Sony PSP PSPCAP32 [123] 1.5.1 Aug 21, 2009 - Open source
Trimui Model S Arnold Trimui [124] Oct 19, 2021 - Open source

Single-Board Computers / Raspberry Pi

LibRetro / RetroArch is used as the foundation of Lakka, Recalbox, Batocera and RetroPie alternative OSes for the Raspberry Pi and other SBC. But you can also use RetroArch for Amstrad CPC emulation on a stock Raspberry Pi OS. Or you can use these stand-alone CPC emulators:

Emulator name External link Current version Latest release Amstrad Plus Also emulates License
#CPC4Rpi [125] 1.1 Dec 19, 2013 - Commercial💲
CapriceRPI [126] 1.3d Feb 28, 2016 - Open source
Clock Signal [127] Dec 28, 2023 ZX Spectrum, ZX80/81, Enterprise, MSX, Oric, ColecoVision, Acorn Electron, Apple II, VIC-20, Atari 2600, Atari ST, Macintosh Donationware & Open source
CPCEPower [128] 2105 Jun 4, 2021 - Freeware
MAME [129] 0.261 Nov 29, 2023 KC Compact, Aleste 520EX & lots of other computer systems Open source
SugarPi [130] 1.2.0 Feb 3, 2021 - Open source
ZEsarUX [131] X Sep 8, 2023 PCW, ZX Spectrum, ZX80/81, MSX 1, ColecoVision, Spectravideo, Jupiter ACE, Sam Coupe, SG-1000, Master System, Sinclair QL, MK14, Z88 Donationware & Open source

Hardware

  • CPC TREX CPC-ONE TurboCPC core running on a FPGA board
  • CPC FPGA CPC emulation running on a custom made FPGA board
  • FPGAmstrad CoreAmstrad CoreDocAmstrad CPC for MIST and MISTer Translation of JavaCPC from Java into VHDL on a MiST board
  • CPC2 Project CPC emulation running on a Cyclone V FPGA board
  • ESP32 TinyCPC Port from CPC-em emulator to TTGO VGA32 v1.x board with ESP32
  • AMSGateArray Reverse engineered Gate Array from decapped chips
  • SDiskEmul Floppy-drive emulator released in 2007. Abandoned now. Supports DSK, EDSK disk-images
  • HxC Floppy Emulator Commercial floppy-drive emulator. Supports directly DSK, EDSK, HFE disk-images. IPF, CTRAW, SCP disk-images supported through conversion to HFE disk-image [132]
  • FlashFloppy Open source floppy-drive emulator for the ubiquitous Gotek hardware. Supports DSK, EDSK, HFE disk-images
  • Pauline FPGA-based floppy-drive dumper and emulator
  • TZXduino Arduino-based tape deck emulator. Supports many formats of tape-images including CDT and TZX
  • PlayUEF Web-browser based tape deck emulator, supporting CDT and TZX tape-images
  • Amstrad CPC Printer Emulator Arduino-based CPC printer emulator
  • CPC-plus-cartridge Different PCB designs and code to make a CPC-plus cartridge
  • Amstrad Multicart 16-in-1 cartridge for the GX4000 or Amstrad Plus computer
  • C4CPC Cartridge replacement for the Amstrad Plus range and the GX4000

CPC cartridge slot

Emulator support for a CPC cartridge slot is as follows:

  • M4 Board simulates a standard Plus cartridge port on the CPC and handles standard CPR files. M4 Board is emulated by CPCemu
  • Plus2CPC brings a standard physical Plus cartridge port to the CPC. It is not supported by emulators
  • Play2CPC is an evolution of the Plus2CPC, adding RMR2 Plus mapping, R/W cartridge support, CRTC cursor raster interrupt and a 3-channel soundchip conforming to the PlayCity base spec. Play2CPC is emulated by ACE
  • Dandanator brings a non-standard physical cartridge port and a very exotic non-standard memory mapper that spies on Z80 instructions (sacrificing compatibility without any justification). It is emulated by ACE, Retro Virtual Machine, CPCEC, ZEsarUX, DSP

Mass-storage

Emulator support for mass-storage expansions is as follows:

Audio devices

Emulator support is as follows:

Rewind feature

ACE-DL has a rewind feature, but it is not as good as it could be: Demonstration of rewind in ACE-DL

At the moment, only the RetroArch CPC emulator has a proper rewind feature: Demonstration of rewind in RetroArch. To reverse the game, the user press and hold the rewind button. And at any point, releasing the button makes time goes forward again.

A very simple approach would be to make a SNA for each frame and limit the RAM snapshot to 128KB, which is ok for 99% of CPC software. For a 10-seconds long rewind functionality, only 64MB RAM is needed (128KB * 50 frames * 10 seconds).

A more efficient approach is to store only the values that are changed in RAM between two frames, so that RAM can be restored when rewinding. This allows for long-rewinds, even of a CPC equipped with a 4MB RAM expansion. Proof of it is the GBA emulator SkyEmu demonstrating super long rewind while needing very few RAM.

For debugging, going back to the previous instruction is easily implemented. The emulator has to store the time when the previous instruction was executed so that he can go back to that instruction. In the same way, emulators can provide access to the previous HBL, IRQ, VBL, etc.

Emulator accuracy checking tools

Quick evaluation

Z80 CPU

Diagnostics

Amstrad Plus

Colorimetry

Graphics

Peripherals

Copy-protection

Other

File format specifications

Emulation Tools

Emulator Detection

If you want to promote usage of real CPC computers, you can detect CPC emulators by:

  • Checking if the memory is initialized with zeroes, as real machines have random memory values at boot. The Eternal Light homebrew doesn't work on real machine because of this.
  • Focusing on the minute details in Z80, CRTC and PPI chips. They are most often wrong in emulators
  • Examining the FDC chip. It is only replicated more or less superficially in all emulators because the internals of the chip are still unknown

Combining these methods will definitely get you a 100% success rate in detecting emulators, even the toughest ones.

There is also this initiative for emulators who willingly want to be detected: Emulator IDs

Emulators running on the Amstrad CPC

Emulator name External link Current version Latest release License Emulates
Amstrad BBC BASIC [137] 2.30 Apr 2, 1986 Commercial💲 BBC BASIC
CPCZVM [138] Jul 6, 2019 Open source Z-Machine
Pac-Man [139] 1.1 Jun 5, 2014 Open source Pac-Man arcade
Phoenix [140] Jan 6, 2019 Freeware Phoenix arcade
Space Invaders [141] 1.0 Jun 11, 2016 Freeware Space Invaders arcade
Vezza [142] Oct 7, 2023 Open source Z-Machine
ZXM [143] 1993 Freeware ZX Spectrum
Zym [144] 0.9 Feb 19, 2022 Open source Z-Machine