diff --git a/src/Addons/Addons.csproj b/src/Addons/Addons.csproj
index 4bd0850b..528342e3 100644
--- a/src/Addons/Addons.csproj
+++ b/src/Addons/Addons.csproj
@@ -12,6 +12,7 @@
+
diff --git a/src/Addons/Assets/Duke3D/dukezh.jpg b/src/Addons/Assets/Duke3D/dukezh.jpg
new file mode 100644
index 00000000..524cb8eb
Binary files /dev/null and b/src/Addons/Assets/Duke3D/dukezh.jpg differ
diff --git a/src/Addons/Providers/OriginalCampaignsProvider.cs b/src/Addons/Providers/OriginalCampaignsProvider.cs
index 015e1f68..70dd16e7 100644
--- a/src/Addons/Providers/OriginalCampaignsProvider.cs
+++ b/src/Addons/Providers/OriginalCampaignsProvider.cs
@@ -274,7 +274,6 @@ Duke Nukem must travel to the North Pole in order to stop the brainwashed Santa
Description = """
**Duke Nukem 64** is the Nintendo 64 port of the first-person shooter MS-DOS/PC game Duke Nukem 3D.
The Nintendo 64 port features significant changes from the PC version, including modified and expanded levels and a different set of weapons.
- The port also includes a four-player deathmatch mode and a two-player co-op mode via split-screen.
The game's mature themes have been minimized to satisfy Nintendo's adult content standards.
""",
SupportedGame = new(GameEnum.Duke64),
@@ -296,6 +295,45 @@ The game's mature themes have been minimized to satisfy Nintendo's adult content
});
}
+ if (dGame.IsDukeZHInstalled)
+ {
+ var duke64Id = nameof(GameEnum.DukeZeroHour).ToLower();
+ AddonId version = new(duke64Id, null);
+
+ campaigns.Add(version, new DukeCampaign()
+ {
+ AddonId = version,
+ Type = AddonTypeEnum.Official,
+ Title = "Duke Nukem Zero Hour",
+ GridImageHash = GameEnum.DukeZeroHour.GetUniqueHash(),
+ Author = "Eurocom",
+ ReleaseDate = new(1999, 08, 31),
+ Description = """
+ **Duke Nukem: Zero Hour** is a 1999 third-person shooter game in the Duke Nukem series,
+ developed by Eurocom and published by GT Interactive for the Nintendo 64.
+
+ The plot revolves around time traveling aliens attempting to alter the course of history
+ by eliminating Duke's ancestors.
+ """,
+ SupportedGame = new(GameEnum.DukeZeroHour),
+ RequiredFeatures = null,
+ PathToFile = null,
+ DependentAddons = null,
+ IncompatibleAddons = null,
+ MainCon = null,
+ AdditionalCons = null,
+ MainDef = null,
+ AdditionalDefs = null,
+ RTS = null,
+ StartMap = null,
+ PreviewImageHash = null,
+ IsUnpacked = false,
+ Executables = null,
+ IsFavorite = _config.FavoriteAddons.Contains(version),
+ Options = null
+ });
+ }
+
return campaigns;
}
diff --git a/src/Avalonia.Desktop/Controls/CampaignsControl.axaml.cs b/src/Avalonia.Desktop/Controls/CampaignsControl.axaml.cs
index 6812b080..0b9cb1f9 100644
--- a/src/Avalonia.Desktop/Controls/CampaignsControl.axaml.cs
+++ b/src/Avalonia.Desktop/Controls/CampaignsControl.axaml.cs
@@ -47,6 +47,13 @@ BitmapsCache bitmapsCache
InitializeComponent();
_supportedPorts = portsProvider.GetPortsThatSupportGame(viewModel.Game.GameEnum);
+
+ if (viewModel.Game.GameEnum is GameEnum.Duke3D)
+ {
+ var zhPorts = portsProvider.GetPortsThatSupportGame(GameEnum.DukeZeroHour);
+ _supportedPorts = [.. _supportedPorts, .. zhPorts];
+ }
+
_portsProvider = portsProvider;
_viewModel = viewModel;
_bitmapsCache = bitmapsCache;
diff --git a/src/Avalonia.Desktop/Misc/BitmapsCache.cs b/src/Avalonia.Desktop/Misc/BitmapsCache.cs
index 4bc0f1d1..a5030f20 100644
--- a/src/Avalonia.Desktop/Misc/BitmapsCache.cs
+++ b/src/Avalonia.Desktop/Misc/BitmapsCache.cs
@@ -102,6 +102,9 @@ private void InitOfficialCampaignsCache()
using var duke64 = ImageHelper.FileNameToStream("Duke3D.duke64.jpg", addonsAss);
_ = TryAddGridToCache(GameEnum.Duke64.GetUniqueHash(), duke64);
+ using var dukeZH = ImageHelper.FileNameToStream("Duke3D.dukezh.jpg", addonsAss);
+ _ = TryAddGridToCache(GameEnum.DukeZeroHour.GetUniqueHash(), dukeZH);
+
using var dukeDc = ImageHelper.FileNameToStream("Duke3D.dukedc.jpg", addonsAss);
_ = TryAddGridToCache(DukeAddonEnum.DukeDC.GetUniqueHash(), dukeDc);
diff --git a/src/Avalonia.Desktop/Pages/SettingsPage.axaml b/src/Avalonia.Desktop/Pages/SettingsPage.axaml
index 3fc191ba..c4a57c1e 100644
--- a/src/Avalonia.Desktop/Pages/SettingsPage.axaml
+++ b/src/Avalonia.Desktop/Pages/SettingsPage.axaml
@@ -50,7 +50,7 @@
-
+
-
+
Path to Duke Nukem ZH ROM:
+
+
+
+
+
+
+
+ Path to Blood install:
-
-