Difference between revisions of "Emulator evaluation tools"

Phi2x (Talk | contribs)
(Peripherals)
Phi2x (Talk | contribs)
(Emulator detection methods)
 
(30 intermediate revisions by the same user not shown)
Line 1: Line 1:
 +
While it is easy to create an approximate emulation, the [[Amstrad CPC]] and Plus are very difficult to emulate accurately.
 +
 +
Each chip has its own challenges:
 +
*[[Z80]] is a bloated architecture, with lots of special cases and complex bus logic. The difference with the lean [[GBZ80]] and [[MOS 6502|6502]] is striking.
 +
*[[CRTC]] has a character-based addressing logic, many incompatible chip implementations, and requires accurate VDU emulation too.
 +
*[[Gate Array]] has a weird interrupt system and adds an unnecessary layer of complexity to sync signals.
 +
*[[ASIC]] is buggy and lacks precise documentation.
 +
*[[PAL16L8|Memory management]] is overly complex and limited.
 +
*[[8255|PPI]] has more functionalities than what the CPC needs.
 +
*[[PSG]] cannot be accessed directly as it is behind the PPI. It is simple to emulate though, but it cannot do much.
 +
*[[FDC|765 FDC]] is bloated with 40 pins, compared to 28 pins for the WD1772 FDC used in the [[Atari ST]]. It is also a black box internally, while the [[C64]] uses a regular 6502 (with its own ROM and RAM) as FDC.
 +
 +
And unlike the [[ZX Spectrum]] and the [[MSX]], on the Amstrad CPC and Plus things often go catastrophically wrong if timings are not accurately emulated.
 +
 +
Thankfully, many tools and tests exist to help emulation authors.
 +
 
= Quick evaluation =
 
= Quick evaluation =
 
*[https://www.cpc-power.com/index.php?page=detail&num=7529 From Scratch demo] with reference images (CRTC 1): [[Media:From Scratch logo.png]] [[Media:From Scratch tetris.png]] [[Media:From Scratch ovl.png]]
 
*[https://www.cpc-power.com/index.php?page=detail&num=7529 From Scratch demo] with reference images (CRTC 1): [[Media:From Scratch logo.png]] [[Media:From Scratch tetris.png]] [[Media:From Scratch ovl.png]]
Line 27: Line 43:
  
 
== Amstrad Plus ==
 
== Amstrad Plus ==
*[https://www.cpc-power.com/index.php?page=detail&num=9627 Arnold 5 Diagnostic] [https://www.cpc-power.com/index.php?page=detail&num=8838 Cartridge Software Demonstrator] [https://www.cpc-power.com/index.php?page=detail&num=8308 4096 Colors Preview] [https://www.cpc-power.com/index.php?page=detail&num=18998 4096K tester] [[File:Roudoudou CPR tests.zip]] [https://www.cpcwiki.eu/forum/emulators/amstrad-cpc-'acid'-test/75/] [https://www.cpc-power.com/index.php?page=detail&num=3575 No Exit (uninitialised stack pointer)] [https://www.cpc-power.com/index.php?page=detail&num=3580 Pang (RMR2)] [https://www.cpc-power.com/index.php?page=detail&num=3576 Tennis Cup 2 (analogue joystick)] Plus testing tools
+
*[https://www.cpc-power.com/index.php?page=detail&num=9627 Arnold 5 Diagnostic] [https://www.cpc-power.com/index.php?page=detail&num=8838 Cartridge Software Demonstrator] [https://www.cpc-power.com/index.php?page=detail&num=8308 4096 Colors Preview] [https://www.cpc-power.com/index.php?page=detail&num=18998 4096K tester] [[File:Roudoudou CPR tests.zip]] [https://www.cpcwiki.eu/forum/emulators/amstrad-cpc-'acid'-test/75/] [https://www.cpc-power.com/index.php?page=detail&num=3575 No Exit (uninitialised stack pointer)] [https://www.cpc-power.com/index.php?page=detail&num=3580 Pang (RMR2)] [https://www.pouet.net/prod.php?which=103929 3DManiaks 2 (512K)] [https://www.cpc-power.com/index.php?page=detail&num=3576 Tennis Cup 2 (analogue joystick)] Plus testing tools
 
*[https://www.cpc-power.com/index.php?page=detail&num=7530 Delirium Tremens] [https://www.youtube.com/watch?v=yJcBsQwMzuw Delirium Tremens running on real hardware] [https://www.cpc-power.com/index.php?page=detail&num=18016 Bulles] [https://www.cpc-power.com/index.php?page=detail&num=9169 Funerapolis] [https://www.cpc-power.com/index.php?page=detail&num=7532 X-mas 2008] [https://www.cpc-power.com/index.php?page=detail&num=19239 USS Cygnus 192] To test hardware sprites
 
*[https://www.cpc-power.com/index.php?page=detail&num=7530 Delirium Tremens] [https://www.youtube.com/watch?v=yJcBsQwMzuw Delirium Tremens running on real hardware] [https://www.cpc-power.com/index.php?page=detail&num=18016 Bulles] [https://www.cpc-power.com/index.php?page=detail&num=9169 Funerapolis] [https://www.cpc-power.com/index.php?page=detail&num=7532 X-mas 2008] [https://www.cpc-power.com/index.php?page=detail&num=19239 USS Cygnus 192] To test hardware sprites
 
*[https://www.cpc-power.com/index.php?page=detail&num=8874 6128 Plus DMA] [https://cpcrulez.fr/demostestDO_fairy-breakpoint_2010.htm Fairy] [https://soundtrackerdma.cpcscene.net/doku.php?id=en:download Soundtracker DMA] To test DMA sound
 
*[https://www.cpc-power.com/index.php?page=detail&num=8874 6128 Plus DMA] [https://cpcrulez.fr/demostestDO_fairy-breakpoint_2010.htm Fairy] [https://soundtrackerdma.cpcscene.net/doku.php?id=en:download Soundtracker DMA] To test DMA sound
Line 84: Line 100:
 
*[https://www.cpc-power.com/index.php?page=detail&num=41 Trantor] [https://www.cpc-power.com/index.php?page=detail&num=204 3D Starfighter] [https://www.cpc-power.com/index.php?page=detail&num=726 Treasure Island Dizzy] [https://www.cpc-power.com/index.php?page=detail&num=971 Ghost Hunters] [https://www.cpc-power.com/index.php?page=detail&num=2132 Super Robin Hood] [https://www.cpc-power.com/index.php?page=detail&num=237 Advanced Pinball Simulator] [https://www.cpc-power.com/index.php?page=detail&num=1200 Jet Bike Simulator] [https://www.cpc-power.com/index.php?page=detail&num=1002 Grand Prix Simulator] [https://www.cpc-power.com/index.php?page=detail&num=183 Darts 180] [https://www.cpc-power.com/index.php?page=detail&num=1243 Killapede] [https://www.cpc-power.com/index.php?page=detail&num=7210 Startest] [https://www.cpc-power.com/index.php?page=detail&num=1194 Jail Break] [https://www.cpc-power.com/index.php?page=detail&num=1815 Robocop] [https://www.cpc-power.com/index.php?page=detail&num=100 Chase HQ] [https://www.cpc-power.com/index.php?page=detail&num=1926 Shinobi] [https://www.cpc-power.com/index.php?page=detail&num=895 Fly Spy] [https://www.cpc-power.com/index.php?page=detail&num=1388 Meltdown] [https://www.cpc-power.com/index.php?page=detail&num=17788 Throne Legacy] [https://www.cpc-power.com/index.php?page=detail&num=19569 Léon Marchand's Olympic Challenge] [https://www.cpc-power.com/index.php?page=detail&num=17587 Just Get 9] [https://www.cpc-power.com/index.php?page=detail&num=8892 4-Bit Digi Try] [https://www.cpc-power.com/index.php?page=detail&num=8580 OctoBear] [https://www.cpc-power.com/index.php?page=detail&num=4372 Speech] Software English vocal sounds
 
*[https://www.cpc-power.com/index.php?page=detail&num=41 Trantor] [https://www.cpc-power.com/index.php?page=detail&num=204 3D Starfighter] [https://www.cpc-power.com/index.php?page=detail&num=726 Treasure Island Dizzy] [https://www.cpc-power.com/index.php?page=detail&num=971 Ghost Hunters] [https://www.cpc-power.com/index.php?page=detail&num=2132 Super Robin Hood] [https://www.cpc-power.com/index.php?page=detail&num=237 Advanced Pinball Simulator] [https://www.cpc-power.com/index.php?page=detail&num=1200 Jet Bike Simulator] [https://www.cpc-power.com/index.php?page=detail&num=1002 Grand Prix Simulator] [https://www.cpc-power.com/index.php?page=detail&num=183 Darts 180] [https://www.cpc-power.com/index.php?page=detail&num=1243 Killapede] [https://www.cpc-power.com/index.php?page=detail&num=7210 Startest] [https://www.cpc-power.com/index.php?page=detail&num=1194 Jail Break] [https://www.cpc-power.com/index.php?page=detail&num=1815 Robocop] [https://www.cpc-power.com/index.php?page=detail&num=100 Chase HQ] [https://www.cpc-power.com/index.php?page=detail&num=1926 Shinobi] [https://www.cpc-power.com/index.php?page=detail&num=895 Fly Spy] [https://www.cpc-power.com/index.php?page=detail&num=1388 Meltdown] [https://www.cpc-power.com/index.php?page=detail&num=17788 Throne Legacy] [https://www.cpc-power.com/index.php?page=detail&num=19569 Léon Marchand's Olympic Challenge] [https://www.cpc-power.com/index.php?page=detail&num=17587 Just Get 9] [https://www.cpc-power.com/index.php?page=detail&num=8892 4-Bit Digi Try] [https://www.cpc-power.com/index.php?page=detail&num=8580 OctoBear] [https://www.cpc-power.com/index.php?page=detail&num=4372 Speech] Software English vocal sounds
 
*[https://www.cpc-power.com/index.php?page=detail&num=814 El Enigma de Aceps] [https://www.cpc-power.com/index.php?page=detail&num=1349 Le Manoir de Mortvielle] [https://www.cpc-power.com/index.php?page=detail&num=286 Etrange Castel] [https://www.cpc-power.com/index.php?page=detail&num=910 Forteresse] [https://www.cpc-power.com/index.php?page=detail&num=511 Canadair] [https://www.cpc-power.com/index.php?page=detail&num=1140 L'île] [https://www.cpc-power.com/index.php?page=detail&num=1199 Jaws] [https://www.cpc-power.com/index.php?page=detail&num=1102 Holocauste] [https://www.cpc-power.com/index.php?page=detail&num=284 Apocalypse] [https://www.cpc-power.com/index.php?page=detail&num=1722 Punk Star] [https://www.cpc-power.com/index.php?page=detail&num=132 Afteroids] [https://www.cpc-power.com/index.php?page=detail&num=274 Amstroids] [https://www.cpc-power.com/index.php?page=detail&num=1098 Hold-Up] [https://www.cpc-power.com/index.php?page=detail&num=879 Fire & Forget] [https://www.cpc-power.com/index.php?page=detail&num=1433 Xyphoes Fantasy] [https://www.cpc-power.com/index.php?page=detail&num=5088 Spectra] [https://www.cpc-power.com/index.php?page=detail&num=17000 Space Race] [https://www.cpc-power.com/index.php?page=detail&num=7456 Yao demo] [https://www.cpc-power.com/index.php?page=detail&num=8311 Terrific] [https://www.cpc-power.com/index.php?page=detail&num=7548 Face Hugger Ultimate] [https://www.cpc-power.com/index.php?page=detail&num=7415 Smallest Scroll] [https://www.cpc-power.com/index.php?page=detail&num=14765 Xenon] [https://www.cpc-power.com/index.php?page=detail&num=17542 Musik100] [https://www.cpc-power.com/index.php?page=detail&num=15311 Digital Synthesizer] [https://www.cpc-power.com/index.php?page=detail&num=5031 Echosoft] [https://www.cpc-power.com/index.php?page=detail&num=4735 Mega Sound] [https://www.cpc-power.com/index.php?page=database&lemot=digitracker&compagnie=906 Digitracker NGS] Other software sound effects [https://www.cpc-power.com/index.php?page=database&audiotape=1 Audio-tape included software list]
 
*[https://www.cpc-power.com/index.php?page=detail&num=814 El Enigma de Aceps] [https://www.cpc-power.com/index.php?page=detail&num=1349 Le Manoir de Mortvielle] [https://www.cpc-power.com/index.php?page=detail&num=286 Etrange Castel] [https://www.cpc-power.com/index.php?page=detail&num=910 Forteresse] [https://www.cpc-power.com/index.php?page=detail&num=511 Canadair] [https://www.cpc-power.com/index.php?page=detail&num=1140 L'île] [https://www.cpc-power.com/index.php?page=detail&num=1199 Jaws] [https://www.cpc-power.com/index.php?page=detail&num=1102 Holocauste] [https://www.cpc-power.com/index.php?page=detail&num=284 Apocalypse] [https://www.cpc-power.com/index.php?page=detail&num=1722 Punk Star] [https://www.cpc-power.com/index.php?page=detail&num=132 Afteroids] [https://www.cpc-power.com/index.php?page=detail&num=274 Amstroids] [https://www.cpc-power.com/index.php?page=detail&num=1098 Hold-Up] [https://www.cpc-power.com/index.php?page=detail&num=879 Fire & Forget] [https://www.cpc-power.com/index.php?page=detail&num=1433 Xyphoes Fantasy] [https://www.cpc-power.com/index.php?page=detail&num=5088 Spectra] [https://www.cpc-power.com/index.php?page=detail&num=17000 Space Race] [https://www.cpc-power.com/index.php?page=detail&num=7456 Yao demo] [https://www.cpc-power.com/index.php?page=detail&num=8311 Terrific] [https://www.cpc-power.com/index.php?page=detail&num=7548 Face Hugger Ultimate] [https://www.cpc-power.com/index.php?page=detail&num=7415 Smallest Scroll] [https://www.cpc-power.com/index.php?page=detail&num=14765 Xenon] [https://www.cpc-power.com/index.php?page=detail&num=17542 Musik100] [https://www.cpc-power.com/index.php?page=detail&num=15311 Digital Synthesizer] [https://www.cpc-power.com/index.php?page=detail&num=5031 Echosoft] [https://www.cpc-power.com/index.php?page=detail&num=4735 Mega Sound] [https://www.cpc-power.com/index.php?page=database&lemot=digitracker&compagnie=906 Digitracker NGS] Other software sound effects [https://www.cpc-power.com/index.php?page=database&audiotape=1 Audio-tape included software list]
*[https://www.cpc-power.com/index.php?page=detail&num=17913 RUN!] [https://www.cpc-power.com/index.php?page=detail&num=9179 Now that's what I call Chip Tunes] [https://www.cpc-power.com/index.php?page=detail&num=18904 Amstream music-disk] [https://www.cpc-power.com/index.php?page=detail&num=10467 We Are All Old] [https://www.cpc-power.com/index.php?page=detail&num=7700 Anthology] [https://www.cpc-power.com/index.php?page=database&lemot=ayc%20sound AYC Sound] [https://www.cpc-power.com/index.php?page=database&lemot=shap%20audio Shap Audio] [https://www.cpc-power.com/index.php?page=detail&num=18997 Amstrad CPC Mix] [https://www.youtube.com/@hermol2903/playlists YM!Rulez (real hardware recordings)] [https://www.cpc-power.com/index.php?page=detail&num=9734 Soundtrakker 128k] [https://www.cpc-power.com/index.php?page=detail&num=11771 ST128 Song Modules by BSC] [https://www.cpc-power.com/index.php?page=detail&num=17447 Starkos] [https://www.cpc-power.com/index.php?page=detail&num=11770 Starkos Song Modules] [https://www.cpc-power.com/index.php?page=detail&num=6266 Ams'Orgue] [https://www.cpc-power.com/index.php?page=detail&num=18265 Sintetizador de Sonidos] To test the PSG emulation
+
*[https://www.cpc-power.com/index.php?page=detail&num=17913 RUN!] [https://www.cpc-power.com/index.php?page=detail&num=9179 Now that's what I call Chip Tunes] [https://www.cpc-power.com/index.php?page=database&lemot=amstream Amstream Automated Music Player] [https://www.cpc-power.com/index.php?page=detail&num=10467 We Are All Old] [https://www.cpc-power.com/index.php?page=detail&num=7700 Anthology] [https://www.cpc-power.com/index.php?page=database&lemot=ayc%20sound AYC Sound] [https://www.cpc-power.com/index.php?page=database&lemot=shap%20audio Shap Audio] [https://www.cpc-power.com/index.php?page=detail&num=18997 Amstrad CPC Mix] [https://www.youtube.com/@hermol2903/playlists YM!Rulez (real hardware recordings)] [https://www.cpc-power.com/index.php?page=detail&num=9734 Soundtrakker 128k] [https://www.cpc-power.com/index.php?page=detail&num=11771 ST128 Song Modules by BSC] [https://www.cpc-power.com/index.php?page=detail&num=17447 Starkos] [https://www.cpc-power.com/index.php?page=detail&num=11770 Starkos Song Modules] [https://www.cpc-power.com/index.php?page=detail&num=6266 Ams'Orgue] [https://www.cpc-power.com/index.php?page=detail&num=18265 Sintetizador de Sonidos] To test the PSG emulation
  
 
<br>
 
<br>
Line 93: Line 109:
 
*[https://framagit.org/shinra/vgmplay VGMplay] [http://www.roudoudou.com/ACE-DL/ OPL3 VGM pack] [https://drive.google.com/drive/folders/1o1KKHB4rzLe324VmfAEhzJt-zb7IS5bI SID Player] [https://www.cpc-power.com/index.php?page=detail&num=4682 MidiTrack Performer] To test [[Willy|Willy OPL3]], [https://youtu.be/_LWbnjvXN4g RSF3 SID] and [[EMR MIDI Interface]] ([https://youtu.be/YOjV9AaIVKM RSF3]) soundcards emulation
 
*[https://framagit.org/shinra/vgmplay VGMplay] [http://www.roudoudou.com/ACE-DL/ OPL3 VGM pack] [https://drive.google.com/drive/folders/1o1KKHB4rzLe324VmfAEhzJt-zb7IS5bI SID Player] [https://www.cpc-power.com/index.php?page=detail&num=4682 MidiTrack Performer] To test [[Willy|Willy OPL3]], [https://youtu.be/_LWbnjvXN4g RSF3 SID] and [[EMR MIDI Interface]] ([https://youtu.be/YOjV9AaIVKM RSF3]) soundcards emulation
 
*[https://www.cpc-power.com/index.php?page=database&lemot=hardware_phaser_loriciels West Phaser] [https://www.cpc-power.com/index.php?page=database&lemot=hardware_gunstick Gunstick] [https://www.cpc-power.com/index.php?page=detail&num=4303 Trojan LP-1] To test lightguns and lightpens connected to joystick port [https://www.cpc-power.com/index.php?page=database&lemot=hardware_magnum Magnum Light Phaser] [https://www.cpc-power.com/index.php?page=detail&num=3583 SkeetShoot] [https://www.cpc-power.com/index.php?page=detail&num=3584 The Enforcer] [https://www.cpc-power.com/index.php?page=detail&num=3992 Dk'Tronics Light Pen] [https://www.cpc-power.com/index.php?page=detail&num=4955 Light Pen Mark II] [https://www.cpc-power.com/index.php?page=detail&num=5853 Dart Light Pen] [https://www.cpc-power.com/index.php?page=detail&num=15975 FutureOS] To test lightguns and lightpens connected to expansion port
 
*[https://www.cpc-power.com/index.php?page=database&lemot=hardware_phaser_loriciels West Phaser] [https://www.cpc-power.com/index.php?page=database&lemot=hardware_gunstick Gunstick] [https://www.cpc-power.com/index.php?page=detail&num=4303 Trojan LP-1] To test lightguns and lightpens connected to joystick port [https://www.cpc-power.com/index.php?page=database&lemot=hardware_magnum Magnum Light Phaser] [https://www.cpc-power.com/index.php?page=detail&num=3583 SkeetShoot] [https://www.cpc-power.com/index.php?page=detail&num=3584 The Enforcer] [https://www.cpc-power.com/index.php?page=detail&num=3992 Dk'Tronics Light Pen] [https://www.cpc-power.com/index.php?page=detail&num=4955 Light Pen Mark II] [https://www.cpc-power.com/index.php?page=detail&num=5853 Dart Light Pen] [https://www.cpc-power.com/index.php?page=detail&num=15975 FutureOS] To test lightguns and lightpens connected to expansion port
*[https://www.cpc-power.com/index.php?page=detail&num=19482 The Key] [https://www.cpc-power.com/index.php?page=detail&num=1349 Le Manoir de Mortvielle] [https://www.cpc-power.com/index.php?page=detail&num=11808 Pro-Design] [https://www.cpc-power.com/index.php?page=detail&num=5039 Cherry Paint] [https://www.cpc-power.com/index.php?page=detail&num=5348 EasiArt] [https://www.cpc-power.com/index.php?page=detail&num=4291 GPaint] [https://www.cpc-power.com/index.php?page=detail&num=4286 AMX Art] [https://www.cpc-power.com/index.php?page=detail&num=4012 Advanced OCP Art Studio] [https://www.cpc-power.com/index.php?page=detail&num=6351 Max Desktop] [https://www.cpc-power.com/index.php?page=detail&num=5208 Worktop] [https://www.cpc-power.com/index.php?page=detail&num=4733 DES] [[Stream2]] [https://www.cpc-power.com/index.php?page=detail&num=15975 FutureOS] [[SymbOS|SymbOS (AMX and Albireo mice)]] To test [[AMX Mouse]] and [[Albireo|Albireo USB mouse]] emulation
+
*[https://www.cpc-power.com/index.php?page=detail&num=19482 The Key] [https://www.cpc-power.com/index.php?page=detail&num=1349 Le Manoir de Mortvielle] [https://www.cpc-power.com/index.php?page=detail&num=11808 Pro-Design] [https://www.cpc-power.com/index.php?page=detail&num=5039 Cherry Paint] [https://www.cpc-power.com/index.php?page=detail&num=5348 EasiArt] [https://www.cpc-power.com/index.php?page=detail&num=4291 GPaint] [https://www.cpc-power.com/index.php?page=detail&num=4286 AMX Art] [https://www.cpc-power.com/index.php?page=detail&num=4012 Advanced OCP Art Studio] [https://www.cpc-power.com/index.php?page=detail&num=6351 Max Desktop] [https://www.cpc-power.com/index.php?page=detail&num=5208 Worktop] [https://www.cpc-power.com/index.php?page=detail&num=4733 DES] [[Stream2]] [https://www.cpc-power.com/index.php?page=detail&num=15975 FutureOS] [[SymbOS|SymbOS]] To test [[AMX Mouse]] and [[Albireo|Albireo USB mouse]] emulation
*[https://www.cpc-power.com/index.php?page=detail&num=4026 Tasword] [https://www.cpc-power.com/index.php?page=detail&num=4028 Tasprint] [https://www.cpc-power.com/index.php?page=detail&num=4672 Print Master] [https://www.cpc-power.com/index.php?page=detail&num=12589 ProText] [https://www.cpc-power.com/index.php?page=detail&num=9583 ProType] [https://www.cpc-power.com/index.php?page=detail&num=4668 ProPrint] [https://www.cpc-power.com/index.php?page=detail&num=12745 Miraprint] [https://www.cpc-power.com/index.php?page=detail&num=4666 Qualitas Plus] [https://www.cpc-power.com/index.php?page=detail&num=4516 BrunWord] [https://www.cpc-power.com/index.php?page=detail&num=5212 CPC-Word] [https://www.cpc-power.com/index.php?page=detail&num=4104 MicroDesign] [https://www.cpc-power.com/index.php?page=detail&num=15528 Page Printer] [https://www.cpc-power.com/index.php?page=detail&num=4657 Stop Press (AMX Pagemaker)] [https://www.cpc-power.com/index.php?page=detail&num=5315 X-Press] [https://www.cpc-power.com/index.php?page=detail&num=10004 Page Publisher] [https://www.cpc-power.com/index.php?page=detail&num=5204 PowerPage 128] [https://www.cpc-power.com/index.php?page=detail&num=12116 StarMouse] [https://www.cpc-power.com/index.php?page=detail&num=5551 Impr'Image] [https://www.cpc-power.com/index.php?page=detail&num=6127 Speedtrans screen dump] [https://www.cpc-power.com/index.php?page=detail&num=17613 Kdump] [https://www.cpc-power.com/index.php?page=detail&num=4016 Printer Pac II] [https://www.cpc-power.com/index.php?page=detail&num=5712 Impression] [https://www.cpc-power.com/index.php?page=detail&num=5576 RSX Imprimante] [https://www.cpc-power.com/index.php?page=detail&num=5157 Scrypte] [https://www.cpc-power.com/index.php?page=detail&num=6287 Machine à écrire] [https://www.cpc-power.com/index.php?page=detail&num=5883 DemoImp] [http://www.symbos.de/appinfo.htm?00069 PrintIt] [http://www.symbos.de/appinfo.htm?00066 Wordpad] To test printer emulation
+
*[https://www.cpc-power.com/index.php?page=detail&num=4026 Tasword] [https://www.cpc-power.com/index.php?page=detail&num=4028 Tasprint] [https://www.cpc-power.com/index.php?page=detail&num=4672 Print Master] [https://www.cpc-power.com/index.php?page=detail&num=12589 ProText] [https://www.cpc-power.com/index.php?page=detail&num=9583 ProType] [https://www.cpc-power.com/index.php?page=detail&num=4668 ProPrint] [https://www.cpc-power.com/index.php?page=detail&num=12745 Miraprint] [https://www.cpc-power.com/index.php?page=detail&num=4666 Qualitas Plus] [https://www.cpc-power.com/index.php?page=detail&num=4516 BrunWord] [https://www.cpc-power.com/index.php?page=detail&num=5212 CPC-Word] [https://www.cpc-power.com/index.php?page=detail&num=4104 MicroDesign] [https://www.cpc-power.com/index.php?page=detail&num=15528 Page Printer] [https://www.cpc-power.com/index.php?page=detail&num=4657 Stop Press (AMX Pagemaker)] [https://www.cpc-power.com/index.php?page=detail&num=5315 X-Press] [https://www.cpc-power.com/index.php?page=detail&num=10004 Page Publisher] [https://www.cpc-power.com/index.php?page=detail&num=5204 PowerPage 128] [https://www.cpc-power.com/index.php?page=detail&num=14009 Page Setter 64] [https://www.cpc-power.com/index.php?page=detail&num=12116 StarMouse] [https://www.cpc-power.com/index.php?page=detail&num=5551 Impr'Image] [https://www.cpc-power.com/index.php?page=detail&num=6127 Speedtrans screen dump] [https://www.cpc-power.com/index.php?page=detail&num=17613 Kdump] [https://www.cpc-power.com/index.php?page=detail&num=4016 Printer Pac II] [https://www.cpc-power.com/index.php?page=detail&num=5712 Impression] [https://www.cpc-power.com/index.php?page=detail&num=5576 RSX Imprimante] [https://www.cpc-power.com/index.php?page=detail&num=5157 Scrypte] [https://www.cpc-power.com/index.php?page=detail&num=6287 Machine à écrire] [https://www.cpc-power.com/index.php?page=detail&num=5883 DemoImp] [http://www.symbos.de/appinfo.htm?00069 PrintIt] [http://www.symbos.de/appinfo.htm?00066 Wordpad] To test printer emulation
 
*[[HDCPM]] [https://www.cpc-power.com/index.php?page=detail&num=15975 FutureOS] [http://www.roudoudou.com/ACE-DL/ SymbOS] [[UniDOS]] [http://amsnet.chez.com/ UniLoad] To test RTC and mass-storage emulation
 
*[[HDCPM]] [https://www.cpc-power.com/index.php?page=detail&num=15975 FutureOS] [http://www.roudoudou.com/ACE-DL/ SymbOS] [[UniDOS]] [http://amsnet.chez.com/ UniLoad] To test RTC and mass-storage emulation
 
*[https://cpcrulez.fr/applications_util-rulez-change-m4wifi.htm RulezCharge] [https://www.cpc-power.com/index.php?page=detail&num=16746 CPChessNet] [https://github.com/fergusleen/m4ewenterm Ewen] [https://www.github.com/salafek/KCNet-software-for-Net4CPC KCNet utilities] [http://www.symbos.de/appinfo.htm?00017 NsLookUp] [http://www.symbos.de/appinfo.htm?00020 SymTel] [http://www.symbos.de/appinfo.htm?00019 WGet] [http://www.symbos.de/ SymbOS] [[UniDOS]] To test the network emulation
 
*[https://cpcrulez.fr/applications_util-rulez-change-m4wifi.htm RulezCharge] [https://www.cpc-power.com/index.php?page=detail&num=16746 CPChessNet] [https://github.com/fergusleen/m4ewenterm Ewen] [https://www.github.com/salafek/KCNet-software-for-Net4CPC KCNet utilities] [http://www.symbos.de/appinfo.htm?00017 NsLookUp] [http://www.symbos.de/appinfo.htm?00020 SymTel] [http://www.symbos.de/appinfo.htm?00019 WGet] [http://www.symbos.de/ SymbOS] [[UniDOS]] To test the network emulation
Line 139: Line 155:
 
  The way to cause the RAM refresh to fail in both a Plus or normal CPC is simply to stop a few bits of the CRTC address changing (ie. never refresh the selected area).
 
  The way to cause the RAM refresh to fail in both a Plus or normal CPC is simply to stop a few bits of the CRTC address changing (ie. never refresh the selected area).
 
  Generally, only the Row address needs to be cycled, so stopping MA0 through MA7 from changing, and stopping the CPU from reading those rows, will cause data to be lost, quite quickly (generally around 4ms).
 
  Generally, only the Row address needs to be cycled, so stopping MA0 through MA7 from changing, and stopping the CPU from reading those rows, will cause data to be lost, quite quickly (generally around 4ms).
 +
*Detecting corruption in the PSG registers when a register write is not validated. [https://www.cpcwiki.eu/forum/programming/interesting-walkthrough-video-coding-a-pet-to-play-samples-at-60khz/msg250874/#msg250874 Source]
 
*Playing with the "floating" bus. Using Z80 read I/O commands to write to chip registers. Accessing ghost registers. Using undocumented I/O ports. Writing to multiple chips simultaneously. Changing PPI and PSG ports direction.
 
*Playing with the "floating" bus. Using Z80 read I/O commands to write to chip registers. Accessing ghost registers. Using undocumented I/O ports. Writing to multiple chips simultaneously. Changing PPI and PSG ports direction.
 
*Focusing on the minute details in [[Z80]], [[CRTC]], [[8255|PPI]] and [[PAL16L8|PAL]] chips. They are most often wrong in emulators.
 
*Focusing on the minute details in [[Z80]], [[CRTC]], [[8255|PPI]] and [[PAL16L8|PAL]] chips. They are most often wrong in emulators.

Latest revision as of 10:12, 14 May 2025

While it is easy to create an approximate emulation, the Amstrad CPC and Plus are very difficult to emulate accurately.

Each chip has its own challenges:

  • Z80 is a bloated architecture, with lots of special cases and complex bus logic. The difference with the lean GBZ80 and 6502 is striking.
  • CRTC has a character-based addressing logic, many incompatible chip implementations, and requires accurate VDU emulation too.
  • Gate Array has a weird interrupt system and adds an unnecessary layer of complexity to sync signals.
  • ASIC is buggy and lacks precise documentation.
  • Memory management is overly complex and limited.
  • PPI has more functionalities than what the CPC needs.
  • PSG cannot be accessed directly as it is behind the PPI. It is simple to emulate though, but it cannot do much.
  • 765 FDC is bloated with 40 pins, compared to 28 pins for the WD1772 FDC used in the Atari ST. It is also a black box internally, while the C64 uses a regular 6502 (with its own ROM and RAM) as FDC.

And unlike the ZX Spectrum and the MSX, on the Amstrad CPC and Plus things often go catastrophically wrong if timings are not accurately emulated.

Thankfully, many tools and tests exist to help emulation authors.

Quick evaluation

Categories

Z80 CPU


Diagnostics


Amstrad Plus


Colorimetry

  • CPC DiAG also shows that the primary colours themselves are a bit different. Blue is more vivid and Green is less fluorescent on Amstrad displays.
  • Colours are less saturated and black is not as profound on CRT monitors than they are on modern displays.
  • On CRT displays, bright pixels will spill on their neighbours while dark pixels will get eaten by their neighbours (ie. bright pixels are bigger than dark pixels on CRT displays), affecting dithered colours. This effect is absent on LCD displays.
  • The usual scanline effect of CRT monitors is barely noticeable on the Amstrad CTM colour monitor. But it is very pronounced on Amstrad monochrome monitors.
  • The slot mask is the texture that is visible in the CTM colour monitor. CRT masks do not exist on monochrome monitors.
  • To test emulators VSYNC (screen-tearing and skipped frames): Source
border 22,17:ink 0,4,9:speed ink 1,1


Graphics


Audio


Peripherals

Note: Open standards like Albireo (CH376 USB and mass storage) and Net4CPC (W5100S Ethernet) should be favored over proprietary protocols (Multiplay, Symbiface 3, M4 Board)


Copy-protection


Other


Emulator detection methods

If you are a programmer who wants to promote usage of real CPC computers, you can detect CPC emulators by:

  • Checking if the memory is initialised with zeroes, as RAM in real machines is not initialised during boot. Source
  • Configuring the CRTC to stop refreshing part of the RAM. This behaviour has never been emulated. Source
The way to cause the RAM refresh to fail in both a Plus or normal CPC is simply to stop a few bits of the CRTC address changing (ie. never refresh the selected area).
Generally, only the Row address needs to be cycled, so stopping MA0 through MA7 from changing, and stopping the CPU from reading those rows, will cause data to be lost, quite quickly (generally around 4ms).
  • Detecting corruption in the PSG registers when a register write is not validated. Source
  • Playing with the "floating" bus. Using Z80 read I/O commands to write to chip registers. Accessing ghost registers. Using undocumented I/O ports. Writing to multiple chips simultaneously. Changing PPI and PSG ports direction.
  • Focusing on the minute details in Z80, CRTC, PPI and PAL 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. Many emulators don't even support the FDC SCAN or FORMAT TRACK commands.

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

Additionally, an Emulator IDs system is available for easier detection of CPC emulators.

On ZX Spectrum, gamedevs are challenging emulators real hard with titles like MEMPTR Snake, Super HALT Invaders Test and Chromatrons Attack.