I spent the last few days trying to cobble together some tests to emulate CD-ROM seek time to be somewhat close to what it was on a real machine (rationale - some games need it or suffer glitches, but I don't want to shove a stock value in there that'll make people wait longer than they have to). The end results are.. probably not really that great, but I'm tired of dealing with it so I'll go with it.
Since I don't have a PCE to test with I've actually resorted to getting my tester to burn CDs to test for me (yes, he is pretty great). The whole VDC timing issue is actually really bothering me still. There are a number of games that are quite sensitive to when the scroll registers are latched in a scanline. I had some preliminary numbers, but I didn't really do anything with them; I need more specific tests that I have control of. So I'll write up one today and hopefully will be able to get my tester to take a stab at it.
Right now I believe I have just over 90% of games working w/o issue, and a number of the broken ones are due to VDC glitches (or something otherwise minor). There are two that I consider major concerns right now, that seem to be bothering all emulators - Steam Hearts and Popful Mail. Steam Hearts doesn't play audio because of repeatedly issued start/end pos commands, but I have a kludge that makes it work okay and I don't think breaks anything else (how it actually works on real hardware, I have no idea. I'd possibly test if I could do so myself..) Popful Mail has totally broken cinematics, and I have no idea what this is really about. Ootake fixes it with a very elaborate game-specific hack that emulates it in a way that's certifiably nothing like the hardware. I refuse to resort to something like this (besides, Ootake's method requires a huge amount of CPU power). I'd really love to see someone fix this correctly.. since it plagues even Magic Engine I figure David Michel has a better chance of figuring it out at this point than I do. It is my goal to have no game-specific hacks in Temper, and I think I'm doing pretty decently without them.
So, once I get the final numbers sorted out so I'm happy enough with VDC timing I should be ready to get back to touching up things for release. This is what I need to do:
- Fix up some savestate stuff
- ACD support in savestates
- OGG support (this one could be tricky, may or may not do it for first release)
- Fix ARM CPU core to handle the changes I've made to things, this shouldn't be too bad... hopefully.