File: README

package info (click to toggle)
exult 1.2-15.3
  • links: PTS, VCS
  • area: contrib
  • in suites: jessie, jessie-kfreebsd
  • size: 8,656 kB
  • ctags: 10,524
  • sloc: cpp: 99,373; sh: 7,324; ansic: 4,659; makefile: 991; yacc: 769; lex: 313; xml: 19
file content (907 lines) | stat: -rw-r--r-- 47,282 bytes parent folder | download | duplicates (8)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
Exult Documentation
last changed: 23 May 2004(GMT)

The latest version of this document can be found at http://exult.sourceforge.net/docs.php


0. Changes to the Documentation
0.1. - 23 May 2004
0.2. - 11 February 2004
0.3. - 12 December 2003

1. Introduction
1.1. Exult Version
1.2. What is Exult?
1.3. Terms we use in regard to Exult and Ultima 7

2. Configurations
2.1. Installation
2.2. Settings in exult.cfg
2.3. Path-Settings
2.4. Further directory customizations
2.5. Command line options

3. Audio
3.1. Music
3.2. Abilities and limitations of the music engine
3.3. Windows MIDI Mapper
3.4. Digital Music
3.5. Installation of the digital music packs
3.6. Digital Wave Sound Effects
3.7. Speech
3.8. Turn off Audio
3.9. Linux and Audio

4. Video
4.1. Resolution
4.2. Scaler

5. Movement and Keys
5.1. Movement
5.2. Keyboard commands
5.3. Cheat keys

6. Game Menu
6.1. Access to the Game menu
6.2. Load/Save Game
6.3. Video Options
6.4. Audio Options
6.5. Gameplay Options
6.6. Combat Options
6.7. Quit

7. OS specific notes
7.1. How to get the Zaurus port working
7.2. Error Log

8. Zaurus Guide
8.1. Author of this Guide
8.2. Sharp Zaurus
8.3. Zaurus SL5x00 and ROMs
8.4. Exult and Zaurus
8.5. Installing new packages
8.6. Using the standard ROM
8.7. Installing the non-required packages
8.8. Using the latest ROM
8.9. Solving the problems with the latest ROM
8.10. Useful tidbits

9. Credits and Contact
9.1. Thanks
9.2. Contacting us


--------------------------------------------------------------------------------

0. Changes to the Documentation
0.1. - 23 May 2004
* 1.1. Exult Version I'm confident that the new Version will be 1.2.
* 7.1. How to get the Zaurus port working we shouldn't call our data files shared files..



0.2. - 11 February 2004
* A lot of clean up and small changes, too numerous to list.
* 2.3. Path-Settings fixed some outdated instructions.
* 3.5. Installation of the digital music packs added as the instructions in the music-pack readme.txt are no longer valid.
* 5.1. Movement fixed up a bit.
* 5.2. Keyboard commands fixed up a bit as well.
* 6. Game Menu added screenshots showing the Game menu gumps and removed "Quit to Menu".
* 9.1. Thanks time to thank Sourceforge as well.



0.3. - 12 December 2003
* 2.2. Settings in exult.cfg fixed bad path settings and updated audio settings.
* 2.3. Path-Settings moved stuff over to next point.
* 2.4. Further directory customizations added to give some explanation for Static/Gamedat.
* 3.1. Music updated with 'recent' audio changes.
* 6.4. Audio Options updated with 'recent' audio changes.




--------------------------------------------------------------------------------

1. Introduction
1.1. Exult Version
This documentation is for the 1.2 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 7, 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 to create an Ultima 7 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, Mac OS X and Windows using the SDL library to make porting to other platforms relatively easy. The current version supports all of "Ultima 7: The Black Gate" and "Ultima 7 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 7 data files, especially Gary Thompson, Maxim Shatskih, Jakob Shonberg, and Wouter Dijkslag.
Exult aims to let those people who own Ultima 7 (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 7: The Black Gate" and/or "Ultima 7: 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 7
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 7: The Black Gate" as BG and to "Ultima 7: 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 ReadMe.txt) our save games 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 what we call 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 U7 (conversations, objects...).
* Exult data directory: that's the directory where Exult stores its data files (exult.flx, exult_bg.flx and exult_si.flx).




--------------------------------------------------------------------------------

2. Configurations
2.1. Installation
* First you need to get Ultima 7. Either you own it already, or you buy it somewhere.
* You need an installed version of Ultima 7 to run Exult with. The Ultima Collection already contains a pre-installed version of U7 (in the directory /ultima7 on the CD), but with older versions you may have to install the game yourself.
* Copy the installed Ultima7 folder to an appropriate folder - see 2.3. for suggestions.
* Now run exult (exult.exe in Windows) and quit it immediately.
* Edit the configuration file with the correct paths for the game folders and sfx files - see 2.2.
* Run exult and enjoy the game :-)

Word of advice: Don't mix the files from BG and SI.
Note: If you run Exult on an original Ultima7 game which you're actually in the middle of playing, your game will be overwritten. Since Exult's files have a different format, there is no way to convert those original save games.


2.2. Settings in exult.cfg
Exult keeps a configuration file. You can specify where your Ultima 7 installation is, whether you want full screen graphics, or windowed, and midi devices and midi settings. Some of these options can be set from the Setup menu when you run Exult or via the Game Options menu.
If you do not already have a configuration file, Exult will make one for you filling in sensible defaults by itself. The location of this file varies slightly. On UNIX systems you can expect to find it in $HOME/.exult.cfg. In Windows it is 'exult.cfg' in the same directory as the Exult binary. In Mac OS X it is ~/Library/Preferences/exult.cfg.
Note: the settings in exult.cfg are the same on all operating systems (except when explicitly stated below).
The file uses a simple hierarchical XML-like syntax, which should be simple to understand and modify. Take care though. Handling of syntax errors in this file is not well tested.
The default file looks like this (do not copy the **and following - these are my remarks).
Note: yes means enabled, no means disabled
<config>
  <disk>
    <save_compression_level>
    1
				**save games are now compressed as zip files. 0 disables compression,
				1 enables it, 2 compresses even a bit better. Default is 1.
    </save_compression_level>
    <data_path>
    data
				**see 2.3. for pathsettings
    </data_path>
    <music_path>
    data/music
				**optional. Location of digital music. See also 3.4.
    </music_path>
    <game>
      <blackgate>
        <title>
        blackgate
        </title>
        <path>
        ./blackgate
        </path>
        <savegame_path>
        ./blackgate
				**optional. Default is the same as <path>, change to whatever you like.
				Also see 2.4. before changing it.
        </savegame_path>
        <static_path>
        ./blackgate/static
				**optional. See 2.4. before changing it.
        </static_path>
        <gamedat_path>
        ./blackgate/gamedat
				**optional. See 2.4. before changing it.
        </gamedat_path>
        <keys>
        (default)
				**configure custom key bindings or leave the (default)
				- see 5.2.
        </keys>
        <waves>
        jmsfx.flx
				**optional setting see 3.6. for configuration
        </waves>
      </blackgate>
      <serpentisle>
        <title>
        serpentisle
        </title>
        <path>
        ./serpentisle
        </path>
        <savegame_path>
        ./serpentisle 
				**optional. Default is the same as <path>, change to whatever you like.
				Also see 2.4. before changing it.
        </savegame_path>
        <static_path>
        ./serpentisle/static
				**optional. See 2.4. before changing it.
        </static_path>
        <gamedat_path>
        ./serpentisle/gamedat
				**optional. See 2.4. before changing it.
        </gamedat_path>
        <keys>
        (default)
				**configure custom key bindings or leave the (default)
				- see 5.2.
        </keys>
        <waves>
        jmsisfx.flx
				**optional setting see 3.6. for configuration
        </waves>
      </serpentisle>
    </game>
  </disk>
  <debug>
    <trace>
      <usecode>
      no
				**options are yes/no/verbose. This is used to trace the
				executed Usecode. (You shouldn't need this unless you are a programmer.)
      </usecode>
      <intrinsics>
      no
				**options are yes/no. Used to trace intrinsics.
				(You shouldn't need this unless you are a programmer.)
      </intrinsics>
      <combat>
      no
				**options are yes/no. If enabled, show combat messages.
      </combat>
    </trace>
  </debug>
  <gameplay>
    <double_click_closes_gumps>
    no
    </double_click_closes_gumps>
    <right_click_closes_gumps>
    no
    </right_click_closes_gumps>
    <cheat>
    yes
				**enable/disable cheats
    </cheat>
    <skip_intro>
    no
				**this skips the in-game intro in BG; Iolo talks to Petre, the Avatar appears,
				Iolo talks to you, the mayor talks to you and so on.
    </skip_intro>
    <skip_splash>
    no
				**this skips the splash screen, the intro before you get to the
				 game menu. Disabling it brings you straight to the game menu.
    </skip_splash>
    <facestats>
    0
				**activates the status faces and the position on the screen.
				-1 disable,0 right, 1 middle, 2 right.
    </facestats>
    <mouse3rd>
    no
				**yes enables using of the middle mouse button.
    </mouse3rd>
    <fastmouse>
    no
				**yes enables faster cursor movement in full screen mode.
    </fastmouse>
    <bg_paperdolls>
    no
				**yes enables SI style paperdolls in BG.
    </bg_paperdolls>
    <combat>
      <difficulty>
      0
				**0 is default, negative values make combat easier, positive makes it
				harder. It affects the chance of a hit, and the HP's lost if a hit occurs.
				Ranges from -3 to 3 (easiest to hardest).
      </difficulty>
      <mode>
      original
				**original or keypause. On keypause the game pauses when you hit space
				so you can make changes in combat.
      </mode>
      <show_hits>
      no
				**no is default. With yes you see the hitpoints of NPCs
				in brackets after their name.
      </show_hits>
    </combat>
    <gumps_dont_pause_game>
    no
				**yes doesn't pause the game when gumps are shown.
    </gumps_dont_pause_game>
    <step_tile_delta>
    8
				**Controls how far the Avatar will move before Exult recalculates the
				Avatar's and the party's movement. Bigger # avoids jerkiness, but may cause other
				problems.
    </step_tile_delta>
    <allow_double_right_move>
    yes
				**double right-click lets the Avatar walk automatically
				to where you clicked.
    </allow_double_right_move>
    <formation>
    no
				**yes forces the party to walk in a formation similar to the original game.
    </formation>
  </gameplay>
  <audio>
    <enabled>
    yes
				**enable/disable all audio - this takes precedence over the
				other audio settings. (You can change this in game via
				'Esc' - the setting is saved.)
    </enabled>
    <disablepause>
    no
				**enable/disable the pausing of SFX and digital music when the
				game pauses (e.g. not the focused window). MIDI music is currently not paused.
    </disablepause>
    <force_waveout>
    no
				**yes forces Exult to use waveout instead of directsound. This may
				fix problems some people have with Exult and sound in Windows.
				(This is a Windows-only option.)
    </force_waveout>
    <effects>
      <enabled>
      yes
				**enable/disable sound effects. (You can change this in game via
				'Esc' - the setting is saved.)
      </enabled>
    </effects>
    <driver>
    normal
				**choose your music driver between normal, digital, fmsynth.
				See 3.1. for details.
    </driver>
    <midi>
      <enabled>
      yes
				**enable/disable MIDI effects. (You can change this in game via
				'Esc' - the setting is saved.)
      </enabled>
      <convert>
      gm
				**see 3.1.
      </convert>
      <volume_curve>
      1.000000
				**set volume (kind of at least, best don't change)
      </volume_curve>
      <win32_device>
      -1
				**choose the Windows MIDI Device. See 3.3.
      </win32_device>
      <looping>
      yes
				**No disables music looping. See 6.4.
      </looping>
      <dual_opl>
      yes
				**No disables 'dual' mode for stereo sound when <driver> is set to fmsynth.
      </dual_opl>
    </midi>
    <speech>
      <enabled>
      yes
				**enable/disable speech. (You can change this in game via
				'Esc' - the setting is saved.)
      </enabled>
    </speech>
  </audio>
  <video>
    <width>
    320
				**here you choose your resolution, it can be as big as your
				monitor allows. 320x200 is the resolution of the original.
    </width>
    <height>
    200
    </height>
    <scale>
    2
				**2 enables / 1 disables scaling, some scalers support higher values.
				See 4.2..
    </scale>
    <fullscreen>
    yes
				**do you want to play full screen?
    </fullscreen>
    <disable_fades>
    no
				**"no" enables fading between different menu points
    </disable_fades>
    <scale_method>
    SuperEagle
				**choose different scalers here - see 4.2.
    </scale_method>
    <gamma>
      <red>
      1
				**set gamma levels to adjust brightness, same as +/- in game
      </red>
      <green>
      1
      </green>
      <blue>
      1
      </blue>
    </gamma>
    <fps>
    10
				**Speed setting. Might help when the game seems too slow or too fast.
    </fps>
  </video>
</config>


2.3. Path-Settings
You have two choices on how to setup Exult.
The first one is very easy, just install Exult to the directory where you have The Black Gate or Serpent Isle installed. Concerning the paths you don't have to configure anything, at least for the game you have installed it to. For the other game you will need to edit exult.cfg.
The other is a little more complicated but appeals to control freaks like me: Make a directory c:\ultima7 make two subfolders named "blackgate" and "serpentisle" (without the quotes of course) Extract or install the two Ultima 7 games into the appropriate folder ("The Black Gate" to c:\ultima7\blackgate and "Serpent Isle" to c:\ultima7\serpentisle) Install Exult to c:\ultima7. Now you have to edit the file c:\ultima7\exult.cfg file like this (Non-Windows users please look at 2.2. for the location of exult.cfg):
<config>
  <disk>
    <data_path>
    data
    </data_path>
    <game>
      <blackgate>
        <title>
        blackgate
        </title>
        <path>
        ./blackgate
        </path>
      </blackgate>
      <serpentisle>
        <title>
        serpentisle
        </title>
        <path>
        ./serpentisle
        </path>
      </serpentisle>
    </game>
  </disk>
You can either use the relative (e.g. ./blackgate) or absolute (e.g. c:\ultima\blackgate) path to point to the correct directory.
Note: Better don't use spaces in the path (e.g. c:\ultima 7\the black gate\). Some people seem to have problems with that.
Note: path settings in exult.cfg are the same on all operating systems. Of course you need to make adjustments on UNIX based systems when you enter the absolute path.


2.4. Further directory customizations
You can also specify whereExult reads and stores the game specific data, like the files in the Static and Gamedat directory and the save games. This is optional and not required but may be useful if you want to exercise absolute control. Some explanation what these dirs are for:
* Savegames this is where Exult stores your savegames. Normally you find these in the dir set in <path>.
* Static the most important dir. Here you have the data files from the original game. You should never touch these files.
* Gamedat contains the (dynamic) data for the game you're currently playing. It's where the "journey onward" 'savegame' is stored.

If you don't change the location of either the Static or Gamedat directories, Exult expects to find both directories in the path you specified in <path>. Don't ever point these two at the same directory.
My recommendations and example for BG (for SI use the same syntax) are:
<config>
  <disk>
    <data_path>
    data
    </data_path>
    <game>
      <blackgate>
        <title>
        blackgate
        </title>
        <path>
        ./blackgate
        </path>
        <savegame_path>
        ./blackgate
        </savegame_path>
        <static_path>
        ./blackgate/static
        </static_path>
        <gamedat_path>
        ./blackgate/gamedat
        </gamedat_path>
      </blackgate>


2.5. Command line options
Exult offers some "hidden" 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)
* --bg Starts the game with the Black Gate menu
* --si Starts the game with the Serpent Isle menu
* --nomenu Skips game menu.
* --buildmap x x = 0 shows all roofs, x = 2 pops them all. You have to specify the game first (Example: exult --bg --buildmap 0). Builds the map of the game specified. The map is huge and in pcx format, you will need a lot of ram to even look at this map once it is build (and even that requires a lot of patience) 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.
* --nocrc Recently we added a crc check that Exult doesn't start when the exult*.flx files in the data dir aren't the same it got compiled with. This parameter lets the game start nethertheless. Don't try this if you don't know what you are doing.
* --game gamename Loads a game specified in exult.cfg when there are other games made with Exult Studio.




--------------------------------------------------------------------------------

3. Audio
3.1. Music
There are three ways that music is played in Exult. One is using MIDI, which plays the music through any GM MIDI device, Timidity can be used in Linux. Another way is Digital Music encoded into OGG (similar to MP3) which was recorded directly from a Roland MT-32. The third option is FMSynth which emulates Opl2/Adlib. The MIDI files are converted on-the-fly from the original Ultima 7 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 options for changing the Music driver are in the opening Exult menu Setup screen or in the actual game's audio options. Currently only the in game options menu works correctly. You can choose between:
* Normal This setting utilizes the MIDI driver of your system. See the MIDI conversion order below.
* Digital Digital Music plays the OGG files which must be located in the Exult data/music directory. This does not use MIDI but plays the music digitally through any soundcard.
* FMSynth This is a Software FM Synthesizer (also known as a emulated Opl2/Adlib). It has a 'dual'mode for stereo sound. Use "config/audio/midi/dual_opl" set to "yes" or "no" to enable/disable it. Default is "yes". You don't have to restart Exult anymore if you change this in the game.

The order of MIDI conversion quality is:
* none This option will output the music with nothing changed. Because the mapping will be for MT32s you should only use this option if you have a MT32 compatible device or you have replaced the music.
* gs127 This option is for midi devices that have a MT32 patch bank installed in Bank 127. Some GS implementation have this, some don't. Only use this if you know that you have a MT32 implementation on Bank 127.
* gs This will convert the MT32 patches to their equivalent GS patches. This will be a more accurate conversion that straight gm since more of the MT32 patches are in the GS set. However, not all midi devices will support this mode.
* gm This will convert the MT32 patches to standard General Midi patches. Conversion is fairly accurate but some instruments may be different.

NOTE: Currently the conversion to GS and GS127 is not finished and the notes are only mapped to General Midi.


3.2. Abilities and limitations of the music engine
Due to the way the class was constructed input can be in either .mid, .rmi or the Miles Sound System .xmi format. There are no limitations to they types of .mid and .rmi supported. They can be Type 0, 1 and the rarely seen type 2. The loading routine is also fairly lenient of erroneous XMIDI files that do not have correct XMIDI headers.
During the development of the XMIDI class it was found that certain .xmi files in Serpent Isle had the first patch changes after the first note. The converter will attempt to correct these errors. However it may cause problems with some midi files. Currently this can not be disabled and may change in the future.


3.3. Windows MIDI Mapper
You can now tell Exult which MIDI device it should use. Useful if you want Exult to use a different MIDI device than the default Windows device (like an MT-32).
To do this start Exult, on the menu choose "Exit". Now open the file stdout.txt in the folder where exult.exe is located. You will see a listing of the midi devices. For example with an SB Live! in Win2k it will look like this:
4 Midi Devices Detected Listing midi devices: -1: Microsoft MIDI-Mapper 0: A: SB Live! MIDI Synth 1: B: SB Live! MIDI Synth 2: SB Live! MIDI UART
By default Exult uses the Microsoft MIDI-Mapper (which uses the device you choose in the Windows Multimedia Properties). To change the MIDI Device open exult.cfg and change
<win32_device>
-1
</win32_device>
with the device you want to use.


3.4. Digital Music
Exult needs the Digital Music pack to play Digital Music in the game. The music pack contains music for both Black Gate and Serpent Isle, encoded in high quality OGG format. Simon Quinn recorded the current Digital Music pack on an original Roland MT-32 and with this you will experience the music as it would be heard with the original game. Digital Music should work on any platform that supports digital sound and does not use any MIDI, so it is also a good option for platforms with no MIDI support. Additionally, Digital Music supports a number of background atmospheric SFX tracks that are played when no music is playing. These consist of wind, bird etc effects outside and other sound effects when inside a dungeon. These SFX tracks are not available when using MIDI as they play Roland MT-32 specific voices that cannot be mapped to GM/GS. These SFX tracks do not play when the music is switched off.


3.5. Installation of the digital music packs
The Digital Music pack can be downloaded from http://exult.sourceforge.net/download.php, the files are called Ogg encoded Music files for Exult Part 1(use with 1.1.x snapshot only) (U7MusicOGG_1of2.zip) and Ogg encoded Music files for Exult Part 2(use with 1.1.x snapshot only) (U7MusicOGG_2of2.zip). The readme.txt found in the ZIP files contains installation instructions that are no longer 100% valid and should not be followed. Create a music directory in exult/data (i.e. exult/data/music/) and extract the two ZIP files U7MusicOGG_1of2.zip and U7MusicOGG_2of2.zip into this directory. If you are not sure where the data directory is, search for the file exult_bg.flx on your hard drive as this file is always in the data directory. Now start up Exult and start either a game of BG or SI. Hit 'ESC' to enter the game menu. Here select Audio Options and in the "Music options" set the driver option to digital.
It isn't necessary but you can also customize the location of the music files by adding <music_path> to exult.cfg. Example:
<config>
  <disk>
    <data_path>
    data 
    </data_path>
    <music_path>
    data/music
    </music_path>


3.6. Digital Wave Sound Effects
Exult needs the so called sfx packs to enable sound effects for Ultima 7. You have to download separate packs for each game as order of the sfx in BG and SI varies a bit and otherwise will sound odd. However there is a little issue with sfx playback in SI: In combat the sfx may be a little wrong as we still haven't figured out all the data in the 'weapons.dat'. Also Exult doesn't yet playback all the sfx that the original did.
Note that configuring your soundfonts is not needed for digital wave sfx.
We currently have two soundpacks for each game. Joseph Morris recorded the original SoundBlaster sfx and Simon Quinn recorded the Roland MT32 sfx. You can find them on our download page at http://exult.sourceforge.net/download.php.
Extract the zip files into your Exult data directory and write down the name of the pack in your exult.cfg file (see 2.2.). You don't need to set correct paths anymore if the pack is in the data directory. An example of how the relevant part of exult.cfg looks with these packs:
<blackgate>
  <waves>
  jmsfx.flx
  </waves>
</blackgate>
<serpentisle>
  <waves>
  jmsisfx.flx
  </waves>
</serpentisle>


3.7. Speech
Exult can play the Ultima VII's speech through SDL, and its own internal mixer. Configuration is managed through Exult's configuration file.


3.8. Turn off Audio
Press 'Esc' to turn on/off Music, Speech and SoundFX via the in-game menu or change the settings in exult.cfg - see 2.2..


3.9. Linux and Audio
If you want to use the MIDI music option in Exult and use Timidity to play the MIDI, the timidity.cfg file must go into the same directory as the Exult executable, otherwise Timidity will not work.
Apparently Exult has some problem with the sound drivers in the 2.4 kernel, notably with the SoundBlaster Live. Therefore we advice our users to install ALSA (Advanced Linux Sound Architecture) found at http://www.alsa-project.org. ALSA is going to replace OSS in the upcoming stable (2.6) Kernel anyway. We are sorry for this.



--------------------------------------------------------------------------------

4. Video
4.1. Resolution
By default Exult runs at 320x200 (which is the resolution the original Ultima VII used). Exult can use different scaling engines to double the size to 640x400 and increase the quality of the graphics.
Using higher resolutions is considered cheating as you can see too much of the surrounding area. Since the game was designed to be played at a specific size, this can actually lead to plot-stopping problems; hence we will not fix any problem caused by your cheating! Don't say we didn't warn you :-) Actually being able to play in higher resolutions is one of the big advantages of Exult but as mentioned above it comes with a price.
Within the game you can use the 'Alt +' and 'Alt -' to switch resolution..


4.2. Scaler
The scalers also work with higher resolutions than 320x200. To change the scaling method either use the Exult menu or change your exult.cfg - see 2.2..
* Scale2x by Andrea Mazzoleni. This is a non-blurring scaler that looks good without soaking up a lot of CPU sycles. Get more information on this scaler at http://scale2x.sf.net.
* SuperEagle by Derek Liauw. Only 2x.
* Super2xSai by Derek Liauw. Only 2x.
* 2xSaI by Derek Liauw. Only 2x.
* BilinearPlus same as Bilinear and it may even be a bit faster..
* Bilinear bilinear interpolation to smooth the result. Slower, but looks better. Only 2x.
* Point simple but very fast scaler. Only duplicates pixels, no fancy interpolation. Can be used for arbitrary integer scales (2x, 3x, 4x...).
* Interlaced identical to point except that it skips every other line to be even faster

The scalers by Derek Liauw are slower but look much better. Try out yourself which one you like most.
More information on the excellent scaling engines by Derek Liauw is available at http://elektron.its.tudelft.nl/~dalikifa/.



--------------------------------------------------------------------------------

5. Movement and Keys
5.1. Movement
* Hold right mouse button down to move Avatar.
* Double-click with the right mouse button will make the Avatar find a path to the selected spot.
* Click on objects with left button to identify them.
* Double-click on characters to hold conversations.
* Double-click on doors, shutters with left button to open or close them.

Note that on MacOS you have to hold down the 'Cmd' key and the mouse button to have the functionality of a right mouse button.
Nadir implemented keyboard walking in the post 1.0 versions of Exult. The Avatar can be moved with the arrow keys (or the keypad keys for more precise movement). When you move while holding shift the Avatar runs.


5.2. Keyboard commands
All key commands of Exultcan be changed for either BG or SI. However, there is a default setting which closely follows the original with the addition of some improvements.
To change your key bindings first edit the file defaultkeys.txt in your Exult directory, change the bindings and save the file (e.g. as my_keys.txt). Now you have to change exult.cfg to use that file. You can even choose if you want to change your key bindings for BG or SI. See the keys settings at 2.2.. Change (default) to my_keys.txt.
During the game press 'h' to see a help screen with all the keys (for MacOS change Alt for Cmd - the in-game help screen shows the correct key combination for MacOS). 'KP' means keypad.

Default keyboard commands
KP+/- : Change brightness
Alt-KP+/- : Change resolution
F4 : Toggle full screen
right : walk east
left : walk west
up : walk north
down : walk south
KP1 : walk southwest
KP2 : walk south
KP3 : walk southeast
KP4 : walk west
KP5 : recenter map
KP6 : walk east
KP7 : walk northwest
KP8 : walk north
KP9 : walk northeast
Shift-right : run east
Shift-left : run west
Shift-up : run north
Shift-down : run south
Shift-KP1 : run southwest
Shift-KP2 : run south
Shift-KP3 : run southeast
Shift-KP4 : run west
Shift-KP6 : run east
Shift-KP7 : run northwest
Shift-KP8 : run north
Shift-KP9 : run northeast
Ctrl-x : Cut selected object (when in Map Edit mode)
Ctrl-c : Copy selected object (when in Map Edit mode)
Ctrl-v : Paste selected object (when in Map Edit mode)
b : Use spellbook
c : Combat mode
f : Use food
g : Use Abacus
h : Show list of keyboard commands
i : Show inventory
j : SI: Show jawbone
k : BG: Try all keys to unlock a lock
k : SI: Use keyring
Alt-k : SI: Try all keys to unlock a lock
l : SI: Show combat stats
m : Show map
p : Use lockpicks
Alt-q : Exit game
r : Brings up status bars. First three strokes change the location of the bar. The fourth disables it again.
Ctrl-r : Quick restore
Ctrl-Alt-s : Screenshot
Ctrl-s : Quick save
s : Show save/load box
Esc : Show Game menu box and closes all open boxes
t : Target, instead of double clicking, shows a cursor and pauses the game until you click on something
v : About screen
w : Use watch, shows the time if you got a watch
Alt-x : Exit game
z : Show stats
1 : Show inventory for Avatar
2 : Show inventory for character 2
3 : Show inventory for character 3
4 : Show inventory for character 4
5 : Show inventory for character 5
6 : Show inventory for character 6
7 : Show inventory for character 7
8 : Show inventory for character 8
In conversations you have the ability not just click on the answer with the mouse but also to use the numeric keys. The response options aren't numbered visually but logically with the dots. Also press 'Esc' to select "bye" if possible.


5.3. Cheat keys
Press 'ctrl-h' during the game to see a help screen with all the cheat keys. 'KP' means keypad.

Cheat commands
Alt-+/- : Switch resolution( you may have to use the keypad)
Alt-Arrow keys : Scroll map
home : Recenter map
Ctrl-Arrow keys : move selection (x,y coordinates)
Ctrl-Page keys : move selection (z coordinates)
F2 : Cheat screen similar to the originals'. Allows for some level of NPC editing and other cheat options
F3 : Map teleport
F10 : Show endgame
F11 : SI: Play alternate intro
Ctrl-b : Shape browser
Insert : Create object (that is chosen in  the shape browser)
Ctrl-d : Delete object
e : Toggle egg display
Alt-g : Toggle God mode
Ctrl-g : Change avatar gender
Ctrl-Alt-h : Resurrect, heal party, cure poison and still hunger
Alt-i : Toggle infravision
Ctrl-l : Level up party
l : Decrement skiplift
Alt-h : Hackmover (you can move all objects around and it disables weight check
Ctrl-Alt-m : Toggle Map editor (useful for Exult Studio)
Ctrl-m : Get 100 gold coins
Alt-Shift-m : Play previous song
Alt-m : Play next song
Alt-n : SI: Toggle naked flag
Alt-p : SI: Toggle Petra mode
Alt-s : SI: Change skin color
Ctrl-Alt-t : Map teleport
Ctrl-t : Advance to next time period
Alt-t : Teleport (to current cursor position)
Alt-w : Toggle archwizard mode (all spells etc.)
Alt-1 : Test music, sfx, speech
Ctrl-Alt-g : Grab NPC for cheat screen
Ctrl-Alt-p : Pick pocket cheat, when enabled double-clicking on a NPC displays the actors inventory
Ctrl-n : NPC number, When enabled, clicking an a NPC will display their number instead of their name. Useful for the cheat screen.



--------------------------------------------------------------------------------

6. Game Menu
6.1. Access to the Game menu
You can access the Game menu either by pressing the disk icon in the Avatar's inventory screen or by pressing 'Esc'. You then have the following options.


6.2. Load/Save Game
This on 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.


6.3. Video Options
In this option screen you are able to determine how Exult displays the game.
* Resolution lets you choose between various resolutions. You can choose between 320x200, 320x240, 400x300, 512x384, 640x480 and 800x600. If you want higher resolutions edit exult.cfg outlined in 2.2. Settings in exult.cfg.
* Scaling choose between 1x and 2x. What it does is explained in 4.2. Scaler.
* Scaler lets you choose your favorite scaling engine. Also look at 4.2. Scaler for an explanation.
* Full Screen enable or disable running Exult in full screen.
* OK/Cancel Ok accepts your changes, Cancel discards your changes.



6.4. Audio Options
Look at 3. Audio to see explanation on the settings.
* Audio Enable or disable all Audio in Exult.
* Music Enable or disable music.
* driver choose between Normal, Digital or FMSynth.
* conversion choose between None, GM, GS, GS127.
* effects alters the way the midi is played. Choose between Reverb, Chorus, Both (Reverb and Chorus) or disable it.
* looping Disable restores the (broken) way the original handled the music looping flag.
* SFX Enable or disable digital sound effects.
* Speech Options Enable or disable the speech in the games.
* OK/Cancel Ok accepts your changes, Cancel discards your changes.



6.5. Gameplay Options

* Status Bars You can either disable the status bars or choose its position on the bottom of the screen (left, middle, right).
* 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.
* Fast Mouse makes the mouse cursor move faster in full screen modes. Enable or disable it.
* 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.
* Doubleclick closes gumps pretty straightforward, right?
* Right click closes gumps the same but different.
* Double Right Pathfinds Double right-clicking on a spot makes the avatar walk to it.
* Gumps pause games In the original the game got paused when Gumps were shown. Enable/disable it.
* Cheats Enables or disables all the cheats that we implemented in Exult. See 5.3. Cheat keys what those cheats are.
* Speed if Exult seems too fast lower this setting. If it seems to sluggish raising this setting may help.
* Paperdolls only available in Black Gate. Enables or disable Paperdolls (inventory screen) in the style of Serpent Isle.
* OK/Cancel Ok accepts your changes, Cancel discards your changes.



6.6. 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 Jeff put in some options to make combat more interesting.
* Difficulty Ranges from Easiest (-3) to Hardest (3). It affects the chance of a hit, and the HP's lost if a hit occurs.
* ShowHits With this enabled you can see the hitpoints of NPCs in brackets after their name when you left-click on them.
* Mode 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 favourite spell.



6.7. Quit
Exits Exult.



--------------------------------------------------------------------------------

7. OS specific notes
7.1. How to get the Zaurus port working
Some people were confused where to put the Exult and U7 files and this is just a quick guide. The long guide is in the next section.
* BG and SI are expected to be installed in /mnt/cf/exult-data/bg and /mnt/cf/exult-data/si
* Exult binary is in /opt/QtPalmtop/bin/
* the data files (like exult_bg.flx) go into /opt/QtPalmtop/share/exult/
* exult.cfg is can be found as /home/root/.exult.cfg



7.2. Error Log
* MacOS/Win32: 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.
* UNIX/UNIX clones: the above mentioned logs are shown in the console from which Exult is started. ./exult >&log will send both stderr and stdout to the file named "log".




--------------------------------------------------------------------------------

8. Zaurus Guide
8.1. Author of this Guide
This file was written by Artaxerxes (Aurelien Marchand). He can be contacted at artaxerxes2 at iname dot com. Please ask if you want to send attachments no matter what their size.


8.2. Sharp Zaurus
Introduced in April 2002, this PDA is really a pico-computer (one degree of magnitude less than micro). It runs a version of Linux on the ARM processor. It is possible to use cross-compilers to create programs that will run on the Zaurus, even if compiling from a x86 machine. This is notably the case for the Zaurus port of Exult. More information about the Zaurus can be gleaned on http://www.myZaurus.com.


8.3. Zaurus SL5x00 and ROMs
Sharp occasionnally releases new versions of its ROM for Zaurus. Consider a new ROM like a new Linux distribution: new packages, new look, new kernel etc. It is possible to update the ROM thanks to information found on the Zaurus web site mentioned earlier. The current Exult package for the Zaurus is created for the stock SL-5500 ROM v2.12. It has been reported to work on the SL5000-D (the earlier and less capable version). However, it has been reported that the package will not run properly using the latest ROM (no matter what version of the Zaurus you use). More detailed information on how to fix this problem will be found further down this document.


8.4. Exult and Zaurus
Exult uses SDL for multimedia access to the computer (music and video in particular). In order to play Exult on your Zaurus, you need to install the SDL library as well as the SDL-mixer library. Do not use the stock versions found on http://www.libsdl.org. Rather, use thespecially prepared versions for Zaurus found on http://www.gnurou.org. These versions support more features and are the only tested ones.


8.5. Installing new packages
The first step to install a new package is to have the package downloaded and accessible from your Zaurus. I use a method I am comfortable with. If you have your own method and if it works, please keep using it! To copy packages on my Zaurus, I plug the cradle via USB to my Linux machine (Mandrake 8.2). I've changed the modules.usbmap file so that inserting the Zaurus on the cradle will automatically use the usbdnet module to access the Zaurus via USB-over-ethernet. Search the net to find out how. Once the connection is done, I upload the file via FTP to /mnt/cf/Documents/application/ipkg/. Then I start the add/remove package, select add new package and choose the file I just uploaded.


8.6. Using the standard ROM
If like me you still use the standard ROM, simply install the SDL, SDL-mixer and Exult packages. You will also have to transfer the U7 data files to the Zaurus. I chose to install the data files on my Compact Flash card (/mnt/cf/) on the /mnt/cf/exult-data/si/static directory. Simply copy the content of your U7's static/ dir to this dir and you'll be done. The previous example is for Serpent Isle ("si" as you can see in the file path). For Black Gate, you would put "bg" instead of "si". Only the static dir is relevant. You can copy everything if you want to but it will space for nothing.


8.7. Installing the non-required packages
Two additional packages exist and are not required. They hold the new musics for Exult and thus can be found on the Exult's download page. If you choose to install them as well, simply copy them to the Zaurus (see 5.1) and install them normally.


8.8. Using the latest ROM
As mentioned earlier, Exult won't run properly on the latest ROM (v3.10 as of 20030801). There are a few reason why. First, since I haven't installed this ROM, I cannot test it. Then, I know they have changed the default user to be "zaurus" instead of "root", which mess up the paths and the config file. Indeed, by default, Exult reads its config file on ~/.exult.cfg which gets expanded to /home/root/.exult.cfg on the default ROM but to /home/zaurus/.exult.cfg on the newest ROM. Since the package installs all user-related files to /home/root, Exult won't find them on the latest ROM. Not only ~/.exult.cfg is concerned, but also ~/.exult/ which contains the gamedat (current runing game) and the savegames. Finally, the files' owner is set to "root" so the user "zaurus" won't be able to alter files and directories.


8.9. Solving the problems with the latest ROM
In order to play, you'll have to change the location of the files installed by the package to /home/zaurus/ instead of /home/root/. I have not done this, but I expect you'd have to "su" to be able to change it. "su" is a command to become superuser (root). Not only you want to move the files ~/.exult.cfg and ~/.exult/ to /home/zaurus/ but you also want to edit the ~/.exult.cfg so that every occurence of /home/root/ is replaced with /home/zaurus. Please remember I have not done nor tested this, but here are the commands I suppose you'd have to type. First, open a terminal (install one if you don't have one).
From the terminal, verify who you are by typing ($ is the prompt): $ cd ~/ $ whoami $ pwd
The "whoami" command should return "zaurus". The "pwd" command should return "/home/zaurus/". Then copy the Exult files: $ cp /home/root/.exult* ~/ -rf
And change ownership to yourself. You might have to become root to do so: $ su # chown zaurus:zaurus /home/zaurus/.exult* -R # chown zaurus:zaurus /opt/QtPalmtop/share/exult -R # chown zaurus:zaurus /opt/QtPalmtop/bin/exult* -R # chown zaurus:zaurus /opt/QtPalmtop/pics/exult.png -R # chown zaurus:zaurus /opt/QtPalmtop/apps/Games/exult.desktop -R # exit
The # is the root's prompt. The "exit" command will stop the "su" command and make you return to the "zaurus" user. It is now time to edit the .exult.cfg. A fast way to do it: $ sed -e 's/root/zaurus/' >~/.exult.cfg ~/.exult.cfg_new $ mv ~/.exult.cfg_new ~/.exult.cfg
Normally, you should be able to start and play the game normally. Let me know if I am missing anything.


8.10. Useful tidbits
The key mappings are found in the files /opt/QtPalmtop/share/exult/keys_bg.txt and /opt/QtPalmtop/share/exult/keys_si.txt
The Application keys are mapped this way: 'Calendar' = 'F9' = inventory (like pressing 'I') 'Address Book' = 'F10' = target mode (like pressing 'T') 'Home' = 'F12' = combat mode (like pressing 'C') 'Menu Popup' = 'F11' = use all keys (like pressing 'K' or 'Alt-K') 'Email' = 'F13' = spellbook (like pressing 'B')
Save often. I have not had a crash since I'm using the latest SDL packages but you never know.
Report any problem to the Exult forum at http://exult.sf.net/forum/ or email me (see 8.1.).



--------------------------------------------------------------------------------

9. Credits and Contact
9.1. Thanks
* The people of SourceForge without whom this project would not be where it is today.
* The paper by Gary Thompson on the structure of the U7 data files was crucial to the early development of Exult.
* Work by Maxim Shatskih, Jakob Shonberg, and Wouter Dijkslag made the "usecode" interpreter possible.
* Olivier Marcoux's technical document was also crucial in understanding some data files.
* Thanks also go to the person who wrote u7items.txt and the contributor of the "avatar.ttf" font.
* Aurelien Marchand (Artaxerxes) for his extensive guide for the Zaurus.



9.2. Contacting us
You can contact the Exult team and/or get more information from: http://exult.sourceforge.net/ or http://sourceforge.net/projects/exult/