4DO Beta Released!

My main focus for this release was error logging. 4DO now logs all unhandled exceptions. Obviously, this will help in determining the root cause of crash reports.

I also found myself annoyed with the audio (such as the volume eclipsing everything else on my system, like Skype or music). So, I have modified the audio processing and provided the ability to control volume. I also happened to find a game with easily demonstrable stereo sound: Samurai Showdown. With that I was able to piece together how to hook into stereo sound!


  1. Stereo sound – Sound was previously mono, and using the right channel’s audio only.
  2. Volume control – Accessed through the new “Audio” menu.
  3. Error logging – Logging gets dropped into a new “Temp” folder. This logging “archives” itself and will not exceed a certain size.


  1. The void area pattern now will correctly show up if the emulator is stopped and the screen is entirely black.
  2. Fixed a crash occasionally seen when saving or loading save states.

If you want to try 4DO beta, head to to the download page:
4DO Downloads

This entry was posted in Releases. Bookmark the permalink.

37 thoughts on “4DO Beta Released!

  1. lee says:

    1. xbox360 pad fine work
    but madcatz arcade fightstick dont work

    2. Super Street Fighter II Turbo
    opening crash

    log –>

    4DO Starting up

    9:09:25 Had to kick back current read position. ReadSample:2048 WriteSample:2205

    9:09:56 Had to push ahead current read position. ReadSample:8349 WriteSample:7895

    9:10:19 4DO Shutting down
    Total of 0 objects still alive

    3. Super Street Fighter II Turbo
    random crash

    thank you!!!!!!!!

    • Leocmp says:

      Hello, I tested the latest version in SSFII X and it worked perfectly, no crash, I’m using windows 7 64bit, any questions I am available

      • Btester says:

        Hi Leocmp
        You could tell how managed to run the emulator in a 64-bit system?
        Most of people having problems since the 64-bit support has been stopped
        Im using Windows 7 64 Bits too
        2 gb ram Intel Core 2 Duo E7500 processor and
        Radeon 5570 => VGA

        thanks in advance


        • mgtroyas says:

          I’m running it on Windows 7 64 bit. Just installed the SlimDX runtime and started the emulator. Everything worked out of the box.

          This is the first time I used it. Tried Alone in the Dark and Cannon Fodder, works like a charm.

          I’m mounting the CUE/BIN via Daemon Tools.

          Only problem is it puts the fan of my Radeon HD 6830 to full speed (why so GPU intensive?).

      • Btester says:

        Instaling SlimDX, and all working now, thanks!

    • BryWI says:

      I can verify the intro freeze that happens on Super Street Fighter II Turbo. It happens at the same time when the word SUPER is on the screen and the lightning is about to show up. This is weird though, the intro freezes but the emulator thinks the system is still running. FPS are still showing activity. The log is not showing any useful data when this happens. Also this behavior does not happen on FreeDO so it’s not a bug in the FreeDO core. This can bypassed by skipping the intro but is still a bug that should probably be looked at.


      I tried to play the game to see if I was getting any of the reported random crashes but I think I ran into a MAJOR input bug. It looks like it happens with more than just this game. The combo of UP and LEFT on the directional pad do not work. Up and right work though. I have checked my bindings and they are good. Might need a quick bug fix for this one.

    • BryWI says:

      Now that I was able to compile the input bug fix I can get back to verifying these bugs! :) There is definitely a random freeze bug too, it happens the same way as the intro freeze. The fps counter still keeps going like its a software only freeze. It might of happened at the same time as it was trying to adjust the “read position”

      In the log I have this at the same time as the freeze…

      10/17/2011 6:26:31 PM Had to push ahead current read position. ReadSample:2873 WriteSample:2594

      • Johnny says:

        Isn’t coding fun? I’m frankly kinda surprised I have 4DO in a clean enough state for you to compile and run it! :) Good to hear.

        By the way, the “kick back” and “push ahead” read position is essentially just debug output. It is information from the audio “plugin” that’s saying it had to readjust where it is playing. In a perfect world, this would never be necessary, but there are a few main factors at work…

        1. I am not yet entirely confident in the timing mechanisms I have in the core. It relies on passing different time span values to “Thread.Sleep” in order to wait so that it doesn’t zip off too far ahead. My system seems to provide millisecond precision on this function call. I have read in several places that this is only precise to 15 milliseconds. I haven’t found any systems that exhibit this behavior yet, so I’m not yet sure if this would be a problem. I suspect a system with the problem would have really obnoxiously spotty timing. Before I consider beta done, I intend to look at some other emulators out there to get a better idea of whether or not I’m using the best approach here.

        2. I have played a few games for long periods on 4DO. I noticed that there were several instances in which the core emulation froze up reading data from the CD (froze for maybe 250 milliseconds). I don’t remember those freezes in the original games. I suspect that there’s something in the core that is working synchronously when the real system worked asynchronously. And ultimately, as long as that oddity is around, the timing will be off and the audio will always run into situations where it has to readjust.

        Anyhow, I hope that helps make sense of that debug output.

      • Johnny says:

        Regarding the SSF2T freeze, I didn’t quite get the behavior. Is it a “software freeze” or is 4DO actually freezing up?

        As long as the FPS counter still chugs along and you’re able to do Console->Reset, it’s a “software freeze”. I’m not really focusing on these yet unless another version of 4DO didn’t have them. But, don’t exaust yourself trying to dig through and investigate this just for my sake!

        I know I say this a lot, but figuring out how to “fix” the FreeDO core will be pretty complicated. I hope to have 4DO’s frontend components stable and trustworthy before diving into that.

        By the way, the software freeze in the FZ-1 bios earlier was caused by a change in the controller input I was sending! It is still possible that something like that is causing the SSF2T software freeze. I haven’t truly ascertained that the controller input is exactly what a real 3DO would expect; what I added was a result of plugging away at it with a game running.

        • BryWI says:

          It is a software freeze. The emulator is completly responsive and in fact it probably thinks it’s still running correctly. The freeze could be control related actually. I remember it freezing as I hit a few buttons at the same time. I may play around with this some more tommorow to see if I can get the freeze to not act so random.

          The intro freeze though should be happening on the same spot if you let it play through. Also this is happening on the US version of ssf2t. I know that the bug is not in the freedo core though cause freedo doesn’t exhibit the same behavior.

        • BryWI says:

          Btw, The random freeze I thought that was random was in fact not random. It happens every time Zangief does a specific pile driver move. Here is a save state just before the freeze occurs.


  2. Leocmp says:

    Nice Work !!! Thanks

  3. lee says:

    1. Windows 7 Ent 64bit
    Radeon HD 5450, Catalyst 11.9
    AMD Athlon II X2 250
    MS Xbox360 Pad -> work
    Madcat Arcade Fightstick TE -> Dont work

    2. Super Street Fighter II Turbo
    opening crash -> openning skip

    CD image Crc ECE08648
    log –>

    4DO Starting up

    9:09:25 Had to kick back current read position. ReadSample:2048 WriteSample:2205

    9:09:56 Had to push ahead current read position. ReadSample:8349 WriteSample:7895

    9:10:19 4DO Shutting down
    Total of 0 objects still alive

    CD image Crc 0381EE6D
    log –>

    4DO Starting up
    1:35:43 Had to kick back current read position. ReadSample:2048 WriteSample:2205
    1:36:07 Had to push ahead current read position. ReadSample:2205 WriteSample:2050
    1:36:28 4DO Shutting down
    Total of 0 objects still alive

    3. Super Street Fighter II Turbo
    random crash -> Consol – Reset

  4. atsumori says:

    This is the log for the crash I get on Win 7 64 bit. I don’t actually have a crash, nothing happens when I double click except this log file being written.

    10/16/2011 1:52:00 PM 4DO Starting up
    10/16/2011 1:52:00 PM Unhandled exception: System.BadImageFormatException: Could not load file or assembly ‘SlimDX.dll’ or one of its dependencies. is not a valid Win32 application. (Exception from HRESULT: 0x800700C1)
    File name: ‘SlimDX.dll’
    at FourDO.UI.GameCanvas.InitializeComponent()
    at FourDO.UI.GameCanvas..ctor()
    at FourDO.UI.Main.InitializeComponent()
    at FourDO.UI.Main..ctor()
    at FourDO.Program.Main(String[] args)

    Maybe it’s trying to load the 32bit version of SlimDX but the 64bit version is installed?

    • Johnny says:

      Well, it’s definitely unable to load SlimDX. From the SlimDX site, make sure you’re downloading the March 2011 version, and from the button that says “Download .NET 4.0″.

      The September 2011 (.net 2.0 only) version reportedly doesn’t work.

      • atsumori says:

        I tried reinstalling SlimDX (March 2011 .net 4.0) version but I still get the same error.

        I wonder if this is related to the issue I was getting when I was trying to install SlimDX? I can’t install SlimDX with the vanilla .net 4.0 client framework, I need to use the full (extended?) developer SDK version. This is apparently a known issue for the SlimDX March .net 4.0 version (and remedied in the upcoming version).

        At any rate, SlimDX installs just fine after I installed the full version of the framework, but FourDO still fails on launch with the error posted above.

        • BryWI says:

          i also had to install the full .net 4 framework sdk to get slimdx to install on my vista 32bit machine. I was going to bring this up but i thought i was the only one who ran into it.

          It still doesn’t think you have slimdx though? try right clicking the installer for slimdx and running it as administrator and see if that makes a difference. otherwise, uninstall every slimdx package you installed, and then reinstall the right one. If slimdx is installed now, it shouldn’t be saying that it can’t find it still.

          • atsumori says:

            Thanks for the response. I tried uninstalling all versions of SlimDX, downloading the March .net 4.0 version fresh from the SlimDX site, and installing as an administrator but the problem remains.

            I don’t know if it matters, but the only thing I can think of is that most of my applications are stored a different hard drive from the boot disk. Since SlimDX doesn’t give you an option to choose where to install, I figured it installed directly to the Windows system folder, but maybe I’m wrong and FourDO is looking for it somewhere weird?

            At any rate, I’m baffled.

          • BryWI says:

            OK, I really dont know why this is happening but I have one more Idea. The SlimDX is within a folder at this path…


            the folder in that path is long version number and other info with the slimdx.dll inside. The folder is…


            IF the .dll is not there, it did not install right. IF it is there and still not working, some sort of path variable for .NET or something didn’t setup correctly. You could try copying that .dll file into your FourDO folder and see if that resolves the issue too. I have a feeling it will. If not, its some sort of dependency of slimdx that it is looking for and it can’t find.

            Which brings me to another question for Johnny. Is SlimDX for the end user just this .dll file? Could it not just be included in the emulator zip file? Would it work that way or is there more to it than just that? This would eliminate all the problems of installing SlimDX and the issue that some people are afraid to install it on their machines (i dont know why though).

          • Johnny says:

            I’m not really sure what all goes into the SlimDX installation. I believe it attempts to install a copy of DirectX dependencies from Microsoft if they’re not on the machine.

            Aside from that, SlimDX.dll seems to be the only important part. It most likely installs itself to the system’s Global Assembly Cache (GAC) in C:windowsassembly.

            Bry’s suggestion of taking the SlimDX.dll and putting it in 4DO’s directory is a good idea as far as troubleshooting it.

            If that STILL doesn’t work, then it’s probably a dependency of SlimDX that’s missing (the error doesn’t necessarily mean that it can’t find SlimDX). At that point, a program called ILSpy would work pretty well to identify what reference SlimDX wants that can’t be found.

            And of course, if we get through all this and figure it out, we’ll all need to go out and get some drinks to celebrate. Maybe at an e-bar, I suppose.

          • atsumori says:

            This is turning out to be a persistent little issue. Sorry guys!

            SlimDX.dll was located as you specified but not even copying it over to the FourDO folder worked.

            I wasn’t exactly sure where to look under ILSpy, but if you could point me in the right direction I’ll post whatever I find here for reference.

            Could use a drink and I owe you guys one already for all the help ;)

          • Johnny says:

            Hm, sorry. I was wrong. ILSpy is a free alternative of “.NET Reflector”, but ILSpy doesn’t seem to show missing references like I thought it would. So, that’s a lost cause.

  5. BryWI says:

    This fixes all the audio oddities that were present in Need For Speed. So it was just missing a channel of audio! The whole left side! lol. Nice Job. There is still just minor clicks in the audio every now and then which I assume is happening when the emulator is trying to stabilize the framerate. But it’s easy to ignore it. The log seems to be consistent with how many clicks I hear… Each one of these probably caused a minor click…

    10/16/2011 10:27:20 AM Had to kick back current read position. ReadSample:6587 WriteSample:6895
    10/16/2011 10:27:35 AM Had to kick back current read position. ReadSample:3823 WriteSample:4738
    10/16/2011 10:27:37 AM Had to kick back current read position. ReadSample:4738 WriteSample:5636
    10/16/2011 10:27:46 AM Had to push ahead current read position. ReadSample:4612 WriteSample:4152
    10/16/2011 10:27:56 AM Had to kick back current read position. ReadSample:1080 WriteSample:1746
    10/16/2011 10:27:58 AM Had to kick back current read position. ReadSample:5842 WriteSample:6786

    I had about 30 of those for the 6 minutes I played. Also NFS is pretty intense on the system so this is probably worst case scenario for my machine. Other games likely dont do this as much. Also, I don’t know how others with lower specs make out.

    Also in your logging file. It seems to seek to the end of the log file to continue logging again, but it should also start a new line every time. It starts at the end of the very last line when writing to the same log file again. It might be better to put a space line in between too so that it is very noticable where the log begins and ends for each time the emulator is run.

    Keep up the great work!

  6. Versus says:

    Johnny, you are doing great! Are you planning to make a 4DO port to any console?

    • Johnny says:

      Nope, not really :(

      So far, 4DO has mainly added windows-specific changes to what was open sourced from FreeDO. In fact, one might say that 4DO is a windows port of the FreeDO core. I’ve been rebuilding what was missing. So, if someone were to port 4DO to another console, they would more or less just be porting the FreeDO core.

      I don’t say that to be discouraging. In fact, since 4DO has only been around for a few months, it’s feasible that someone could put similar effort into an emulator for another platform and get it running. 4DO would be a good example to work off in this scenario too.

      At some point, I intend to start my attempts at making fixes to the core emulation. I have been planning to do this after beta.

  7. Sedabi says:

    Hi Johnny!
    Great works, and thx for stereo.
    See please a game the Po’Ed- is worked very stranged(slowly).
    Thx again.

    • BryWI says:

      It does look like PO’ed is running slower in FourDO than it is in FreeDO, just like Doom. I couldn’t find a video of it running on a real console but I think FreeDO has the correct speed. One of these days I really need to replace my broken FZ-1.

  8. Sedabi says:

    Hi Johnny
    You could not have done X Scale option to increase the quality of the picture?
    That is not because now output to 320×240 and stretch to full screen.
    And given such an algorithm Scale in order to increase quality, and by the way an image may be even now be translated in at least 640×480.
    Well, in general you know what I’m writing:)

  9. Foster353 says:

    Hey Johnny,
    Just for gits and shiggles I ran the new error log on my old crappy computer and included it so you can see where it failed. Beta running good (way better then FreeDO) on my new computer. Keep up the good work.

    10/18/2011 9:49:05 AM 4DO Starting up
    10/18/2011 9:49:17 AM Unhandled exception: SlimDX.Direct3D9.Direct3D9Exception: D3DERR_INVALIDCALL: Invalid call (-2005530516)
    at SlimDX.Result.Throw[T](Object dataKey, Object dataValue)
    at SlimDX.Result.Record[T](Int32 hr, Boolean failed, Object dataKey, Object dataValue)
    at SlimDX.Direct3D9.Device..ctor(Direct3D direct3D, Int32 adapter, DeviceType deviceType, IntPtr controlHandle, CreateFlags createFlags, PresentParameters[] presentParameters)
    at FourDO.UI.DX.SlimDXCanvas..ctor()
    at FourDO.UI.GameCanvas.InitializeComponent()
    at FourDO.UI.GameCanvas..ctor()
    at FourDO.UI.Main.InitializeComponent()
    at FourDO.UI.Main..ctor()
    at FourDO.Program.Main(String[] args)

    • BryWI says:

      I assume this is the directx crash that is happening for people with intel express video chipsets?

      • Foster353 says:

        I believe it is due to a buffer overflow in the directX video or SlimDX side of things. From what I found, there are ways of fixing it, but I have the skills of a 3rd rate hacker and it was by far to much for me to fool with.

  10. Btester says:

    Instaling SlimDX so, all working now thanks!

Leave a Reply