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.
*[[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.
== Diagnostics ==
*[https://auamstrad.es/software/aua-utilidades/ AUA Utilidades] [https://www.cpc-power.com/index.php?page=detail&num=5113 Amstest] [https://www.cpc-power.com/index.php?page=detail&num=17932 Amstrad Diagnostics] [https://www.cpcwiki.eu/forum/amstrad-cpc-hardware/amstrad-diagnostics-rom/msg243665/] [https://www.cpcwiki.eu/forum/software-related/8255-manufacturer-detection/] [https://www.cpc-power.com/index.php?page=detail&num=6545 STS SysInfo] [https://www.cpc-power.com/index.php?page=database&r1=1&lemot=test%20crtc%20v Test CRTC type] [http://quasar.cpcscene.net/doku.php?id=coding:test_crtc] [http://cpc.sylvestre.org/technique/technique_identifier_crtc.html Identifying CRTC visually] [https://www.cpc-power.com/index.php?page=detail&num=11446 Basic Program Status Window] [https://www.cpc-power.com/index.php?page=detail&num=12584 Version du Firmware Basic]
*[http://www.symbos.de/appinfo.htm?00061 SyMon] [http://www.symbos.de/appinfo.htm?00047 HexE] [https://www.cpc-power.com/index.php?page=detail&num=6987 RAM Expansion Test] [https://www.cpc-power.com/index.php?page=detail&num=14833 MemTest] [https://www.cpc-power.com/index.php?page=detail&num=14834 RAM Test CRTC4] [https://www.cpcwiki.eu/forum/technical-support/test-ram-de-mcleod-ideafix/ Test RAM de McLeod Ideafix] [https://www.cpc-power.com/index.php?page=detail&num=15739 RAM Check] [https://www.cpc-power.com/index.php?page=detail&num=13386 Testprogram For All ERAM] [https://www.cpc-power.com/index.php?page=detail&num=16010 Test RAM Basic] [https://www.cpc-power.com/index.php?page=detail&num=19185 Xenon 2] [https://www.cpc-power.com/index.php?page=detail&num=12188 Take On Me] [https://www.cpc-power.com/index.php?page=detail&num=14339 Trololo Experiments] [https://www.cpc-power.com/index.php?page=detail&num=19406 Still The One] [https://www.cpc-power.com/index.php?page=detail&num=16084 Post Scriptum] [https://www.cpc-power.com/index.php?page=detail&num=18658 Onescreen Colonies #2 256K] [https://www.cpc-power.com/index.php?page=detail&num=15985 A tribute to the sisters] [https://amstrad-ggp.itch.io/mightysf Mighty Steel Fighters] [https://cpcrulez.fr/info-chany-enhanced_edition.htm Chany 512K cracks] [https://www.cpc-power.com/index.php?page=detail&num=14814 Anti-Multiface] [https://www.cpc-power.com/cpcarchives/index.php?page=articles&num=151 Expanded RAM software list] RAM exercisers
*[https://www.cpc-power.com/index.php?page=detail&num=15975 FutureOS] [https://www.cpc-power.com/index.php?page=detail&num=4174 CP/M Plus] [https://www.cpcwiki.eu/forum/software-related/what-software-requires-c3-ram-banking/msg246339/#msg246339 Fuzix OS] [https://www.cpc-power.com/index.php?page=detail&num=10030 Phortem] [https://www.cpcwiki.eu/forum/software-related/what-software-requires-c3-ram-banking/msg246582/#msg246582 PhX] [https://www.cpc-power.com/index.php?page=detail&num=19308 DSC4] [https://www.cpc-power.com/index.php?page=detail&num=7270 Pac-Man Emulator] Problematic [[PAL16L8|RAM mode &C3]] on CPC464/664
*[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=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=detaildatabase&numlemot=18904 amstream Amstream music-diskAutomated 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>
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. [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.
*Focusing on the minute details in [[Z80]], [[CRTC]], [[8255|PPI]] and [[PAL16L8|PAL]] chips. They are most often wrong in emulators.