Ultima 7 in Windows

A new and exciting era has dawned for fans of Ultima 7, parts 1 and 2. Anyone who has ever played - or tried to play - these immortal classics will know how frustrating and heartbreaking it can be to get them running, especially on a modern computer with a PCI sound card.

Those worries are now over. Thanks to a new and quite brilliant utility, Black Gate and Serpent Isle can be run effortlessly in Windows 95 or 98, with virtually any kind of sound card. With the latest addition (u7xp) it is also compatible with Windows 2000/XP.

Note - U7.DPMI was the author's original attempt to work this particular miracle; it was soon abandoned as the game speed is unbearably slow. However, U7.DPMI will run under Windows 2000/XP (whereas U7Run will not) and with some of the seriously fast processors currently available the performance just might be adequate. It is included for this reason.

This utility was devised by Dragon Baroque, and given to me to evaluate. After testing and fine tuning, it is now offered for general release. A further revision of the utility by George Hayward means that playing the game in Windows XP is at last a feasible proposition.

There is now a choice for Ultima 7 players. You can play the original game, as presented by Origin in 1992, in absolutely pristine condition. Or you can play a reconstructed version, which is almost identical. Follow the links below to sort out your preferences and operating system; you should then have the game running nicely.

I want to pay the original game.

I want to play a reconstruction.

The Original Method

Next question - what is your operating system?

Windows 95/98/ME

Windows 2000/NT/XP

But see the end of the page for an alternative method.

Windows 9x Directions

Using the program is very simple. Download the file U7Win9x.zip, and unzip it into EITHER your Ultima7 OR Serpent Isle directory. It will work equally well in either.
If you look with Explorer or My Computer, you will see that the program creates a couple of new files - U7Run.com and U7vxd.vxd. Also there is now U7DPMI.com. There will also be a couple of text files; a readme file with more detailed instructions about the program, and a technical file for those who are curious as to how this little bit of magic works.
****Please read the readme.txt file. It is interesting, well written, and answers many questions.****

Making sure that BG or SI are installed and configured as usual, you activate the program by clicking on the U7Run.com icon, OR the U7DPMI.com icon.

This program has been designed to run in conjunction with certain editions only. Practically speaking, if you have any CD-based edition of Black Gate or Serpent Isle (These include the Forge of Virtue and Silver Seed addons) you should be OK. Further details are available in the readme file. If you have an earlier (floppy disk only) edition of Black Gate, there is a patch available to upgrade it to the full version; you can obtain it here.

I am delighted to report that Dragon Baroque is now a full member of the Ultima Dragons. Nevertheless, as was the case originally, he does not have a web page of his own; I am priveleged to continue to act as distributor for this project.

The latest update (version 1.20) comes with two files. U7win9x.zip has the latest version of U7Run, as well as U7DPMI, if you wish to try that. U7win9xs.zip contains all that U7win9x.zip does, PLUS the essential "source code" files - the three .asm files (U7RUN/U7VXD/U7DPMI), the three .LST files and the generation batch U7GEN. Anyone who wishes to study the source code, or to port it to Linux or any other OS, is welcome to download this file.

Recent experience of Resonator Dragon suggests that this patch can be used with localised versions of Black Gate (in this case Die Schwarze Pforte). The patch will work only with the US version; however success has been reported if you replace all .exe files in the local version with those from a US version - EXCEPT Install.exe. Having done this, you can activate U7Run; it will find and work with the correct U7.com file, and the "localised" data, which is found in the STATIC directory will be intact.

Disclaimer: Despite extremely encouraging testing results, it cannot be guaranteed that this program will work for all users and in all hardware configurations. The author and I are willing to answer queries and endeavour to solve any problems, but no other assurance is given or implied. This program is used at your own risk.

Click on the disk icon to download U7win9x.zip.
Click on the disk icon to download U7win9xs.zip.

Having problems with memory management? Try looking here.

If you are running Windows ME, and don't quite have enough conventional memory to run Serpent Isle, you may benefit from this link. It's a small patch which restores your ability to use the config.sys and autoexec.bat files on bootup - ie, it restores DOS functionality, which was hidden for some reason.

This program has the natural (and desirable) effect of slowing the games considerably. If your processor is within the 200 - 400 range the speed will probably be "normal". It has been reported that Black Gate still runs a bit too fast once processor speed gets over 600. It it still easy to slow the game down in this case - use moslo or turbo. The other option is to try the DPMI.com file provided.

It is also possible to run Ultima 7 within the OS/2 operating system. There are a few requirements and warnings: Use DPMI for this; you have to explicitly enable DPMI support, and you must NOT enable the DOS=HIGH and DOS=UMB features. This will be sufficient to get Black Gate running; performance will be slow but better than in Windows 2000.
Serpent Isle is a bit more difficult because of its increased conventional memory requirement, but it can be done. If you are interested please contact Resonator Dragon for details.

There is also help available if you have trouble getting good MIDI sound from your PCI card. Dagon has put together an excellent package - in one download you get:

  1. U7Win9x.zip, and all its goodies.
  2. The General Midi patches for Black Gate and Serpent Isle.
  3. A very user-friendly install program, which installs the GM patches, and also creates a Program Group in Windows. From the program group you can launch the game(s), and easily configure your sound card.

It must be said that, with modern sound cards, some of the sounds in Ultima 7 are a bit strange. To the best of my understanding, this relates to the differences in programming for MIDI sounds in 1992 compared to today. There are a few things you can do about this: (the following instructions apply to owners of the SB Live!)

  1. You can accept that doors will sound like a bell when opening, and something similar for the backpack closing. From the feedback I have received, a perfect solution is not easy to find.
  2. Dagon has also made available a Soundfont file for SB Live! users. With this Soundfont file, the sounds are allegedly just as they are meant to be. Soundblaster Live! users should launch the "soundfont" program installed with the card's drivers and load the soundfont "scc1t2.sf2". If the Sound properties are configured to "SBLIVE MIDI SYNTH" the SCC1 soundfont should be correct.
  3. You can download an Ensoniq 8 Mb waveset, and replace the default waveset (2 Mb). You will find this waveset in windows\system\default.ecw. This makes ALL DOS games sound much better. Thenks to Voyager Dragon for this hint.
Click here to download the combined setup utility.
Click here to download the SB Live soundbank file.
Click here for the Ensoniq 8 Mb waveset and instructions.

Another handy hint: (contributed by Shigeaki Kobayashi)
Some people have had sound difficulties (no speech, SI introduction freezing with a black screen at the castle scene). With a SB Live! this can be overcome by going into control panel/system etc and examining the settings for Creative SB16 Emulation. There should be a box for "Enable IRQ sharing with LPT." This should be left UNCHECKED.
This remedy may work with other sound cards as well - it is unverified at this stage. Any feedback will be appreciated.

Windows XP Directions

Windows XP has quite a different kernel structure, and U7Run will not work. Fortunately the utility has been further modified. Directions are as follows:

  1. Install Ultima 7 and/or Serpent Isle as normal.
  2. Download u7xp.zip.
  3. Unzip the file into your Ultima7 OR Serpent folder.
  4. Activate the game by clicking on the U7xp icon.
  5. To get the sound working properly you will probably need to look at the Sound Issues immediately below.

Sound Issues

Black Gate and Serpent Isle, being DOS-based, were written before there was such a thing as an "operating system" (ie, Windows). They are programmed to do everything themselves; included in this is the ability to send sound data directly to a small number of sound cards, in the format that the card will understand. They can handle a small range of cards, and will expect to find the card at an ISA-type address.
Modern sound cards create a problem. Typically, your sound card will be operating on an IRQ of 11, and there is no way that Ultima 7 can handle this. Also, Windows XP does not allow direct communication between an application (game) and a sound card. Conventional wisdom says that sound just won't work.
Fortunately there is a solution. Vlad Romanescu of the VDMSound project has come to the rescue. Rather than buying an extra sound card to plug into your machine, you can use an emulator. VDMSound is just that - it performs the function of an ISA sound card. For example, if you specify in the INSTALL program of U7 that you are using a Sound Blaster, at IRQ 7, VDMSound will "catch" the data stream from the game, process it accordingly, and pass it to Windows. You then get the sound output as it would have been.
Note: VDMSound will only work in Windows 200/NT/XP, not in 95/98/ME.

To set up VDMSound:

  1. Download VDMSound version 2.0.4 from Sourceforge Install it.
  2. Make sure you have the latest version - 2.0.4.2.
  3. Download VDMSound Launchpad 1.0.1.1; unzip it into your VDMSound directory, and run Install.bat.
  4. Run the INSTALL program in Black Gate or Serpent Isle. The default settings for VDMSound seem to be A220, IRQ 7, DMA 1.
  5. Right-click on the u7xp icon, and select "Run with VDMSound" - the choice with a musical note next to it. The Wizard will appear, offering you the chance to set up a configuration. You can either accept the default one, or choose a custom one. Then the game will launch. You will notice next time there is a VDMSound shortcut - you can use this to start the game.
(Personal note - I have found that Black Gate performs perfectly with Sound Blaster selected. If I select Sound Blaster in Serpent Isle, the introduction stalls, and I have to Alt-Tab out of it. If I hit ESC as the intro starts, it jumps to the main game, which runs perfectly. Selecting Roland in Serpent Isle allows the intro to run perfectly. I won't even try to explain that.....)

It has come to light that U7xp will not work with Windows 2000. The patch has been modified, and I can now offer u72k.zip. Try this if you are running Win 2K. The VDMSound instructions above still apply.

The source file for U7xp is also available for those who can make sense of it. Just click here.

Why does it run slowly?

A few people have asked this question; I'll try to answer as best I can.
Ultima 7, in its natural state, exploits a "glitch" in the Intel architecture. Normally a DOS game (circa 1992 - before DOS extenders such as DOS4GW came along) would have access to only 64 Kb of memory; if you can trick the machine into resetting a descriptor as it boots up, you can achieve a DOS-based machine that can see and access 4 Mb of memory. This is ideal for Ultima 7, and what it needs to run. Hence the tedious config.sys and autoexec.bat setup requirements that used to apply.
When Windows is running, this "glitch" does not exist. There is no way that U7 can access that amount of memory - therefore it can't run. So how does it work? This is roughly what happens whenever the game tries to access memory (ie, make a Voodoo call):

  1. The game is frozen.
  2. All game registers (ie, where everything is) are copied out to a Virtual Device Driver. This can run under Windows, and has access to lots of memory.
  3. The device driver executes the instruction, then copies the (changed) registers back.

During the swirly screen (red or blue) at the start of the game, this happens about 5 million times!
The end result is a bit like reading a book that you don't actually have access to - if you write away to a friend, and tell him where you're up to, he can write back and tell you what the next word is. If you are dedicated enough, you can read a whole book by getting one word at a time in the mail.
Thanks to the processors now available, the mail service is pretty fast, and the game speed becomes acceptable. U7Run (the Win 95/98/ME utility) is faster; game speed is quite OK. U7.DPMI is diabolical and unplayable. U7.xp is between the two - I find that on a 1.6 Gh Pentium M (which should outperform a 2.4 Gh P4) the game is a bit jerky but acceptable. Also, when you get to an area where there is lots of scenery or things happening (lots of memory accesses) you can expect a slowdown.
The Alternative

There is an alternate way you can play this and many other classic DOS games. An emulator called DOSBOX can be downloaded from here. Briefly, this is a small program which, when run, completely emulates a full DOS-based computer within your machine. This is done completely with software; the only requirement is that you have a fast processor - it is pretty demanding.
To run U7 (both versions) you will need to edit the dosbox configuration file; you can easily do this with Notepad. Towards the end of the file you will find DOS-type entries - the result should look like this:
[dos]
# xms -- Enable XMS support.
# ems -- Enable EMS support.

xms=true
ems=false

This turns off ems, and U7 feels that the computer is properly set up for it. You will probably need to turn up the cycle rate (on my computer, about 13000 works well). You then get an absolutely original rendition of U7.

The Reconstruction

A group of Ultima enthusiasts has spent many hundreds of hours examining and deconstructing the code and data files of Ultima 7 (and Serpent Isle). With this information, a game engine has been built which will use the data from your installation of U7, and will run the game for you. This will happen in any operating system, and with any sound card. It saves the hassle of configuration and worrying about conventional memory constraints.
Like any reconstruction, there may be small differences visible, and the purists may prefer to play the original game. Hawever, any differences are minimal, and the game is faithful to the original. Also, when you tinker with something, you have the opportunity to add stuff in. This version of the game can be run in different screen resolutions, and there are additional "hot keys" to make life easier.
To play the game in this mode, look at the
Exult page. Follow the instructions here, download the appropriate file, unzip it to your Ultima7 or Serpent folder, and click on Exult.exe to start the game.

After you have got Ultima 7 running, if you would like to find out more about the secrets of this fascinating game, I can recommend a visit to Iolo's Lute.

Any questions, please email me.

Back To Ultima7




Stones - The Ultima 7 Version: copyright Origin Systems Inc.