I've read a blog post the other day that was recommending to start with CHIP8
as a good exercise for people that want to get into emulating.
I was then able to use the knowledge gained from that to start on a NES emulator, which I unfortunately haven't had time to continue on, but I'd definitely recommend that website for the 8080 and Space Invaders.
He does it in C, but I found it easy to follow in a different language. I made mine in Rust as an exercise to learn Rust as well.
Is this.. practical? As I understand it, modern general-purpose computers tend to use 4KB pages (or larger!) for virtual memory, while game cartridges could and did use whatever crazy memory maps they could wire up... at least on the NES and SNES. Maybe Sega's 8-bit consoles were tamer?