From dd4c7e36aca93d9b1fe5a1f9dc40a041a28e1bd3 Mon Sep 17 00:00:00 2001 From: Jan Beich Date: Mon, 3 Sep 2018 17:48:23 +0000 Subject: [PATCH] games/vkquake: add new port vkQuake is a Quake 1 port using Vulkan instead of OpenGL for rendering. It is based on the popular QuakeSpasm port and runs all mods compatible with it like Arcane Dimensions or In The Shadows. Compared to QuakeSpasm vkQuake also features a software Quake like underwater effect, has better color precision, generates mipmap for water surfaces at runtime and has native support for anti-aliasing and AF. https://github.com/Novum/vkQuake PR: 222182 Submitted by: Greg V --- games/Makefile | 1 + games/vkquake/Makefile | 97 ++++++++++++++++++++++++++++ games/vkquake/distinfo | 3 + games/vkquake/files/patch-common.c | 11 ++++ games/vkquake/files/vkquake.desktop | 11 ++++ games/vkquake/files/vkquake.png | Bin 0 -> 26441 bytes games/vkquake/pkg-descr | 9 +++ games/vkquake/pkg-plist | 4 ++ 8 files changed, 136 insertions(+) create mode 100644 games/vkquake/Makefile create mode 100644 games/vkquake/distinfo create mode 100644 games/vkquake/files/patch-common.c create mode 100644 games/vkquake/files/vkquake.desktop create mode 100644 games/vkquake/files/vkquake.png create mode 100644 games/vkquake/pkg-descr create mode 100644 games/vkquake/pkg-plist diff --git a/games/Makefile b/games/Makefile index 7a299002e26f..b2a810514b8d 100644 --- a/games/Makefile +++ b/games/Makefile @@ -1093,6 +1093,7 @@ SUBDIR += violetland SUBDIR += viruskiller SUBDIR += vitetris + SUBDIR += vkquake SUBDIR += vms-empire SUBDIR += vodovod SUBDIR += volleyball diff --git a/games/vkquake/Makefile b/games/vkquake/Makefile new file mode 100644 index 000000000000..414c24bae8d9 --- /dev/null +++ b/games/vkquake/Makefile @@ -0,0 +1,97 @@ +# $FreeBSD$ + +PORTNAME= vkquake +DISTVERSION= 1.00.0 +CATEGORIES= games + +MAINTAINER= greg@unrelenting.technology +COMMENT= Quake 1 port using Vulkan instead of OpenGL, based on QuakeSpasm + +LICENSE= GPLv2+ +LICENSE_FILE= ${WRKSRC}/../LICENSE.txt + +BUILD_DEPENDS= ${LOCALBASE}/include/vulkan/vulkan.h:devel/vulkan-headers +LIB_DEPENDS= libSDL2.so:devel/sdl20 \ + libX11-xcb.so:x11/libX11 \ + libvulkan.so:graphics/vulkan-loader + +WRKSRC_SUBDIR= Quake + +USES= desktop-file-utils gmake pkgconfig + +USE_GITHUB= yes +GH_ACCOUNT= Novum +GH_PROJECT= vkQuake + +INSTALLS_ICONS= yes + +MAKE_ENV= prefix=${PREFIX} bindir=${PREFIX}/bin +ALL_TARGET= # empty + +.include "${.CURDIR}/../quake-data/Makefile.include" + +CFLAGS+= -DDATADIR='\"${Q1DIR}\"' + +OPTIONS_DEFINE= USERDIRS WAVE FLAC MP3 VORBIS # OPUS +OPTIONS_RADIO= MODPLAYER +OPTIONS_RADIO_MODPLAYER= MIKMOD XMP MODPLUG +OPTIONS_DEFAULT= USERDIRS WAVE FLAC VORBIS MODPLUG # OPUS MODPLUG + +USERDIRS_DESC= Enable support for loading game files from user directories (~/.vkquake) +WAVE_DESC= Enable support for Wave music +FLAC_DESC= Enable support for FLAC music +MP3_DESC= Enable support for MP3 music +VORBIS_DESC= Enable support for Ogg Vorbis music +# OPUS_DESC= Enable support for Opus music +MIKMOD_DESC= Enable support for tracker module music using MikMod +XMP_DESC= Enable support for tracker module music using XMP +MODPLUG_DESC= Enable support for tracker module music using ModPlug + +USERDIRS_MAKE_ARGS= DO_USERDIRS=1 +USERDIRS_MAKE_ARGS_OFF= DO_USERDIRS=0 + +WAVE_MAKE_ARGS= USE_CODEC_WAVE=1 +WAVE_MAKE_ARGS_OFF= USE_CODEC_WAVE=0 + +FLAC_MAKE_ARGS= USE_CODEC_FLAC=1 +FLAC_MAKE_ARGS_OFF= USE_CODEC_FLAC=0 +FLAC_LIB_DEPENDS= libFLAC.so:audio/flac + +MP3_MAKE_ARGS= USE_CODEC_MP3=1 MP3LIB=mad +MP3_MAKE_ARGS_OFF= USE_CODEC_MP3=0 +MP3_LIB_DEPENDS= libmad.so:audio/libmad + +VORBIS_MAKE_ARGS= USE_CODEC_VORBIS=1 VORBISLIB=vorbis +VORBIS_MAKE_ARGS_OFF= USE_CODEC_VORBIS=0 +VORBIS_LIB_DEPENDS= libvorbis.so:audio/libvorbis \ + libvorbisfile.so:audio/libvorbis \ + libogg.so:audio/libogg + +# XXX: crashes on start +# OPUS_MAKE_ARGS= USE_CODEC_OPUS=1 +# OPUS_MAKE_ARGS_OFF= USE_CODEC_OPUS=0 +# OPUS_LIB_DEPENDS= libopus.so:audio/opus \ +# libopusfile.so:audio/opusfile + +MIKMOD_MAKE_ARGS= USE_CODEC_MIKMOD=1 +MIKMOD_MAKE_ARGS_OFF= USE_CODEC_MIKMOD=0 +MIKMOD_LIB_DEPENDS= libmikmod.so:audio/libmikmod + +XMP_MAKE_ARGS= USE_CODEC_XMP=1 +XMP_MAKE_ARGS_OFF= USE_CODEC_XMP=0 +XMP_LIB_DEPENDS= libxmp.so:audio/xmp + +MODPLUG_MAKE_ARGS= USE_CODEC_MODPLUG=1 +MODPLUG_MAKE_ARGS_OFF= USE_CODEC_MODPLUG=0 +MODPLUG_LIB_DEPENDS= libmodplug.so:audio/libmodplug + +post-install: + ${MKDIR} ${STAGEDIR}${Q1DIR} + ${INSTALL_DATA} ${WRKSRC}/vkquake.pak ${STAGEDIR}${Q1DIR} + ${MKDIR} ${STAGEDIR}${PREFIX}/share/icons/hicolor/256x256/apps + ${INSTALL_DATA} ${FILESDIR}/vkquake.png \ + ${STAGEDIR}${PREFIX}/share/icons/hicolor/256x256/apps/vkquake.png + ${INSTALL_DATA} ${FILESDIR}/vkquake.desktop \ + ${STAGEDIR}${PREFIX}/share/applications + +.include diff --git a/games/vkquake/distinfo b/games/vkquake/distinfo new file mode 100644 index 000000000000..55c37b95931f --- /dev/null +++ b/games/vkquake/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1533668323 +SHA256 (Novum-vkQuake-1.00.0_GH0.tar.gz) = b0c5420d6f5c71ed032232729fc73537588267a187bea5f29681dc2d51d8712f +SIZE (Novum-vkQuake-1.00.0_GH0.tar.gz) = 3404109 diff --git a/games/vkquake/files/patch-common.c b/games/vkquake/files/patch-common.c new file mode 100644 index 000000000000..2a3b2fb9b899 --- /dev/null +++ b/games/vkquake/files/patch-common.c @@ -0,0 +1,11 @@ +--- common.c.orig 2017-09-09 21:55:23 UTC ++++ common.c +@@ -2231,7 +2231,7 @@ void COM_InitFilesystem (void) //johnfitz -- modified + if (i && i < com_argc-1) + q_strlcpy (com_basedir, com_argv[i + 1], sizeof(com_basedir)); + else +- q_strlcpy (com_basedir, host_parms->basedir, sizeof(com_basedir)); ++ q_strlcpy (com_basedir, DATADIR, sizeof(com_basedir)); + + j = strlen (com_basedir); + if (j < 1) Sys_Error("Bad argument to -basedir"); diff --git a/games/vkquake/files/vkquake.desktop b/games/vkquake/files/vkquake.desktop new file mode 100644 index 000000000000..43f30001c23d --- /dev/null +++ b/games/vkquake/files/vkquake.desktop @@ -0,0 +1,11 @@ +[Desktop Entry] +Name=vkQuake +GenericName=Quake engine modification (Vulkan) +Comment=Quake 1 port using Vulkan +Exec=vkquake +Icon=vkquake +Terminal=false +Type=Application +Categories=Game; +MimeType=x-scheme-handler/steam; +Keywords=quake;game;First-Person-Shooter; diff --git a/games/vkquake/files/vkquake.png b/games/vkquake/files/vkquake.png new file mode 100644 index 0000000000000000000000000000000000000000..fec19dbf5d7efadd63a102c1244a3bee055cbf3e GIT binary patch literal 26441 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

yX56WnTSd>!jW}8@KXYaB>6H$fFDh(wN@7hu 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 literal 0 HcmV?d00001 diff --git a/games/vkquake/pkg-descr b/games/vkquake/pkg-descr new file mode 100644 index 000000000000..114277394247 --- /dev/null +++ b/games/vkquake/pkg-descr @@ -0,0 +1,9 @@ +vkQuake is a Quake 1 port using Vulkan instead of OpenGL for rendering. It is +based on the popular QuakeSpasm port and runs all mods compatible with it like +Arcane Dimensions or In The Shadows. + +Compared to QuakeSpasm vkQuake also features a software Quake like underwater +effect, has better color precision, generates mipmap for water surfaces at +runtime and has native support for anti-aliasing and AF. + +WWW: https://github.com/Novum/vkQuake diff --git a/games/vkquake/pkg-plist b/games/vkquake/pkg-plist new file mode 100644 index 000000000000..3c46159d5dc7 --- /dev/null +++ b/games/vkquake/pkg-plist @@ -0,0 +1,4 @@ +bin/vkquake +%%Q1DIR%%/vkquake.pak +share/applications/vkquake.desktop +share/icons/hicolor/256x256/apps/vkquake.png