The Quake situation is now marginally better. A newer release exists, and the old one, on which Quake 1.5 depends on, is fixed.

This commit is contained in:
grepwood 2024-03-02 11:20:58 +01:00
parent a3f1ad0767
commit e58538d4d1
6 changed files with 371 additions and 92 deletions

View File

@ -1,3 +1,4 @@
DIST darkplacesengine20170829beta1.zip 29103945 BLAKE2B e6ddcb5a9f3a820879a70ca4578867f80a1df5e2143f20f924eb93b75cf9beafb74246dcca15cd3328e61189ff431fe678fc5a70f17d32dfa978499e8a1d0127 SHA512 49ec750199240eb7ba4eae6ede3a3ee85bafef07607b827111fb7846f7283c44a480637a45fd85a33f441ab2f99c44dc105348ea5da04d0397650f1a347cf3e9
DIST darkplacesenginesource20170829beta1.tar.gz 2063047 BLAKE2B c3d4a49a6f11f7d6458c0f94da05547abfe9b975d2d2810e9d06d6077dae293da7e547482d92fa58612a59acce592abfe8e1ac3f55ba05bad43436e46737981b SHA512 618ddda15f80c04d3d46499504213326a2b82f591e8f633e62ac988b2e525e8c5f310f12ea91a48f8ea0c8f02375568acad28a5558311b802f6a0e45eaf592f3
DIST darkplacesenginesource20240226_alpha1.tar.gz 4614280 BLAKE2B 933aa4dcbc262c8f62c12de8402f2b8e31063a89fde1901ba3378646be51b78b7f5f657ec26d52d1ecfd5f88b62677b912f82ce915e44a8d63819f16ab0235da SHA512 c5b8a1299c02e9eef59bbe36cbcb36005cedd9948f97597474cc05ce5ffdd33729825733877b9bac86cf7792d96cf80b6795281381c11eb84879b7823c5c5979
DIST fuhquake-lits.rar 8388829 BLAKE2B fb9c4db151deb43424de9331641154f412394ae6346864bc62a210c7d8d12c6ed6c8647cb4cd83fa853155c5f562f7e9b8d3c779fe74c1bb3f05bb6f627b1d5e SHA512 6e59f5e08a6c401b329b86b0cd677a04b1a5aee11f24973c77c9e7ea50cab9dedf4fc15c4f3d6b73bdc87bacdc9612a3c244d0a4ceceef943abb6e256ac23925
DIST id1.pk3 350470 BLAKE2B 76426667de5f42633f608b75286671344d439398aa9b819e9ba3979ca317a93930b1077de7efb4b1bad670a6341c7536d572cfc2590a5812c71dd0c4e8def784 SHA512 d4d7233bc1e5049e89d09448818219b0ce7941fecde5381cd95933e4c96ebc9b4e34ff7eae5eb5d0d1e3cc2ceb4f5254f4d600aded7dda373713149817621331

View File

@ -0,0 +1,220 @@
# 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

@ -7,7 +7,7 @@ inherit flag-o-matic unpacker desktop wrapper
# Latest versions are in http://icculus.org/twilight/darkplaces/files/
MY_PV="${PV/_beta/beta}"
MY_ENGINE="${PN}engine${MY_PV}.zip"
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/
@ -15,7 +15,8 @@ MY_LIGHTS="fuhquake-lits.rar"
DESCRIPTION="Enhanced engine for iD Software's Quake 1"
HOMEPAGE="http://icculus.org/twilight/darkplaces/"
SRC_URI="http://icculus.org/twilight/${PN}/files/${MY_ENGINE}
GIT_COMMIT="95ed24831ca8dcbf6ae8f886733c35ce2ad83272"
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 )"
@ -23,73 +24,61 @@ SRC_URI="http://icculus.org/twilight/${PN}/files/${MY_ENGINE}
LICENSE="GPL-2"
SLOT="0"
KEYWORDS="~amd64 ~x86"
IUSE="alsa cdinstall cdsound debug dedicated demo lights opengl oss sdl textures"
IUSE="capture cdinstall debug dedicated demo ipv6 lights sdl textures"
UIRDEPEND="
virtual/jpeg:0
media-libs/libogg
media-libs/libvorbis
virtual/opengl
alsa? ( media-libs/alsa-lib )
sdl? ( media-libs/libsdl )
SDL_RDEPEND="
media-libs/libsdl2[udev]
x11-libs/libX11
x11-libs/libXpm
x11-libs/libXxf86dga
x11-libs/libXxf86vm
"
UIDEPEND="
x11-base/xorg-proto
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? ( ${UIRDEPEND} )
!opengl? ( sdl? ( ${UIRDEPEND} ) )
!opengl? ( !sdl? ( !dedicated? ( ${UIRDEPEND} ) ) )
sdl? ( ${SDL_RDEPEND} )
"
DEPEND="lights? ( || (
BDEPEND="lights? (
app-arch/unrar
app-arch/rar ) )
opengl? (
${UIRDEPEND}
${UIDEPEND} )
!opengl? ( sdl? (
${UIRDEPEND}
${UIDEPEND} ) )
!opengl? ( !sdl? ( !dedicated? (
${UIRDEPEND}
${UIDEPEND} ) ) )
virtual/pkgconfig
app-arch/unzip
)
app-alternatives/tar
app-alternatives/gzip
sys-apps/coreutils
sys-apps/sed
virtual/pkgconfig
"
S="${WORKDIR}/${PN}"
S="${WORKDIR}"
dir="/usr/share/quake1"
opengl_client() { use opengl || ( ! use dedicated && ! use sdl ) }
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
unpack "${MY_ENGINE}"
unpack ./${PN}*.zip
tar --strip-components 1 -xf "${DISTDIR}/${MY_SOURCE}"
}
src_prepare() {
default
rm "${WORKDIR}"/README-SDL.txt
cd "${S}"
rm mingw_note.txt
strip-flags
# Only additional CFLAGS optimization is the -march flag
local march=$(get-flag -march)
sed -i \
@ -101,57 +90,52 @@ src_prepare() {
-e '/^LDFLAGS_RELEASE/s/$/ $(LDFLAGS)/' \
-e "s:strip:true:" \
makefile.inc || die
if ! use cdsound ; then
# Turn the CD accesses off
sed -i \
-e "s:/dev/cdrom:/dev/null:" \
cd_linux.c || die
sed -i \
-e 's:COM_CheckParm("-nocdaudio"):1:' \
cd_shared.c || die
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 opts="DP_FS_BASEDIR=\"${dir}\" DP_LINK_TO_LIBJPEG=1"
# Preferred sound is alsa
local sound_api="NULL"
use oss && sound_api="OSS"
use alsa && sound_api="ALSA"
opts="${opts} DP_SOUND_API=${sound_api}"
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"
local type="release"
use debug && type="debug"
# Only compile a maximum of 1 client
if use debug; then
type="debug"
fi
if use sdl; then
emake ${opts} "sdl-${type}"
elif opengl_client ; then
emake ${opts} "cl-${type}"
fi
if use dedicated; then
emake ${opts} "sv-${type}"
fi
}
src_install() {
if opengl_client || use sdl ; then
local type=glx
use sdl && type=sdl
if use sdl; then
local 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
@ -159,13 +143,10 @@ src_install() {
make_desktop_entry ${PN} "Dark Places"
fi
fi
if use dedicated; then
newbin ${PN}-dedicated ${PN}-ded
fi
dodoc *.txt ChangeLog todo "${WORKDIR}"/*.txt
dodoc *.txt todo "${WORKDIR}"/*.txt
if use lights; then
insinto "${dir}"/id1
doins -r "${WORKDIR}"/{cubemaps,maps}
@ -183,8 +164,4 @@ 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

@ -0,0 +1,76 @@
--- a/dpsoftrast.c 2016-09-10 21:36:13.000000000 +0200
+++ b/dpsoftrast.c 2024-03-02 02:04:39.576523847 +0100
@@ -163,21 +163,21 @@
#define DPSOFTRAST_DRAW_MAXCOMMANDPOOL 2097152
#define DPSOFTRAST_DRAW_MAXCOMMANDSIZE 16384
-typedef ALIGN(struct DPSOFTRAST_State_Command_Pool_s
+typedef ALIGN(struct) DPSOFTRAST_State_Command_Pool_s
{
int freecommand;
int usedcommands;
ALIGN(unsigned char commands[DPSOFTRAST_DRAW_MAXCOMMANDPOOL]);
}
-DPSOFTRAST_State_Command_Pool);
+DPSOFTRAST_State_Command_Pool;
-typedef ALIGN(struct DPSOFTRAST_State_Triangle_s
+typedef ALIGN(struct) DPSOFTRAST_State_Triangle_s
{
unsigned char mip[DPSOFTRAST_MAXTEXTUREUNITS]; // texcoord to screen space density values (for picking mipmap of textures)
float w[3];
ALIGN(float attribs[DPSOFTRAST_ARRAY_TOTAL][3][4]);
}
-DPSOFTRAST_State_Triangle);
+DPSOFTRAST_State_Triangle;
#define DPSOFTRAST_CALCATTRIB(triangle, span, data, slope, arrayindex) { \
slope = _mm_load_ps((triangle)->attribs[arrayindex][0]); \
@@ -198,7 +198,7 @@
#define DPSOFTRAST_DRAW_MAXSUBSPAN 16
-typedef ALIGN(struct DPSOFTRAST_State_Span_s
+typedef ALIGN(struct) DPSOFTRAST_State_Span_s
{
int triangle; // triangle this span was generated by
int x; // framebuffer x coord
@@ -209,7 +209,7 @@
int depthbase; // depthbuffer value at x (add depthslope*startx to get first pixel's depthbuffer value)
int depthslope; // depthbuffer value pixel delta
}
-DPSOFTRAST_State_Span);
+DPSOFTRAST_State_Span;
#define DPSOFTRAST_DRAW_MAXSPANS 1024
#define DPSOFTRAST_DRAW_MAXTRIANGLES 128
@@ -236,7 +236,7 @@
}
DPSOFTRAST_BLENDMODE;
-typedef ALIGN(struct DPSOFTRAST_State_Thread_s
+typedef ALIGN(struct) DPSOFTRAST_State_Thread_s
{
void *thread;
int index;
@@ -300,9 +300,9 @@
DPSOFTRAST_State_Triangle triangles[DPSOFTRAST_DRAW_MAXTRIANGLES];
unsigned char pixelmaskarray[DPSOFTRAST_DRAW_MAXSPANLENGTH+4]; // LordHavoc: padded to allow some termination bytes
}
-DPSOFTRAST_State_Thread);
+DPSOFTRAST_State_Thread;
-typedef ALIGN(struct DPSOFTRAST_State_s
+typedef ALIGN(struct) DPSOFTRAST_State_s
{
int fb_width;
int fb_height;
@@ -358,7 +358,7 @@
DPSOFTRAST_State_Command_Pool commandpool;
}
-DPSOFTRAST_State);
+DPSOFTRAST_State;
DPSOFTRAST_State dpsoftrast;

View File

@ -2,9 +2,10 @@
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
<use>
<flag name="capture">Enables video capture with OGG</flag>
<flag name="cdsound">Enables using CD audio in the engine</flag>
<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="lights">Install and setup the updated light maps from FuhQuake</flag>
<flag name="textures">Install and setup the updated textures</flag>
</use>
</pkgmetadata>

View File

@ -12,10 +12,10 @@ SRC_URI="
LICENSE="HPND"
SLOT="0"
KEYWORDS="~amd64 ~arm ~ppc64 ~x86"
KEYWORDS="~amd64 ~x86 ~ppc64 ~arm64"
RDEPEND=">=games-fps/darkplaces-20170829_beta1"
DEPEND="app-arch/p7zip"
RDEPEND="=games-fps/darkplaces-20170829_beta1-r1"
BDEPEND="app-arch/p7zip"
S="${WORKDIR}"
@ -28,5 +28,9 @@ pkg_postinst() {
echo
elog "In order to play this mod run Quake with -game option:"
elog " darkplaces -game quake15"
elog "However, this mod can only be played with =games-fps/darkplaces-20170829_beta1-r1"
elog "If you update the engine, you should not attempt to start this mod."
elog "See the relevant GitHub issue for more info:"
elog " https://github.com/DarkPlacesEngine/darkplaces/issues/133"
echo
}