Ultima 3 Upgrade


The Ultima 3 Upgrade is a patch for Ultima III: Exodus that adds the following features:

  • The ability to switch between four video modes with new tile sets:
    • VGA 256-color mode
    • EGA 16-color mode
    • Simulated CGA Composite 16-color mode
    • CGA 4-color mode
  • Enhanced MIDI Music from the C64 and Apple II versions
  • New hotkeys: Restore (ALT-R), Exit (ALT-X), and Main Menu (ALT-M)
  • And many others:
    • Replaces the 0-7 numeric moon phases with actual moon icons
    • A Frame Limiter that ensures the game runs at a reasonable rate on today’s processors
    • Ability to enable/disable the AutoSave feature
    • A program to reset the game so you can start a new character
    • Gameplay balance fixes related to monster generation and food consumption rates
    • Properly timed PC speaker sound effects

The upgrade is designed to be flexible such that various features can be switched on and off individually via a configuration program.

Future enhancements might entail modifying the sound effects to be generated by WAV/MP3 data, looking at using SVGA DOS libraries for higher-resolution graphics, and/or allowing others to more easily customize the graphics and music. At the moment though, I feel the U3 Upgrade is in a very good spot where it is, so don’t expect these things any time soon (or perhaps ever).


  1. The PC version of Ultima 3 must already be installed on your hard drive. If you have a previous version of the U3 Upgrade installed, you may:
    1. Replace it with a fresh copy of Ultima 3. (be sure to back up your savegame files ROSTER.ULT, PARTY.ULT, and SOSARIA.ULT if you do)
    2. Alternatively, if upgrading from v3.1, you may uninstall it with one of the BINUNPAT commands, which will reverse the changes to the Ultima 3 binaries and restore it to its original 1980’s state:
      • Windows: binunpatw U3UP-31.PAT
      • Linux: ./binunpatl U3UP-31.PAT
      • DOSBOX: binunpat U3UP-31.PAT
  2. Unzip the U3 Upgrade zip file into your Ultima 3 directory on your hard drive. This step will not affect your current installation or saved games.
  3. Apply the binary patch to the game files.  This must be run from the command line.
    • Windows: binpatw U3UP-32.PAT
    • Linux: ./binpatl U3UP-32.PAT
    • DOSBOX: binpat U3UP-32.PAT
  4. Configure DOSBOX to run with at least 3000 cycles. (10000 if you intend to run using CGA Composite mode.)
  5. Run ULTIMA3.COM in DOSBOX to start the game.
    • If launching from GOG, edit the file dosboxULTIMA3_single.conf in the game directory and change ULTIMA.COM to ULTIMA3.COM.

Optional steps:

  • This version ships with default configuration. You can change this configuration in one of the following ways:
    • Windows: u3cfgw
    • Linux: ./u3cfgl
    • DOSBOX: u3cfg
  • This version ships with General MIDI as the default driver. You can change this by running SETM.EXE from the Ultima 3 directory to configure a different sound card (e.g. FM synth). This must be done within DOSBOX.
  • You can run reset the game map if you want your party to enter an uncharted Sosaria. Your party must be dispersed in order to clear the map. This program will not affect characters on the Roster.
    • Windows: u3resetw
    • Linux: ./u3resetl
    • DOSBOX: u3reset


Release Log

Release 3.2 – 2016-12-19

This release adds perhaps the most common request I’ve received over the years: improved PC-speaker sound effects. More specifically, the sound effects are now timed and should sound mostly consistent with the original intent.

Ultima 3’s sound effects where designed to sound great on a 4.77 MHz 8086, but do not scale well as CPU speed increases. This is because the game code directly manipulates the PC speaker without being hooked to any kind of timer. Thus, as the CPU frequency (or VM speed) increases, the faster the PC speaker oscillates which makes the sound not only shorter but also higher pitched.

In this latest patch, if the SFXTIMED driver is configured, the sound effects will now be paced against a timer interrupt. It’s recommended that you run DOSBOX at around 3000 cycles (or 9000 if using CGA Composite mode) to get a good playable experience.

Some Additional Technical Notes:

Note that DOSBOX needs to be above at least 1000 cycles for the timer to operate properly otherwise the timer interrupt will begin thrashing. This is because the interrupt routine will execute too slowly and never return before the next interrupt is fired, thus freezing the game.

You may also read how it works here.

Full Release Log…


  • Thanks to all the people who have submitted comments, suggestions, and bug reports thus far. Your comments are greatly appreciated, and have helped to make this a better upgrade to a great game!
  • Thanks twofold to Aradindae Dragon (Ryan Wiener) for a) supplying me with the Midpak drivers and b) helping me to get them working properly.
  • Thanks also to Wiltshire Dragon (Joshua Steele) for his beautiful VGA tileset from the Ultima IV Upgrade, without which I would have to go scouring the ‘net for graphic artists willing to do this.
  • Thanks to NewRisingSun for posting Composite CGA screenshots to MobyGames, inspiring me to return to the U3 Upgrade and write a Composite CGA simulator with v3.0.
  • Thanks to nakedbaby on GOG.com for asking about the status of v3.1, prompting me to focus on getting this release out finally.
  • Thanks to Feeding Dragon (Joe Bunt) for calling out the problem with sound effects on newer systems, thus paving the way for v3.2.
  • Thanks to the Ultima Dragons for just being the outspoken group that they are.
  • And thanks especially to Richard Garriot for creating Ultima III in CGA and forcing us to play it on RGB monitors, thus inspiring me to learn assembly. 😉


Downloads of all patches and music files are available on the Downloads page.

Please note that Ultima is a registered trademark of Electronic Arts (EA). This project is not affiliated with nor endorsed by EA. You must own a legal copy of Ultima III: Exodus in order to apply this patch.