So, in order to fix these issues, I'm going to attempt to do a partial rewrite, tentatively titled Gens/GS II.
Main features of the rewrite:
- Separated emulation code from UI code. (libgens / gens-qt4)
- Qt4 UI for all major platforms.
- CMake-based build system.
- SDL video, audio, and input handling for all platforms. (no more separate DirectX code on Windows)
- Multithreaded emulation code. (Emulation runs in one thread; UI runs in another.)
- I will probably use pipes for inter-thread communication. Either that or SDL events, but SDL events are one-way. (That is, UI to SDL.)
I haven't started the rewrite yet, but I plan to start working on it sometime this week.