-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathdocs.html
More file actions
5337 lines (5337 loc) · 226 KB
/
docs.html
File metadata and controls
5337 lines (5337 loc) · 226 KB
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
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<!DOCTYPE html>
<html lang="en">
<!--This file is automatically generated. Do not edit!-->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta charset="utf-8">
<title>Exult - Documentation</title>
<link href="default.css" rel="stylesheet" type="text/css">
<link rel="icon" href="favicon.png" type="image/png" sizes="96x96">
<link rel="icon" href="favicon.svg" type="image/svg+xml">
<link rel="icon" href="favicon.ico" type="image/x-icon">
</head>
<body><div align="center"><table class="borderless site-width">
<tr><td class="centered"><table class="borderless full-width">
<tr><td class="centered"><div class="exult_logo"></div></td></tr>
<tr><td><br></td></tr>
<tr><td class="centered"><b><a href="index.html">Home</a>
|
<a href="download.html">Download</a>
|
<a href="docs.html">Documentation</a>
|
<a href="faq.html">FAQ</a>
|
<a href="studio.html">Studio</a>
|
<a href="screenshots.html">Screen Shots</a></b></td></tr>
<tr><td class="centered"><b><a href="dev.html">Development</a>
|
<a href="https://github.com/exult/exult/discussions">Discussion</a>
|
<a href="about.html">About Us</a>
|
<a href="letters.html">Letters</a>
|
<a href="history.html">History</a>
|
<a href="links.html">Links</a></b></td></tr>
<tr><td><br></td></tr>
</table></td></tr>
<tr><td>
<h1>Exult - Documentation
</h1>
<p>last changed:
30 January 2026 (GMT)</p>
<hr>
<p> The latest version of this document can be found
<a href="https://exult.info/docs.html">here</a></p>
<br><p><a href="#Introduction">1. Introduction</a><br><a href="#exult_version">1.1. Exult Version</a><br><a href="#whatis_exult">1.2. What is <em>Exult</em>?</a><br><a href="#terms">1.3. Terms we use in regard to Exult and Ultima VII</a><br></p>
<p><a href="#Configurations">2. Configurations</a><br><a href="#installation">2.1. Installation</a><br><a href="#exult_config_location">2.2. Location of exult.cfg</a><br><a href="#default_macos">2.3. Default game folders on macOS</a><br><a href="#default_nix">2.4. Default game folders on Linux</a><br><a href="#command_line">2.5. Command line options</a><br><a href="#error_log">2.6. Error Log</a><br></p>
<p><a href="#Exult-Setup-and-Game-Menu">3. Exult Setup and Game Menu</a><br><a href="#open_menu">3.1. Access to the <em>Exult</em> Setup and Game menu</a><br><a href="#savemenu">3.2. Load/Save Game</a><br><a href="#video_gump">3.3. Video Options</a><br><a href="#audio_gump">3.4. Audio Options</a><br><a href="#advanced_midi_gump">3.5. Advanced Audio Settings</a><br><a href="#volume_mixer_gump">3.6. Volume Mixer</a><br><a href="#game_engine_gump">3.7. Game Engine</a><br><a href="#game_display_gump">3.8. Game Display</a><br><a href="#game_input_gump">3.9. Game Input</a><br><a href="#quit_game">3.10. Quit</a><br></p>
<p><a href="#Audio">4. Audio</a><br><a href="#music">4.1. Music</a><br><a href="#midi_music">4.2. MIDI Music</a><br><a href="#limits_music">4.3. Abilities and limitations of the MIDI music engine</a><br><a href="#win32_device">4.4. Windows MIDI Mapper</a><br><a href="#coremidi_device">4.5. macOS CoreMidi device ID</a><br><a href="#digital_music">4.6. Digital Music</a><br><a href="#wave_sfx">4.7. Digital Wave Sound Effects</a><br><a href="#all_in_one_pack">4.8. All-in-One Audio Data pack and installers</a><br><a href="#digital_music_install">4.9. Installation of the digital music packs</a><br><a href="#wave_sfx_install">4.10. Installation of the digital wave sound effects</a><br><a href="#speech">4.11. Speech</a><br><a href="#audio_toggle">4.12. Toggle Audio</a><br><a href="#linux_alsa">4.13. Linux and Audio</a><br></p>
<p><a href="#Video">5. Video</a><br><a href="#resolution">5.1. Resolution</a><br><a href="#video_fill_modes">5.2. Fill modes</a><br><a href="#res_cheating">5.3. Higher resolution is cheating</a><br><a href="#scaler">5.4. Scaler</a><br></p>
<p><a href="#Movement-and-Keys">6. Movement and Keys</a><br><a href="#movement">6.1. Movement</a><br><a href="#exult_keys">6.2. Keyboard commands</a><br><a href="#exult_cheats">6.3. Cheat keys</a><br><a href="#studio_keys">6.4. Map Editing keys</a><br></p>
<p><a href="#ShortcutBar,-Notebook-and-Screenshots">7. ShortcutBar, Notebook and Screenshots</a><br><a href="#shortcutbar">7.1. ShortcutBar for single or double click actions</a><br><a href="#notebook">7.2. Using the Notebook</a><br><a href="#autonotebook">7.3. The automatic Notebook</a><br><a href="#screenshots">7.4. Screenshots</a><br></p>
<p><a href="#Mods-and-Patches">8. Mods and Patches</a><br><a href="#mods_intro">8.1. Introduction to Mods and Patches</a><br><a href="#mods_install">8.2. Installing Mods</a><br><a href="#patch_install">8.3. Installing Patches</a><br><a href="#mods_path">8.4. Adapting the location of Mods and Patches</a><br><a href="#mods_savegames_location">8.5. Where to find the savegames of modded games</a><br><a href="#mods_savegames">8.6. Exchanging Savegames between original games and Mods</a><br><a href="#mods_case_sensitivity">8.7. Problems with case sensitive file systems (e.g. Linux)</a><br></p>
<p><a href="#iOS-Guide">9. iOS Guide</a><br><a href="#ios_port">9.1. The port to iOS</a><br><a href="#ios_install">9.2. Installing Exult on your iPhone/iPad</a><br><a href="#ios_games">9.3. Installing the games on your iPhone/iPad</a><br><a href="#ios_data">9.4. Installing sfx and digital music</a><br><a href="#ios_controls">9.5. iOS controls</a><br><a href="#ios_autosave">9.6. iOS automatic saves</a><br></p>
<p><a href="#Android-Guide">10. Android Guide</a><br><a href="#android_port">10.1. The port to Android</a><br><a href="#android_install">10.2. Installing Exult on your Android</a><br><a href="#android_launcher">10.3. The Exult Launcher on Android</a><br><a href="#android_games">10.4. Installing the games on your Android</a><br><a href="#android_mods">10.5. Installing mods on Android</a><br><a href="#android_data">10.6. Installing sfx, digital music, MT32 ROMs and SoundFonts</a><br><a href="#android_controls">10.7. Android controls</a><br><a href="#android_autosave">10.8. Android automatic saves</a><br><a href="#android_file_storage">10.9. Android File Storage and Savegames</a><br></p>
<p><a href="#The-exult.cfg-file">11. The exult.cfg file</a><br><a href="#exult_config">11.1. Settings in exult.cfg</a><br><a href="#path_config">11.2. Path-Settings</a><br><a href="#path_config_nt5">11.3. Path-Settings for Windows</a><br><a href="#path_config_osx">11.4. Path-Settings for macOS</a><br><a href="#path_config_nix">11.5. Path-Settings for Linux/Unix systems</a><br><a href="#advanced_config">11.6. Advanced Configuration: Using both the original and the Add-Ons</a><br></p>
<p><a href="#Installing-the-original-Ultima-VII-games-for-use-with-Exult">12. Installing the original Ultima VII games for use with Exult</a><br><a href="#gog_windows">12.1. Using GOG.com's installer for Windows</a><br><a href="#gog_mac">12.2. Using GOG.com's installer for macOS</a><br><a href="#cdrom_install">12.3. Installing the CD-ROM versions of Ultima VII</a><br><a href="#dosbox_floppy">12.4. Installing the floppy disks of BG/SI using DOSBox</a><br><a href="#dosbox_addons">12.5. Installing the floppy disks of the Add-Ons FoV/SS using DOSBox</a><br><a href="#bg_manual">12.6. Manual installation of the BG floppy disks</a><br><a href="#si_manual">12.7. Manual installation of the SI floppy disks</a><br><a href="#win32_floppy">12.8. Installing the floppy disks of BG/SI on Windows</a><br><a href="#win32_addons">12.9. Installing the floppy disks of the Add-Ons FoV/SS on Windows</a><br><a href="#files_note">12.10. Exult only needs one folder</a><br></p>
<p><a href="#Credits-and-Contact">13. Credits and Contact</a><br><a href="#thanks">13.1. Thanks</a><br><a href="#contact">13.2. Contacting us</a><br></p>
<p><a href="#Changes-to-the-Documentation">14. Changes to the Documentation</a><br><a href="#30012026">14.1. - 30 January 2026</a><br><a href="#13012026">14.2. - 13 January 2026</a><br><a href="#15042025">14.3. - 16 April 2025</a><br><a href="#20032025">14.4. - 20 March 2025</a><br><a href="#19012025">14.5. - 19 January 2025</a><br><a href="#06012025">14.6. - 06 January 2025</a><br><a href="#03072024">14.7. - 03 July 2024</a><br><a href="#25042024">14.8. - 25 April 2024</a><br><a href="#23042024">14.9. - 23 April 2024</a><br><a href="#older_changes">14.10. older changes</a><br></p>
<hr class="full-width">
<table class="full-width">
<tr><th class="left-aligned"><a id="Introduction">1. Introduction</a></th></tr>
<tr><td> </td></tr>
<tr><td><strong><a id="exult_version">1.1. Exult Version</a></strong></td></tr>
<tr><td>
<p>
This documentation is for the snapshot version of <em>Exult</em>.
If you have another <em>Exult</em> version, its documentation can be found where you installed the release.
</p>
</td></tr>
<tr><td> </td></tr>
<tr><td><strong><a id="whatis_exult">1.2. What is <em>Exult</em>?</a></strong></td></tr>
<tr><td>
<p>
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. <em>Exult</em> 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.
</p>
<p>
<em>Exult</em> 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.
</p>
<p>
<em>Exult</em> 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 <strong>own</strong>
"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 <em>Exult</em>,
and we encourage you to buy a legal copy.
</p>
</td></tr>
<tr><td> </td></tr>
<tr><td><strong><a id="terms">1.3. Terms we use in regard to Exult and Ultima VII</a></strong></td></tr>
<tr><td>
<p>
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.
</p>
<ul>
<li>
<strong>BG</strong>, <strong>SI</strong>, <strong>FoV</strong>
or <strong>SS</strong>:<br>
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.</li>
<li>
<strong>eggs</strong>:<br>
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.</li>
<li>
<strong>flex files</strong>:<br>
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
<a href="#exult_config">11.1.</a>) our savegames are also 'flexed'.</li>
<li>
<strong>gumps</strong>:<br>
the windows used in the game interface for containers, characters, menus, etc..</li>
<li>
<strong>paperdoll</strong>:<br>
when pressing '<span class="highlight">i</span>' 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 <a href="faq.html#improvements">FAQ</a>).</li>
<li>
<strong>shapes</strong>:<br>
shape files are the format used for storage of all graphics elements (from UI buttons
to terrain features) of the games <em>Exult</em> supports. Shapes may contain one or more
frames (a frame is a single image).</li>
<li>
<strong>snapshot</strong>:<br>
see <a href="faq.html#whatis_snapshot">FAQ</a>.<br>
Please note that our documentation usually refers to the latest snapshot.</li>
<li>
<strong>usecode</strong>:<br>
that's the scripting language that drives all of Ultima VII (conversations, objects...).</li>
<li>
<strong>Exult data folder</strong>:<br>
that's the folder where <em>Exult</em> stores its data files (exult.flx, exult_bg.flx and
exult_si.flx).</li>
<li>
<strong>gamename</strong><br>
name of games that are set in exult.cfg's <game>, <em>Exult</em> knows by default
the gamenames <b><i><span style="font-size: larger">blackgate</span></i></b>, <b><i><span style="font-size: larger">forgeofvirtue</span></i></b>, <b><i><span style="font-size: larger">serpentisle</span></i></b>,
<b><i><span style="font-size: larger">silverseed</span></i></b> and <b><i><span style="font-size: larger">serpentbeta</span></i></b>.</li>
</ul>
</td></tr>
</table>
<hr class="full-width">
<table class="full-width">
<tr><th class="left-aligned"><a id="Configurations">2. Configurations</a></th></tr>
<tr><td> </td></tr>
<tr><td><strong><a id="installation">2.1. Installation</a></strong></td></tr>
<tr><td>
<ul>
<li>First you need to get Ultima VII. Either you own it already, or
you buy it somewhere.</li>
<li>You need an installed version of Ultima VII to run <em>Exult</em> with.
At <a href="#Installing-the-original-Ultima-VII-games-for-use-with-Exult">12. Installing the original Ultima VII games for use with Exult</a>
we have a guide on how to install the original games or use the version offered by GOG.com.</li>
<li>Download <em>Exult</em> from our
<a href="https://exult.info/download.html">download page</a>
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.</li>
<li>Now run <strong>exult</strong> (<strong>exult.exe</strong> on Windows)
and quit it immediately.</li>
<li>Edit the configuration file with a text editor (e.g. on Windows use Notepad)
and enter the correct paths for the game folders - see <a href="#exult_config">11.1.</a>
for details</li>
<li>Run <strong>exult</strong> and enjoy the game :-)</li>
</ul>
<p>
<strong>Word of advice:</strong> Don't mix the files from BG and SI.
</p>
<p>
The installation instructions for <strong>iOS</strong> and <strong>Android</strong> are in their own sections:<br>
<a href="#ios_install">9.2. Installing Exult on your iPhone/iPad</a> and <a href="#android_install">10.2. Installing Exult on your Android</a>.
</p>
</td></tr>
<tr><td> </td></tr>
<tr><td><strong><a id="exult_config_location">2.2. Location of exult.cfg</a></strong></td></tr>
<tr><td>
<p>
Most of the options in <em>Exult</em> can be changed from the <strong>Setup</strong>
menu when you run <em>Exult</em> or via the Game Options menu. <em>Exult</em> 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.<br>
However if you need to edit the configuration file, it is extensively explained
in <a href="#The-exult.cfg-file">11. The exult.cfg file</a>.
</p>
<p>
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.
</p>
<ul>
<li>On Linux systems you can expect to find it in <span class="highlight"><kbd>$HOME/.exult.cfg</kbd></span>, or
in <span class="highlight"><kbd>$HOME/.var/apps/info.exult.exult/config/exult.cfg</kbd></span> if using the
<a href="https://flathub.org/apps/info.exult.exult">Flatpak package</a>
</li>
<li>macOS saves it to <span class="highlight"><kbd>~/Library/Preferences/exult.cfg</kbd></span>
</li>
<li>Windows (7, 8, 10, 11) save exult.cfg to <span class="highlight"><kbd>LOCAL_APPDATA\Exult</kbd></span>,
but on these this translates to <span class="highlight"><kbd>C:\Users\YourUsername\AppData\Local\Exult</kbd></span>
</li>
<li>On all supported Windows versions you can quickly access this folder by executing<br>
<span class="highlight"><kbd>shell:Local AppData\Exult</kbd></span><br>
in the 'Quick Access' of Explorer.</li>
</ul>
</td></tr>
<tr><td> </td></tr>
<tr><td><strong><a id="default_macos">2.3. Default game folders on macOS</a></strong></td></tr>
<tr><td>
<p>
On macOS <em>Exult</em> uses a couple of different folders to follow Apple's guidelines:
</p>
<p>
Note that on macOS <em>Exult</em> looks in a default folder (<span class="highlight"><kbd>/Library/Application Support/Exult/data</kbd></span>)
for <em>Exult</em>'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.<br>
<strong>But</strong> you will need to follow our gamename standard when you name the game
folders, see <a href="#terms">1.3. Terms we use in regard to Exult and Ultima VII</a>, otherwise <em>Exult</em> will not find them there.<br>
Another specialty on macOS is that the Exult.app comes bundled with the <em>Exult</em> data, so
<em>Exult</em> 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 <data_path>.<br>
This means that you can copy the sfx files and the digital music folder into the app bundle
(<span class="highlight"><kbd>Exult.app/Contents/Resources/data</kbd></span>) and <em>Exult</em> will automatically use these.
</p>
<p>
Example: User named <strong>FooBar</strong> on <strong>macOS 14</strong>. BG is installed to
<span class="highlight"><kbd>/Library/Application Support/Exult/blackgate</kbd></span> and SI is installed to
<span class="highlight"><kbd>/Library/Application Support/Exult/serpentisle</kbd></span>.<br>
The app Exult.app is saved to <span class="highlight"><kbd>/Applications</kbd></span>. When you run <em>Exult</em> it will automatically
recognize that BG and SI are installed. You do not need to edit exult.cfg, which is saved
to <span class="highlight"><kbd>/Users/FooBar/Library/Preferences/exult.cfg</kbd></span>.<br>
When you save a game in BG the savegame will be saved to
<span class="highlight"><kbd>/Users/FooBar/Library/Application Support/exult/blackgate/</kbd></span>,
for SI to <span class="highlight"><kbd>Users/FooBar/Library/Application Support/exult/serpentisle/</kbd></span>.<br>
If you install for example the keyring mod, you copy the contents of the Keyring.zip to
<span class="highlight"><kbd>/Library/Application Support/Exult/blackgate/mods</kbd></span>. When you save a game with the
Keyring mod, this savegame will be found in
<span class="highlight"><kbd>/Users/FooBar/Library/Application Support/exult/blackgate/mods/keyring/</kbd></span>.
</p>
<p>
Please be aware of the difference between <span class="highlight"><kbd>/Library/...</kbd></span> and <span class="highlight"><kbd>~/Library/...</kbd></span>.<br>
In the root of your macOS system hard drive is the folder <span class="highlight"><kbd>/Library</kbd></span>. The folder
<span class="highlight"><kbd>~/Library</kbd></span> is a sub folder of your home folder. If your username is foobar then the folder
<span class="highlight"><kbd>~/Library</kbd></span> is located at <span class="highlight"><kbd>/Users/foobar/Library</kbd></span> on your hard drive.<br>
On macOS the folder <span class="highlight"><kbd>~/Library</kbd></span> is hidden by default. To access it open Finder,
click on the menu item 'Go' while pressing '<span class="highlight">Option/Alt</span>' and 'Library' will be an option
to click on.
</p>
<p>
If you followed all the instructions and <em>Exult</em> still won't recognize the games, you can try
deleting exult.cfg in <span class="highlight"><kbd>~/Library/Preferences</kbd></span> and then start <em>Exult</em> to generate
a new cfg file.
</p>
<p>
At <a href="#path_config_osx">11.4. Path-Settings for macOS</a> you can see an exult.cfg example with the macOS defaults.
</p>
</td></tr>
<tr><td> </td></tr>
<tr><td><strong><a id="default_nix">2.4. Default game folders on Linux</a></strong></td></tr>
<tr><td>
<p>
As on macOS, <em>Exult</em> uses a default path on Linux systems for its data folder and the game files.
Unless you configure custom paths in <span class="highlight"><kbd>exult.cfg</kbd></span>, <em>Exult</em> will automatically look for
the game data files in <span class="highlight"><kbd>/usr/local/share/exult</kbd></span>, or in the case of the the
<a href="https://flathub.org/apps/info.exult.exult">Flatpak package</a>, in
<span class="highlight"><kbd>$HOME/.var/app/info.exult.exult/data/</kbd></span>.<br>
<strong>But</strong> you will need to follow our gamename standard when you name the game
folders, see <a href="#terms">1.3. Terms we use in regard to Exult and Ultima VII</a>, otherwise <em>Exult</em> will not find them there.
</p>
<p>
Example: User named <strong>FooBar</strong> on <strong>Ubuntu</strong>. BG is installed to
<span class="highlight"><kbd>/usr/local/share/exult/blackgate</kbd></span> and SI is installed to
<span class="highlight"><kbd>/usr/local/share/exult/serpentisle</kbd></span>.
When you run <em>Exult</em> it will automatically recognize that BG and SI are installed. You do not
need to edit exult.cfg, which is saved to <span class="highlight"><kbd>$HOME/.exult.cfg</kbd></span>.<br>
When you save a game in BG the savegame will be saved to <span class="highlight"><kbd>$HOME/.exult/blackgate/</kbd></span>,
for SI to <span class="highlight"><kbd>$HOME/.exult/serpentisle/</kbd></span>.<br>
If you install for example the keyring mod, you copy the contents of the Keyring.zip to
<span class="highlight"><kbd>/usr/local/share/Exult/blackgate/mods</kbd></span>. When you save a game with the Keyring mod,
this savegame will be found in <span class="highlight"><kbd>$HOME/.exult/blackgate/mods/keyring/</kbd></span>.
</p>
<p>
At <a href="#path_config_nix">11.5. Path-Settings for Linux/Unix systems</a> you can see an exult.cfg example with the Linux defaults.
</p>
</td></tr>
<tr><td> </td></tr>
<tr><td><strong><a id="command_line">2.5. Command line options</a></strong></td></tr>
<tr><td>
<p>
<em>Exult</em> offers some command line options:
</p>
<ul>
<li>'<span class="highlight">-h</span>' or '<span class="highlight">--help</span>'<br>
Shows all the command line parameters in stderr (stderr.txt on Windows systems).</li>
<li>'<span class="highlight">-v</span>' or '<span class="highlight">--version</span>'<br>
Shows version information in stderr.</li>
<li>'<span class="highlight">-c configfile</span>'<br>
Specify alternate config file (relative or absolute paths work).</li>
<li>'<span class="highlight">-p</span>'<br>
Portable option for Windows only. <em>Exult</em> 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 <a href="#terms">1.3.</a>).<br>
For example if <em>Exult</em> got installed to <span class="highlight"><kbd>E:\Exult</kbd></span>, a BG game will be expected
to be in <span class="highlight"><kbd>E:\Exult\blackgate</kbd></span>. Savegames will also be saved in these folders.<br>
Be careful that you have actually writing permissions in the <em>Exult</em> folder or
this will fail.</li>
<li>'<span class="highlight">--bg</span>'<br>
Starts the game with the Black Gate menu (prefers original game).</li>
<li>'<span class="highlight">--fov</span>'<br>
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 <a href="#advanced_config">11.6.</a>,
otherwise it will just work like the command '<span class="highlight">--bg</span>'.</li>
<li>'<span class="highlight">--si</span>'<br>
Starts the game with the Serpent Isle menu (prefers original game).</li>
<li>'<span class="highlight">--ss</span>'<br>
Starts the game with the menu of the Serpent Isle with Silver Seed expansion.
Only useful if you have SS added as described at <a href="#advanced_config">11.6.</a>,
otherwise it will just work like the command '<span class="highlight">--si</span>'.</li>
<li>'<span class="highlight">--sib</span>'<br>
Starts the game with the menu of the Serpent Isle beta version.</li>
<li>'<span class="highlight">--nomenu</span>'<br>
Skips game menu.</li>
<li>'<span class="highlight">--game gamename</span>'<br>
Loads a game specified in exult.cfg when there are other games made
with <em>Exult Studio</em>.</li>
<li>'<span class="highlight">--mod modname</span>'<br>
Must be used together with '<span class="highlight">--bg</span>', '<span class="highlight">--si</span>', '<span class="highlight">--fov</span>',
'<span class="highlight">--ss</span>', '<span class="highlight">--sib</span>' or '<span class="highlight">--game gamename</span>'; runs the specified
game using the mod with title equal to '<span class="highlight">modname</span>'. '<span class="highlight">modname</span>' is the
name of the mod cfg file (e.g. keyring.cfg means 'modname' is 'keyring'.</li>
<li>'<span class="highlight">--buildmap x</span>'<br>
x = 0 shows all roofs, x = 2 pops them all.<br>
Makes 144 2048x2048 pixels screenshots of the game map which you will need to piece
together. The screenshots are numbered according to the
<a href="exult_studio.html#ifix_iregs">ifix/ireg map</a>.<br>
By default the screenshots are PNG files. In the unlikely case that <em>Exult</em> was compiled
without libpng support, buildmap will output PCX files.<br>
<em>Exult</em> 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.<br>
You need to specify a game, either by '<span class="highlight">--bg</span>' (or '<span class="highlight">--si</span>',
'<span class="highlight">--fov</span>', '<span class="highlight">--ss</span>', '<span class="highlight">--sib</span>') or with the
'<span class="highlight">--game</span>'/'<span class="highlight">--mod</span>' option.</li>
<li>'<span class="highlight">--mapnum</span>'<br>
This must be used with '<span class="highlight">--buildmap</span>' to select a map in multimap games or mods.</li>
<li>'<span class="highlight">--nocrc</span>'<br>
<em>Exult</em> 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 <em>Exult</em>.</li>
<li>'<span class="highlight">--verify-files</span>'<br>
Verifies that the files in static dir are not corrupt.<br>
Only valid if used together with '<span class="highlight">--bg</span>', '<span class="highlight">--si</span>', '<span class="highlight">--fov</span>',
'<span class="highlight">--ss</span>', '<span class="highlight">--sib</span>' or '<span class="highlight">--game gamename</span>'; you cannot specify a mod with this flag.</li>
<li>'<span class="highlight">--edit</span>'<br>
Start in map-edit mode. This will also load <em>Exult Studio</em> when the game is started.</li>
<li>'<span class="highlight">--write-xml</span>'<br>
Write <span class="highlight"><kbd>patch/exultgame.xml</kbd></span>. Only useful for game editing.</li>
<li>'<span class="highlight">--reset-video</span>'<br>
resets <em>Exult</em>'s video settings to the default values. Very helpful when <em>Exult</em>
isn't playable anymore because of wrong settings.</li>
</ul>
</td></tr>
<tr><td> </td></tr>
<tr><td><strong><a id="error_log">2.6. Error Log</a></strong></td></tr>
<tr><td>
<ul>
<li>
<strong>Windows:</strong><br>
<em>Exult</em> generates the files <span class="highlight"><kbd>stdout.txt</kbd></span> and <span class="highlight"><kbd>stderr.txt</kbd></span>.
These may give you some idea of what is going on
under the hood. When <em>Exult</em> suddenly quits, sometimes
these files can help.<br>
You can find these files in the folder where exult.cfg is
located (see <a href="#exult_config_location">2.2.</a>)</li>
<li>
<strong>Linux/UNIX:</strong><br>
the above mentioned logs are shown in the console from which <em>Exult</em>
is started.<br>
<span class="highlight"><kbd>./exult >&$HOME/exult_log.txt</kbd></span><br>
will send both stderr and stdout to the file named <span class="highlight"><kbd>exult_log.txt</kbd></span>
in your <span class="highlight"><kbd>$HOME</kbd></span> folder.</li>
<li>
<strong>macOS:</strong><br>
Similar to Linux, you need to start <em>Exult</em> from the Terminal.app to see the
logs or redirect them to a text file. Use <br>
<span class="highlight"><kbd>/Applications/Exult.app/Contents/MacOS/exult >&$HOME/exult_log.txt</kbd></span><br>
to find the file named <span class="highlight"><kbd>exult_log.txt</kbd></span> in your <span class="highlight"><kbd>$HOME</kbd></span> folder.</li>
</ul>
</td></tr>
</table>
<hr class="full-width">
<table class="full-width">
<tr><th class="left-aligned"><a id="Exult-Setup-and-Game-Menu">3. Exult Setup and Game Menu</a></th></tr>
<tr><td> </td></tr>
<tr><td><strong><a id="open_menu">3.1. Access to the <em>Exult</em> Setup and Game menu</a></strong></td></tr>
<tr><td>
<p>
The <em>Exult</em> 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.
</p>
<p>
<em>Exult</em> Setup can only be opened on the <em>Exult</em> menu by selecting the 'Setup' option.<br>
And you can access the Game menu either by pressing the disk icon in the Avatar's
inventory screen or by pressing '<span class="highlight">ESC</span>'.<br>
The following options are available for the <em>Exult</em> Setup menu and the Game menu:
</p>
<p>
<img alt="the Game menu" src="images/docs01.png">
</p>
<p>
There is a HELP button on most options that will open your default browser at the
online version of this documentation.
</p>
</td></tr>
<tr><td> </td></tr>
<tr><td><strong><a id="savemenu">3.2. Load/Save Game</a></strong></td></tr>
<tr><td>
<p>
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).<br>
If you have a wheel mouse you can scroll one line up/down by using the wheel. Pressing
'<span class="highlight">Alt</span>' while using the wheel scrolls by pages.<br>
Pressing <strong>Cancel</strong> exits the Load/Save options.<br>
This is only available in game through the Game menu.
</p>
<p>
<img alt="saving/loading a game" src="images/docs02.png">
</p>
</td></tr>
<tr><td> </td></tr>
<tr><td><strong><a id="video_gump">3.3. Video Options</a></strong></td></tr>
<tr><td>
<p>
In this option screen you are able to determine how <em>Exult</em> displays the game.
</p>
<p>
<img alt="Video Options" src="images/docs03.png">
</p>
<ul>
<li>
<strong>Full Screen</strong><br>
enable or disable running <em>Exult</em> in full screen.</li>
<li>
<strong>Window Size</strong><br>
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 <a href="#exult_config">11.1. Settings in exult.cfg</a>.</li>
<li>
<strong>Scaler</strong><br>
lets you choose your favorite scaling engine. Also look at <a href="#scaler">5.4. Scaler</a>
for an explanation.</li>
<li>
<strong>Scaling</strong><br>
choose between 1x up to 8x. Further explanation in <a href="#scaler">5.4. Scaler</a>.<br>
For scalers that have a default only scaling (e.g. 2xSaI) this option will be hidden.</li>
<li>
<strong>Game Area</strong><br>
the size of your game viewing area in the <em>Exult</em> 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.</li>
<li>
<strong>Fill Quality</strong><br>
the scaler used by the different fill modes. You can chose between Point and Bilinear.</li>
<li>
<strong>Fill Mode</strong><br>
Different modes on how to display the Game Area in the <em>Exult</em> window size.
Please see <a href="#video_fill_modes">5.2. Fill modes</a>.</li>
<li>
<strong>AR Correction</strong><br>
Aspect Ratio Correction for the fill modes 'Fit' and 'Centre'.</li>
<li>
<strong>Same setting for window and fullscreen</strong><br>
When you disable this you can select different settings for window and fullscreen mode by changing
the settings while being in either mode.</li>
<li>
<strong>APPLY/HELP/CANCEL</strong><br>
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.</li>
</ul>
</td></tr>
<tr><td> </td></tr>
<tr><td><strong><a id="audio_gump">3.4. Audio Options</a></strong></td></tr>
<tr><td>
<p>
Look at <a href="#Audio">4. Audio</a> to see explanation on the settings.
</p>
<p>
<img alt="Audio Options" src="images/docs04.png">
</p>
<ul>
<li>
<strong>Volume Mixer</strong><br>
opens our Volume Mixer, see see <a href="#volume_mixer_gump">3.6.</a>.</li>
<li>
<strong>Audio</strong><br>
Enable or disable all Audio in <em>Exult</em>.</li>
<li>
<strong>sample rate</strong><br>
changes the sample rate between 11025 and 48000.</li>
<li>
<strong>speaker type</strong><br>
toggle between mono and stereo.</li>
<li>
<strong>Music</strong><br>
Enable or disable music.</li>
<li>
<strong>looping</strong><br>
Toggles several ways the music can loop, see <a href="#music">4.1. Music</a>.</li>
<li>
<strong>digital music</strong><br>
Enables/disables Digital Music.</li>
<li>
<strong>MIDI driver</strong><br>
choose between different drivers for MIDI, see <a href="#midi_music">4.2.</a>.</li>
<li>
<strong>device type</strong><br>
choose between different device types for MIDI music, see <a href="#midi_music">4.2.</a>.</li>
<li>
<strong>effects</strong><br>
alters the way the MIDI is played. Choose between Reverb, Chorus,
Both (Reverb and Chorus) or disable it.</li>
<li>
<strong>SFX</strong><br>
Enable or disable digital sound effects.</li>
<li>
<strong>Pack</strong><br>
choose between our standard SFX packs, Roland MT32 and Soundblaster, see <a href="#wave_sfx">4.7.</a>.
This option is not available in the <em>Exult</em> Setup.</li>
<li>
<strong>Speech</strong><br>
Options on whether you hear the voices of the Guardian or the Great Earth Serpent, also toggles subtitles.</li>
<li>
<strong>APPLY/HELP/CANCEL</strong><br>
Applies your changes without closing the Audio Options. If you don't want to apply your changes,
click CANCEL.</li>
</ul>
</td></tr>
<tr><td> </td></tr>
<tr><td><strong><a id="advanced_midi_gump">3.5. Advanced Audio Settings</a></strong></td></tr>
<tr><td>
<p>
Some MIDI drivers additional settings that can be accessed via the button
<strong>SETTINGS</strong> of the Audio Options.<br>
Most allow setting the MIDI conversion, reverb and chorus, but for some drivers that are
able to make use of custom soundfonts, are able to select one.
</p>
<p>
<img alt="Advanced Audio Settings Windows" src="images/docs10.png">
</p>
<p>
FluidSynth allows stacking soundfonts (see <a href="#midi_music">4.2. MIDI Music</a>) and you can
select a different one for each of the 10 slots.
</p>
<p>
<img alt="Advanced Audio Settings FluidSynth" src="images/docs11.png">
</p>
</td></tr>
<tr><td> </td></tr>
<tr><td><strong><a id="volume_mixer_gump">3.6. Volume Mixer</a></strong></td></tr>
<tr><td>
<p>
Our Volume Mixer allows changing the volume of music, sfx and speech independently.
Our different midi drivers each save their own volume.
</p>
<p>
<img alt="Volume Mixer" src="images/docs08.png">
</p>
<p>
When you have enabled digital music <strong>and</strong> and another midi driver you can set
both volumes for music.
</p>
<p>
<img alt="Volume Mixer" src="images/docs09.png">
</p>
</td></tr>
<tr><td> </td></tr>
<tr><td><strong><a id="game_engine_gump">3.7. Game Engine</a></strong></td></tr>
<tr><td>
<p>
<img alt="Game Engine" src="images/docs05.png">
</p>
<ul>
<li>
<strong>Take automatic Notes</strong><br>
Toggle writing automatic notes to the notebook - see <a href="#autonotebook">7.3. The automatic Notebook</a>.</li>
<li>
<strong>Gumps pause games</strong><br>
In the original the game got paused when Gumps were shown. Enable/disable it.</li>
<li>
<strong>Alternative drag and drop</strong><br>
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 '<span class="highlight">Ctrl</span>' while dropping
if you need to split a stack.</li>
<li>
<strong>Speed</strong><br>
if <em>Exult</em> seems too fast lower this setting. If it seems to sluggish raising
this setting may help.</li>
<li>
<strong>Combat options</strong><br>
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:</li>
<li>
<strong>Combat Show Hits</strong><br>
With this enabled you can see the hit points of NPCs in brackets after their name when
you left-click on them.</li>
<li>
<strong>Combat paused with Space</strong><br>
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.</li>
<li>
<strong>Combat Charmed difficulty</strong><br>
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.<br>
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.</li>
<li>
<strong>Combat Difficulty</strong><br>
Ranges from Easiest (-3) to Hardest (3). It affects the chance of a hit, and
the HP that is lost if a hit occurs.</li>
<li>
<strong>Enhancements</strong><br>
Enables or disables some enhancements over the original game. Currently it adds some more
light sources (laboratory burner, stove, heated sword blanks and more) and that ringing a
store bell makes the NPC tending the store come up to the Avatar.</li>
<li>
<strong>Cheats</strong><br>
Enables or disables all the cheats that we implemented in <em>Exult</em>.
See <a href="#exult_cheats">6.3. Cheat keys</a> what those cheats are.</li>
<li>
<strong>Feeding</strong><br>
Only available with enabled cheats it allows to disable need for feeding the party completely
or setting it to automatically feed with food in the party.</li>
</ul>
</td></tr>
<tr><td> </td></tr>
<tr><td><strong><a id="game_display_gump">3.8. Game Display</a></strong></td></tr>
<tr><td>
<p>
<img alt="Game Display" src="images/docs06.png">
</p>
<ul>
<li>
<strong>Status Bars</strong><br>
You can either disable the status bars or choose its position on
the bottom of the screen (left, middle, right).</li>
<li>
<strong>Use ShortcutBar</strong><br>
Toggle the ShortcutBar or make it transparent when on the map -
see <a href="#shortcutbar">7.1. ShortcutBar for single or double click actions</a>.</li>
<li>
<strong>Use outline color</strong><br>
Choose a the color of the outline around the ShortcutBar buttons or disable it - see
<a href="#shortcutbar">7.1. ShortcutBar for single or double click actions</a>.</li>
<li>
<strong>Hide missing items</strong><br>
hides ShortcutBar items the party doesn't have, otherwise missing items are greyed out -
see <a href="#shortcutbar">7.1. ShortcutBar for single or double click actions</a>.</li>
<li>
<strong>Text Background</strong><br>
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.</li>
<li>
<strong>Smooth scrolling</strong><br>
Disabled/25%/50%/75%/100% percentage of how smooth the game scrolls when the avatar
moves. When disabled <em>Exult</em> uses the 'jerky' scrolling of the original game.</li>
<li>
<strong>Skip intro</strong><br>
When enabled you don't have to watch the splash screen and intro when you select a game
from the <em>Exult</em> menu.</li>
<li>
<strong>Skip scripted first scene</strong><br>
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.</li>
<li>
<strong>Paperdolls</strong><br>
only available in <strong>Black Gate</strong> and only if you have
<strong>Serpent Isle</strong> installed as well. Enables or disable Paperdolls
(inventory screen) in the style of <strong>Serpent Isle</strong>.</li>
<li>
<strong>Use extended SI intro</strong><br>
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.</li>
<li>
<strong>Language</strong><br>
We added the possibility to translate <em>Exult</em> to another language and this sets
it for all of <em>Exult</em> and the game messages.</li>
<li>
<strong>Built-in fonts</strong><br>
Built in fonts provide the original (fraktur like) fonts as well as a serif one that
some people prefer over the harder to read original.<br>
Additionally both fonts provide special characters needed for French, Spanish and
German for the above localization option.<br>
However the built in fonts clash with old unofficial translations of the games and
possibly other mods and patches. In this case disable the built-in fonts</li>
</ul>
</td></tr>
<tr><td> </td></tr>
<tr><td><strong><a id="game_input_gump">3.9. Game Input</a></strong></td></tr>
<tr><td>
<p>
<img alt="Game Input" src="images/docs07.png">
</p>
<ul>
<li>
<strong>Doubleclick closes gumps</strong><br>
pretty straightforward, right?</li>
<li>
<strong>Right click closes gumps</strong><br>
the same but different.</li>
<li>
<strong>Pathfind with Right Click</strong><br>
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.</li>
<li>
<strong>Scroll game view with mouse</strong><br>
When cheats are enabled you can scroll the game view with the scroll wheel of the mouse,
when you hold down the '<span class="highlight">Alt</span>' you will scroll sideways (to the west or to the east).</li>
<li>
<strong>Use middle mouse button</strong><br>
In the normal game, the middle mouse button activates the target-function
(which could also be accomplished by pressing '<span class="highlight">t</span>'). 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.</li>
<li>
<strong>Fullscreen Fast Mouse</strong><br>
makes the mouse cursor move faster in full screen modes. Enable or disable it.</li>
<li>
<strong>Item helper menu</strong><br>
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 and android enabled by default.</li>
<li>
<strong>D-Pad screen location</strong><br>
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 and Android.</li>
<li>
<strong>Pathfind with Long touch</strong><br>
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 and Android..</li>
</ul>
</td></tr>
<tr><td> </td></tr>
<tr><td><strong><a id="quit_game">3.10. Quit</a></strong></td></tr>
<tr><td>
<p>
Exits <em>Exult</em>. This option is only available in the in-game menu.<br>
On iOS and Android this is not available (both don't allow you to quit apps directly).
</p>
</td></tr>
</table>
<hr class="full-width">
<table class="full-width">
<tr><th class="left-aligned"><a id="Audio">4. Audio</a></th></tr>
<tr><td> </td></tr>
<tr><td><strong><a id="music">4.1. Music</a></strong></td></tr>
<tr><td>
<p>
There are three general ways that music is played in <em>Exult</em>. One is using MIDI, which
plays the music through any MIDI device, software synthesizers (TiMidity,FluidSynth) or
even MIDI device emulators like Munt MT-32 Emulator (or <em>Exult</em>'s built-in MT32Emu).
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.<br>
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.
</p>
<p>
The Music driver options can be changed in the in-game menu that you open by hitting
'<span class="highlight">ESC</span>'.<br>
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.
</p>
<p>
<em>Exult</em> allows changing of how the games' music loops.
</p>
<ul>
<li>
<strong>never</strong><br>
disables music looping entirely.</li>
<li>
<strong>endless</strong><br>
lopping music will not stop until a new music piece is being played.</li>
<li>
<strong>auto</strong><br>
Music will loop but music started by a jukebox egg will stop looping when the avatar
is too far away. The music will play through to the end of the track.</li>
<li>
<strong>limited</strong><br>
same as auto but music will immediately stop when too far from the egg instead of
playing through to the end.</li>
</ul>
</td></tr>
<tr><td> </td></tr>
<tr><td><strong><a id="midi_music">4.2. MIDI Music</a></strong></td></tr>
<tr><td>
<p>
The MIDI driver can be changed to:
</p>
<ul>
<li>
<strong>Default</strong><br>
This setting utilizes the FMOpl driver.</li>
<li>
<strong>FMOPL</strong><br>
This is a Software FM Synthesizer (also known as a emulated Opl2/Adlib).</li>
<li>
<strong>TiMidity</strong><br>
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 <em>Exult</em> executable is installed to, otherwise TiMidity
will not work. On linux systems it needs to be in ~/.exult.</li>
<li>
<strong>FluidSynth</strong><br>
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 in contrast
to TiMidity still actively developed.<br>
To use FluidSynth you just need to copy a Soundfont file into the data and select it in the
<a href="#advanced_midi_gump">3.5. Advanced Audio Settings</a>.<br>
<em>Exult</em> supports FluidSynth's SoundFont stack. SoundFonts can be selected in the
<a href="#advanced_midi_gump">3.5. Advanced Audio Settings</a>.<br>
<a href="https://www.fluidsynth.org/api/LoadingSoundfonts.html">FluidSynth Documentation:</a>
<span class="highlight"><kbd>The loaded SoundFonts are treated as a stack, where each new loaded SoundFont is
placed at the top of the stack. When selecting presets by bank and program numbers,
SoundFonts are searched beginning at the top of the stack. In the case where there are
presets in different SoundFonts with identical bank and program numbers, the preset from
the most recently loaded SoundFont is used.</kbd></span><br>
As a lightweight alternative to FluidSynth, <em>Exult</em> can be compiled against
<a href="https://github.com/divideconcept/FluidLite">FluidLite</a>.</li>
<li>
<strong>MT32Emu</strong><br>
Roland MT32 emulation requires either the ROM set 'MT32_CONTROL.ROM' and 'MT32_PCM.ROM' or
the ROM set 'CM32L_CONTROL.ROM' and 'CM32L_PCM.ROM' in the <em>Exult</em> data folder.
If both sets are present the CM32L ROM-set will be used.<br>
On case sensitive Operating Systems these files have to be saved in uppercase.<br>
For the <a href="https://flathub.org/apps/info.exult.exult">Flatpak package</a>
on Linux, these should be stored in <span class="highlight"><kbd>$HOME/.var/app/info.exult.exult/data/mt32emu/</kbd></span>.</li>
<li>
<strong>Windows</strong><br>
Using the Windows MIDI driver.</li>
<li>
<strong>CoreAudio</strong><br>
uses XMIDI on macOS and iOS. You can use a different SoundFont than macOS' default by copying a
Soundfont file into the data and select it in the <a href="#advanced_midi_gump">3.5. Advanced Audio Settings</a>.<br>
On iOS there is no default SoundFont thus you have to provide one yourself.</li>
<li>
<strong>CoreMIDI</strong><br>
on macOS this MIDI driver allows using a real MIDI device like a Roland MT32 or software
MIDI devices like Munt MT-32 Emulator. If you have more than one MIDI device you can choose the
the device in the <a href="#advanced_midi_gump">3.5. Advanced Audio Settings</a>.<br>
On iOS you can use a real device through an USB-to-MIDI adapter that is connected to the
Lightning or USB-C port of the iOS device.</li>
<li>
<strong>Alsa</strong><br>
uses ALSA on Linux systems. If your ALSA port is not on 65:0 you need to change
<config><audio><midi><alsa_port> in the exult.cfg.</li>
<li>
<strong>UnixSeqDevice</strong><br>
Linux systems write to special symbolic file, default '/dev/sequencer'. This can be
changed at <config><audio><midi><unixseqdevice> in the exult.cfg.<br>
Because of size constraints we abbreviated it to <strong>UnixSeq</strong> in the
<a href="#audio_gump">3.4.</a>.</li>
</ul>
<p>
For drivers that use a real or system MIDI device, the MIDI conversion can be changed to:
</p>
<ul>
<li>
<strong>Real MT32</strong><br>
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. With this option <em>Exult</em> will
also send SysEx messages to the Roland MT32 display, which are nice
to watch when you have such a device.</li>
<li>
<strong>GM</strong><br>
This will convert the MT32 patches to standard General MIDI patches.
Conversion is fairly accurate but some instruments may be different.</li>
<li>
<strong>GS</strong><br>
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.</li>
<li>
<strong>GS127</strong><br>
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.</li>
<li>
<strong>Fake MT32</strong><br>
This is for MIDI devices that behave like a MT32 but don't support
SysEx messages. Use that option if you have a SoundFont or similar loaded
for your sound card (or software synth such as FluidSynth) that contains
the MT32 capital tones but the device can't be reprogrammed using MT32
SysEx commands by <em>Exult</em>.</li>
</ul>
<p>
<strong>NOTE:</strong> Currently the conversion to GS and GS127 is not finished and
the notes are only mapped to General MIDI.
</p>
</td></tr>
<tr><td> </td></tr>
<tr><td><strong><a id="limits_music">4.3. Abilities and limitations of the MIDI music engine</a></strong></td></tr>
<tr><td>
<p>
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 the 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.
</p>
<p>
During the development of the XMIDI class it was found that certain .xmi files
in Serpent Isle had the first patch changed 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.
</p>
</td></tr>
<tr><td> </td></tr>
<tr><td><strong><a id="win32_device">4.4. Windows MIDI Mapper</a></strong></td></tr>
<tr><td>
<p>
You can tell <em>Exult</em> which MIDI device it should use. This is useful if you
want <em>Exult</em> to use a different MIDI device than the default Windows device
(like an MT-32).
</p>
<p>
To do this start <em>Exult</em>, on the menu choose 'Exit'. Now open the file stdout.txt
in the folder where exult.cfg is located (see <a href="#exult_config_location">2.2.</a>).
You will see a listing of the MIDI devices.<br>
For example with an SB Live! in Win2k it will look like this:
</p>
<p>
4 Midi Devices Detected<br>
Listing midi devices:<br>
-1: Microsoft MIDI-Mapper<br>
0: A: SB Live! MIDI Synth<br>
1: B: SB Live! MIDI Synth<br>
2: SB Live! MIDI UART<br>
</p>
<p>
By default <em>Exult</em> uses the Microsoft MIDI-Mapper (which uses the device you choose
in the Windows Multimedia Properties).<br>
To change the MIDI Device open exult.cfg and change
</p>
<table class="borderless">
<tr>
<td style="text-indent:0pt"><config></td>
<td></td>
</tr>
<tr>
<td style="text-indent:16pt"><audio></td>
<td></td>
</tr>
<tr>
<td style="text-indent:32pt"><midi></td>
<td></td>
</tr>
<tr>
<td style="text-indent:48pt"><win32_device></td>
<td rowspan="3"></td>
</tr>
<tr><td style="text-indent:48pt">
-1
</td></tr>
<tr><td style="text-indent:48pt"></win32_device></td></tr>
</table>
<p>