Changes
*[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=19308 DSC4 v2 demo] with reference images (CRTC 1): [[Media:DSC4 reference1.png]] [[Media:DSC4 reference2.png]] [https://blog.logonsystem.eu/vomitiks-5-sink-mode/ Technical explanation]
<br>
= Categories =
== Z80 CPU ==
*[https://www.cpc-power.com/index.php?page=detail&num=2266 The Untouchables] [https://www.cpc-power.com/index.php?page=detail&num=135 Batman The Movie] [https://www.cpc-power.com/index.php?page=detail&num=2318 Turrican] [https://www.cpc-power.com/cpcarchives/index.php?page=articles&num=80 Technical explanation] CPC keyboard clash [https://www.cpc-power.com/index.php?page=detail&num=2224 Thunder Blade (6 keys)] [https://www.cpc-power.com/index.php?page=detail&num=244 Agent X II (7 keys)] [https://www.cpc-power.com/index.php?page=detail&num=11846 Wishing-Well (8 keys)] [https://www.cpc-power.com/index.php?page=detail&num=1886 Score 3020 (9 keys)] Simultaneous keypresses for cheat mode
*[https://www.cpc-power.com/index.php?page=detail&num=19283 Raytracing in BASIC] [https://www.cpc-power.com/index.php?page=detail&num=6680 Reliefs Mathématiques] [https://www.cpc-power.com/index.php?page=detail&num=19273 Cherry Blossom] [https://www.cpc-power.com/index.php?page=detail&num=15685 Deuligne Julia Fractal] [https://www.github.com/litwr2/rosetta-mandelbrot Rosetta Mandelbrot] [https://www.github.com/litwr2/rosetta-pi-spigot Rosetta Pi Spigot] [https://www.cpc-power.com/index.php?page=detail&num=15734 Life] [https://www.cpc-power.com/index.php?page=detail&num=7460 Highway To Hell] [https://www.cpc-power.com/index.php?page=detail&num=8188 Chain] [https://www.cpc-power.com/index.php?page=detail&num=9281 Montre] [https://www.cpc-power.com/index.php?page=protection&lenom=COMPTEUR%20CASSETTE Tape Counter software list] To benchmark emulators using their fullspeed mode
<br>
= 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. [https://www.cpcwiki.eu/forum/emulators/weird-thing-about-memory-dump-on-winapecaprice-vs-cpcemuace/msg243929/ Source]
*Configuring the CRTC to stop refreshing part of the RAM. This behaviour has never been emulated. [https://www.cpcwiki.eu/forum/amstrad-cpc-hardware/memory-refresh-plus/ 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).
*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.
*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.
<gallery>
Emulator undetected.png|Emulator undetected in Open Tower Defense
Emulator detected.png|Emulator detected in Open Tower Defense
</gallery>
Additionally, an [[Emulator_IDs|Emulator IDs]] system is available for easier detection of CPC emulators.
On ZX Spectrum, gamedevs are challenging emulators real hard with titles like [https://spectrumcomputing.co.uk/entry/31198/ZX-Spectrum/MEMPTR_Snake MEMPTR Snake], [https://github.com/redcode/Z80/wiki/Super-HALT-Invaders-Test Super HALT Invaders Test] and [https://spectrumcomputing.co.uk/entry/31261/ZX-Spectrum/Chromatrons_Attack Chromatrons Attack].
<br>
[[Category:Emulator]] [[Category:Emulation Tools]]