Skip to content

Commit

Permalink
Merge pull request #26 from Fenyx4/ultimore-egypt
Browse files Browse the repository at this point in the history
Add Ultimore: Egypt and Ultimore selector for GOG
  • Loading branch information
Fenyx4 authored Feb 8, 2024
2 parents 6c15b78 + 354552f commit 603f115
Show file tree
Hide file tree
Showing 54 changed files with 320 additions and 56 deletions.
3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@ Pix has been kind enough to let the code be hosted here and open sourced.
### Ultima III
* Upgrade Patch (Version 3.3) - http://exodus.voyd.net/projects/ultima3/
* Alternative EGA Tileset Patch
* Ultimore: A World Divided - https://daemon-master.itch.io/ultimore-a-world-divided
* Ultimore: A World Divided (1.2) - https://daemon-master.itch.io/ultimore-a-world-divided
* Ultimore: Egypt (1.0) - https://daemon-master.itch.io/ultimore-egypt

### Ultima IV
* Alternative EGA Tileset Patch - http://www.moongates.com/u4/upgrade/Upgrade.htm
Expand Down
Binary file added UltimaPatcher/Files/U3UltimoreEgypt/AMBROSIA.ULT
Binary file not shown.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added UltimaPatcher/Files/U3UltimoreEgypt/BRITISH.ULT
Binary file not shown.
Binary file added UltimaPatcher/Files/U3UltimoreEgypt/Cairo.JPEG
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added UltimaPatcher/Files/U3UltimoreEgypt/DARDIN.ULT
Binary file not shown.
Binary file added UltimaPatcher/Files/U3UltimoreEgypt/DAWN.ULT
Binary file not shown.
Binary file added UltimaPatcher/Files/U3UltimoreEgypt/DEATH.ULT
Binary file not shown.
Binary file added UltimaPatcher/Files/U3UltimoreEgypt/DEVIL.ULT
Binary file not shown.
Binary file added UltimaPatcher/Files/U3UltimoreEgypt/EXODUS.BIN
Binary file not shown.
Binary file added UltimaPatcher/Files/U3UltimoreEgypt/EXODUS.ULT
Binary file not shown.
Binary file added UltimaPatcher/Files/U3UltimoreEgypt/FAWN.ULT
Binary file not shown.
Binary file added UltimaPatcher/Files/U3UltimoreEgypt/FIRE.ULT
Binary file not shown.
Binary file added UltimaPatcher/Files/U3UltimoreEgypt/GREY.ULT
Binary file not shown.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
26 changes: 26 additions & 0 deletions UltimaPatcher/Files/U3UltimoreEgypt/INSTALL INSTRUCTIONS.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
Ultimore: Egypt (IBM PC Version 1.0)

Released 06/03/2023

Original Apple II Version by Joel Fenton

IBM PC adaption by Dameon Master
UltiExo map editor by Lord Ponsonby

INSTALL INSTRUCTIONS

This scenario requires the 'later' version of Ultima III (which is conveniently found on GOG). New characters will begin with 150 Food and 150 Health. The original version will not work with this scenario, characters in that version begin with 100 Food and 100 Health. Why? Well mainly it's to do with how the game saves maps, especially dungeons. If you load the dungeons maps up in this mod with the earlier version of Ultima III you'll find the top level a jumbled mess.

Before installing this scenario it is recommended that you backup your existing installation of Ultima III, especially if you already have a game in progress.

To install, simply extract all of the files in this ZIP file into your Ultima III installation directory, overwriting all files as needed. This should include 21 .ULT map files and EXODUS.BIN

For those using the Ultima Upgrade Patch (allowing for 256 colours and improved sound) also copy the EXODUS.BIN file found in the 'PatchedExodus' folder into your install directory. The Ultima Patcher changes the EXODUS.BIN file and so a slightly different version is needed.

For those running the GOG version of the game makes sure that you disable 'Cloud Saves' in GOG Galaxy. Click the sliding toggles button next to 'Play', select 'Manage Installion', select 'Configure...', and uncheck the 'Sync local saves with GOG Galaxy Cloud' box. You will also need to edit the 'dosboxULTIMA3_single.conf' file in your Ultima III install directory. Find the line that reads "mount C "..\cloud_saves" -t overlay" and put a # at the start of the line. If you don't perform these steps GOG will replace your SOSARIA.ULT map with the original each time you load the game.

Then, start your copy of Ultima III as you would normally. I'd recommend creating a new party from scratch.

For more information, updates, and conversation regarding Ultimore and other Ultima III modification head over to my website - https://daemonmaster.com

Thanks again for the download and I hope you have fun! If you encounter any bugs please don't hesitate to leave a comment on the itch.io page - https://daemon-master.itch.io/
Binary file added UltimaPatcher/Files/U3UltimoreEgypt/LCB.ULT
Binary file not shown.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added UltimaPatcher/Files/U3UltimoreEgypt/M.ULT
Binary file not shown.
Binary file added UltimaPatcher/Files/U3UltimoreEgypt/MINE.ULT
Binary file not shown.
Binary file added UltimaPatcher/Files/U3UltimoreEgypt/MONTOR_E.ULT
Binary file not shown.
Binary file added UltimaPatcher/Files/U3UltimoreEgypt/MONTOR_W.ULT
Binary file not shown.
Binary file added UltimaPatcher/Files/U3UltimoreEgypt/MOON.ULT
Binary file not shown.
Binary file added UltimaPatcher/Files/U3UltimoreEgypt/Memphis.JPEG
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added UltimaPatcher/Files/U3UltimoreEgypt/Mirage.JPEG
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added UltimaPatcher/Files/U3UltimoreEgypt/Oasis.JPEG
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added UltimaPatcher/Files/U3UltimoreEgypt/P.ULT
Binary file not shown.
Binary file added UltimaPatcher/Files/U3UltimoreEgypt/PERINIAN.ULT
Binary file not shown.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file not shown.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added UltimaPatcher/Files/U3UltimoreEgypt/Rome.JPEG
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added UltimaPatcher/Files/U3UltimoreEgypt/SOSARIA.ULT
Binary file not shown.
Binary file added UltimaPatcher/Files/U3UltimoreEgypt/Sosaria.JPEG
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added UltimaPatcher/Files/U3UltimoreEgypt/TIME.ULT
Binary file not shown.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added UltimaPatcher/Files/U3UltimoreEgypt/Thebes.JPEG
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added UltimaPatcher/Files/U3UltimoreEgypt/Tripoli.JPEG
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added UltimaPatcher/Files/U3UltimoreEgypt/YEW.ULT
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,14 @@ For more information, updates, and conversation regarding Ultimore and other Ult

Thanks again for the download and I hope you have fun! If you encounter any bugs please don't hesitate to leave a comment on the itch.io page.

PATCH NOTES - 1.2

Somehow I managed to publish the mod with the original TIME.ULT dungeon and not "Fenton's Cave". Version 1.2 now includes the proper map.
Thanks to PKyInOz for discovering this bug.


PATCH NOTES - 1.1

Included a new EXODUS.BIN for the 'vanilla' version of the game not using the Ultima Upgrade Patch. I wasn't aware that there was a difference.
Included a new version of EXODUS.BIN for the Ultima Upgrade version, apparently there are subtle difference in the file format. If you're using the 'vanilla' Ultima game then no changes needed. If you're already running the patched version (improved graphics and sound) rename the EXODUS.BIN to something like EXODUS.BIN.BAK and then rename EXODUS.BIN.UPGRADEPATCHVERSION to simply EXODUS.BIN
Discovered that GOG cloud saving was automatically replacing the SOSARIA.ULT map and included notes on how to disable it.
Thanks to Fenyx4 for discover both problems and both solutions.
Binary file modified UltimaPatcher/Files/U3UltimoreWorldDivided/TIME.ULT
Binary file not shown.
15 changes: 15 additions & 0 deletions UltimaPatcher/Files/dosboxULTIMA3_single.conf.orig
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
[ipx]
# ipx: Enable ipx over UDP/IP emulation.

ipx=false

[autoexec]
# Lines in this section will be run at startup.

@ECHO OFF
mount C ".."
mount C "..\cloud_saves" -t overlay
c:
cls
ultima.com
exit
59 changes: 59 additions & 0 deletions UltimaPatcher/Files/dosboxULTIMA3_single.conf.ultimore
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
[ipx]
# ipx: Enable ipx over UDP/IP emulation.

ipx=false

[autoexec]
# Lines in this section will be run at startup.

@ECHO OFF

cls
goto launcher

:launcher

ECHO ----------------------------------------------
ECHO Ultima 3 Launcher
ECHO ----------------------------------------------
ECHO 1) Original
ECHO 2) Ultimore: World Divided
ECHO 3) Ultimore: Egypt
ECHO ----------------------------------------------
ECHO 4) exit program
ECHO ----------------------------------------------

choice /c1234 /s Which program do you want to run? [1-4]: /n
if errorlevel 4 goto exit
if errorlevel 3 goto egypt
if errorlevel 2 goto divided
if errorlevel 1 goto game


:game
mount C ".."
mount C "..\cloud_saves" -t overlay
c:
cls
ultima.com
goto exit

:divided
mount C "..\divided"
mount C "..\cloud_saves\divided" -t overlay
c:
cls
ultima.com
goto exit


:egypt
mount C "..\egypt"
mount C "..\cloud_saves\egypt" -t overlay
c:
cls
ultima.com
goto exit

:exit
exit
14 changes: 7 additions & 7 deletions UltimaPatcher/U3Form.Designer.vb

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 0 additions & 9 deletions UltimaPatcher/U3Form.resx
Original file line number Diff line number Diff line change
Expand Up @@ -123,12 +123,6 @@
<metadata name="TextBox2.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="TextBox1.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="TextBox2.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<data name="TextBox2.Text" xml:space="preserve">
<value>When installing/configuring the patch, you will be asked to choose a sound card driver. MPU401-General MIDI Synth is recommended, although you can choose Adlib if preferred. You can swap between the different graphics modes or switch various patch features on/off after installing with the "Configure Patch" button above.
</value>
Expand All @@ -149,9 +143,6 @@ Main Menu (ALT-M)
<metadata name="TextBox4.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="TextBox4.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<data name="TextBox4.Text" xml:space="preserve">
<value>A modified SHAPES.EGA file for Ultima 3 which incorporates many of the graphics and tiles from the Ultima 4 EGA graphics patch. This requires the Upgrade Patch to be installed and running in EGA mode.

Expand Down
102 changes: 64 additions & 38 deletions UltimaPatcher/U3Form.vb
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ Public Class Ultima3Form
Dim EGAVersion As Boolean
Dim AltEGA As Boolean
Dim DosboxExeConfig As String
Dim SosariaMod As Boolean
Dim UltimoreInstalled As Boolean


Expand Down Expand Up @@ -64,21 +63,11 @@ Public Class Ultima3Form
Catch exp As System.Exception
GraphicsModeButton.Visible = False
End Try

Dim bytes = My.Computer.FileSystem.ReadAllBytes(U3Location & "\U3.CFG")
If bytes(7) Then
SosariaMod = True
Else
SosariaMod = False
End If

Else
PatchInstalled = False
PatchStatus.Text = "Not Installed"
PatchButton.Text = "Install Patch"
GraphicsModeButton.Visible = False

SosariaMod = False
End If
If FileComp("Files\U3alt_shapes.ega", U3Location & "\shapes.ega") Then
AltEGA = True
Expand All @@ -89,7 +78,8 @@ Public Class Ultima3Form
AltEGAStatusLabel.Text = "Not Installed"
AltEGAToggleButton.Text = "Install"
End If
If FileComp("Files\U3UltimoreWorldDivided\EXODUS.BIN", U3Location & "\EXODUS.BIN") OrElse FileComp("Files\U3UltimoreWorldDivided\EXODUS.BIN.UPGRADEPATCHVERSION", U3Location & "\EXODUS.BIN") Then
'If FileComp("Files\U3UltimoreWorldDivided\EXODUS.BIN", U3Location & "\EXODUS.BIN") OrElse FileComp("Files\U3UltimoreWorldDivided\EXODUS.BIN.UPGRADEPATCHVERSION", U3Location & "\EXODUS.BIN") Then
If System.IO.File.Exists(U3Location & "\DIVIDED\EXODUS.BIN") Then
UltimoreInstalled = True
UltimoreStatus.Text = "Installed"
UltimoreButton.Text = "Uninstall"
Expand All @@ -98,12 +88,6 @@ Public Class Ultima3Form
UltimoreStatus.Text = "Not Installed"
UltimoreButton.Text = "Install"
End If
If SosariaMod Then
UltimoreButton.Enabled = False
Else
UltimoreButton.Enabled = True
End If

Return True
Else
Return False
Expand Down Expand Up @@ -172,7 +156,7 @@ Public Class Ultima3Form
End Try

SetGameLocation(U3Location)
If ultimore And Not UltimoreInstalled And Not SosariaMod Then
If ultimore And Not UltimoreInstalled Then
UltimoreButton_Click(vbNull, e)
End If
End Sub
Expand Down Expand Up @@ -225,7 +209,7 @@ Public Class Ultima3Form
End Try

SetGameLocation(U3Location)
If ultimore And Not UltimoreInstalled And Not SosariaMod Then
If ultimore And Not UltimoreInstalled Then
UltimoreButton_Click(vbNull, e)
End If
End Sub
Expand Down Expand Up @@ -260,28 +244,70 @@ Public Class Ultima3Form
End Sub

Private Sub UltimoreButton_Click(sender As Object, e As EventArgs) Handles UltimoreButton.Click
If Not SosariaMod Then
If UltimoreInstalled Then
Dim fileNames = My.Computer.FileSystem.GetFiles("Files\U3UltimoreWorldDivided\ORIG", FileIO.SearchOption.SearchTopLevelOnly, "*.*")
For Each file In fileNames
My.Computer.FileSystem.CopyFile(file, U3Location & "\" & System.IO.Path.GetFileName(file), True)
Next
If My.Computer.FileSystem.DirectoryExists(U3Location & "\cloud_saves") Then
My.Computer.FileSystem.CopyFile("Files\U3UltimoreWorldDivided\ORIG\SOSARIA.ULT", U3Location & "\cloud_saves\SOSARIA.ULT", True)
End If
Else
Dim fileNames = My.Computer.FileSystem.GetFiles("Files\U3UltimoreWorldDivided", FileIO.SearchOption.SearchTopLevelOnly, "*.*")
For Each file In fileNames
My.Computer.FileSystem.CopyFile(file, U3Location & "\" & System.IO.Path.GetFileName(file), True)
Next
If My.Computer.FileSystem.DirectoryExists(U3Location & "\cloud_saves") Then
My.Computer.FileSystem.CopyFile("Files\U3UltimoreWorldDivided\SOSARIA.ULT", U3Location & "\cloud_saves\SOSARIA.ULT", True)
If UltimoreInstalled Then
If My.Computer.FileSystem.DirectoryExists(U3Location & "\DIVIDED") Then
My.Computer.FileSystem.DeleteDirectory(U3Location & "\DIVIDED", FileIO.DeleteDirectoryOption.DeleteAllContents)
End If
If My.Computer.FileSystem.DirectoryExists(U3Location & "\EGYPT") Then
My.Computer.FileSystem.DeleteDirectory(U3Location & "\EGYPT", FileIO.DeleteDirectoryOption.DeleteAllContents)
End If

My.Computer.FileSystem.CopyFile("Files\dosboxULTIMA3_single.conf.orig", U3Location & "\" & System.IO.Path.GetFileName("dosboxULTIMA3_single.conf"), True)
Else
' Divided
If Not My.Computer.FileSystem.DirectoryExists(U3Location & "\DIVIDED") Then
My.Computer.FileSystem.CreateDirectory(U3Location & "\DIVIDED")
End If

Dim fileNames = My.Computer.FileSystem.GetFiles(U3Location, FileIO.SearchOption.SearchTopLevelOnly, "*.*")
For Each file In fileNames
My.Computer.FileSystem.CopyFile(file, U3Location & "\DIVIDED\" & System.IO.Path.GetFileName(file), True)
Next

fileNames = My.Computer.FileSystem.GetFiles("Files\U3UltimoreWorldDivided", FileIO.SearchOption.SearchTopLevelOnly, "*.*")
For Each file In fileNames
My.Computer.FileSystem.CopyFile(file, U3Location & "\DIVIDED\" & System.IO.Path.GetFileName(file), True)
Next
If My.Computer.FileSystem.DirectoryExists(U3Location & "\cloud_saves") Then
If Not My.Computer.FileSystem.DirectoryExists(U3Location & "\cloud_saves\DIVIDED") Then
My.Computer.FileSystem.CreateDirectory(U3Location & "\cloud_saves\DIVIDED")
End If
End If

If PatchInstalled Then
My.Computer.FileSystem.CopyFile("Files\U3UltimoreWorldDivided\EXODUS.BIN.UPGRADEPATCHVERSION", U3Location & "\EXODUS.BIN", True)
If PatchInstalled Then
My.Computer.FileSystem.CopyFile("Files\U3UltimoreWorldDivided\EXODUS.BIN.UPGRADEPATCHVERSION", U3Location & "\DIVIDED\EXODUS.BIN", True)
End If

' Egypt
If Not My.Computer.FileSystem.DirectoryExists(U3Location & "\EGYPT") Then
My.Computer.FileSystem.CreateDirectory(U3Location & "\EGYPT")
End If

fileNames = My.Computer.FileSystem.GetFiles(U3Location, FileIO.SearchOption.SearchTopLevelOnly, "*.*")
For Each file In fileNames
My.Computer.FileSystem.CopyFile(file, U3Location & "\EGYPT\" & System.IO.Path.GetFileName(file), True)
Next

fileNames = My.Computer.FileSystem.GetFiles("Files\U3UltimoreEgypt", FileIO.SearchOption.SearchTopLevelOnly, "*.*")
For Each file In fileNames
My.Computer.FileSystem.CopyFile(file, U3Location & "\EGYPT\" & System.IO.Path.GetFileName(file), True)
Next
If My.Computer.FileSystem.DirectoryExists(U3Location & "\cloud_saves") Then
If Not My.Computer.FileSystem.DirectoryExists(U3Location & "\cloud_saves\EGYPT") Then
My.Computer.FileSystem.CreateDirectory(U3Location & "\cloud_saves\EGYPT")
End If
End If

If PatchInstalled Then
My.Computer.FileSystem.CopyFile("Files\U3UltimoreEgypt\PatchedExodus\EXODUS.BIN", U3Location & "\EGYPT\EXODUS.BIN", True)
End If

' config
My.Computer.FileSystem.CopyFile("Files\dosboxULTIMA3_single.conf.ultimore", U3Location & "\" & System.IO.Path.GetFileName("dosboxULTIMA3_single.conf"), True)
If PatchInstalled Then
Dim fileReader As String = My.Computer.FileSystem.ReadAllText(U3Location & "\" & System.IO.Path.GetFileName("dosboxULTIMA3_single.conf")).Replace("ultima.com", "ultima3.com")
My.Computer.FileSystem.WriteAllText(U3Location & "\" & System.IO.Path.GetFileName("dosboxULTIMA3_single.conf"), fileReader, False)
End If
End If

SetGameLocation(U3Location)
Expand Down
Loading

0 comments on commit 603f115

Please sign in to comment.