I welcome the day when simulators will be able to run full-blown digital representations of decapped chips like the 2A03 & 2C02, so that us programmers will no longer require knowledge of how the chip works to get a retro system to work properly (for just the simple purpose of entertainment and enjoyment), but rather face a new challenge: unrolling, compressing, optimizing and compiling sequences of the gate logic that is represented in the perfect digital manifestation of those chip's internal digital circuits, with computer machine code portable and executable on any modern-day multicore processors.
After all, this has already been done for the 6502, and I think Quietust has an on-line 2A03 simulator that can simulate one phi 2 cycle in about one second, so this is just the beginning of a new age of retro game system restoration.
At one time in PC emulators (late 90's), it may have been practical to use dynamic compilation on executed 6502 instructions to get phenomenal speed out of emulating the NES (like on a 486 or a Pentium). Nowadays though, PCs are 100x (or more) faster, and the effort of implementing such a sophisticated system of dynarec emulator operation is just overkill for a system like the NES (even the most state-of-the-art and accurate of emulators nowadays can run full speed (even with HQx effects) on any top-end system that anyone can buy today).
After all, even if the most optimized and speedy NES emulator can completely render 1000 frames a second on a top end system of today, the fact of the matter is that generally you only really need 60 FPS to do the job. My point here, is that emulator operation optimizations, is a dying art of relevance to modern computer systems (not that people didn't notice this trend, but it was a hard lesson I had to learn by writing a whole NES emulator in barebones x86 assembly code for DOS, which now looks like not much more than a whole lot of wasted time on my part, other than learning about how to write an NES operating system for PC
.
Right now, simulation is in it's infant stages, and it's going to be a while before even something like the 2A03 can be ran in real-time, and this is where dynamic code compilation is going to resurface in this area of NES emulation (but it's not really emulation though, because you are simulating electrons/voltage through vast arrays of logic circuits, not emulating guesses and opinions about how sophisticated sequential digital hardware behaves in the NES (which just can never be 100% accurate, because it is impossible to know everything about how tens of thousands of transistors behave several millions of times a second in a system like the NES)).
I myself am not educated enough to tackle such a titanic task of writing an NMOS chip simulator software program (not yet, anyway), but lets also not forget that at one time, iNES and Nesticle were the only emulators that people knew could play NES games. If skilled tech people around the world didn't love the NES system and it's software to death, we wouldn't be where we are today, where pretty much every known detail about the system's operation has been tested & accurately documented (the MMC5 still has some interesting secrets, however). The days for the NES only just keep getting better and better.