back

by stevekemp·2y ago·view on hn ↗
There are tutorials out there, that tend to start out with the "fantasy system", the chip8:

http://www.emulator101.com/introduction-to-chip-8.html

(You can google "chip8 tutorial rust|golang|c" to find language-specific guides.)

After that it's a matter of trial, error, and so much testing. I've written emulators for Z80-based systems and they're thankfully old enough that there are tons of documentation for them - often scattered, often incomplete, but still useful.

Jumping straight into a "big" system like an Xbox, PS/2, or similar is not recommended. But once you get a feel for architecture and how the various low-level things interact it's quite addictive to add more and more steps. Writing a gameboy/NES/SNES emulator should be a fun challenge for many people - you can get some stuff running in a month or two, maybe more, maybe less. But after that comes all the refinements and accuracy fixes that can take years. More modern systems are more complex, but also they offload a lot of stuff - you're not so much focused on CPU/BUS/AUDIO timing as on blenders, shaders, and things that are outwith the core. I'd not have the skills, patience, or interest in those things personally. I guess that's why I've been emulating CP/M recently - zero graphics!