Key Features:
- Replaced GDI rendering with DirectX11 (Direct2D) rendering.
- Vsync
- 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 1.0.6.0 alpha, head to to the download page:
4DO Downloads
Woohoo! Let’s keep 3DO alive!
Minor problem occured after load a BIOS FILE (I think that it is problem with gfx)
ee the end of this message for details on invoking
just-in-time (JIT) debugging instead of this dialog box.
************** Exception Text **************
System.BadImageFormatException: Próbowano załadować program w niepoprawnym formacie. (Exception from HRESULT: 0x8007000B)
at FourDO.Emulation.FreeDO.FreeDOCore.FreeDoInterface(Int32 procedure, IntPtr datum)
at FourDO.Emulation.GameConsole.Start(String biosRomFileName, IGameSource gameSource, String nvramFileName)
at FourDO.UI.Main.DoConsoleStart(Boolean alsoAllowLoadState)
at FourDO.UI.Main.Main_Load(Object sender, EventArgs e)
at System.Windows.Forms.Form.OnLoad(EventArgs e)
at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
at System.Windows.Forms.Control.CreateControl()
at System.Windows.Forms.Control.WmShowWindow(Message& m)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.Form.WmShowWindow(Message& m)
at System.Windows.Forms.Form.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
************** Loaded Assemblies **************
mscorlib
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.235 (RTMGDR.030319-2300)
CodeBase: file:///C:/Windows/Microsoft.NET/Framework64/v4.0.30319/mscorlib.dll
—————————————-
4DO
Assembly Version: 1.0.6.0
Win32 Version: 1.0.6.0
CodeBase: file:///C:/Users/Faust/Downloads/4DO_1.0.6.0_alpha/4DO.exe
—————————————-
System.Windows.Forms
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.235 built by: RTMGDR
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
—————————————-
System.Drawing
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.1 built by: RTMRel
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
—————————————-
System
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.236 built by: RTMGDR
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll
—————————————-
SlimDX
Assembly Version: 4.0.11.43
Win32 Version:
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_64/SlimDX/v4.0_4.0.11.43__b1b0c32fd1ffe4f9/SlimDX.dll
—————————————-
WaveLib
Assembly Version: 1.0.0.0
Win32 Version: 1.0.0.0
CodeBase: file:///C:/Users/Faust/Downloads/4DO_1.0.6.0_alpha/WaveLib.DLL
—————————————-
System.Xml
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.1 built by: RTMRel
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll
—————————————-
CDLib
Assembly Version: 1.0.4257.1993
Win32 Version: 1.0.4257.1993
CodeBase: file:///C:/Users/Faust/Downloads/4DO_1.0.6.0_alpha/CDLib.DLL
—————————————-
System.Configuration
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.1 (RTMRel.030319-0100)
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Configuration/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
—————————————-
************** JIT Debugging **************
To enable just-in-time (JIT) debugging, the .config file for this
application or computer (machine.config) must have the
jitDebugging value set in the system.windows.forms section.
The application must also be compiled with debugging
enabled.
For example:
When JIT debugging is enabled, any unhandled exception
will be sent to the JIT debugger registered on the computer
rather than be handled by this dialog box.
BTW: This problem exist after SNV197 (Now using slimDX/direct2d for final screen blit.).
Hi Jhonny.
To begin with, that to move forward and that’s good.
Next:
Using Direct 2D gave a good bonus to speed, but sometimes there are audible clicks, but you wrote this b.
The image looks slightly unfortunately not clear, I think it is a feature of Direct2D.
Mzhet popobovat revised to include plug-ins and Direct 3D, this could be the use of trilinear filter dramatically improve parts quality pictures.
Please, put on the sides of the mosaic and leave a clean black border.
Phoenix 3 – when you click on start game menu appears, where you can choose the difficulty, sound, etc.
So a measure of the menu bar and do not show normal text.
With great respect Sedabi.
PS How can I ever contact you in addition to the forum?
Hi Sedabi.
I will add an option for the “clean black border” like you mention (before the final, non-beta release). The background has been useful for initial development and debugging, but ultimately I find it unnecessary too! 🙂
I have also been wanting a way for users to correspond without having to post. I’ve installed “Private Messages” on this site. http://www.deluxeblogtips.com/2009/10/private-messages-for-wordpress.html
This should will allow you to send me a private message and vice versa. I think you have to go to your “Dashboard”, then click “Messages”. I haven’t used it before, though.
why its dont work on windows xp?
I get that same crash upon start up. Below is the English Version. I noticed some of the descriptions above were a different language. Choosing continue will load the program but nothing will run.
This is on Win7 64-bit core i7 processor with 6GB of ram and nvidia 330m.
I got the emulator to run on Vista 32bit, it’s performance was very low though and the audio completely stuttered to the point of unplayable. That machine is a 2.4ghz quad core with 4Gb of ram and an Nvidia Geforce GTS 8800.
See the end of this message for details on invoking
just-in-time (JIT) debugging instead of this dialog box.
************** Exception Text **************
System.BadImageFormatException: An attempt was made to load a program with an incorrect format. (Exception from HRESULT: 0x8007000B)
at FourDO.Emulation.FreeDO.FreeDOCore.FreeDoInterface(Int32 procedure, IntPtr datum)
at FourDO.Emulation.GameConsole.Start(String biosRomFileName, IGameSource gameSource, String nvramFileName)
at FourDO.UI.Main.DoConsoleStart(Boolean alsoAllowLoadState)
at FourDO.UI.Main.Main_Load(Object sender, EventArgs e)
at System.Windows.Forms.Form.OnLoad(EventArgs e)
at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
at System.Windows.Forms.Control.CreateControl()
at System.Windows.Forms.Control.WmShowWindow(Message& m)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.Form.WmShowWindow(Message& m)
at System.Windows.Forms.Form.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
************** Loaded Assemblies **************
mscorlib
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.237 (RTMGDR.030319-2300)
CodeBase: file:///C:/Windows/Microsoft.NET/Framework64/v4.0.30319/mscorlib.dll
—————————————-
4DO
Assembly Version: 1.0.6.0
Win32 Version: 1.0.6.0
CodeBase: file:///C:/Emu/3do/4DO/4DO.exe
—————————————-
System.Windows.Forms
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.235 built by: RTMGDR
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
—————————————-
System.Drawing
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.1 built by: RTMRel
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
—————————————-
System
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.236 built by: RTMGDR
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll
—————————————-
SlimDX
Assembly Version: 4.0.11.43
Win32 Version:
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_64/SlimDX/v4.0_4.0.11.43__b1b0c32fd1ffe4f9/SlimDX.dll
—————————————-
WaveLib
Assembly Version: 1.0.0.0
Win32 Version: 1.0.0.0
CodeBase: file:///C:/Emu/3do/4DO/WaveLib.DLL
—————————————-
System.Xml
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.233 built by: RTMGDR
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll
—————————————-
CDLib
Assembly Version: 1.0.4257.1993
Win32 Version: 1.0.4257.1993
CodeBase: file:///C:/Emu/3do/4DO/CDLib.DLL
—————————————-
System.Configuration
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.1 (RTMRel.030319-0100)
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Configuration/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
—————————————-
************** JIT Debugging **************
To enable just-in-time (JIT) debugging, the .config file for this
application or computer (machine.config) must have the
jitDebugging value set in the system.windows.forms section.
The application must also be compiled with debugging
enabled.
For example:
When JIT debugging is enabled, any unhandled exception
will be sent to the JIT debugger registered on the computer
rather than be handled by this dialog box.
One more thing, I don’t have an XP machine to test on but would using directx 11 make the program not work on xp? And perhaps it would slow everything down on vista? DX 11 if I am not mistaken is exclusive to win7. If I got it running on vista I can only assume it was trying to do it all in software instead of hardware. I am going to go to an old version on my vista machine to see if it improves since this was the first version I tested on vista. I will report back soon.
Strange thing on the vista machine though… it was running 60fps but the audio was stuttering like crazy. It doesn’t make sense.
1.0.5.1 is just as slow on my vista machine as 1.0.6.0 so scratch that theory. My vista machine just doesn’t like this emulator. Its almost kind of like how freedo after 1.8 until 2.x didn’t like my vista machine. It runs 60fps but the audio stutters for no reason. oh well. But anyways, perhaps the crash report is a 64bit issue?
Uh oh. Yes. you’re right. Looks like direct2D has no XP support. I definitely want to support XP, so I will have to try to solve this using directx 9 instead. That’s going to be painful! 🙁
I’m not yet sure what the crash is about.
4DO 1.0.6.0 fix for Exception 0x8007000B
http://www.megaupload.com/?d=CDDLDADT
What is this fix?
😀
Many thanks man, it works perfect now
Hi aliast, could you let me know what the change was?
I am just confirming I have same error as the people above.
Win 7 SP1 64bit
Then use the fix version, posted above