Exult Documentation last changed: 25 April 2024 (GMT) The latest version of this document can be found at http://exult.info/docs.php 1. Introduction 1.1. Exult Version 1.2. What is Exult? 1.3. Terms we use in regard to Exult and Ultima VII 2. Configurations 2.1. Installation 2.2. Location of exult.cfg 2.3. Default game folders on macOS 2.4. Path-Settings for Linux based systems 2.5. Command line options 2.6. Error Log 3. Exult Setup and Game Menu 3.1. Access to the Exult Setup and Game menu 3.2. Load/Save Game 3.3. Video Options 3.4. Audio Options 3.5. Game Engine 3.6. Game Display 3.7. Game Input 3.8. Quit 4. Audio 4.1. Music 4.2. MIDI Music 4.3. Abilities and limitations of the MIDI music engine 4.4. Windows MIDI Mapper 4.5. macOS CoreMidi device ID 4.6. Digital Music 4.7. Digital Wave Sound Effects 4.8. All-in-One Audio Data pack and installers 4.9. Installation of the digital music packs 4.10. Installation of the digital wave sound effects 4.11. Speech 4.12. Toggle Audio 4.13. Linux and Audio 5. Video 5.1. Resolution 5.2. Fill modes 5.3. Higher resolution is cheating 5.4. Scaler 6. Movement and Keys 6.1. Movement 6.2. Keyboard commands 6.3. Cheat keys 6.4. Map Editing keys 7. ShortcutBar, Notebook and Screenshots 7.1. ShortcutBar for single or double click actions 7.2. Using the Notebook 7.3. The automatic Notebook 7.4. Screenshots 8. Mods and Patches 8.1. Introduction to Mods and Patches 8.2. Installing Mods 8.3. Installing Patches 8.4. Adapting the location of Mods and Patches 8.5. Where to find the savegames of modded games 8.6. Exchanging Savegames between original games and Mods 9. iOS Guide 9.1. The port to iOS 9.2. Installing Exult on your iPhone/iPad 9.3. Installing the games on your iPhone/iPad 9.4. Installing sfx and digital music 9.5. iOS controls 9.6. iOS automatic saves 10. The exult.cfg file 10.1. Settings in exult.cfg 10.2. Path-Settings 10.3. Path-Settings for Windows 10.4. Path-Settings for macOS 10.5. Path-Settings for Linux/Unix systems 10.6. Advanced Configuration: Using both the original and the Add-Ons 11. Installing the original Ultima VII games for use with Exult 11.1. Using GOG.com's installer for Windows 11.2. Using GOG.com's installer for macOS 11.3. Installing the CD-ROM versions of Ultima VII 11.4. Installing the floppy disks of BG/SI using DOSBox 11.5. Installing the floppy disks of the Add-Ons FoV/SS using DOSBox 11.6. Manual installation of the BG floppy disks 11.7. Manual installation of the SI floppy disks 11.8. Installing the floppy disks of BG/SI on Windows 11.9. Installing the floppy disks of the Add-Ons FoV/SS on Windows 11.10. Exult only needs one folder 12. Credits and Contact 12.1. Thanks 12.2. Contacting us 13. Changes to the Documentation 13.1. - 25 April 2024 13.2. - 23 April 2024 13.3. - 11 February 2022 13.4. - 24 January 2022 13.5. - 20 February 2021 13.6. older changes -------------------------------------------------------------------------------- 1. Introduction 1.1. Exult Version This documentation is for the snapshot version of Exult. If you have another Exult version, its documentation can be found where you installed the release. 1.2. What is Exult? Ultima VII, an RPG from the early 1990's, still has a huge following. But, being a DOS game with a very nonstandard memory manager, it is difficult to run it on the latest computers. Exult is a project that created an Ultima VII game engine that runs on modern operating systems, capable of using the data and graphics files that come with the game. Exult is written in C++ and runs on, at least, Linux, macOS and Windows using the SDL2 library to make porting to other platforms relatively easy. The current version supports all of "Ultima VII: The Black Gate" and "Ultima VII - Part 2: The Serpent Isle", allowing you to finish both games. This is only possible due to the work done by other fans who have decoded the various Ultima VII data files, especially Gary Thompson, Maxim Shatskih, Jakob Schonberg, and Wouter Dijkslag. Exult aims to let those people who own Ultima VII (copyright 1993) play the game on modern hardware, in as close to (or perhaps even surpassing) its original splendor as is possible. You need to own "Ultima VII: The Black Gate" and/or "Ultima VII - Part 2: The Serpent Isle" and optionally the add-ons (not required to run) in order to use Exult, and we encourage you to buy a legal copy. 1.3. Terms we use in regard to Exult and Ultima VII We are using many terms in this documentation, the FAQ and other documentation files that people may have difficulties to understand. Here we will try to give some explanations. * BG, SI, FoV or SS: we refer to "Ultima VII: The Black Gate" as BG and to "Ultima VII - Part 2: The Serpent Isle" as SI. The add-ons "Forge of Virtue" and "Silver Seed" are called FoV and SS. * eggs: these are trip-wires that can cause monsters to spawn, execute scripts, play music, change weather, trigger traps or teleport when you get near them. * flex files: also known as flexes, these are used by the original to store the data files. Also when you choose to not use compressed save games (see save_compression_level in 10.1.) our savegames are also 'flexed'. * gumps: the windows used in the game interface for containers, characters, menus, etc.. * paperdoll: when pressing 'i' you get the inventory display. It's the picture of your characters body (or the bodies of your party members) onto which you can drag all kinds of equipment. The way this is displayed in SI is commonly called paperdoll. We integrated this for BG as well. (see FAQ.txt). * shapes: shape files are the format used for storage of all graphics elements (from UI buttons to terrain features) of the games Exult supports. Shapes may contain one or more frames (a frame is a single image). * snapshot: see FAQ.txt. Please note that our documentation usually refers to the latest snapshot. * usecode: that's the scripting language that drives all of Ultima VII (conversations, objects...). * Exult data folder: that's the folder where Exult stores its data files (exult.flx, exult_bg.flx and exult_si.flx). * gamename name of games that are set in exult.cfg's , Exult knows by default the gamenames blackgate, forgeofvirtue, serpentisle, silverseed and serpentbeta. -------------------------------------------------------------------------------- 2. Configurations 2.1. Installation * First you need to get Ultima VII. Either you own it already, or you buy it somewhere. * You need an installed version of Ultima VII to run Exult with. At 11. Installing the original Ultima VII games for use with Exult we have a guide on how to install the original games or use the version offered by GOG.com. * Download Exult from our download page and install it. The Windows version comes with an installer that asks for the location of both BG and SI. If you entered the correct location or you are using the default games locations on Linux systems and macOS the next two steps are not necessary. * Now run exult (exult.exe on Windows) and quit it immediately. * Edit the configuration file with a text editor (e.g. on Windows use Notepad) and enter the correct paths for the game folders - see 10.1. for details * Run exult and enjoy the game :-) Word of advice: Don't mix the files from BG and SI. 2.2. Location of exult.cfg Most of the options in Exult can be changed from the Setup menu when you run Exult or via the Game Options menu. Exult stores these changes in a configuration file. Except for changing paths to the games you shouldn't need to edit the file. Very few options need manual editing. However if you need to edit the configuration file, it is extensively explained in 10. The exult.cfg file. The location of the file varies depending on the Operating System and in the case of Windows OS it also depends on the version of Windows. * On Linux systems you can expect to find it in $HOME/.exult.cfg * macOS saves it to ~/Library/Preferences/exult.cfg * Windows (7, 8, 10, 11) save exult.cfg to LOCAL_APPDATA\Exult, but on these this translates to C:\Users\YourUsername\AppData\Local\Exult * On all supported Windows versions you can quickly access this folder by executing shell:Local AppData\Exult in the 'Quick Access' of Explorer. 2.3. Default game folders on macOS On macOS Exult uses a couple of different folders to follow Apple's guidelines: Note that on macOS Exult looks in a default folder (/Library/Application Support/Exult/data) for Exult's data and the files of the games. On purpose this folder is not in the User-only space, so other users on the same mac can play the games and use the Exult.app. But you will need to follow our gamename standard when you name the game folders, see 1.3. Terms we use in regard to Exult and Ultima VII , otherwise Exult will not find them there. Another specialty on macOS is that the Exult.app comes bundled with the Exult data, so Exult will first use the data in the Exult.app and then use the data in the default folder or the location written down in exult.cfg's . This means that you can copy the sfx files and the digital music folder into the app bundle (Exult.app/Contents/Resources/data) and Exult will automatically use these. Example: User named FooBar on macOS 14. BG is installed to /Library/Application Support/Exult/blackgate and SI is installed to /Library/Application Support/Exult/serpentisle. The app Exult.app is saved to /Applications. When you run Exult it will automatically recognize that BG and SI are installed. You do not need to edit exult.cfg, which is saved to /Users/FooBar/Library/Preferences/exult.cfg. When you save a game in BG the savegame will be saved to /Users/FooBar/Library/Application Support/exult/blackgate/, for SI to Users/FooBar/Library/Application Support/exult/serpentisle/. If you install for example the keyring mod, you copy the contents of the Keyring.zip to /Library/Application Support/Exult/blackgate/mods. When you save a game with the Keyring mod, this savegame will be found in /Users/FooBar/Library/Application Support/exult/blackgate/mods/keyring/. Please be aware of the difference between /Library/... and ~/Library/.... In the root of your macOS system hard drive is the folder /Library. The folder ~/Library is a sub folder of your home folder. If your username is foobar then the folder ~/Library is located at /Users/foobar/Library on your hard drive. On macOS the folder ~/Library is hidden by default. To access it open Finder, click on the menu item 'Go' while pressing 'Option/Alt' and 'Library' will be an option to click on. If you followed all the instructions and Exult still won't recognize the games, you can try deleting exult.cfg in ~/Library/Preferences and then start Exult to generate a new cfg file. At 10.4. Path-Settings for macOS you can see an exult.cfg example with the macOS defaults. 2.4. Path-Settings for Linux based systems As on macOS, Exult uses a default path on Linux systems for its data folder and the game files. Exult will automatically look for these in /usr/local/share/exult unless you entered different paths in exult.cfg. But you will need to follow our gamename standard when you name the game folders, see 1.3. Terms we use in regard to Exult and Ultima VII , otherwise Exult will not find them there. Example: User named FooBar on Ubuntu. BG is installed to /usr/local/share/exult/blackgate and SI is installed to /usr/local/share/exult/serpentisle. When you run Exult it will automatically recognize that BG and SI are installed. You do not need to edit exult.cfg, which is saved to $HOME/.exult.cfg. When you save a game in BG the savegame will be saved to $HOME/.exult/blackgate/, for SI to $HOME/.exult/serpentisle/. If you install for example the keyring mod, you copy the contents of the Keyring.zip to /usr/local/share/Exult/blackgate/mods. When you save a game with the Keyring mod, this savegame will be found in $HOME/.exult/blackgate/mods/keyring/. At 10.5. Path-Settings for Linux/Unix systems you can see an exult.cfg example with the Linux defaults. 2.5. Command line options Exult offers some command line options: * '-h' or '--help' Shows all the command line parameters in stderr (stderr.txt on Windows systems). * '-v' or '--version' Shows version information in stderr. * '-c configfile' Specify alternate config file (relative or absolute paths work). * '-p' Portable option for Windows only. Exult will read cfg file from the folder it got installed to (or make one) and will assume the games to be in the gamename subfolders (see 1.3.). For example if Exult got installed to E:\Exult, a BG game will be expected to be in E:\Exult\blackgate. Savegames will also be saved in these folders. Be careful that you have actually writing permissions in the Exult folder or this will fail. * '--bg' Starts the game with the Black Gate menu (prefers original game). * '--fov' Starts the game with the menu of the Black Gate with Forge of Virtue expansion. Only useful if you have FoV added as described at 10.6., otherwise it will just work like the command '--bg'. * '--si' Starts the game with the Serpent Isle menu (prefers original game). * '--ss' Starts the game with the menu of the Serpent Isle with Silver Seed expansion. Only useful if you have SS added as described at 10.6., otherwise it will just work like the command '--si'. * '--sib' Starts the game with the menu of the Serpent Isle beta version. * '--nomenu' Skips game menu. * '--game gamename' Loads a game specified in exult.cfg when there are other games made with Exult Studio. * '--mod modname' Must be used together with '--bg', '--si', '--fov', '--ss', '--sib' or '--game gamename'; runs the specified game using the mod with title equal to 'modname'. 'modname' is the name of the mod cfg file (e.g. keyring.cfg means 'modname' is 'keyring'. * '--buildmap x' x = 0 shows all roofs, x = 2 pops them all. Makes 144 2048x2048 pixels screenshots of the game map which you will need to piece together. The screenshots are numbered according to the ifix/ireg map. By default the screenshots are PNG files. In the unlikely case that Exult was compiled without libpng support, buildmap will output PCX files. Exult is required to be run in windowed mode and you get the best map if you started a new game before you build the map. You need to specify a game, either by '--bg' (or '--si', '--fov', '--ss', '--sib') or with the '--game'/'--mod' option. * '--mapnum' This must be used with '--buildmap' to select a map in multimap games or mods. * '--nocrc' Exult doesn't start when the crc of the exult*.flx files in the data folder isn't the same it got compiled with. This parameter lets the game start nevertheless. Don't try this if you don't know what you are doing as it is likely to crash Exult. * '--verify-files' Verifies that the files in static dir are not corrupt. Only valid if used together with '--bg', '--si', '--fov', '--ss', '--sib' or '--game gamename'; you cannot specify a mod with this flag. * '--edit' Start in map-edit mode. This will also load Exult Studio when the game is started. * '--write-xml' Write patch/exultgame.xml. Only useful for game editing. * '--reset-video' resets Exult's video settings to the default values. Very helpful when Exult isn't playable anymore because of wrong settings. 2.6. Error Log * Windows: Exult generates the files stdout.txt and stderr.txt. These may give you some idea of what is going on under the hood. When Exult suddenly quits, sometimes these files can help. You can find these files in the folder where exult.cfg is located (see 2.2.) * Linux/UNIX: the above mentioned logs are shown in the console from which Exult is started. ./exult >&$HOME/exult_log.txt will send both stderr and stdout to the file named exult_log.txt in your $HOME folder. * macOS: Similar to Linux, you need to start Exult from the Terminal.app to see the logs or redirect them to a text file. Use /Applications/Exult.app/Contents/MacOS/exult >&$HOME/exult_log.txt to find the file named exult_log.txt in your $HOME folder. -------------------------------------------------------------------------------- 3. Exult Setup and Game Menu 3.1. Access to the Exult Setup and Game menu The Exult Setup and Game menu share mostly the same options, except for the option to 'Save/Load games' and to 'Quit' the game, which are only available in the Game menu once you loaded a game. Exult Setup can only be opened on the Exult menu by selecting the 'Setup' option. And you can access the Game menu either by pressing the disk icon in the Avatar's inventory screen or by pressing 'Esc'. The following options are available for the Exult Setup menu and the Game menu: There is a HELP button on most options that will open your default browser at the online version of this documentation. 3.2. Load/Save Game This one is pretty straightforward. You can load and save a game, delete a game and view some information of a save game on the right side (a screenshot and some stats). If you have a wheel mouse you can scroll one line up/down by using the wheel. Pressing 'Alt' while using the wheel scrolls by pages. Pressing Cancel exits the Load/Save options. This is only available in game through the Game menu. 3.3. Video Options In this option screen you are able to determine how Exult displays the game. * Full Screen enable or disable running Exult in full screen. * Window Size lets you choose between various resolutions determined by the fullscreen resolutions your system reports as supported. If you want other resolutions edit exult.cfg outlined in 10.1. Settings in exult.cfg . * Scaler lets you choose your favorite scaling engine. Also look at 5.4. Scaler for an explanation. * Scaling choose between 1x up to 8x. Further explanation in 5.4. Scaler . For scalers that have a default only scaling (e.g. 2xSaI) this option will be hidden. * Game Area the size of your game viewing area in the Exult window. You can choose between the original default resolution of '320x200' or 'Auto' which tries to set the best viewing area for the chosen resolution. * Fill Quality the scaler used by the different fill modes. You can chose between Point and Bilinear. * Fill Mode Different modes on how to display the Game Area in the Exult window size. Please see 5.2. Fill modes . * AR Correction Aspect Ratio Correction for the fill modes 'Fit' and 'Centre'. * Same setting for window and fullscreen When you disable this you can select different settings for window and fullscreen mode by changing the settings while being in either mode. * APPLY/HELP/CANCEL Checks whether your changes can cause problems, applies your changes and gives you a countdown to confirm that the new settings are working correctly. If you don't want to apply your changes, click CANCEL. 3.4. Audio Options Look at 4. Audio to see explanation on the settings. * Audio Enable or disable all Audio in Exult. * Music Enable or disable music. * looping Disable restores the (broken) way the original handled the music looping flag. * digital music Enables/disables Digital Music. * MIDI driver choose between different drivers for MIDI, see 4.2.. * device type choose between different device types for MIDI music, see 4.2.. * effects alters the way the MIDI is played. Choose between Reverb, Chorus, Both (Reverb and Chorus) or disable it. * SFX Enable or disable digital sound effects. * Pack choose between our standard SFX packs, Roland MT32 and Soundblaster, see 4.7.. This option is not available in the Exult Setup. * Speech enable or disable speech. When disabled you will see subtitles when the Guardian or the Great Earth Serpent speaks. * subtitles Show subtitles while speech is being played. In the original the subtitles were only shown when speech was disabled. * OK/Cancel Ok accepts your changes, Cancel discards your changes. 3.5. Game Engine * Take automatic Notes Toggle writing automatic notes to the notebook - see 7.3. The automatic Notebook . * Gumps pause games In the original the game got paused when Gumps were shown. Enable/disable it. * Alternative drag and drop When enabled dropping a stack of items (coins, bolts...) will drop the whole stack without asking for confirmation of the amount of items to drop. Hold 'Ctrl' while dropping if you need to split a stack. * Speed if Exult seems too fast lower this setting. If it seems to sluggish raising this setting may help. * Combat options As many people think that the U7 combat engine is far too easy, too hard or just can't stand the real-time-combat we put in some options to make combat more interesting: * Combat Show Hits With this enabled you can see the hit points of NPCs in brackets after their name when you left-click on them. * Combat paused with Space choose between Original and SpacePauses. SpacePauses gives you a little more control of combat. When you hit space the game pauses and you can direct a party member by right-clicking, then clicking on a target to attack. Or change weapons, choose a favorite spell. * Combat Charmed difficulty choose between Normal and Hard. With Normal the Avatar can't be charmed. The original game allowed him to be charmed though that only highlighted him as charmed and the charmed status icon showed but you could control him as usual. Hard will neither allow the player to control charmed party members, including the Avatar, nor access the inventory of a charmed party member. But you can still manipulate objects that are not in the charmed party members possessions even if the Avatar is the one who is charmed. Charmed party members will continue to attack, even if the player ends combat. * Combat Difficulty Ranges from Easiest (-3) to Hardest (3). It affects the chance of a hit, and the HP that is lost if a hit occurs. * Cheats Enables or disables all the cheats that we implemented in Exult. See 6.3. Cheat keys what those cheats are. 3.6. Game Display * Status Bars You can either disable the status bars or choose its position on the bottom of the screen (left, middle, right). * Use ShortcutBar Toggle the ShortcutBar or make it transparent when on the map - see 7.1. ShortcutBar for single or double click actions . * Use outline color Choose a the color of the outline around the ShortcutBar buttons or disable it - see 7.1. ShortcutBar for single or double click actions . * Hide missing items hides ShortcutBar items the party doesn't have, otherwise missing items are greyed out - see 7.1. ShortcutBar for single or double click actions . * Text Background shows a tinted background behind text in conversations to make it easier to read. Either disable it or choose between the colors purple, orange, light gray, green, yellow, pale blue, dark green, red, bright white, dark gray and white. * Smooth scrolling Disabled/25%/50%/75%/100% percentage of how smooth the game scrolls when the avatar moves. When disabled Exult uses the 'jerky' scrolling of the original game. * Skip intro When enabled you don't have to watch the splash screen and intro when you select a game from the Exult menu. * Skip scripted first scene When you start a new game of BG the game starts with a scripted scene during which you can't move the Avatar. Enable this to skip this part but only do this if you have already played the game and have seen this scene. * Use extended SI intro To fit the intro of SI onto the constraints of floppy disks, it was cut and made much simpler than originally envisioned by Denis Loubet. We have restored the intro and made it possible to watch it. * Paperdolls only available in Black Gate and only if you have Serpent Isle installed as well. Enables or disable Paperdolls (inventory screen) in the style of Serpent Isle. 3.7. Game Input * Doubleclick closes gumps pretty straightforward, right? * Right click closes gumps the same but different. * Pathfind with Right Click Right-clicking on a spot makes the avatar walk to it. Default is a double click but you can set it to a single one or disable it. * Scroll game view with mouse When cheats are enabled you can scroll the game view with the scroll wheel of the mouse, when you hold down the 'Alt' you will scroll sideways (to the west or to the east). * Use middle mouse button In the normal game, the middle mouse button activates the target-function (which could also be accomplished by pressing 't'). For modal gumps, the middle mouse acts as 'return', the right button as 'escape', so you can now for example accept the default slider value by just pressing the middle button. The escape function is also available during most other actions like selecting a target or conversations. Enable or disable it. * Fullscreen Fast Mouse makes the mouse cursor move faster in full screen modes. Enable or disable it. * Item helper menu Enabling this will pop up a menu on screen of objects you can click on and once you select one, it gives you further options on how to interact with the object. Only on iOS enabled by default. * D-Pad screen location On iOS we display a virtual D-Pad to move the Avatar with your finger (thumb). This toggles and selects the side of the screen this D-Pad is displayed on. For now this is only enabled on iOS * Pathfind with Long touch When you click or touch for a little while the Avatar will move to this location if it's possible to move there. By default only enabled on iOS. 3.8. Quit Exits Exult. This option is only available in the in-game menu. On iOS this is not available (iOS doesn't allow you to quit apps directly). -------------------------------------------------------------------------------- 4. Audio 4.1. Music There are three general ways that music is played in Exult. One is using MIDI, which plays the music through any MIDI device, or software synthesizers like TiMidity and FluidSynth. Another way is Digital Music encoded into OGG (similar to MP3) which was recorded directly from a Roland MT-32. The third option is FMOpl which emulates Opl2/Adlib. The MIDI files are converted on-the-fly from the original Ultima VII MT-32 files to General MIDI format so that they will be playable on modern General MIDI and General MIDI/GS supporting sound cards. The Music driver options can be changed in the in-game menu that you open by hitting 'ESC'. There you can enable Digital Music and change the MIDI driver, through which you can also select the FMOpl emulation. When you enable Digital Music, it takes precedence over the MIDI driver. 4.2. MIDI Music The MIDI driver can be changed to: * Default This setting utilizes the FMOpl driver. * FMOPL This is a Software FM Synthesizer (also known as a emulated Opl2/Adlib). * TiMidity is a software synthesizer that can play MIDI files without a hardware synthesizer. You can install TiMidity on all major Operating systems. You need to place tmidity.cfg into the same folder where the Exult executable is installed to, otherwise TiMidity will not work. On linux systems it needs to be in ~/.exult. * FluidSynth is another software synthesizer, which uses SoundFont 2 technology without need for a SoundFont-compatible sound card. It is available for many Operating Systems and opposed to TiMidity still actively developed. Since Fluidsynth pulls in many dependencies it is not compiled into Exult at the moment. If you compiled Exult ourself and you enabled Fluidsynth you just need to edit exult.cfg and point