Being a professional developer and being fascinated with all things retro tech & Z80, I have flirted with the idea of writing a Z80 emulator for a long time. It has been 47 years since I was first exposed to my first Z80 computer and I know it's already been done a thousand times over however, for me it's about the challenge of learning and understanding Z80 architecture to a highly granular level and writing it in a language I haven't used in 'anger' for almost 30 years, C++. Needless to say, things have changed a little and the days of Borland Turbo C++ are long gone. So anyway, I've started this project and I plan on documenting progress as I go; both the progress of the emulator and my 'rediscovery' of C++!
A from-scratch Z80 CPU emulator written in modern C++20.
This project is a structured learning exercise in emulator development, focusing first on correctness, determinism, and architectural clarity before performance or hardware accuracy.
The goal is not to rush to a full machine emulator, but to build a solid, extensible CPU core with proper timing (T-state based), clean separation of concerns, and strong debugging visibility.