For a while, Trebor and I have been working together on improving the MESS 7800 emulation. We've had a fair bit of success, and our changes have been incorporated into MESS 0.153, which was officially released today.
DMA cycle stealing has been added.
support for 256k and 512k ROM formats, with and without RAM, with and without CPUWIZ banked RAM.
The INTIM timer now matches real hardware.
Mess now runs with the correct number of scanlines, 263 for NTSC, and 313 for PAL.
Additional accuracy of the RIOT/6532 2 button register IO control.
Improved RIOT/6532 timer emulation accuracy.
A great many game ROMs that previously had display glitches now appear perfect. The Diagnostic Test Cartrige now successfuly completes it's internal hardware tests and runs.
If you're developing games for the 7800, you might want to check it out.
I released my 7800 testing tool in the 7800 hardware facts thread. If you run it in the new MESS, you'll find it's much closer to real hardware for a number of the tests, but there are still a couple of shortcomings 7800 developers should be aware of.
Firstly, the MESS DMA cycle stealing sometimes falls a bit short of the real world results. In the GCC Spec, some DMA cycle timings are provided as ranges, and we don't emulate the delays that cause the range of timings.
Secondly, MESS doesn't faithfully display register changes that happen mid-line. If you change color registers while a scanline is being drawn, the display will be inaccurate. This is common shorcoming with all existing 7800 emulators, AFAIK.
Still, the changes we made have put MESS into the right "real hardware" ballpark now, where previously we were in the wrong state.
Great work! It's nice to see this driver getting some attention.