- Replaced GDI rendering with DirectX11 (Direct2D) rendering.
- Improved performance. (As a result of the above changes)
Say goodbye to that irritating video tearing!
I got Direct2D up and running relatively quickly. However, I still saw some tearing, although it wasn’t nearly as noticeable as before. I wrestled with DirectX for days on this. As it turns out, the games themselves were responsible for some of the tearing. The FreeDO core already had a mechanism in place (named “multitask”) to help this. Once I figured that out, the last of the tearing was dead.
This will reduce strain on the CPU for many systems (including mine). This should reduce audio anomalies for some. I’ve seen some reports of sporadic timing (which will also cause audio popping) in the comments, and I would expect that it is still a problem. I suspect that my use of “Thread.Sleep” isn’t providing enough resolution on certain systems. I’ll have to chalk that up to future developments (most likely within beta?).
I will also be considering leaving the GDI rendering option in 4DO. This would require fleshing out those half-done “plugin” frameworks. The GDI solution would be a good fallback if DirectX is unavailable. I’m going to be trying out 4DO in a remote desktop session and seeing what happens! If I put the GDI solution back in, it’ll probably be during beta, which is when I figured I’d work on the plugin framework.
My next focus is uniquely identifying games. This also will have some effects on the save state system. For example, if you load a game from a CD drive, I want it to use the same save state it would from any CD drive on you computer as well as an identical ISO image on your hard drive. This unique identification will also be important much further into 4DO’s future. If 4DO starts providing any game-specific features (such as low-level workarounds or fixes), then unique game identification can identify when to flip these switches based on the game that’s been opened. This is the one remaining task I have before I’m going to mark 4DO as “beta”.
By the way, a friend of mine is letting me borrow an Xbox 360 controller for a while, so I will also tackle that.
I am going to change the download links on these release announcements to point to the 4DO download page instead. That may help to keep newcomers aware of the 4DO prerequisites.
To try out 4DO 126.96.36.199 alpha, head to to the download page:
Woohoo! Let’s keep 3DO alive!