I see this as a mediocre alternative to Verilog, but it's a terrible way to actually run things on your computer. The way the code is structured is practically designed to pessimize performance (in his own words), so your CPU has to struggle extensively to get roughly-real-time performance. Now you're got a codebase that is slow (like higan) and hard to read (like zsnes)... it's basically the worst of both worlds. (Writing extremely non-idiomatic C++ means that other people can't really use it as reference). There's
still no more guarantee that your emulation is guaranteed correct: if a transistor is connected wrong, that's really the same class as missing some test in understandable code.
The author acknowledges this:
Testing Verilog designs is a huge pain, and the compile-run-debug cycle can be hours long. By writing and debugging a circuit in C and then translating it to Verilog, you can leverage your C skills and tools and still have something you know will synthesize in the end.
Also, running the C code directly is potentially thousands of times faster than running Verilog in a simulator.
I think the worst part about game boy emulation is that there are at least five different major silicon revisions, which are all measurably subtly incompatible with each other.
(see gekkio's summary on his emulator)It does imply that
zeroone's question about the practicality of just using the Visual2xxx transistor definitions could be revisited...