After extensive testing, the DarkPlaces and Quake 1.5 situation is in a slightly better shape. We have a more or less up to date engine, the mod comes with its own self-contained engine, and this has been tested on on amd64, arm64, ppc64 and x86 - and of those 4, only ppc64 had a showstopping issue - big endian support is broken in general in PNG loading facilities.

This commit is contained in:
grepwood 2024-03-31 17:18:18 +02:00
parent e58538d4d1
commit 289894eff4
13 changed files with 889 additions and 256 deletions

View File

@ -1,4 +1,7 @@
DIST darkplacesenginesource20170829beta1.tar.gz 2063047 BLAKE2B c3d4a49a6f11f7d6458c0f94da05547abfe9b975d2d2810e9d06d6077dae293da7e547482d92fa58612a59acce592abfe8e1ac3f55ba05bad43436e46737981b SHA512 618ddda15f80c04d3d46499504213326a2b82f591e8f633e62ac988b2e525e8c5f310f12ea91a48f8ea0c8f02375568acad28a5558311b802f6a0e45eaf592f3 AUX 0020-make-sse-selectable.patch 3394 BLAKE2B 990a132a4181dd753a9db58a49d1b7223be513f6ee5d269b00c91cbe0194f121fb86957f83fa63981a258198442af68c14eb8a12dc3121d6a81feada16a78c35 SHA512 d2061012747445053e074399c440b4aca8ab38beb4497f748de5f74e4c1369bb7a016c7606d772d17a1d62bf18629e28bd7c4b56fa9107c90ff2a755a125312f
AUX 0030-builddate-template.patch 478 BLAKE2B 41ada1253f2ecff2c10ef8db510e9cf362b529898c333bf68fbb01031bb44eb253b86845d6e0086937e5a5069dceb91fd7a60688206c1aa62c8f9d48988f15c0 SHA512 c90396c0cc29b78c386dc5eb5d766a81a9b9ccfe1ab852442af6ebf938cc0be6f5f32c8b19d83edeae1cf8b417ee88d112255401aad63c39a9576ecaa927d425
DIST darkplacesenginesource20240226_alpha1.tar.gz 4614280 BLAKE2B 933aa4dcbc262c8f62c12de8402f2b8e31063a89fde1901ba3378646be51b78b7f5f657ec26d52d1ecfd5f88b62677b912f82ce915e44a8d63819f16ab0235da SHA512 c5b8a1299c02e9eef59bbe36cbcb36005cedd9948f97597474cc05ce5ffdd33729825733877b9bac86cf7792d96cf80b6795281381c11eb84879b7823c5c5979 DIST darkplacesenginesource20240226_alpha1.tar.gz 4614280 BLAKE2B 933aa4dcbc262c8f62c12de8402f2b8e31063a89fde1901ba3378646be51b78b7f5f657ec26d52d1ecfd5f88b62677b912f82ce915e44a8d63819f16ab0235da SHA512 c5b8a1299c02e9eef59bbe36cbcb36005cedd9948f97597474cc05ce5ffdd33729825733877b9bac86cf7792d96cf80b6795281381c11eb84879b7823c5c5979
DIST fuhquake-lits.rar 8388829 BLAKE2B fb9c4db151deb43424de9331641154f412394ae6346864bc62a210c7d8d12c6ed6c8647cb4cd83fa853155c5f562f7e9b8d3c779fe74c1bb3f05bb6f627b1d5e SHA512 6e59f5e08a6c401b329b86b0cd677a04b1a5aee11f24973c77c9e7ea50cab9dedf4fc15c4f3d6b73bdc87bacdc9612a3c244d0a4ceceef943abb6e256ac23925 DIST fuhquake-lits.rar 8388829 BLAKE2B fb9c4db151deb43424de9331641154f412394ae6346864bc62a210c7d8d12c6ed6c8647cb4cd83fa853155c5f562f7e9b8d3c779fe74c1bb3f05bb6f627b1d5e SHA512 6e59f5e08a6c401b329b86b0cd677a04b1a5aee11f24973c77c9e7ea50cab9dedf4fc15c4f3d6b73bdc87bacdc9612a3c244d0a4ceceef943abb6e256ac23925
DIST id1.pk3 350470 BLAKE2B 76426667de5f42633f608b75286671344d439398aa9b819e9ba3979ca317a93930b1077de7efb4b1bad670a6341c7536d572cfc2590a5812c71dd0c4e8def784 SHA512 d4d7233bc1e5049e89d09448818219b0ce7941fecde5381cd95933e4c96ebc9b4e34ff7eae5eb5d0d1e3cc2ceb4f5254f4d600aded7dda373713149817621331 DIST id1.pk3 350470 BLAKE2B 76426667de5f42633f608b75286671344d439398aa9b819e9ba3979ca317a93930b1077de7efb4b1bad670a6341c7536d572cfc2590a5812c71dd0c4e8def784 SHA512 d4d7233bc1e5049e89d09448818219b0ce7941fecde5381cd95933e4c96ebc9b4e34ff7eae5eb5d0d1e3cc2ceb4f5254f4d600aded7dda373713149817621331
EBUILD darkplaces-20240226_alpha1.ebuild 4998 BLAKE2B 179254eb04b8601693ba3474ccc8e61b62df1f4a79f9e40b95b490a6ddc0f740005b39b43be0301b0037febaf0e0f0fd5bcd6826b9d6f483a1eb4c468c48079d SHA512 00e43ee651f51ffb8705db8a415251a3d1cb9c88237b7d0f67481f4dc2699cf51aa9d0fcca5b43da32776e10eac2a83b454775e872360262fe0e3a890a8acb6c
MISC metadata.xml 580 BLAKE2B 4415a644b98a15aa79d3b9ecf075444bf73cdf8f78d413b91eb4687722ff0d4411405f7d9ce1da6c3b4748340c456ae0bb8721c5b7025ee69fd0de288924bdf1 SHA512 f22ef40165ee9b84cfedcb475df467c89509153f6e4c593006f3314adb99057ea6587affd279ed432f57a0a7ac83f50d6dcaad07152b3c805266bb9475f1d16d

View File

@ -1,220 +0,0 @@
# Copyright 1999-2021 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
inherit flag-o-matic unpacker desktop wrapper
# Latest versions are in http://icculus.org/twilight/darkplaces/files/
MY_PV="${PV/_beta/beta}"
MY_SOURCE="${PN}enginesource${MY_PV}.tar.gz"
# Different Quake 1 engines expect the lights in different directories
# http://www.fuhquake.net/download.html and http://www.kgbsyndicate.com/romi/
MY_LIGHTS="fuhquake-lits.rar"
DESCRIPTION="Enhanced engine for iD Software's Quake 1"
HOMEPAGE="http://icculus.org/twilight/darkplaces/"
GIT_COMMIT="175af02fa8e6bc5c14ebac952c6925f9328c2348"
SRC_URI="https://github.com/DarkPlacesEngine/darkplaces/archive/${GIT_COMMIT}.tar.gz -> "${MY_SOURCE}"
lights? (
http://www.fuhquake.net/files/extras/${MY_LIGHTS}
http://www.kgbsyndicate.com/romi/id1.pk3 )"
LICENSE="GPL-2"
SLOT="0"
KEYWORDS="~amd64 ~x86 ~ppc64 ~arm64"
IUSE="alsa capture cdinstall cdsound debug dedicated demo ipv6 lights opengl oss sdl textures"
REQUIRED_USE="
alsa? ( !oss )
oss? ( !alsa )
|| ( alsa oss sdl )
^^ ( opengl sdl )
"
GLX_RDEPEND="
x11-libs/libX11
x11-libs/libXpm
x11-libs/libXext
x11-libs/libXxf86vm
virtual/opengl
alsa? ( media-libs/alsa-lib )
capture? (
media-libs/libogg
media-libs/libtheora
media-libs/libvorbis
)
"
SDL_RDEPEND="
media-libs/libsdl2[udev]
x11-libs/libX11
alsa? ( media-libs/alsa-lib )
capture? (
media-libs/libogg
media-libs/libtheora
media-libs/libvorbis
)
"
RDEPEND="
dev-libs/d0_blind_id
dev-games/ode
net-misc/curl
virtual/jpeg:0
sys-libs/zlib
media-libs/libpng
cdinstall? ( games-fps/quake1-data )
demo? ( games-fps/quake1-demodata )
textures? ( >=games-fps/quake1-textures-20050820 )
opengl? ( ${GLX_RDEPEND} )
sdl? ( ${SDL_RDEPEND} )
"
BDEPEND="lights? (
app-arch/unrar
app-arch/unzip
)
app-alternatives/tar
app-alternatives/gzip
sys-apps/coreutils
sys-devel/patch
sys-apps/sed
virtual/pkgconfig
"
S="${WORKDIR}"
dir="/usr/share/quake1"
src_unpack() {
if use lights; then
elog "FuhQuake lights: enabled"
unpack "${MY_LIGHTS}"
unpack_zip "${DISTDIR}"/id1.pk3
mv *.lit maps/ || die
mv ReadMe.txt rtlights.txt
else
elog "FuhQuake lights: disabled"
fi
tar --strip-components 1 -xf "${DISTDIR}/${MY_SOURCE}"
}
src_prepare() {
default
cd "${S}"
rm mingw_note.txt
strip-flags
elog "Applying GCC 11 patch for software renderer."
patch -p1 -i "${FILESDIR}/0010-fix-dpsoftras-alignment.patch"
# Only additional CFLAGS optimization is the -march flag
local march=$(get-flag -march)
sed -i \
-e "s:-lasound:$(pkg-config --libs alsa):" \
-e "/^CPUOPTIMIZATIONS/d" \
-e '/^OPTIM_RELEASE/s/=.*/=$(CFLAGS)/' \
-e '/^OPTIM_DEBUG/s/=.*/=$(CFLAGS)/' \
-e '/^LDFLAGS_DEBUG/s/$/ $(LDFLAGS)/' \
-e '/^LDFLAGS_RELEASE/s/$/ $(LDFLAGS)/' \
-e "s:strip:true:" \
makefile.inc || die
if ! use cdsound; then
elog "CD support: disabled"
sed -i \
-e "s:/dev/cdrom:/dev/null:" \
cd_linux.c || die
sed -i \
-e 's:COM_CheckParm("-nocdaudio"):1:' \
cd_shared.c || die
else
elog "CD support: enabled"
fi
if ! use ipv6; then
elog "IPv6 support: disabled"
sed -i 's/^#\(CFLAGS_NET+=-DNOSUPPORTIPV6\)$/\1/' makefile || die
else
elog "IPv6 support: enabled"
fi
}
src_compile() {
local video_capture="disabled"
if use capture; then
elog "Video capture: enabled"
video_capture="enabled"
else
elog "Video capture: disabled"
fi
local opts="DP_FS_BASEDIR=\"${dir}\" \
DP_LINK_JPEG=shared \
DP_LINK_CRYPTO=shared \
DP_LINK_CRYPTO_RIJNDAEL=shared \
DP_LINK_ZLIB=shared \
DP_LINK_ODE=shared \
DP_VIDEO_CAPTURE=${video_capture} \
DP_PRELOAD_DEPENDENCIES=1"
# If neither OSS or ALSA are selected, then SDL must be selected.
# However, SDL is a backend for both graphics and sound - so not having ALSA or OSS is only an option, if OpenGL is not.
local sound_api="NULL"
if use oss; then
sound_api="OSS"
elif use alsa; then
sound_api="ALSA"
elif ! use sdl; then
die "No sound API has been selected."
fi
opts+=" DP_SOUND_API=${sound_api}"
local type="release"
if use debug; then
type="debug"
fi
# Only compile a maximum of 1 client
if use sdl; then
emake ${opts} "sdl-${type}"
elif use opengl; then
emake ${opts} "cl-${type}"
fi
if use dedicated; then
emake ${opts} "sv-${type}"
fi
}
src_install() {
if use opengl || use sdl ; then
local type=glx
use sdl && type=sdl
# darkplaces executable is needed, even just for demo
newbin "${PN}-${type}" ${PN}
newicon darkplaces72x72.png ${PN}.png
if use demo; then
# Install command-line for demo, even if not desktop entry
make_wrapper ${PN}-demo "${PN} -game demo"
fi
if use demo && ! use cdinstall; then
make_desktop_entry ${PN}-demo "Dark Places (Demo)"
else
# Full version takes precedence over demo
make_desktop_entry ${PN} "Dark Places"
fi
fi
if use dedicated ; then
newbin ${PN}-dedicated ${PN}-ded
fi
dodoc *.txt todo "${WORKDIR}"/*.txt
if use lights ; then
insinto "${dir}"/id1
doins -r "${WORKDIR}"/{cubemaps,maps}
if use demo ; then
# Set up symlinks, for the demo levels to include the lights
local d
for d in cubemaps maps ; do
dosym "${dir}/id1/${d}" "${dir}/demo/${d}"
done
fi
fi
}
pkg_postinst() {
if ! use cdinstall && ! use demo; then
elog "Place pak0.pak and pak1.pak in ${dir}/id1"
fi
if use sdl && ! use alsa; then
ewarn "Select opengl with alsa, instead of sdl USE flag, for better audio latency."
fi
}

View File

@ -1,7 +1,7 @@
# Copyright 1999-2021 Gentoo Authors # Copyright 1999-2021 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2 # Distributed under the terms of the GNU General Public License v2
EAPI=7 EAPI=8
inherit flag-o-matic unpacker desktop wrapper inherit flag-o-matic unpacker desktop wrapper
@ -24,16 +24,19 @@ SRC_URI="https://github.com/DarkPlacesEngine/darkplaces/archive/${GIT_COMMIT}.ta
LICENSE="GPL-2" LICENSE="GPL-2"
SLOT="0" SLOT="0"
KEYWORDS="~amd64 ~x86" KEYWORDS="~amd64 ~x86"
IUSE="capture cdinstall debug dedicated demo ipv6 lights sdl textures" IUSE="capture cdinstall cpu_flags_x86_sse debug dedicated demo ipv6 lights sdl textures"
REQUIRED_USE="
amd64? ( cpu_flags_x86_sse )
"
SDL_RDEPEND=" SDL_RDEPEND="
media-libs/libsdl2[udev] media-libs/libsdl2[udev]
x11-libs/libX11 x11-libs/libX11
capture? ( media-libs/libogg
media-libs/libogg media-libs/libtheora
media-libs/libtheora media-libs/libvorbis
media-libs/libvorbis media-libs/libxmp
)
" "
RDEPEND=" RDEPEND="
dev-libs/d0_blind_id dev-libs/d0_blind_id
@ -79,6 +82,9 @@ src_prepare() {
cd "${S}" cd "${S}"
rm mingw_note.txt rm mingw_note.txt
strip-flags strip-flags
patch -p1 -i "${FILESDIR}/0020-make-sse-selectable.patch"
patch -p1 -i "${FILESDIR}/0030-builddate-template.patch" || die
sed -i "s/%{PVR}/${PVR}/" builddate.c || die
# Only additional CFLAGS optimization is the -march flag # Only additional CFLAGS optimization is the -march flag
local march=$(get-flag -march) local march=$(get-flag -march)
sed -i \ sed -i \
@ -106,6 +112,18 @@ src_compile() {
else else
elog "Video capture: disabled" elog "Video capture: disabled"
fi fi
local sse_enabled=0
if use cpu_flags_x86_sse; then
elog "Skeletal animations: uses SSE"
sse_enabled=1
else
if use amd64; then
elog "Skeletal animations: uses SSE, not disabling on AMD64"
sse_enabled=1
else
elog "Skeletal animations: uses generic code"
fi
fi
local opts="DP_FS_BASEDIR=\"${dir}\" \ local opts="DP_FS_BASEDIR=\"${dir}\" \
DP_LINK_JPEG=shared \ DP_LINK_JPEG=shared \
DP_LINK_CRYPTO=shared \ DP_LINK_CRYPTO=shared \
@ -113,7 +131,9 @@ src_compile() {
DP_LINK_ZLIB=shared \ DP_LINK_ZLIB=shared \
DP_LINK_ODE=shared \ DP_LINK_ODE=shared \
DP_VIDEO_CAPTURE=${video_capture} \ DP_VIDEO_CAPTURE=${video_capture} \
DP_PRELOAD_DEPENDENCIES=1" DP_PRELOAD_DEPENDENCIES=1 \
GENTOO_BUILD=1 \
DP_SSE=${sse_enabled}"
local type="release" local type="release"
if use debug; then if use debug; then
type="debug" type="debug"
@ -162,6 +182,9 @@ src_install() {
pkg_postinst() { pkg_postinst() {
if ! use cdinstall && ! use demo ; then if ! use cdinstall && ! use demo ; then
elog "Place pak0.pak and pak1.pak in ${dir}/id1" elog "Remember to place pak0.pak and pak1.pak in ${dir}/id1"
if use cdda; then
elog "If you wish to have the original soundtrack available without playing from an optical drive, please make sure that the path ${dir}/id1/sound/cdtracks exists, and that it contains the original soundtrack. The expected filename schema is track%i.%s with a double-digit count, either in WAV RIFF or OGG Vorbis format."
fi
fi fi
} }

View File

@ -0,0 +1,149 @@
--- a/makefile.inc 2024-03-18 14:28:17.506666539 +0100
+++ b/makefile.inc 2024-03-18 14:34:25.586666536 +0100
@@ -157,9 +157,12 @@
ifeq ($(DP_SSE),1)
CFLAGS_SSE=-msse
- CFLAGS_SSE2=-msse2
else
CFLAGS_SSE=
+endif # ifeq ($(DP_SSE),1)
+ifeq ($(DP_SSE2),1)
+ CFLAGS_SSE2=-msse2
+else
CFLAGS_SSE2=
endif # ifeq ($(DP_SSE),1)
--- a/makefile 2024-03-31 16:39:13.059767771 +0200
+++ b/makefile 2024-03-31 16:28:43.563130538 +0200
@@ -26,29 +26,32 @@
endif # ifdef windir
endif # ifndef DP_MAKE_TARGET
+# If we are Gentoo, then we know what we're doing and we can move along
+ifndef GENTOO_BUILD
# If we're targeting an x86 CPU we want to enable DP_SSE (CFLAGS_SSE and SSE2)
-ifeq ($(DP_MAKE_TARGET), mingw)
- DP_SSE:=1
-else ifeq ($(OS),Windows_NT)
- ifeq ($(PROCESSOR_ARCHITECTURE),AMD64)
- DP_SSE:=1
- else ifeq ($(PROCESSOR_ARCHITEW6432),AMD64)
- DP_SSE:=1
- else ifeq ($(PROCESSOR_ARCHITECTURE),x86)
- DP_SSE:=1
- else
- DP_SSE:=0
- endif
-else
- DP_MACHINE:=$(shell uname -m)
- ifeq ($(DP_MACHINE),x86_64)
- DP_SSE:=1
- else ifeq ($(DP_MACHINE),i686)
- DP_SSE:=1
- else ifeq ($(DP_MACHINE),i386)
+ ifeq ($(DP_MAKE_TARGET), mingw)
DP_SSE:=1
+ else ifeq ($(OS),Windows_NT)
+ ifeq ($(PROCESSOR_ARCHITECTURE),AMD64)
+ DP_SSE:=1
+ else ifeq ($(PROCESSOR_ARCHITEW6432),AMD64)
+ DP_SSE:=1
+ else ifeq ($(PROCESSOR_ARCHITECTURE),x86)
+ DP_SSE:=1
+ else
+ DP_SSE:=0
+ endif
else
- DP_SSE:=0
+ DP_MACHINE:=$(shell uname -m)
+ ifeq ($(DP_MACHINE),x86_64)
+ DP_SSE:=1
+ else ifeq ($(DP_MACHINE),i686)
+ DP_SSE:=1
+ else ifeq ($(DP_MACHINE),i386)
+ DP_SSE:=1
+ else
+ DP_SSE:=0
+ endif
endif
endif
--- a/sys.h 2024-03-31 16:37:29.066439260 +0200
+++ b/sys.h 2024-03-31 16:37:02.229773838 +0200
@@ -93,39 +93,47 @@
#endif
#if defined(__GNUC__) || (__clang__)
-# if defined(__i386__)
-# define DP_ARCH_STR "686"
-# define SSE_POSSIBLE
-# ifdef __SSE__
-# define SSE_PRESENT
-# endif
-# ifdef __SSE2__
-# define SSE2_PRESENT
-# endif
-# elif defined(__x86_64__)
-# define DP_ARCH_STR "x86_64"
-# define SSE_PRESENT
-# define SSE2_PRESENT
-# elif defined(__powerpc__)
-# define DP_ARCH_STR "ppc"
-# endif
-#elif defined(_WIN64)
-# define DP_ARCH_STR "x86_64"
-# define SSE_PRESENT
-# define SSE2_PRESENT
-#elif defined(WIN32)
-# define DP_ARCH_STR "x86"
-# define SSE_POSSIBLE
+# if defined(__i386__) || defined(WIN32)
+# ifdef __SSE__
+# define SSE_POSSIBLE
+# endif
+# ifdef __SSE2__
+# define SSE2_POSSIBLE
+# endif
+# if defined(__i686__)
+# define DP_ARCH_STR "i686"
+# elif defined(__i586__)
+# define DP_ARCH_STR "i586"
+# elif defined(__i486__)
+# define DP_ARCH_STR "i486"
+# else
+# define DP_ARCH_STR "i386"
+# endif
+# elif defined(__amd64__) || defined(_WIN64)
+# define SSE_POSSIBLE
+# define SSE2_POSSIBLE
+# define DP_ARCH_STR "amd64"
+# elif defined(__powerpc64__)
+# define DP_ARCH_STR "ppc64"
+# elif defined(__powerpc__)
+# define DP_ARCH_STR "ppc"
+# elif defined(__arm64__)
+# define DP_ARCH_STR "arm64"
+# endif
#endif
-#ifdef SSE_PRESENT
-# define SSE_POSSIBLE
+#ifdef SSE_POSSIBLE
+# define SSE_PRESENT
+#endif
+#ifdef SSE2_POSSIBLE
+# define SSE2_PRESENT
#endif
#ifdef NO_SSE
-# undef SSE_PRESENT
-# undef SSE_POSSIBLE
-# undef SSE2_PRESENT
+# undef SSE_PRESENT
+# undef SSE_POSSIBLE
+# undef SSE2_PRESENT
+# undef SSE2_POSSIBLE
#endif
#ifdef SSE_POSSIBLE

View File

@ -0,0 +1,22 @@
--- a/builddate.c 2024-02-26 19:53:26.000000000 +0100
+++ b/builddate.c 2024-03-31 16:45:28.549750267 +0200
@@ -1,18 +1,2 @@
-#define STRINGIFY2(arg) #arg
-#define STRINGIFY(arg) STRINGIFY2(arg)
-
extern const char *buildstring;
-const char *buildstring =
-#ifdef VCREVISION
-STRINGIFY(VCREVISION)
-#else
-"-"
-#endif
-#ifndef NO_BUILD_TIMESTAMPS
-//" " __TIME__
-" " __DATE__
-#endif
-#ifdef BUILDTYPE
-" " STRINGIFY(BUILDTYPE)
-#endif
-;
+const char *buildstring = "%{PVR}";

View File

@ -1,11 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd"> <!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata> <pkgmetadata>
<use> <maintainer type="project">
<flag name="capture">Enables video capture with OGG</flag> <email>moog621@gmail.com</email>
<flag name="cdsound">Enables using CD audio in the engine</flag> <name>Michał Dec</name>
<flag name="demo">Uses the demo data from quake1 (quake1-demodata)</flag> </maintainer>
<flag name="lights">Install and setup the updated light maps from FuhQuake</flag> <use>
<flag name="textures">Install and setup the updated textures</flag> <flag name="capture">Adds support for video capture with media-libs/libtheora</flag>
</use> <flag name="demo">Uses the demo data from quake1 (quake1-demodata)</flag>
<flag name="lights">Install and setup the updated light maps</flag>
<flag name="textures">Install and setup the updated textures</flag>
</use>
</pkgmetadata> </pkgmetadata>

View File

@ -1,2 +1,9 @@
AUX 0010-fix-dpsoftras-alignment.patch 2277 BLAKE2B faf0e732c70163a36a9b7ba8636487d2427844243bea8112b25433ee6480f9116ca50e346f9b6c442f4267539b7b5d21a926340a38d3aa122f304e234585d53c SHA512 bbb91271d50a619ad1569e560c0bcc3ef92c812c80fe2855fbcf29fa555511f880b50ede5ebf25faa031706dbd9634a3da0fd8b9738db7b8f6b28686ebc81d97
AUX 0020-do-not-assume-sse2-is-available-just-because-sse-is-available.patch 13189 BLAKE2B 591f381b3207c607146aeeba9361fe4514a065dfe0ab6989b6e78634009b25068e0da7cf4a94f8f40764ca3c056ee9550d33907f466e2f405ce3c4cabeb2e5a9 SHA512 b548b613a3cf2795821308a9c6ca0d56bcd2b3ea64ac9c9678ee183196d67c37bfc68212e461b6f30b366cdf26e2240b6aa31429ad27b395010cb52a74686f60
AUX 0030-builddate-template.patch 477 BLAKE2B 7b427ab38d9113602e19a8b6b64b4bf0de35bf88118d15bdf3058d3c6d320b0ca26be8272152f90f4324da6eb5f6135707d17d9df1119d896383da4a03c33db9 SHA512 3e94bc7ae346fe908b85fe67982aae1f987312cb91bc560f742cb336a459ad6ac5245e257d303ae3ead3f90eb9280a799ba40ea630e771fb94752b670ded7989
AUX 0040-enforce-quake15.patch 1314 BLAKE2B 2232061e0b722c00dc12bf9ec3704fad20f8221eae176a311372ea1fd9f9ca263c264f23e7657d839d2cbe865d77ece4f98ab34a98cccd7ca84446cc38ef6119 SHA512 f043dd2450252b1ef54a53794dcf32c2c1ecc3dc5a1ac0f7d171173ba851265a86441053469378f8f901819928c0762941dd19b3cfc21b5cb012fe4318a638a3
DIST Q15_PublicBeta1.7z 412650697 BLAKE2B f9f6ce082ec42d67e0d001b363b25ea53d05d433863e74454420f3f98f64cff7188a700343685ef6d2f3649de703ce52c18144ce982fdf34c8b7aca9bc18bfd2 SHA512 2ae9f2dc3a95331985621bde1d27187c009b66aa807e44125c2a0f019c4e3eada5578ea4cc1ef7aed2844390a4a7eda20c8eedde7d9c084635bf65dbf4908c27 DIST Q15_PublicBeta1.7z 412650697 BLAKE2B f9f6ce082ec42d67e0d001b363b25ea53d05d433863e74454420f3f98f64cff7188a700343685ef6d2f3649de703ce52c18144ce982fdf34c8b7aca9bc18bfd2 SHA512 2ae9f2dc3a95331985621bde1d27187c009b66aa807e44125c2a0f019c4e3eada5578ea4cc1ef7aed2844390a4a7eda20c8eedde7d9c084635bf65dbf4908c27
DIST Q15_patch2.7z 4045889 BLAKE2B f5bf7d7dc02758da7dd1969bd748c5861e8d47c102d5d4a823dda979e1404a7264147b477f751d649681fbb015f2d0777a13c09903458b7f92fdd742072b8279 SHA512 07f9a59202c2195af067a789b6075cdcdf2070953faae7460820ddb112a6d5aaec9015ce181ec4e9731280d36d8f13c7c8af63450d66eb7b287b8ed6261b8ba1 DIST Q15_patch2.7z 4045889 BLAKE2B f5bf7d7dc02758da7dd1969bd748c5861e8d47c102d5d4a823dda979e1404a7264147b477f751d649681fbb015f2d0777a13c09903458b7f92fdd742072b8279 SHA512 07f9a59202c2195af067a789b6075cdcdf2070953faae7460820ddb112a6d5aaec9015ce181ec4e9731280d36d8f13c7c8af63450d66eb7b287b8ed6261b8ba1
DIST darkplacesenginesource20170829_beta1.tar.gz 2063047 BLAKE2B c3d4a49a6f11f7d6458c0f94da05547abfe9b975d2d2810e9d06d6077dae293da7e547482d92fa58612a59acce592abfe8e1ac3f55ba05bad43436e46737981b SHA512 618ddda15f80c04d3d46499504213326a2b82f591e8f633e62ac988b2e525e8c5f310f12ea91a48f8ea0c8f02375568acad28a5558311b802f6a0e45eaf592f3
DIST lmp2tga.c 7006 BLAKE2B bb88766db283a5effa44ddd439da63d6966b3b76e806b0c907fcc5461a00f9c9f780f30aa4bd59d5688c3a267427a737f078961d00f7ff796d0fb28dfcf756dd SHA512 3c7d596de4d191876d9b336be83e1b28edf1e0e6bc79e1dcfad3c071a9c504af789b5f82c225fd546d94253a34da4dde7807fb8775d7052bac7b820a21d22cb2
EBUILD quake15-0_beta2-r1.ebuild 6882 BLAKE2B 9b8c5f713ce9925aadd0b26294ca421cfbf7716dd9b4a1c64bded4497c8e5642bd10d7c4f8960dabd11eb011f369076737d215992ad3f7e103282e9a89cdf5ac SHA512 681f3b686b8f295556a719ed62a70ffafef9b5e2920a59c91168d48c4b7d0b3f9cb47761b20a9e105f1bad9000e2f0cd3376e51d33b7d5e3dcbee5b89a4fae65

View File

@ -0,0 +1,381 @@
--- a/makefile.inc 2024-03-18 14:28:17.506666539 +0100
+++ b/makefile.inc 2024-03-18 14:34:25.586666536 +0100
@@ -181,9 +181,12 @@
ifeq ($(DP_SSE),1)
CFLAGS_SSE=-msse
- CFLAGS_SSE2=-msse2
else
CFLAGS_SSE=
+endif # ifeq ($(DP_SSE),1)
+ifeq ($(DP_SSE2),1)
+ CFLAGS_SSE2=-msse2
+else
CFLAGS_SSE2=
endif # ifeq ($(DP_SSE),1)
--- a/makefile 2017-08-30 06:29:14.000000000 +0200
+++ b/makefile 2024-03-18 14:41:57.396666527 +0100
@@ -26,24 +26,29 @@
endif # ifdef windir
endif # ifndef DP_MAKE_TARGET
+# If we are Gentoo, then we know what we're doing and we can move along
+ifndef GENTOO_BUILD
# If we're targeting an x86 CPU we want to enable DP_SSE (CFLAGS_SSE and SSE2)
-ifeq ($(DP_MAKE_TARGET), mingw)
- DP_SSE:=1
-else
- DP_MACHINE:=$(shell uname -m)
- ifeq ($(DP_MACHINE),x86_64)
+ ifeq ($(DP_MAKE_TARGET), mingw)
DP_SSE:=1
+ DP_SSE2:=1
else
- ifeq ($(DP_MACHINE),i686)
- DP_SSE:=1
- else
- ifeq ($(DP_MACHINE),i386)
- DP_SSE:=1
- else
- DP_SSE:=0
- endif # ifeq ($(DP_MACHINE),i386)
- endif # ifeq ($(DP_MACHINE),i686)
- endif # ifeq ($(DP_MACHINE),x86_64)
+ DP_MACHINE:=$(shell uname -m)
+ ifeq ($(DP_MACHINE),x86_64)
+ DP_SSE:=1
+ DP_SSE2:=1
+ else
+ ifeq ($(DP_MACHINE),i686)
+ DP_SSE:=1
+ else
+ ifeq ($(DP_MACHINE),i386)
+ DP_SSE:=1
+ else
+ DP_SSE:=0
+ endif # ifeq ($(DP_MACHINE),i386)
+ endif # ifeq ($(DP_MACHINE),i686)
+ endif # ifeq ($(DP_MACHINE),x86_64)
+ endif
endif
# Makefile name
--- a/quakedef.h 2017-08-30 06:29:14.000000000 +0200
+++ b/quakedef.h 2024-03-18 15:22:43.836666480 +0100
@@ -470,39 +470,44 @@
#endif
#if defined(__GNUC__)
-# if defined(__i386__)
-# define DP_ARCH_STR "686"
-# define SSE_POSSIBLE
-# ifdef __SSE__
-# define SSE_PRESENT
-# endif
-# ifdef __SSE2__
-# define SSE2_PRESENT
-# endif
-# elif defined(__x86_64__)
-# define DP_ARCH_STR "x86_64"
-# define SSE_PRESENT
-# define SSE2_PRESENT
-# elif defined(__powerpc__)
-# define DP_ARCH_STR "ppc"
-# endif
-#elif defined(_WIN64)
-# define DP_ARCH_STR "x86_64"
-# define SSE_PRESENT
-# define SSE2_PRESENT
-#elif defined(WIN32)
-# define DP_ARCH_STR "x86"
-# define SSE_POSSIBLE
+# if defined(__i386__) || defined(WIN32)
+# ifdef __SSE__
+# define SSE_POSSIBLE
+# endif
+# ifdef __SSE2__
+# define SSE2_POSSIBLE
+# endif
+# if defined(__i686__)
+# define DP_ARCH_STR "i686"
+# elif defined(__i586__)
+# define DP_ARCH_STR "i586"
+# elif defined(__i486__)
+# define DP_ARCH_STR "i486"
+# else
+# define DP_ARCH_STR "i386"
+# endif
+# elif defined(__amd64__) || defined(_WIN64)
+# define SSE_POSSIBLE
+# define SSE2_POSSIBLE
+# define DP_ARCH_STR "amd64"
+# elif defined(__powerpc64__)
+# define DP_ARCH_STR "ppc64"
+# elif defined(__arm64__)
+# define DP_ARCH_STR "arm64"
+# endif
#endif
-
-#ifdef SSE_PRESENT
-# define SSE_POSSIBLE
+#ifdef SSE_POSSIBLE
+# define SSE_PRESENT
+#endif
+#ifdef SSE2_POSSIBLE
+# define SSE2_PRESENT
#endif
#ifdef NO_SSE
-# undef SSE_PRESENT
-# undef SSE_POSSIBLE
-# undef SSE2_PRESENT
+# undef SSE_PRESENT
+# undef SSE_POSSIBLE
+# undef SSE2_PRESENT
+# undef SSE2_POSSIBLE
#endif
#ifdef SSE_POSSIBLE
--- a/dpsoftrast.c 2017-08-30 06:29:14.000000000 +0200
+++ b/dpsoftrast.c 2024-03-18 18:51:30.696666431 +0100
@@ -17,7 +17,7 @@
#define ALIGN_SIZE 16
#define ATOMIC_SIZE 4
-#ifdef SSE_POSSIBLE
+#ifdef SSE2_POSSIBLE
#if defined(__APPLE__)
#include <libkern/OSAtomic.h>
#define ALIGN(var) var __attribute__((__aligned__(16)))
@@ -84,7 +84,7 @@
#define ATOMIC_ADD(counter, val) ((void)((counter) += (val)))
#endif
-#ifdef SSE_POSSIBLE
+#ifdef SSE2_POSSIBLE
#include <emmintrin.h>
#if defined(__GNUC__) && (__GNUC < 4 || __GNUC_MINOR__ < 6) && !defined(__clang__)
@@ -1393,7 +1393,7 @@
}
void DPSOFTRAST_UniformMatrix4fv(DPSOFTRAST_UNIFORM uniform, int arraysize, int transpose, const float *v)
{
-#ifdef SSE_POSSIBLE
+#ifdef SSE2_POSSIBLE
int i, index;
for (i = 0, index = (int)uniform;i < arraysize;i++, index += 4, v += 16)
{
@@ -1467,7 +1467,7 @@
command->clipplane[3] = w;
}
-#ifdef SSE_POSSIBLE
+#ifdef SSE2_POSSIBLE
static void DPSOFTRAST_Load4fTo4f(float *dst, const unsigned char *src, int size, int stride)
{
float *end = dst + size*4;
@@ -1663,7 +1663,7 @@
static void DPSOFTRAST_Vertex_Transform(float *out4f, const float *in4f, int numitems, const float *inmatrix16f)
{
-#ifdef SSE_POSSIBLE
+#ifdef SSE2_POSSIBLE
static const float identitymatrix16f[4][4] = {{1,0,0,0},{0,1,0,0},{0,0,1,0},{0,0,0,1}};
__m128 m0, m1, m2, m3;
float *end;
@@ -1716,7 +1716,7 @@
}
#endif
-#ifdef SSE_POSSIBLE
+#ifdef SSE2_POSSIBLE
#define DPSOFTRAST_PROJECTVERTEX(out, in, viewportcenter, viewportscale) \
{ \
__m128 p = (in), w = _mm_shuffle_ps(p, p, _MM_SHUFFLE(3, 3, 3, 3)); \
@@ -1919,7 +1919,7 @@
static float *DPSOFTRAST_Array_Load(int outarray, int inarray)
{
-#ifdef SSE_POSSIBLE
+#ifdef SSE2_POSSIBLE
float *outf = dpsoftrast.post_array4f[outarray];
const unsigned char *inb;
int firstvertex = dpsoftrast.firstvertex;
@@ -1986,7 +1986,7 @@
#if 0
static float *DPSOFTRAST_Array_Project(int outarray, int inarray)
{
-#ifdef SSE_POSSIBLE
+#ifdef SSE2_POSSIBLE
float *data = inarray >= 0 ? DPSOFTRAST_Array_Load(outarray, inarray) : dpsoftrast.post_array4f[outarray];
dpsoftrast.drawclipped = DPSOFTRAST_Vertex_Project(data, dpsoftrast.screencoord4f, &dpsoftrast.drawstarty, &dpsoftrast.drawendy, data, dpsoftrast.numvertices);
return data;
@@ -1998,7 +1998,7 @@
static float *DPSOFTRAST_Array_TransformProject(int outarray, int inarray, const float *inmatrix16f)
{
-#ifdef SSE_POSSIBLE
+#ifdef SSE2_POSSIBLE
float *data = inarray >= 0 ? DPSOFTRAST_Array_Load(outarray, inarray) : dpsoftrast.post_array4f[outarray];
dpsoftrast.drawclipped = DPSOFTRAST_Vertex_TransformProject(data, dpsoftrast.screencoord4f, &dpsoftrast.drawstarty, &dpsoftrast.drawendy, data, dpsoftrast.numvertices, inmatrix16f);
return data;
@@ -2036,7 +2036,7 @@
static void DPSOFTRAST_Draw_Span_FinishBGRA8(DPSOFTRAST_State_Thread *thread, const DPSOFTRAST_State_Triangle * RESTRICT triangle, const DPSOFTRAST_State_Span * RESTRICT span, const unsigned char* RESTRICT in4ub)
{
-#ifdef SSE_POSSIBLE
+#ifdef SSE2_POSSIBLE
int x;
int startx = span->startx;
int endx = span->endx;
@@ -2545,7 +2545,7 @@
static void DPSOFTRAST_Draw_Span_Texture2DVaryingBGRA8(DPSOFTRAST_State_Thread *thread, const DPSOFTRAST_State_Triangle * RESTRICT triangle, const DPSOFTRAST_State_Span * RESTRICT span, unsigned char * RESTRICT out4ub, int texunitindex, int arrayindex, const float * RESTRICT zf)
{
-#ifdef SSE_POSSIBLE
+#ifdef SSE2_POSSIBLE
int x;
int startx = span->startx;
int endx = span->endx;
@@ -2981,7 +2981,7 @@
static void DPSOFTRAST_Draw_Span_MultiplyVaryingBGRA8(const DPSOFTRAST_State_Triangle * RESTRICT triangle, const DPSOFTRAST_State_Span * RESTRICT span, unsigned char *out4ub, const unsigned char *in4ub, int arrayindex, const float *zf)
{
-#ifdef SSE_POSSIBLE
+#ifdef SSE2_POSSIBLE
int x;
int startx = span->startx;
int endx = span->endx;
@@ -3028,7 +3028,7 @@
static void DPSOFTRAST_Draw_Span_VaryingBGRA8(const DPSOFTRAST_State_Triangle * RESTRICT triangle, const DPSOFTRAST_State_Span * RESTRICT span, unsigned char *out4ub, int arrayindex, const float *zf)
{
-#ifdef SSE_POSSIBLE
+#ifdef SSE2_POSSIBLE
int x;
int startx = span->startx;
int endx = span->endx;
@@ -3073,7 +3073,7 @@
static void DPSOFTRAST_Draw_Span_AddBloomBGRA8(const DPSOFTRAST_State_Triangle * RESTRICT triangle, const DPSOFTRAST_State_Span * RESTRICT span, unsigned char *out4ub, const unsigned char *ina4ub, const unsigned char *inb4ub, const float *subcolor)
{
-#ifdef SSE_POSSIBLE
+#ifdef SSE2_POSSIBLE
int x, startx = span->startx, endx = span->endx;
__m128i localcolor = _mm_shuffle_epi32(_mm_cvtps_epi32(_mm_mul_ps(_mm_loadu_ps(subcolor), _mm_set1_ps(255.0f))), _MM_SHUFFLE(3, 0, 1, 2));
localcolor = _mm_packs_epi32(localcolor, localcolor);
@@ -3096,7 +3096,7 @@
static void DPSOFTRAST_Draw_Span_MultiplyBuffersBGRA8(const DPSOFTRAST_State_Triangle * RESTRICT triangle, const DPSOFTRAST_State_Span * RESTRICT span, unsigned char *out4ub, const unsigned char *ina4ub, const unsigned char *inb4ub)
{
-#ifdef SSE_POSSIBLE
+#ifdef SSE2_POSSIBLE
int x, startx = span->startx, endx = span->endx;
for (x = startx;x+2 <= endx;x+=2)
{
@@ -3117,7 +3117,7 @@
static void DPSOFTRAST_Draw_Span_AddBuffersBGRA8(const DPSOFTRAST_State_Triangle * RESTRICT triangle, const DPSOFTRAST_State_Span * RESTRICT span, unsigned char *out4ub, const unsigned char *ina4ub, const unsigned char *inb4ub)
{
-#ifdef SSE_POSSIBLE
+#ifdef SSE2_POSSIBLE
int x, startx = span->startx, endx = span->endx;
for (x = startx;x+2 <= endx;x+=2)
{
@@ -3139,7 +3139,7 @@
#if 0
static void DPSOFTRAST_Draw_Span_TintedAddBuffersBGRA8(const DPSOFTRAST_State_Triangle * RESTRICT triangle, const DPSOFTRAST_State_Span * RESTRICT span, unsigned char *out4ub, const unsigned char *ina4ub, const unsigned char *inb4ub, const float *inbtintbgra)
{
-#ifdef SSE_POSSIBLE
+#ifdef SSE2_POSSIBLE
int x, startx = span->startx, endx = span->endx;
__m128i tint = _mm_cvtps_epi32(_mm_mul_ps(_mm_loadu_ps(inbtintbgra), _mm_set1_ps(256.0f)));
tint = _mm_packs_epi32(tint, tint);
@@ -3163,7 +3163,7 @@
static void DPSOFTRAST_Draw_Span_MixBuffersBGRA8(const DPSOFTRAST_State_Triangle * RESTRICT triangle, const DPSOFTRAST_State_Span * RESTRICT span, unsigned char *out4ub, const unsigned char *ina4ub, const unsigned char *inb4ub)
{
-#ifdef SSE_POSSIBLE
+#ifdef SSE2_POSSIBLE
int x, startx = span->startx, endx = span->endx;
for (x = startx;x+2 <= endx;x+=2)
{
@@ -3186,7 +3186,7 @@
static void DPSOFTRAST_Draw_Span_MixUniformColorBGRA8(const DPSOFTRAST_State_Triangle * RESTRICT triangle, const DPSOFTRAST_State_Span * RESTRICT span, unsigned char *out4ub, const unsigned char *in4ub, const float *color)
{
-#ifdef SSE_POSSIBLE
+#ifdef SSE2_POSSIBLE
int x, startx = span->startx, endx = span->endx;
__m128i localcolor = _mm_shuffle_epi32(_mm_cvtps_epi32(_mm_mul_ps(_mm_loadu_ps(color), _mm_set1_ps(255.0f))), _MM_SHUFFLE(3, 0, 1, 2)), blend;
localcolor = _mm_packs_epi32(localcolor, localcolor);
@@ -3320,7 +3320,7 @@
static void DPSOFTRAST_PixelShader_FlatColor(DPSOFTRAST_State_Thread *thread, const DPSOFTRAST_State_Triangle * RESTRICT triangle, const DPSOFTRAST_State_Span * RESTRICT span)
{
-#ifdef SSE_POSSIBLE
+#ifdef SSE2_POSSIBLE
unsigned char * RESTRICT pixelmask = span->pixelmask;
unsigned char * RESTRICT pixel = (unsigned char *)dpsoftrast.fb_colorpixels[0] + (span->y * dpsoftrast.fb_width + span->x) * 4;
int x, startx = span->startx, endx = span->endx;
@@ -3371,7 +3371,7 @@
static void DPSOFTRAST_PixelShader_VertexColor(DPSOFTRAST_State_Thread *thread, const DPSOFTRAST_State_Triangle * RESTRICT triangle, const DPSOFTRAST_State_Span * RESTRICT span)
{
-#ifdef SSE_POSSIBLE
+#ifdef SSE2_POSSIBLE
unsigned char * RESTRICT pixelmask = span->pixelmask;
unsigned char * RESTRICT pixel = (unsigned char *)dpsoftrast.fb_colorpixels[0] + (span->y * dpsoftrast.fb_width + span->x) * 4;
int x, startx = span->startx, endx = span->endx;
@@ -3445,7 +3445,7 @@
static void DPSOFTRAST_PixelShader_Lightmap(DPSOFTRAST_State_Thread *thread, const DPSOFTRAST_State_Triangle * RESTRICT triangle, const DPSOFTRAST_State_Span * RESTRICT span)
{
-#ifdef SSE_POSSIBLE
+#ifdef SSE2_POSSIBLE
unsigned char * RESTRICT pixelmask = span->pixelmask;
unsigned char * RESTRICT pixel = (unsigned char *)dpsoftrast.fb_colorpixels[0] + (span->y * dpsoftrast.fb_width + span->x) * 4;
int x, startx = span->startx, endx = span->endx;
@@ -4139,7 +4139,7 @@
static void DPSOFTRAST_PixelShader_LightSource(DPSOFTRAST_State_Thread *thread, const DPSOFTRAST_State_Triangle * RESTRICT triangle, const DPSOFTRAST_State_Span * RESTRICT span)
{
-#ifdef SSE_POSSIBLE
+#ifdef SSE2_POSSIBLE
float buffer_z[DPSOFTRAST_DRAW_MAXSPANLENGTH];
unsigned char buffer_texture_colorbgra8[DPSOFTRAST_DRAW_MAXSPANLENGTH*4];
unsigned char buffer_texture_normalbgra8[DPSOFTRAST_DRAW_MAXSPANLENGTH*4];
@@ -4847,7 +4847,7 @@
static void DPSOFTRAST_Interpret_Draw(DPSOFTRAST_State_Thread *thread, DPSOFTRAST_Command_Draw *command)
{
-#ifdef SSE_POSSIBLE
+#ifdef SSE2_POSSIBLE
int cullface = thread->cullface;
int minx, maxx, miny, maxy;
int miny1, maxy1, miny2, maxy2;
--- a/vid_shared.c 2017-08-30 06:29:14.000000000 +0200
+++ b/vid_shared.c 2024-03-18 19:11:31.063333077 +0100
@@ -1729,16 +1729,11 @@
void VID_Shared_Init(void)
{
-#ifdef SSE_POSSIBLE
- if (Sys_HaveSSE2())
- {
- Con_Printf("DPSOFTRAST available (SSE2 instructions detected)\n");
- Cvar_RegisterVariable(&vid_soft);
- Cvar_RegisterVariable(&vid_soft_threads);
- Cvar_RegisterVariable(&vid_soft_interlace);
- }
- else
- Con_Printf("DPSOFTRAST not available (SSE2 disabled or not detected)\n");
+#ifdef SSE2_POSSIBLE
+ Con_Printf("DPSOFTRAST available (SSE2 instructions compiled in)\n");
+ Cvar_RegisterVariable(&vid_soft);
+ Cvar_RegisterVariable(&vid_soft_threads);
+ Cvar_RegisterVariable(&vid_soft_interlace);
#else
Con_Printf("DPSOFTRAST not available (SSE2 not compiled in)\n");
#endif

View File

@ -0,0 +1,21 @@
--- a/builddate.c 2017-08-30 06:29:14.000000000 +0200
+++ b/builddate.c 2024-03-18 20:00:09.076666379 +0100
@@ -1,17 +1,2 @@
-#define STRINGIFY2(arg) #arg
-#define STRINGIFY(arg) STRINGIFY2(arg)
-
extern const char *buildstring;
-const char *buildstring =
-#ifndef NO_BUILD_TIMESTAMPS
-__TIME__ " " __DATE__ " "
-#endif
-#ifdef SVNREVISION
-STRINGIFY(SVNREVISION)
-#else
-"-"
-#endif
-#ifdef BUILDTYPE
-" " STRINGIFY(BUILDTYPE)
-#endif
-;
+const char *buildstring = "%{PVR}";

View File

@ -0,0 +1,20 @@
--- a/common.c 2017-08-30 06:29:14.000000000 +0200
+++ b/common.c 2024-03-31 14:46:25.586415464 +0200
@@ -1480,6 +1480,7 @@
{ GAME_STRAPBOMB, GAME_STRAPBOMB, "strapbomb", "-strapbomb", "Strap-on-bomb Car", "Strap-on-bomb_Car", "id1", NULL, "strap", "strapbomb" }, // COMMANDLINEOPTION: Game: -strapbomb runs the game Strap-on-bomb Car
{ GAME_MOONHELM, GAME_MOONHELM, "moonhelm", "-moonhelm", "MoonHelm", "MoonHelm", "data", NULL, "mh", "moonhelm" }, // COMMANDLINEOPTION: Game: -moonhelm runs the game MoonHelm
{ GAME_VORETOURNAMENT, GAME_VORETOURNAMENT, "voretournament", "-voretournament", "Vore Tournament", "Vore_Tournament", "data", NULL, "voretournament", "voretournament" }, // COMMANDLINEOPTION: Game: -voretournament runs the multiplayer game Vore Tournament
+{ GAME_QUAKE15, GAME_NORMAL, "quake15", "-quake15", "Quake 1.5", "Quake 1.5", "id1", "quake15", "q15", "quake15"}, // COMMANDLINEOPTION: Game: -quake15 runs the game Quake 1.5
};
static void COM_SetGameType(int index);
--- a/common.h 2017-08-30 06:29:14.000000000 +0200
+++ b/common.h 2024-03-31 14:46:50.596414296 +0200
@@ -298,6 +298,7 @@
GAME_STRAPBOMB, // added by motorsep for Urre
GAME_MOONHELM,
GAME_VORETOURNAMENT,
+ GAME_QUAKE15,
GAME_COUNT
}
gamemode_t;

View File

@ -1,4 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd"> <!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata> <pkgmetadata>
<maintainer type="project">
<email>moog621@gmail.com</email>
<name>Michał Dec</name>
</maintainer>
<use>
<flag name="capture">Adds support for video capture with media-libs/libtheora</flag>
<flag name="textures">Install and setup the updated textures</flag>
</use>
</pkgmetadata> </pkgmetadata>

View File

@ -1,36 +1,252 @@
# Copyright 1999-2021 Gentoo Authors # Copyright 1999-2021 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2 # Distributed under the terms of the GNU General Public License v2
EAPI=7 EAPI=8
inherit flag-o-matic unpacker desktop wrapper
# This is the only known version of the engine to work with this mod
ENGINE_PV="20170829_beta1"
ENGINE_SOURCE="darkplacesenginesource${ENGINE_PV}.tar.gz"
DESCRIPTION="A mod that makes Quake faster paced, harder, gorier and more violent." DESCRIPTION="A mod that makes Quake faster paced, harder, gorier and more violent."
HOMEPAGE="https://www.moddb.com/mods/quake-15" HOMEPAGE="https://www.moddb.com/mods/quake-15 https://icculus.org/twilight/darkplaces"
GIT_COMMIT="175af02fa8e6bc5c14ebac952c6925f9328c2348"
SRC_URI=" SRC_URI="
https://www.moddb.com/downloads/mirror/173517/114/5090a373c5249e55e509808983481a04 -> Q15_PublicBeta1.7z https://github.com/DarkPlacesEngine/darkplaces/archive/${GIT_COMMIT}.tar.gz -> "${ENGINE_SOURCE}"
https://www.moddb.com/downloads/mirror/173707/114/f7627345043efdfcd9e27d4906a382ac -> Q15_patch2.7z https://archive.org/download/quake15-mirror/Q15_PublicBeta1.7z
https://archive.org/download/quake15-mirror/patch2.7z -> Q15_patch2.7z
https://icculus.org/%7Emarco/sources/lmp2tga.c
" "
LICENSE="HPND" LICENSE="GPL-2 UNKNOWN"
SLOT="0" SLOT="0"
KEYWORDS="~amd64 ~x86 ~ppc64 ~arm64" # DarkPlaces' PNG is broken on big endian and this mod unfortunately uses PNG a lot. Sorry :(
KEYWORDS="~amd64 ~arm64 ~x86"
IUSE="alsa capture cdda cdinstall cpu_flags_x86_sse cpu_flags_x86_sse2 debug dedicated ipv6 opengl oss sdl textures"
RDEPEND="=games-fps/darkplaces-20170829_beta1-r1" REQUIRED_USE="
BDEPEND="app-arch/p7zip" alsa? ( !oss )
oss? ( !alsa )
|| ( alsa oss sdl )
^^ ( opengl sdl )
amd64? (
cpu_flags_x86_sse
cpu_flags_x86_sse2
)
"
GLX_RDEPEND="
x11-libs/libX11
x11-libs/libXpm
x11-libs/libXext
x11-libs/libXxf86vm
virtual/opengl
alsa? ( media-libs/alsa-lib )
media-libs/libogg
media-libs/libvorbis
capture? ( media-libs/libtheora[encode] )
!capture? ( media-libs/libtheora )
"
SDL_RDEPEND="
media-libs/libsdl2[udev]
x11-libs/libX11
alsa? ( media-libs/alsa-lib )
media-libs/libogg
media-libs/libvorbis
capture? ( media-libs/libtheora[encode] )
!capture? ( media-libs/libtheora )
"
RDEPEND="
dev-libs/d0_blind_id
dev-games/ode
net-misc/curl
virtual/jpeg:0
sys-libs/zlib
media-libs/libpng
cdinstall? ( games-fps/quake1-data )
textures? ( >=games-fps/quake1-textures-20050820 )
opengl? ( ${GLX_RDEPEND} )
sdl? ( ${SDL_RDEPEND} )
"
BDEPEND="
opengl? (
sys-devel/gcc
media-gfx/imagemagick
app-arch/unzip
)
sdl? (
sys-devel/gcc
media-gfx/imagemagick
app-arch/unzip
)
app-arch/p7zip
app-alternatives/tar
app-alternatives/gzip
sys-apps/coreutils
sys-devel/patch
sys-apps/sed
virtual/pkgconfig
"
S="${WORKDIR}" S="${WORKDIR}"
WAD_DIR="/usr/share/quake15"
src_unpack() {
mkdir engine
tar -C engine --strip-components 1 -xf "${DISTDIR}/${ENGINE_SOURCE}"
7z x "${DISTDIR}/Q15_PublicBeta1.7z" quake15
7z x -y "${DISTDIR}/Q15_patch2.7z" quake15
ln -s /usr/share/quake1/id1/sound quake15/sound
}
src_prepare() {
default
cd "${S}/engine"
rm mingw_note.txt
strip-flags
patch -p1 -i "${FILESDIR}/0010-fix-dpsoftras-alignment.patch"
patch -p1 -i "${FILESDIR}/0020-do-not-assume-sse2-is-available-just-because-sse-is-available.patch"
# Only additional CFLAGS optimization is the -march flag
local march=$(get-flag -march)
sed -i \
-e "s:-lasound:$(pkg-config --libs alsa):" \
-e "/^CPUOPTIMIZATIONS/d" \
-e '/^OPTIM_RELEASE/s/=.*/=$(CFLAGS)/' \
-e '/^OPTIM_DEBUG/s/=.*/=$(CFLAGS)/' \
-e '/^LDFLAGS_DEBUG/s/$/ $(LDFLAGS)/' \
-e '/^LDFLAGS_RELEASE/s/$/ $(LDFLAGS)/' \
-e "s:strip:true:" \
makefile.inc || die
if ! use cdda; then
elog "CD support: disabled"
sed -i \
-e "s:/dev/cdrom:/dev/null:" \
cd_linux.c || die
sed -i \
-e 's:COM_CheckParm("-nocdaudio"):1:' \
cd_shared.c || die
else
elog "CD support: enabled"
fi
if ! use ipv6; then
elog "IPv6 support: disabled"
sed -i 's/^#\(CFLAGS_NET+=-DNOSUPPORTIPV6\)$/\1/' makefile || die
else
elog "IPv6 support: enabled"
fi
patch -p1 -i "${FILESDIR}/0030-builddate-template.patch"
sed -i "s/%{PVR}/${ENGINE_PV}/" builddate.c || die
patch -p1 -i "${FILESDIR}/0040-enforce-quake15.patch"
}
src_compile() {
local video_capture="disabled"
if use capture; then
elog "Video capture: enabled"
video_capture="enabled"
else
elog "Video capture: disabled"
fi
local sse_enabled=0
local sse2_enabled=0
if use cpu_flags_x86_sse; then
elog "Skeletal animations: uses SSE"
sse_enabled=1
else
if use amd64; then
elog "Skeletal animations: uses SSE, not disabling on AMD64"
sse_enabled=1
else
elog "Skeletal animations: uses generic code"
fi
fi
if use cpu_flags_x86_sse2; then
elog "Softrender: uses SSE2"
sse2_enabled=1
else
if use amd64; then
elog "Softrender: uses SSE2, not disabling on AMD64"
sse2_enabled=1
else
elog "Softrender: disabled"
fi
fi
local opts="DP_FS_BASEDIR=\"${WAD_DIR}\" \
DP_LINK_JPEG=shared \
DP_LINK_CRYPTO=shared \
DP_LINK_CRYPTO_RIJNDAEL=shared \
DP_LINK_ZLIB=shared \
DP_LINK_ODE=shared \
DP_VIDEO_CAPTURE=${video_capture} \
DP_PRELOAD_DEPENDENCIES=1 \
GENTOO_BUILD=1 \
DP_SSE=${sse_enabled} \
DP_SSE2=${sse2_enabled} \
FORCEGAME=quake15"
# If neither OSS or ALSA are selected, then SDL must be selected.
# However, SDL is a backend for both graphics and sound - so not having ALSA or OSS is only an option, if OpenGL is not.
local sound_api="NULL"
if use oss; then
sound_api="OSS"
elif use alsa; then
sound_api="ALSA"
elif ! use sdl; then
die "No sound API has been selected."
fi
opts+=" DP_SOUND_API=${sound_api}"
local type="release"
if use debug; then
type="debug"
fi
ln -s /usr/share/quake1/id1 id1
# Only compile a maximum of 1 client
cd ${WORKDIR}/engine
local compile_client=false
if use sdl; then
compile_client=true
emake ${opts} "sdl-${type}"
elif use opengl; then
compile_client=true
emake ${opts} "cl-${type}"
fi
if use dedicated; then
emake ${opts} "sv-${type}"
fi
if ${compile_client}; then
cd ${WORKDIR}
unzip -j quake15/q15.pk3 gfx/qplaque.lmp
gcc ${DISTDIR}/lmp2tga.c -o lmp2tga
./lmp2tga qplaque.lmp
convert qplaque.tga -gravity North -chop 0x112 ${WORKDIR}/engine/${PN}.png
fi
}
src_install() { src_install() {
insinto "/usr/share/quake1" pushd "${WORKDIR}/engine"
if use opengl || use sdl ; then
local type=$(use sdl && echo "sdl" || echo "glx")
newbin "darkplaces-${type}" ${PN}
newicon ${PN}.png ${PN}.png
make_desktop_entry ${PN} "Quake 1.5"
fi
if use dedicated; then
newbin darkplaces-dedicated ${PN}-ded
fi
dodoc *.txt todo "${WORKDIR}"/engine/*.txt
popd
insinto "${WAD_DIR}"
doins id1
doins -r quake15 doins -r quake15
} }
pkg_postinst() { pkg_postinst() {
echo if ! use cdinstall; then
elog "In order to play this mod run Quake with -game option:" elog "Please make sure that the path /usr/share/quake1/id1 exists and place pak0.pak and pak1.pak in /usr/share/quake1/id1"
elog " darkplaces -game quake15" if use cdda; then
elog "However, this mod can only be played with =games-fps/darkplaces-20170829_beta1-r1" elog "If you wish to have the original soundtrack available without playing from an optical drive, please make sure that the path /usr/share/quake1/id1/sound/cdtracks exists, and that it contains the original soundtrack. The expected filename schema is track%i.%s with a double-digit count, either in WAV RIFF or OGG Vorbis format."
elog "If you update the engine, you should not attempt to start this mod." fi
elog "See the relevant GitHub issue for more info:" fi
elog " https://github.com/DarkPlacesEngine/darkplaces/issues/133" if use sdl && ! use alsa; then
echo einfo "If audio latency is an issue, consider choosing OpenGL and ALSA USE flags instead of SDL."
fi
} }