4DO 1.1.2.0 Beta Released!

I’ve stamped out some problems in this update.

Features:

  1. 4DO can now fall back to its original “windows-based” (GDI) rendering if it fails to initialize DirectX rendering. This shows up in the log (Temp\DebugLog.txt) as “Video Render – DirectX canvas initialization failed! Will attempt to fall back to windows(GDI) rendering.”. This will allow more machines to run 4DO, but this GDI rendering is more CPU intensive (which will result is “skipped frames”, and and does not have V-Sync.
  2. In the (default) DirectX rendering, the game screen is no longer drawn at maximum speed. Previously, this was causing unnecessary load on a machine’s GPU. 4DO will only render the screen as often as needed.

I am currently attempting to solve the audio stuttering issues that some users have been reporting.

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

Posted in Releases | 13 Comments

fourdo.com site: new and improved

The fourdo.com site has been moved to new web space.

Now that the move is complete, I’ve added a both a forum and a wiki. I don’t have particularly grand plans for either of these, but here’s the immediate main use for each of them:

  • Forum – Bug reports and investigation
  • Wiki – Game compatibility list
If you are interested in helping me out by moderating either the forum or the wiki, please let me know using a private message in the forums.
Posted in Uncategorized | 11 Comments

4DO 1.1.1.1 Beta Released!

Honestly, I was hoping to find an excuse for a 1.1.1.1 version, and one has arrived!

I’m only including one change in this release, compliments of BryWI who both discovered and fixed this issue. The first code change from the 3DO community! A fitting landmark for the memorable version of 1.1.1.1. Thank you BryWI!

Bug fix:

  1. When using a POV hat on a controller, the LEFT and UP combination was not working correctly. Previously, this was being processed as only LEFT.

Also, I had mentioned this once before, but I finally have received confirmation that the fourdo.com website will be changing hosts in the upcoming week. There will most likely be an outage of a few days, but don’t be alarmed!

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

Posted in Releases | 14 Comments

4DO 1.1.1.0 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!

Features:

  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.

Fixes:

  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 1.1.1.0 beta, head to to the download page:
4DO Downloads

Posted in Releases | 37 Comments

4DO 1.1.0.0 Beta Released!

I have finished the unique game identification system, so I have completed my last task that I was attempting to accomplish for a beta version of 4DO! 4DO now comes with a game database built-in, so it is able to identify any game loaded regardless of whether it’s in CD or ISO format.

Each official 3DO CD (that I’m aware of) is unique given the first 4k of data (sectors 0 and 1 on the CD). This includes any game and sampler and even the adult titles! CDs that are part of a multi-part game (like Daedalus Encounter) are still unique.

Here are some key points

  • A game loaded by CD will no longer “share” save states with other games loaded by CD.
  • A game loaded by CD will use the same save states as the same game loaded as an ISO.
  • The “game database” is extensible. It is even extensible in the sense that 4DO should be able to augmented to handle games that aren’t unique in the first 4k of data (if necessary, though I doubt it).
  • Save states filenames now have the following format:
    [GameId]_[GameName]_[SaveSlotNumber].4dosav
    Example: 2DDBB4AA_KillingTime.0.4dosav
  • The game’s title now shows up in the 4DO window’s title bar.
  • You can also view game information (Help -> Game Information). This isn’t particularly important for most folks, but it will help identify if there are certain games out there that are not properly “unique” and need to be explicitly added to the game database. Only two games with the same Sector 0+1 Checksum are really of concern.

ControlsNew

These changes have also occurred since the last alpha release:

  • Settings files have been moved to a Settings sub-folder.
    • If you used an alpha version of 4DO and desperately want to keep your settings, move your FourDO.settings and JohnnyInputBindings.xml files into the Settings folder.
  • NVRAM save data has been moved to a new Saves sub-folder.
    • If you want to keep your old NVRAM save data from 4DO alpha, move your NVRAM_SaveData.ram file into the Saves folder.
  • Save states have also been moved to the Saves sub-folder.

If you used 4DO alpha and want to preserve your save states, you’ll need to do those one-by-one:

  1. First, find the old save state you’re interested in. If you played by CD, the old save state is the folder where 4DO.exe lives. If you played by ISO, the old save state is in the folder where the ISO lives.
  2. Copy the old save state into the (4DO)Saves folder.
  3. Start up 4DO.
  4. Load the game you care about.
  5. Save state
  6. There will now be a new file with the appropriate name in the (4DO)Saves folder.
  7. Rename your old save state to match the new name (and delete the new file, obviously).

It is quite possible that you are now angry, but I’ll quell your fears by assuring you that now that things are in beta I’m intending to never change formats in a non-backwards compatible way again. As I promised before, I intended for beta (and beyond) to be stable in this regard.

Also, the 4DO site will be moving soon. I’m not particularly experienced with this web space registration mumbo jumbo so I wouldn’t be surprised if this site is down for a few days while I figure out the transition. Some content may be lost, but I doubt that’s terribly devasting to anybody. The new location should allow me to add a few things like a wiki or a forum.

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

Posted in Releases | 34 Comments

4DO 1.0.6.4 Alpha Released!

Only a few minor changes this time:

  1. Fixed freeze seen in FZ-1 bios screen.
  2. Fixed bug in which the pause “status” was not saved correctly when the option is enabled.
  3. Changed the display to enforce that it shows black when the system is not running.

To try out 4DO 1.0.6.4 alpha, head to to the download page:
4DO Downloads

Posted in Releases | 11 Comments

4DO 1.0.6.3 Alpha Released!

Fixes:

  1. Video rendering fix for several graphics cards (mainly NVidia)
  2. Fixed bug where selecting the “None” void area background would not get loaded correctly on startup (it was showing up as “Bumps”).

Most graphics cards seem to require power-of-two textures, so I’ve adhered to this for the video rendering. This has worked on every machine I’ve tested it out on, and with some additional testing from Bry (thanks Bry!).

To try out 4DO 1.0.6.3 alpha, head to to the download page:
4DO Downloads

Posted in Releases | 31 Comments

4DO 1.0.6.2 Alpha Released!

Features:

  1. 4DO now hides the mouse cursor if it’s floating over the game area.
  2. Support for more types of controllers/gamepads. I do not know if this also includes xbox 360 controllers.
  3. Users can now select a different void area pattern (including none/blank/black). This means you can turn off the “bricks” on the sides of the screen. I do indeed pay attention to comments! I personally will be using “Metal” because I like to pretend that I’m manly.

Fixes:

  1. If you configured your controller settings with a blank set of bindings, 4DO would fail to load it. This is now fixed, although I fixed it by changing how the file is saved.

I’m quite certain that I will be able to hear cheers of joy throughout the day tomorrow as the various people of the world discover that they can now change the void area pattern to flat black (I’m thinking of you, Sedabi!).

A clarification on the added controller support: 4DO was previously looking for input devices that identified themselves as “joystick”. I found another controller of mine that wouldn’t register and discovered that it considered itself a “gamepad”. It was quite easy to resolve once I found this. However, I doubt that XBox 360 controllers fall into this category; they have an API of their own.

The updates will slow down for a while. I want to iron out problems with the video (DirectX) as well as solve the timing issues that some people have been reporting. Because none of my machines exhibit these problems, it’ll take a while to investigate.

To try out 4DO 1.0.6.2 alpha, head to to the download page:
4DO Downloads

Posted in Releases | 30 Comments

4DO 1.0.6.1 Alpha Released!

This is a bug fix release only.

Fixes:

  1. Switched from DirectX11(using Direct2D) to DirectX9. This should allow for windows XP support.
  2. Reverted processor architecture specification back to x86. I have a feeling this was the culprit to the broken x64 support.

Unfortunately, I can’t really test this on my own. I’m using Windows 7, 32-bit. If these fixes changes don’t revive Windows XP or 64-bit support, then I’ve got a problem! I have an XP virtual machine, but it has no DirectX support. Anyhow, I guess I’ll have to think of something if there’s ever a 4DO installer.

To try out 4DO 1.0.6.1 alpha, head to to the download page:
4DO Downloads

Posted in Releases | 20 Comments

4DO 1.0.6.0 Alpha Released!

Key Features:

  1. Replaced GDI rendering with DirectX11 (Direct2D) rendering.
  2. Vsync
  3. 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!

Posted in Releases | 15 Comments