CPS1/CPS1.5 Accuracy (Patreon)
Content
Accuracy of the core; that is what we all want.
I was concerned about the speed of the CPS1 core for a long time. But I needed a reliable way to measure it. I bought the tools to replace the ROMs in an SF2 PCB with my test code. Then, I contacted Grego2D (the author of Final Fight Anniversary Edition) and asked him to write the test code.
The test runs a counter in a loop and shows how many counts can be done in a frame.
The results were appaling: the core was 20% slower in normal mode and 20% faster in turbo mode. MAME, in comparison, is 45% faster. So we were doing better than MAME, but a 20% error was not acceptable.
I corrected the DMA code and got to 15%. Then, I checked over and over the bus wait logic. And, finally, I got it down to 0.08%. Yes, 0.08% error in a demanding test. I think a verified figure of this magnitude deserved a post and a core update.
We still have to test other DMA cases, which may explain the remaining 0.08% difference. But be sure that we will nail this.
Please run the update tool, or look for the files in jtbin. This update also fixes other reported issues.