1. near.sh
  2. posts
  3. 20210325120507

2021-03-25 12:05:07
Sega 32X progress

I've ironed out nearly all of the bugs and reached around 85% game compatibility.

ares now passes all 161 Mars Check Program tests, and I've implemented a cached interpreter for the SH2s.

Because of how demanding the base Sega Genesis (cycle-accurate 68K + Z80, dot-accurate VDP, PSG + YM2612) and Sega CD (additional faster 68K, extra VDP, PCM, CD-DA) is, and then adding the 32X (dual SH2s, extra VDP, PWM) on top of all of that, this likely isn't going to be enough headroom. Right now, I'm barely maintaining 60fps with my 5800X without the Sega CD component, so I am going to have to write a pure dynamic recompiler for the SH2s, and start using a priority queue again for scheduling the peripheral events that the SH7604 has built-in. I'll also likely need to improve and use my Genesis scanline renderer for all of this.

Things should go better with Sega Saturn emulation, since I won't have to start from a core built around cooperative threading and dot-based rendering, and I should be able to offload the video rendering to another thread, but that's still going to be no walk in the park either. I may need to go even further and implement a cached interpreter for the 68K as well. We'll see how it goes, but one way or another I'll get us to 60fps for both eventually. CCBot/2.0 (https://commoncrawl.org/faq/)