Done! Have a look. The new frame timing code is in there but disabled unless you compile with NEW_FRAME_TIMING. It affects Model3.cpp and Real3D.cpp.
There are definitely still some rendering issues in VON2. There's one level with an orange sky background but I think there's supposed to be a more pronounced gradient. In fact, I'm sure of it (there are some screenshots further back in this thread I think). Not a huge deal. Otherwise, I think things look great.
I didn't test *all* the games to make sure they still boot but I'm pretty confident that the ASIC ID codes are being returned correctly. If you come across anything that breaks, let me know. Likewise if I somehow goofed up on removing the game-specific hacks.
As usual, my code is a big over-engineered. CJTAG is its own class, and it passes stuff to CReal3D (as well as gets the ASIC ID codes from there), which in turn calls the renderer to update the sun clamp setting. The reason for the indirection, though, is to keep the JTAG relatively cleanly separated from CReal3D. It may be that JTAG is a Real3D-specific thing but it may also be hooked up to the tile gen. It's accessible through the system register space in any case, so I think it belongs in its own logical unit, hence all the indirection.
I'm also sad to see one of the oldest pieces of code in Supermodel (the JTAG emulation in Real3D.cpp) get chopped out. That one was the one bit of code (besides the disassembler) that had made it all the way from the original Supermodel project ca. 2003. In fact, I think it's still used verbatim in MAME because who the hell wants to look at JTAG again?
