I know the most logical answer would be: "Don't. Stella already does it wonderfully".
But the thing is, I've started programming a NES emulator some years ago ( for a special valid reason* ) and it is now on an indefinite hiatus.
I've been reading about the VCS and think it's a simpler system than the NES, and programming an emulator for it would be a good
training for later making one for the NES and Commodore 64 which are my other goals.
I've already finished all the 6502 instructions, so I have part of the job done.
Although keeping the cpu in sync with the TIA and Bank switching are complex, the simplicity of the TIA vs. NES' video chip and the Atari's
CPU-programmer-driven interrupts vs. NES' interrupts, make it simpler to model.
TL;DR:
So, how the VCS works is fairly well covered by the programming tutorials out there, but I need some directions, if there are any, on
specific VCS emulator development, mainly cartridge ROM file formats description, and anything else I can't think of now.
*: Why make yet another emulator for an already emulated platform?
Well, I have two reasons, the first one is I wanted to keep my C++ skills in shape, after working for years on web development.
And the other is that I want to make emulators that don't just emulate the games exactly how they were, but that are capable
of modifying the the game's output at runtime, kind of what Pacifi3D did with Pacman.
I tried reading some emulator's source, but honestly I found them too cryptic because of low level C optimizations, and wanted
to live the experience of writing one from scratch anyway.