Wow. I can't believe you ported Andreas' C++ S-DD1 classes to C. I didn't want to mess with that at all. Disappointed about using the system time for the S-RTC, but oh well. It's more of a preference than anything else. You will need to add a hack to pass the SPC7110 test like ZSNES in that case. It sets the time and then checks it a second later to make sure it's incrementing properly.
Ahh, I probably should have put a comment at the top of both the S-RTC and S-DD1 files containing a massive disclaimer that none of the code contained within actually works. Now that you explained how S-RTC works, I'll be redoing it to be more like your code, and currently neither SFA2 nor Star Ocean boot.
I'm trying to debug S-DD1 right now, actually. I'll have a trace of what it's doing posted up here shortly.
SuperFX, wow. You had to rewrite almost all of it. Sucks not having references and overloaded operators in C, but I don't want to start a language war so I'll shut up. Very impressive how fast you put that together. And I see you dodged all the common mistakes I made impeccably.
My biggest mistakes were not realizing that SREG and DREG are sometimes the same, and clobbering them before getting flag states and such; and screwing up the pipeline fetching, but those look pretty good with your code.
Glad you were able to avoid the messiness of the Snes9X core's faux-pipeline trickery in every single opcode and automate it as I have.
Ah, I only dodged the mistakes because you made them first, and I thank you for that. I couldn't have done it anywhere near as cleanly or as quickly without being able to use your code, so hats off to you for writing such a great emulator to begin with!