Breakthrough! Since that last screenshot, I am now:
* Reading the video buffer accurately
* Able to load BIOS
* Able to load a game
BIOS worked great from the get-go. Figuring out how to load a game took a while. Some examples:
* I had to disassemble FreeDO to find the right value to pass to the FreeDO interface for GetDiscSize. It's too bad they didn't upload their UI code. What a chore!
* For some mysterious reason, I had to disable compiler optimizations on a few functions in the FreeDO core, or it would freeze up. Probably some bad pointer arithmetic I'll have to look into later.
* I also had to make my first genuine bug fix to the FreeDO source code: an uninitialized variable. I'm somewhat confused as to how this got uploaded, since I hit it very early on.
Anyway, finally, after some work and very late nights:
Yep, the game starts up. The introduction video does too; and so does the main menu, and the in-game demo the game plays through. That is a pretty significant test of the system. The source code they uploaded seems to be pretty much complete as far as emulation of the system. I am quite happy about this.
I'm going to move on to audio next. That may require me to pick a better multimedia framework (currently the display is using winforms and simple blits). I believe I'll go with either OGL or SDL if I have to. Oh, also, I will work on incorporating a flux capacitor.