ref: 2170e4e9e6d28d9615afd71fc2a37cf8cc3dd324
parent: 7510c7488be938826fc93630560ccd985c69545b
parent: 26524bf56324364ceb1f9fad6e1efec55315d73d
author: Fabian Greffrath <fabian@greffrath.com>
date: Mon Sep 7 07:40:47 EDT 2015
Merge branch 'master' into diskicon
--- a/configure.ac
+++ b/configure.ac
@@ -6,6 +6,7 @@
PACKAGE_LICENSE="GNU General Public License, version 2"
PACKAGE_MAINTAINER="Simon Howard"
PACKAGE_URL="http://www.chocolate-doom.org/"
+PACKAGE_ISSUES="https://github.com/chocolate-doom/chocolate-doom/issues"
AC_CONFIG_AUX_DIR(autotools)
@@ -102,7 +103,15 @@
AC_CHECK_LIB(amd64, amd64_iopl)
])
-AC_CHECK_TOOL(WINDRES, windres, )
+case $host in
+ *cygwin* | *mingw* )
+ AC_CHECK_TOOL(WINDRES, windres, )
+ ;;
+ *)
+ WINDRES=
+ ;;
+esac
+
AC_CHECK_TOOL(STRIP, strip, )
AM_CONDITIONAL(HAVE_WINDRES, test "$WINDRES" != "")
@@ -142,6 +151,7 @@
AC_SUBST(PACKAGE_LICENSE)
AC_SUBST(PACKAGE_MAINTAINER)
AC_SUBST(PACKAGE_URL)
+AC_SUBST(PACKAGE_ISSUES)
dnl Shut up the datarootdir warnings.
AC_DEFUN([AC_DATAROOTDIR_CHECKED])
@@ -159,11 +169,14 @@
rpm.spec
data/Makefile
src/Makefile
+src/doom.appdata.xml
src/doom.desktop
src/doom-screensaver.desktop
src/doom/Makefile
+src/heretic.appdata.xml
src/heretic.desktop
src/heretic/Makefile
+src/hexen.appdata.xml
src/hexen.desktop
src/hexen/Makefile
src/resource.rc
@@ -171,6 +184,7 @@
src/setup/Makefile
src/setup/setup.desktop
src/setup/setup-manifest.xml
+src/strife.appdata.xml
src/strife.desktop
src/strife/Makefile
textscreen/Makefile
--- a/src/.gitignore
+++ b/src/.gitignore
@@ -14,5 +14,6 @@
chocolate-setup
*.exe
*.desktop
+*.appdata.xml
tags
TAGS
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -217,6 +217,25 @@
doom-screensaver.desktop.in \
manifest.xml
+appdatadir = $(prefix)/share/appdata
+appdata_DATA = \
+ @PROGRAM_PREFIX@doom.appdata.xml \
+ @PROGRAM_PREFIX@heretic.appdata.xml \
+ @PROGRAM_PREFIX@hexen.appdata.xml \
+ @PROGRAM_PREFIX@strife.appdata.xml
+
+@PROGRAM_PREFIX@doom.appdata.xml : doom.appdata.xml
+ cp doom.appdata.xml $@
+
+@PROGRAM_PREFIX@heretic.appdata.xml : heretic.appdata.xml
+ cp heretic.appdata.xml $@
+
+@PROGRAM_PREFIX@hexen.appdata.xml : hexen.appdata.xml
+ cp hexen.appdata.xml $@
+
+@PROGRAM_PREFIX@strife.appdata.xml : strife.appdata.xml
+ cp strife.appdata.xml $@
+
appdir = $(prefix)/share/applications
app_DATA = \
@PROGRAM_PREFIX@doom.desktop \
--- a/src/d_iwad.c
+++ b/src/d_iwad.c
@@ -142,22 +142,53 @@
},
};
-// Value installed by the Collector's Edition when it is installed
+// Values installed by the GOG.com and Collector's Edition versions
-static registry_value_t collectors_edition_value =
+static registry_value_t root_path_keys[] =
{
- HKEY_LOCAL_MACHINE,
- SOFTWARE_KEY "\\Activision\\DOOM Collector's Edition\\v1.0",
- "INSTALLPATH",
+ // Doom Collector's Edition
+
+ {
+ HKEY_LOCAL_MACHINE,
+ SOFTWARE_KEY "\\Activision\\DOOM Collector's Edition\\v1.0",
+ "INSTALLPATH",
+ },
+
+ // Ultimate Doom
+
+ {
+ HKEY_LOCAL_MACHINE,
+ SOFTWARE_KEY "\\GOG.com\\Games\\1435827232",
+ "PATH",
+ },
+
+ // Doom II
+
+ {
+ HKEY_LOCAL_MACHINE,
+ SOFTWARE_KEY "\\GOG.com\\Games\\1435848814",
+ "PATH",
+ },
+
+ // Final Doom
+
+ {
+ HKEY_LOCAL_MACHINE,
+ SOFTWARE_KEY "\\GOG.com\\Games\\1435848742",
+ "PATH",
+ },
};
// Subdirectories of the above install path, where IWADs are installed.
-static char *collectors_edition_subdirs[] =
+static char *root_path_subdirs[] =
{
+ ".",
"Doom2",
"Final Doom",
"Ultimate Doom",
+ "TNT",
+ "Plutonia",
};
// Location where Steam is installed
@@ -268,30 +299,34 @@
}
}
-// Check for Doom: Collector's Edition
+// Check for GOG.com and Doom: Collector's Edition
-static void CheckCollectorsEdition(void)
+static void CheckInstallRootPaths(void)
{
- char *install_path;
- char *subpath;
unsigned int i;
- install_path = GetRegistryString(&collectors_edition_value);
-
- if (install_path == NULL)
+ for (i=0; i<arrlen(root_path_keys); ++i)
{
- return;
- }
+ char *install_path;
+ char *subpath;
+ unsigned int j;
- for (i=0; i<arrlen(collectors_edition_subdirs); ++i)
- {
- subpath = M_StringJoin(install_path, DIR_SEPARATOR_S,
- collectors_edition_subdirs[i], NULL);
+ install_path = GetRegistryString(&root_path_keys[i]);
- AddIWADDir(subpath);
- }
+ if (install_path == NULL)
+ {
+ continue;
+ }
- free(install_path);
+ for (j=0; j<arrlen(root_path_subdirs); ++j)
+ {
+ subpath = M_StringJoin(install_path, DIR_SEPARATOR_S,
+ root_path_subdirs[j], NULL);
+ AddIWADDir(subpath);
+ }
+
+ free(install_path);
+ }
}
@@ -635,7 +670,7 @@
// Search the registry and find where IWADs have been installed.
CheckUninstallStrings();
- CheckCollectorsEdition();
+ CheckInstallRootPaths();
CheckSteamEdition();
CheckDOSDefaults();
--- /dev/null
+++ b/src/doom.appdata.xml.in
@@ -1,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<component type="desktop">
+ <id>@PROGRAM_PREFIX@doom.desktop</id>
+ <metadata_license>CC0-1.0</metadata_license>
+ <project_license>GPL-2.0+</project_license>
+ <developer_name>@PACKAGE_MAINTAINER@</developer_name>
+ <url type="homepage">@PACKAGE_URL@</url>
+ <url type="bugtracker">@PACKAGE_ISSUES@</url>
+ <description>
+ <p>
+ @PACKAGE_SHORTNAME@ Doom is a conservative,
+ historically-accurate Doom source port, which is compatible with
+ the thousands of mods and levels that were made before the Doom
+ source code was released. Unlike other source ports, the goal
+ is to preserve the original look, feel, limitations, and bugs of
+ the original DOS executable.
+ </p>
+ <p>
+ Full support for single- and multi-player games is provided, for
+ all of the original Doom games, Chex Quest, and Hacx. Unlike
+ the original executable, network play is implemented on the IP
+ network stack, allowing it to function on modern LANs and the
+ Internet.
+ </p>
+ </description>
+ <screenshots>
+ <screenshot type="default">
+ <image>http://www.chocolate-doom.org/wiki/images/9/97/GNOME_FreeDM_DEMO4.png</image>
+ <caption>FreeDM, DM05: Metal</caption>
+ </screenshot>
+ <screenshot>
+ <image>http://www.chocolate-doom.org/wiki/images/a/a6/GNOME_Doom_II_DEMO2.png</image>
+ <caption>Doom II, Level 5: The Waste Tunnels</caption>
+ </screenshot>
+ <screenshot>
+ <image>http://www.chocolate-doom.org/wiki/images/4/41/GNOME_Doomsday_of_UAC.png</image>
+ <caption>Doomsday of UAC (uac_dead.wad)</caption>
+ </screenshot>
+ <screenshot>
+ <image>http://www.chocolate-doom.org/wiki/images/2/2a/GNOME_Freedoom_DTWID_DEMO3.png</image>
+ <caption>Doom the Way id Did, on Freedoom. Level 3-2: City of Corpses</caption>
+ </screenshot>
+ </screenshots>
+</component>
--- a/src/doomtype.h
+++ b/src/doomtype.h
@@ -51,7 +51,13 @@
//
#ifdef __GNUC__
+
+#ifdef __clang__
+#define PACKEDATTR __attribute__((packed))
+#else
#define PACKEDATTR __attribute__((packed,gcc_struct))
+#endif
+
#else
#define PACKEDATTR
#endif
--- /dev/null
+++ b/src/heretic.appdata.xml.in
@@ -1,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<component type="desktop">
+ <id>@PROGRAM_PREFIX@heretic.desktop</id>
+ <metadata_license>CC0-1.0</metadata_license>
+ <project_license>GPL-2.0+</project_license>
+ <developer_name>@PACKAGE_MAINTAINER@</developer_name>
+ <url type="homepage">@PACKAGE_URL@</url>
+ <url type="bugtracker">@PACKAGE_ISSUES@</url>
+ <description>
+ <p>
+ @PACKAGE_SHORTNAME@ Heretic is a conservative,
+ historically-accurate Heretic source port, which is compatible
+ with mods and levels that were made before the Heretic source
+ code was released. Unlike other source ports, the goal is to
+ preserve the original look, feel, limitations, and bugs of the
+ original DOS executable.
+ </p>
+ <p>
+ Full support for single- and multi-player games is provided.
+ Unlike the original executable, network play is implemented on
+ the IP network stack, allowing it to function on modern LANs and
+ the Internet.
+ </p>
+ </description>
+ <screenshots>
+ <screenshot type="default">
+ <image>http://www.chocolate-doom.org/wiki/images/9/93/GNOME_Heretic_E5M4.png</image>
+ <caption>Level E5M4: Courtyard</caption>
+ </screenshot>
+ <screenshot>
+ <image>http://www.chocolate-doom.org/wiki/images/1/14/GNOME_Heretic_Shareware_DEMO3.png</image>
+ <caption>Shareware Level E1M9: The Graveyard</caption>
+ </screenshot>
+ <screenshot>
+ <image>http://www.chocolate-doom.org/wiki/images/3/34/GNOME_Heretic_E4M1.png</image>
+ <caption>Level E4M1: Catafalque</caption>
+ </screenshot>
+ <screenshot>
+ <image>http://www.chocolate-doom.org/wiki/images/4/42/GNOME_Heretic_Shareware_DEMO1.png</image>
+ <caption>Shareware Level E1M3: The Gatehouse</caption>
+ </screenshot>
+ </screenshots>
+</component>
--- /dev/null
+++ b/src/hexen.appdata.xml.in
@@ -1,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<component type="desktop">
+ <id>@PROGRAM_PREFIX@hexen.desktop</id>
+ <metadata_license>CC0-1.0</metadata_license>
+ <project_license>GPL-2.0+</project_license>
+ <developer_name>@PACKAGE_MAINTAINER@</developer_name>
+ <url type="homepage">@PACKAGE_URL@</url>
+ <url type="bugtracker">@PACKAGE_ISSUES@</url>
+ <description>
+ <p>
+ @PACKAGE_SHORTNAME@ Hexen is a conservative,
+ historically-accurate Hexen source port, which is compatible
+ with mods and levels that were made before the Hexen source code
+ was released. Unlike other source ports, the goal is to
+ preserve the original look, feel, limitations, and bugs of the
+ original DOS executable.
+ </p>
+ <p>
+ Full support for single- and multi-player games is provided.
+ Unlike the original executable, network play is implemented on
+ the IP network stack, allowing it to function on modern LANs and
+ the Internet.
+ </p>
+ </description>
+ <screenshots>
+ <screenshot type="default">
+ <image>http://www.chocolate-doom.org/wiki/images/0/0f/GNOME_Hexen_Guardian_of_Fire.png</image>
+ <caption>Level "Guardian of Fire"</caption>
+ </screenshot>
+ <screenshot>
+ <image>http://www.chocolate-doom.org/wiki/images/5/5c/GNOME_Hexen_Effluvium.png</image>
+ <caption>Level "Effluvium"</caption>
+ </screenshot>
+ <screenshot>
+ <image>http://www.chocolate-doom.org/wiki/images/c/c1/GNOME_Hexen_Dragon_Chapel.png</image>
+ <caption>Level "Dragon Chapel"</caption>
+ </screenshot>
+ <screenshot>
+ <image>http://www.chocolate-doom.org/wiki/images/a/a7/GNOME_Hexen_Darkmere.png</image>
+ <caption>Level "Darkmere"</caption>
+ </screenshot>
+ </screenshots>
+</component>
--- /dev/null
+++ b/src/strife.appdata.xml.in
@@ -1,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<component type="desktop">
+ <id>@PROGRAM_PREFIX@strife.desktop</id>
+ <metadata_license>CC0-1.0</metadata_license>
+ <project_license>GPL-2.0+</project_license>
+ <developer_name>@PACKAGE_MAINTAINER@</developer_name>
+ <url type="homepage">@PACKAGE_URL@</url>
+ <url type="bugtracker">@PACKAGE_ISSUES@</url>
+ <description>
+ <p>
+ @PACKAGE_SHORTNAME@ Strife is a conservative,
+ historically-accurate recreation of the Strife engine. It is
+ completely compatible with the original game and mods created
+ with the original engine in mind. Made with a great reverse
+ engineering effort, it has the goal of preserving the original
+ look, feel, limitations, and bugs of the original DOS
+ executable.
+ </p>
+ <p>
+ Full support for single- and multi-player games is provided.
+ Unlike the original executable, network play is implemented on
+ the IP network stack, allowing it to function on modern LANs and
+ the Internet.
+ </p>
+ </description>
+ <screenshots>
+ <screenshot type="default">
+ <image>http://www.chocolate-doom.org/wiki/images/b/b2/GNOME_Strife_Rowan.png</image>
+ <caption>Talking to Rowan</caption>
+ </screenshot>
+ <screenshot>
+ <image>http://www.chocolate-doom.org/wiki/images/1/1f/GNOME_Strife_Town.png</image>
+ <caption>The Town</caption>
+ </screenshot>
+ <screenshot>
+ <image>http://www.chocolate-doom.org/wiki/images/8/8a/GNOME_Strife_Opening.png</image>
+ <caption>Opening Cinematic</caption>
+ </screenshot>
+ <screenshot>
+ <image>http://www.chocolate-doom.org/wiki/images/c/c4/GNOME_Strife_Sewage.png</image>
+ <caption>In the sewage</caption>
+ </screenshot>
+ </screenshots>
+</component>