In the end I didn't get much time to do a lot of coding over christmas, but I have gotten a few little tweaks in, along with more unit tests:
- Fix IDE PIO read size (it always returns sector-at-a-time)
- Fix TMU counters to be accurate to within 1 SH4 instruction when read/written (events are still coarse-grained).
- Fix crash on receipt of a bad maple packet.
- Implement real video timing using the CRTC registers, along with the SYNCSTAT (A05F810C) register, at least for PAL. Still need to verify NTSC and test other display modes. Interestingly it looks like it's using a 27.038Mhz dot clock for both PAL and NTSC.
The above has gotten me to the title screen on one game I tested, but it hangs there unfortunately. It's also made me acutely aware of the immediate need to have finer-grained timings on at least the display events - plan is to implement sh4-relative one-shot event timers next, and then test/implement the other display modes.
Things are looking promising though - I'm aiming for an end-of-January/early-February M2 release, which should be at the point where other people can start playing with it.
Said game is trying to use the YUV converter to play video, which means it's hanging because of something not implemented (yet), rather than because something's broken. Just for a change