From 918d4273926158832cadfdacf9f6ec41bc3ea319 Mon Sep 17 00:00:00 2001 From: "B. Watson" Date: Wed, 18 Jan 2023 03:54:24 -0500 Subject: [PATCH] games/wolf4sdl: Updated for version 2.0+20210408_f31f41a. Signed-off-by: B. Watson Signed-off-by: Willy Sudiarto Raharjo --- games/wolf4sdl/README | 7 + games/wolf4sdl/datadir.diff.gz | Bin 2109 -> 0 bytes .../{ => desktop}/wolf4sdl-spear-demo.desktop | 2 +- .../{ => desktop}/wolf4sdl-spear-full.desktop | 2 +- .../wolf4sdl-wolf3d-demo.desktop | 2 +- .../wolf4sdl-wolf3d-full.desktop | 2 +- games/wolf4sdl/exename.diff.gz | Bin 626 -> 0 bytes games/wolf4sdl/git2tarxz.sh | 52 +++ games/wolf4sdl/icons/128.png | Bin 27544 -> 6206 bytes games/wolf4sdl/icons/16.png | Bin 870 -> 785 bytes games/wolf4sdl/icons/22.png | Bin 0 -> 1150 bytes games/wolf4sdl/icons/32.png | Bin 2388 -> 1506 bytes games/wolf4sdl/icons/48.png | Bin 4073 -> 2462 bytes games/wolf4sdl/patches/datadir.diff | 311 ++++++++++++++++++ games/wolf4sdl/patches/exename.diff | 32 ++ games/wolf4sdl/patches/gameplay.diff | 270 +++++++++++++++ games/wolf4sdl/wolf4sdl.6 | 44 ++- games/wolf4sdl/wolf4sdl.SlackBuild | 61 ++-- games/wolf4sdl/wolf4sdl.info | 6 +- games/wolf4sdl/wolf4sdl.png | Bin 753 -> 0 bytes 20 files changed, 756 insertions(+), 35 deletions(-) delete mode 100644 games/wolf4sdl/datadir.diff.gz rename games/wolf4sdl/{ => desktop}/wolf4sdl-spear-demo.desktop (65%) rename games/wolf4sdl/{ => desktop}/wolf4sdl-spear-full.desktop (66%) rename games/wolf4sdl/{ => desktop}/wolf4sdl-wolf3d-demo.desktop (63%) rename games/wolf4sdl/{ => desktop}/wolf4sdl-wolf3d-full.desktop (64%) delete mode 100644 games/wolf4sdl/exename.diff.gz create mode 100644 games/wolf4sdl/git2tarxz.sh create mode 100644 games/wolf4sdl/icons/22.png create mode 100644 games/wolf4sdl/patches/datadir.diff create mode 100644 games/wolf4sdl/patches/exename.diff create mode 100644 games/wolf4sdl/patches/gameplay.diff delete mode 100644 games/wolf4sdl/wolf4sdl.png diff --git a/games/wolf4sdl/README b/games/wolf4sdl/README index 6a20c5e875..3ac421ec9e 100644 --- a/games/wolf4sdl/README +++ b/games/wolf4sdl/README @@ -10,3 +10,10 @@ of Wolfenstein 3D and its sequel Spear of Destiny. To play the full versions of the games, you need the *.wl*, *.sod, and/or *.sd* files from your installed copies of the games. Copy them to "/usr/share/games/wolf3d". Filenames must be all-lowercase. + +This version of Wolf4SDL has some gameplay features that make it play +more like a modern FPS game. To try this, run e.g. + +$ wolf4sdl-wolf3d-demo --modern + +See the man page for more information. diff --git a/games/wolf4sdl/datadir.diff.gz b/games/wolf4sdl/datadir.diff.gz deleted file mode 100644 index c456c6539a04dc2c85a11e3ef8abe38d1d112f1e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2109 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 M1ut}RSQP~T0HCoTw*UYD diff --git a/games/wolf4sdl/git2tarxz.sh b/games/wolf4sdl/git2tarxz.sh new file mode 100644 index 0000000000..b3473a8ed7 --- /dev/null +++ b/games/wolf4sdl/git2tarxz.sh @@ -0,0 +1,52 @@ +#!/bin/sh + +### Containg wolf4sdl specific stuff, do not use as-is for a template! + +# Create source tarball from git repo, with generated version +# number. + +# Note that this script doesn't need to be run as root. It does +# need to be able to write to the current directory it's run from. + +# Takes one optional argument, which is the commit or tag to create +# a tarball of. With no arg, HEAD is used. + +PRGNAM=wolf4sdl +CLONE_URL=https://github.com/11001011101001011/Wolf4SDL + +# The version of wolf4sdl, according to the Changes.txt file. Have to +# keep track of this manually unless upstream starts using git tags... +# but this is an archived/readonly github project so it'll never +# happen. +MAINVER=2.0 + +set -e + +GITDIR=$( mktemp -dt $PRGNAM.git.XXXXXX ) +rm -rf $GITDIR +git clone $CLONE_URL $GITDIR + +CWD="$( pwd )" +cd $GITDIR + +if [ "$1" != "" ]; then + git reset --hard "$1" || exit 1 +fi + +GIT_SHA=$( git rev-parse --short HEAD ) + +DATE=$( git log --date=format:%Y%m%d --format=%cd | head -1 ) + +VERSION=${MAINVER}+${DATE}_${GIT_SHA} + +rm -rf .git +find . -name .gitignore -print0 | xargs -0 rm -f + +cd "$CWD" +rm -rf $PRGNAM-$VERSION $PRGNAM-$VERSION.tar.xz +mv $GITDIR $PRGNAM-$VERSION +tar cvfJ $PRGNAM-$VERSION.tar.xz $PRGNAM-$VERSION + +echo +echo "Created tarball: $PRGNAM-$VERSION.tar.xz" +echo "VERSION=$VERSION" diff --git a/games/wolf4sdl/icons/128.png b/games/wolf4sdl/icons/128.png index 04cf9b9c6fd54301d500e46fb4b715788b893f9d..018dc8de485b0abbedfb740aaa87a57d1bb16ebe 100644 GIT binary patch literal 6206 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 literal 27544 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 diff --git a/games/wolf4sdl/icons/16.png b/games/wolf4sdl/icons/16.png index 98efb19983aeed05bba1790f2bd7f293babc3ebe..7632b41ad0ba8827145212db86c92d717491510c 100644 GIT binary patch delta 762 zcmV(*1K~y-6jgn1I6Hyd~Us~F^ z(_{+0o^z(8Cm3vi)Z3H$>S6BFakxRQimgcw6&T&N2ZJ~oIU zu|^CS5Cln>K-$b$GL)HSN~I1iC|JwJv$^M<=iKMyBp3J_Wq*{?N1`asu`C@@+uq)OGa8N70qDwRv(z-r>7rh)y1M$AAP9FY%lewjCc@rl!Wh zvMeM?;{1MpOjXsk-QC?6ZnyiiBuNv!y}j*`NJO+OtIIS^n#p9Q?R9l^1Kr)-cO*%2 z=JWZ3OeT}7s(-2~7X+bPQ53r@%TI#A;ACH4U$~;80xp*ep-_lxXlRHflgT!l*Xz9& zi^W_vo9$q9baZlIVL{<}9z4&35CWEEFLZWxo)rWE4u|8wFpNE(=h58U%rrJOp0T-H zE<2?ZQ&UsxtE;Qm8HNF+6qHgh32&(j^73*L01U&JDCM?9BJpr+Y;3EeqoY0;4BjGypm+rUN<1DPSzB96 z3xaU9l-p9N)Q_2&nFoepfaAD+mSvA8uq+Dzn4h1&H#j)hZ<^-&QeF-Ki;Ig-hlYlf zjg5^Dp?^?lVQXs(0HEtSnwpwMT3T8z0l@6+>^oi8QOwIqe-@>5!{_q_06?u~FE17R)-+@_?Jx)60Q}i>8UXMMIPWq|_Yuzm+b0ARz_~&$1H1@u z&cb~UXowuP;2R*@f!ikpUXDY!vJwCg1~>qCt#fHRHz@Ul3y)V!b4SLI<;}Fuq1#v sRsAly-Rt9;W(R;Ts=B#q7z0QA4@uY)nnJpcdz delta 848 zcmV-W1F!s%2IdBkBYy)eNkl`EkeOd)I?!)bm%UrEwol!S}2A> zsM-q_5QH2lVXG>T0o{ z&15$A`v3AFlbMlcbDNu+36#s_utBev>I?>IHJeGTPDivDlj8e=$wY9qhG4m`(Q1iS zgXNi))L;xUw8iQCf_8RxG>*oG?|zS4eEM**FqKRcIBu};fFCW~kH-o(0)aw+WecJH z8-*ap{i-4EhkxB}r~dY<+bI7zkIxy+;#p%oO|-VcysraNfgsHEcEhtl4i=+P_%|4Y zzgZTZ4-LcfPzau}tkh_+P_NgUN7?L0tWr8eMrEOzinD+Z=;0655DYhuL)`Cz%jWao zu~?w5r3E;b3nD%r-0JC(>doh=&+97+wy;v^6c4C1^nXlcC6txx05Lo$m;`8aZm>D5 zV6<4F-PHy|T|E#hri;ZSo83lz9(NvXXFuV6`>f)TgQscq(w}fx-3SQHfr^QPy6iSs ztrum9T~5;p1Kwuf+)ePv*(@1NX6p8L=F!%tEG}2;MYB#%J6sJ=YjA-=5rq;a399lj zsHlxVcYj+OxVyWc%5Vv4THSEuc#~9GVx^9|k7dEu7Cxv}iH^Ez+S}I){*LQ%f_t(c z0i}oT!U@Y5w416SHsFW9^bt5|?T0c|i-eGo)^MXmK^B)XB_e|q)K+f>ovu|DL}7nP z9F(OzTw{5d>$?EcgC3ZgnuLk_NeGAUNL~+1yMLm5afvxxrmXmJvZ_+@c&`YydY7PN z;sQd`!Z}l1crY<4bUNyUf$N>Z*u8Oq=XoJ1-^y5$r_+xf=Hvw1SfOB~I-`-EI#op) z8rtLoPm*KD?vRm@2nh}bNt4q>*!}?$iA2b7I84If5eS8D(m2n5LEpZ9JD|J@!uyq#m4ANw aH~s`km>V7%|5L>P0000$_j9@2>i`~b0KBTI-igQK z5r^aP0Sv={^=-x2*jQ?Hbu~gMeW|y%_uBCA@L`VQnix&faP{idhg(})9}$noGji_S zIo0R$fiZ?`HmhH{bZMthD1b3$4{IaF*e4?+BZoa6Pg9;ThR)7TT)cSkh{xmkfVkc6 z7yJABi7d;|G|iltnD~uSIw^`GWLdTc&+`Dl`Fy@Ze!m~GEJGAUOioU28-`(Xj4?=( zq!U7j)93R+mSs#$O>Jhg+1GfU-=mZ^8P_WoTrL-}wDIxrzvkxV?&-ST!t#WW-!)Bp zzN@PX`Fy?zAWaAXr4)=Y`~K<`SBk}Ai7^JlFpx|pH@sf&BBk`iewL)u=_@lcGh4DO zLs1kFfMglBsTjp#@!N%kg+0a?2qFAIEMKiwf1RJ7UszdLc{v`Bhu7BDrcKjaal74+ zW!bL6dWNY~>fOtiFZY#7r4uJlo;*4|J?%P(1pp};jow{cT&$frb7q@Tdgs=yTV_6= zx5uedr;-gXi&Itg!$2Ug5e|p1wPX1@SXf_Qf8p%ev%hd0HxmklL`vz?`>Sv|oyVim z=%}TMqWG0*nu>K5jVzD<;_qZK`6K`YgTb*IH*R2QX~|AzG8uTi-uGg$*sFm+001yL zIvTB1DnGSjn}3~p2!b#c3WeTuI-Rz*xw)A#45QfD+1YDpsZ{E&X_~X`SRQSnR;{9# zN}V(vKRMkFE$uMvw zkyzi>^+D7deT%VM5S}^i_YXYR-QBX`cN-g}om%aSfGA$*QB`}hcjo5Od0jsbAZM{H z&n-yl4?#+wlAO-!{#;7aa;cr2{-E1^|EQt}08pq@_<#2HK7IJ;(Pxe9zxqa_WbYJc QdjJ3c07*qoM6N<$g3gC3bN~PV literal 0 HcmV?d00001 diff --git a/games/wolf4sdl/icons/32.png b/games/wolf4sdl/icons/32.png index 01d716cae796efdae8a20cf64cc3daed81abfc20..8deb831fd068256162295de065f03fa2ad285c8d 100644 GIT binary patch delta 1489 zcmV;?1upv365%_%r6K{hGG<~6VDqIODsB(xzBpxdaEqzFZg{nw>GY~4Cf>cGSEA^qs zAXSK}78M2~IZDAQ!YY#E79-jPEJOKlR^S|eR z&d$Aapbj)m+pp{TV@=Zz){FapKnNjz*V@{e+qrY6jK||SA;dV)_Pg(wc0~=tAb%2xAcUa1yIW7CQr6wOci+}Dt-Vw#O#(rU&(l}f+yJnvngr~n8d-s|b0(jG>{SQV;|>KqL|wN+c3ThlYk?hGEp?IF7^U=x9EZ$t<|8`=$a|LWrlwj~}<= z@%WnH8-F)$$g5YcI!BHivBNeybm&l7KuienczAf&4y!y2*REX)&YnHHq67UKHf->d z$>f@V^XJd6Ub=MYiRXD=HBGb8em_j7)1}VN&Zd$BY~Q|J9UUFDb)YAmPTQ49CMG6I zmoHzw@4D`HRaJe`NPrOH+nY9RdZ9XQYHCVOOn*!`!^6X&9fZ%%YCIl~>t(X*x|}|J z+H+m^2S65}kpROml5K5mYvQh4xl$S#8Ci5)cYQs+?)&~?E|>Ex%Q66N-MWQg7=LqJ z_g*>3vg*H^p65Mu97kG~rId>p85!{kg+i~Ys(0$~Rp8d`+qVm*X=0itj^h9FA0S$0*W@biP zT3RBROj3Oe>+w~fpsMQor%s)6Ow(lR)~&3ru5JWg22d2GW(A7!>>^!}QoeiOz=8bo z@-mw@Z>Cr*ejV7-h_3=Tj`PdO$;s^a_JkR@JadGh% z0|Nv3xw$!x9zANdw6y%8Sw6rwY};PGaN&Z?X0!6};ln{oOUs<5X?`}Fm0?TMG(V)P z{kCmCNhA^l!!UmKpYnTSvDjxPPo9*qSS$y;p=p}$IF1ZkH3R^}fW3h7-|+iv+kd_f zyaAwTnlEeMiw&%3H2Mi3E0<}S51QeJefh5C^ZBopAEcC=J9jR$OerNme^*zRe(cz> zHNJiO_I;%pe#1|1qYWaF$Xn59^o8n}FT^!dKtuRcwYOsVz~ef;hWw_6kM%X|PeE0| zPK5gax)t!-LuOAO_!PW`0u-R5wtoQPpoRGt0Tq7V0eba>5CC@|ufmVNR0kB`B{0KA z5D97wUQLHoKLbtxqa`@|r3AbJrB^@?o9(;6`xdmss_b*%FT+1d@D9-U6ab`Zj9IA) zel7^O>Nwu+Sj+&}3(@NM2gM?P&*gGODR%?KrUWQJvWYow{Ncm=ZO^j?yMMYu{W;&~ z!uZcNkur5Et?9vkVT=!E&QOr~#p;Y@zQu4v*8x8W`0dS`D}_?&psFZ;3X458JL^4l-RrACaI)H0Q$R#j-|3FW zU;F9nuj|j1RDoZA{Bh9@f=WLFmlU3VUoPIeC$Bts@QLI5d-?qGX%4N?=wGOPgFRb@ rrhNvy2w>^@!)m|Kv=!jBT6z8rj8D?%y^m@C00000NkvXXu0mjfia!Dy delta 2378 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 S>kan+00000Dy!50Qvv`0D$NK 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 ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include "datafile.h" ++ ++static char *datapath = NULL; ++ ++static void set_data_path(void) { ++ if(datapath) return; ++ datapath = getenv("WOLF4PATH"); ++ if(datapath) return; ++ ++ // 20120113 bkw: should this be "C:\\WOLF3D" on Windows? ++ datapath = (char *)PREFIX "/share/games/wolf3d"; ++} ++ ++int datafile_exists(const char *file) { ++ char datafile[PATH_MAX]; ++ struct stat statbuf; ++ ++ set_data_path(); ++ ++ if(stat(file, &statbuf)) ++ return 1; ++ ++ sprintf(datafile, "%s/%s", datapath, file); ++ return stat(datafile, &statbuf); ++} ++ ++int datafile_open(const char *file, int flags) { ++ char datafile[PATH_MAX]; ++ int handle; ++ ++ set_data_path(); ++ ++ if( (handle = open(file, flags)) > 0 ) ++ return handle; ++ ++ sprintf(datafile, "%s/%s", datapath, file); ++ return open(datafile, flags); ++} ++ ++FILE *datafile_fopen(const char *file, const char *mode) { ++ char datafile[PATH_MAX]; ++ FILE *f; ++ ++ set_data_path(); ++ ++ if( (f = fopen(file, mode)) ) ++ return f; ++ ++ sprintf(datafile, "%s/%s", datapath, file); ++ return fopen(datafile, mode); ++} +diff -Naur wolf4sdl-2.0+20210408_f31f41a/datafile.h wolf4sdl-2.0+20210408_f31f41a.patched/datafile.h +--- wolf4sdl-2.0+20210408_f31f41a/datafile.h 1969-12-31 19:00:00.000000000 -0500 ++++ wolf4sdl-2.0+20210408_f31f41a.patched/datafile.h 2023-01-17 22:28:44.888190048 -0500 +@@ -0,0 +1,22 @@ ++ ++#include ++/* ++20120113 bkw: ++Functions for loading game data files. ++ ++All these functions search for files in: ++ ++- The current directory ++- The directory specified by $WOLF4PATH if set ++- If WOLF4PATH not set, fall back to PREFIX/share/games/wolf3d ++ ++*/ ++ ++/* returns true if file exists in the data path, otherwise false */ ++int datafile_exists(const char *file); ++ ++/* returns a filehandle to the file if found, or -1 if not */ ++int datafile_open(const char *file, int flags); ++ ++/* returns a FILE* if found, or NULL if not */ ++FILE *datafile_fopen(const char *file, const char *mode); +diff -Naur wolf4sdl-2.0+20210408_f31f41a/id_ca.c wolf4sdl-2.0+20210408_f31f41a.patched/id_ca.c +--- wolf4sdl-2.0+20210408_f31f41a/id_ca.c 2023-01-17 21:39:16.432986336 -0500 ++++ wolf4sdl-2.0+20210408_f31f41a.patched/id_ca.c 2023-01-17 22:34:06.381518949 -0500 +@@ -24,6 +24,7 @@ + #include + #endif + ++#include "datafile.h" + #include "wl_def.h" + #pragma hdrstop + +@@ -181,7 +182,7 @@ + { + int32_t size; + +- const int handle = open(filename, O_RDONLY | O_BINARY); ++ const int handle = datafile_open(filename, O_RDONLY | O_BINARY); + if (handle == -1) + return false; + +@@ -454,7 +455,7 @@ + strcpy(fname,gdictname); + strcat(fname,graphext); + +- handle = open(fname, O_RDONLY | O_BINARY); ++ handle = datafile_open(fname, O_RDONLY | O_BINARY); + if (handle == -1) + CA_CannotOpen(fname); + +@@ -465,7 +466,7 @@ + strcpy(fname,gheadname); + strcat(fname,graphext); + +- handle = open(fname, O_RDONLY | O_BINARY); ++ handle = datafile_open(fname, O_RDONLY | O_BINARY); + if (handle == -1) + CA_CannotOpen(fname); + +@@ -500,7 +501,7 @@ + strcpy(fname,gfilename); + strcat(fname,graphext); + +- grhandle = open(fname, O_RDONLY | O_BINARY); ++ grhandle = datafile_open(fname, O_RDONLY | O_BINARY); + if (grhandle == -1) + CA_CannotOpen(fname); + +@@ -544,7 +545,7 @@ + strcpy(fname,mheadname); + strcat(fname,extension); + +- handle = open(fname, O_RDONLY | O_BINARY); ++ handle = datafile_open(fname, O_RDONLY | O_BINARY); + if (handle == -1) + CA_CannotOpen(fname); + +@@ -560,14 +561,14 @@ + strcpy(fname, "gamemaps."); + strcat(fname, extension); + +- maphandle = open(fname, O_RDONLY | O_BINARY); ++ maphandle = datafile_open(fname, O_RDONLY | O_BINARY); + if (maphandle == -1) + CA_CannotOpen(fname); + #else + strcpy(fname,mfilename); + strcat(fname,extension); + +- maphandle = open(fname, O_RDONLY | O_BINARY); ++ maphandle = datafile_open(fname, O_RDONLY | O_BINARY); + if (maphandle == -1) + CA_CannotOpen(fname); + #endif +@@ -627,7 +628,7 @@ + strcpy(fname,afilename); + strcat(fname,audioext); + +- audiohandle = open(fname, O_RDONLY | O_BINARY); ++ audiohandle = datafile_open(fname, O_RDONLY | O_BINARY); + if (audiohandle == -1) + CA_CannotOpen(fname); + } +diff -Naur wolf4sdl-2.0+20210408_f31f41a/id_pm.c wolf4sdl-2.0+20210408_f31f41a.patched/id_pm.c +--- wolf4sdl-2.0+20210408_f31f41a/id_pm.c 2023-01-17 21:39:16.432986336 -0500 ++++ wolf4sdl-2.0+20210408_f31f41a.patched/id_pm.c 2023-01-17 22:34:44.942158111 -0500 +@@ -1,5 +1,6 @@ + // ID_PM.C + ++#include "datafile.h" + #include "wl_def.h" + + word ChunksInFile; +@@ -35,7 +36,7 @@ + + strcat (fname,extension); + +- file = fopen(fname,"rb"); ++ file = datafile_fopen(fname,"rb"); + + if (!file) + CA_CannotOpen(fname); +diff -Naur wolf4sdl-2.0+20210408_f31f41a/wl_menu.c wolf4sdl-2.0+20210408_f31f41a.patched/wl_menu.c +--- wolf4sdl-2.0+20210408_f31f41a/wl_menu.c 2023-01-17 21:39:16.439986452 -0500 ++++ wolf4sdl-2.0+20210408_f31f41a.patched/wl_menu.c 2023-01-17 22:39:05.618478948 -0500 +@@ -14,6 +14,7 @@ + #include + #endif + ++#include "datafile.h" + #include "wl_def.h" + #pragma hdrstop + +@@ -4052,11 +4053,11 @@ + // + #ifdef JAPAN + #ifdef JAPDEMO +- if(!stat("vswap.wj1", &statbuf)) ++ if(datafile_exists("vswap.wj1")) + { + strcpy (extension, "wj1"); + #else +- if(!stat("vswap.wj6", &statbuf)) ++ if(datafile_exists("vswap.wj6")) + { + strcpy (extension, "wj6"); + #endif +@@ -4076,13 +4077,13 @@ + // ENGLISH + // + #ifdef UPLOAD +- if(!stat("vswap.wl1", &statbuf)) ++ if(datafile_exists("vswap.wl1")) + strcpy (extension, "wl1"); + else + Quit ("NO WOLFENSTEIN 3-D DATA FILES to be found!"); + #else + #ifndef SPEAR +- if(!stat("vswap.wl6", &statbuf)) ++ if(datafile_exists("vswap.wl6")) + { + strcpy (extension, "wl6"); + NewEmenu[2].active = +@@ -4095,14 +4096,14 @@ + } + else + { +- if(!stat("vswap.wl3", &statbuf)) ++ if(datafile_exists("vswap.wl3")) + { + strcpy (extension, "wl3"); + NewEmenu[2].active = NewEmenu[4].active = EpisodeSelect[1] = EpisodeSelect[2] = 1; + } + else + { +- if(!stat("vswap.wl1", &statbuf)) ++ if(datafile_exists("vswap.wl1")) + strcpy (extension, "wl1"); + else + Quit ("NO WOLFENSTEIN 3-D DATA FILES to be found!"); +@@ -4116,28 +4117,28 @@ + #ifndef SPEARDEMO + if(param_mission == 0) + { +- if(!stat("vswap.sod", &statbuf)) ++ if(datafile_exists("vswap.sod")) + strcpy (extension, "sod"); + else + Quit ("NO SPEAR OF DESTINY DATA FILES TO BE FOUND!"); + } + else if(param_mission == 1) + { +- if(!stat("vswap.sd1", &statbuf)) ++ if(datafile_exists("vswap.sd1")) + strcpy (extension, "sd1"); + else + Quit ("NO SPEAR OF DESTINY DATA FILES TO BE FOUND!"); + } + else if(param_mission == 2) + { +- if(!stat("vswap.sd2", &statbuf)) ++ if(datafile_exists("vswap.sd2")) + strcpy (extension, "sd2"); + else + Quit ("NO SPEAR OF DESTINY DATA FILES TO BE FOUND!"); + } + else if(param_mission == 3) + { +- if(!stat("vswap.sd3", &statbuf)) ++ if(datafile_exists("vswap.sd3")) + strcpy (extension, "sd3"); + else + Quit ("NO SPEAR OF DESTINY DATA FILES TO BE FOUND!"); +@@ -4147,7 +4148,7 @@ + strcpy (graphext, "sod"); + strcpy (audioext, "sod"); + #else +- if(!stat("vswap.sdm", &statbuf)) ++ if(datafile_exists("vswap.sdm")) + { + strcpy (extension, "sdm"); + } diff --git a/games/wolf4sdl/patches/exename.diff b/games/wolf4sdl/patches/exename.diff new file mode 100644 index 0000000000..5ccaea752c --- /dev/null +++ b/games/wolf4sdl/patches/exename.diff @@ -0,0 +1,32 @@ +diff -Naur wolf4sdl-2.0+20210408_f31f41a/wl_main.c wolf4sdl-2.0+20210408_f31f41a.patched/wl_main.c +--- wolf4sdl-2.0+20210408_f31f41a/wl_main.c 2023-01-17 21:39:16.439986452 -0500 ++++ wolf4sdl-2.0+20210408_f31f41a.patched/wl_main.c 2023-01-17 22:45:03.503411046 -0500 +@@ -1608,6 +1608,10 @@ + bool hasError = false, showHelp = false; + bool sampleRateGiven = false, audioBufferGiven = false; + int i,defaultSampleRate = param_samplerate; ++ char *exename = argv[0], *p; ++ ++ for (p = argv[0]; *p; p++) ++ if (*p == '/') exename = p + 1; + + for(i = 1; i < argc; i++) + { +@@ -1814,7 +1818,7 @@ + "Wolf4SDL v2.0\n" + "Ported by Chaos-Software, additions by the community\n" + "Original Wolfenstein 3D by id Software\n\n" +- "Usage: Wolf4SDL [options]\n" ++ "Usage: %s [options]\n" + "Options:\n" + " --help This help page\n" + " --tedlevel Starts the game in the given level\n" +@@ -1853,7 +1857,7 @@ + " (default: 0 -> .sod, 1-3 -> .sd*)\n" + " --goodtimes Disable copy protection quiz\n" + #endif +- , defaultSampleRate ++ , exename, defaultSampleRate + ); + exit(1); + } diff --git a/games/wolf4sdl/patches/gameplay.diff b/games/wolf4sdl/patches/gameplay.diff new file mode 100644 index 0000000000..0ce1851292 --- /dev/null +++ b/games/wolf4sdl/patches/gameplay.diff @@ -0,0 +1,270 @@ +diff -Naur wolf4sdl-2.0+20210408_f31f41a/id_in.c wolf4sdl-2.0+20210408_f31f41a.patched/id_in.c +--- wolf4sdl-2.0+20210408_f31f41a/id_in.c 2023-01-17 21:39:16.000000000 -0500 ++++ wolf4sdl-2.0+20210408_f31f41a.patched/id_in.c 2023-01-18 03:22:12.892051206 -0500 +@@ -393,6 +393,12 @@ + return Joystick != NULL; + } + ++boolean autorun = false; ++boolean autostrafe = false; ++/* This doesn't work yet. ++boolean mw_dn = false, mw_up = false; ++*/ ++ + static void processEvent(SDL_Event *event) + { + switch (event->type) +@@ -417,6 +423,34 @@ + + LastScan = event->key.keysym.sym; + SDL_Keymod mod = SDL_GetModState(); ++ ++ if ((mod & KMOD_LSHIFT) && (mod & KMOD_RSHIFT)) ++ { ++ autorun = !autorun; ++ ++ if (autorun) ++ Message ("Always Run: On"); ++ else ++ Message ("Always Run: Off"); ++ ++ IN_ClearKeysDown (); ++ IN_Ack (); ++ } ++ if (((mod & KMOD_LALT) && (mod & KMOD_RALT)) || ++ ((mod & KMOD_LALT) && (mod & KMOD_MODE)) || ++ ((mod & KMOD_LALT) && (mod & KMOD_RSHIFT))) ++ { ++ autostrafe = !autostrafe; ++ ++ if (autostrafe) ++ Message ("Always Strafe: On"); ++ else ++ Message ("Always Strafe: Off"); ++ ++ IN_ClearKeysDown (); ++ IN_Ack (); ++ } ++ + if(Keyboard(sc_Alt)) + { + if(LastScan==SDLK_F4) +@@ -426,6 +460,7 @@ + if(LastScan == SDLK_KP_ENTER) LastScan = SDLK_RETURN; + else if(LastScan == SDLK_RSHIFT) LastScan = SDLK_LSHIFT; + else if(LastScan == SDLK_RALT) LastScan = SDLK_LALT; ++ else if(LastScan == SDLK_MODE) LastScan = SDLK_LALT; /* AltGr */ + else if(LastScan == SDLK_RCTRL) LastScan = SDLK_LCTRL; + else + { +@@ -470,6 +505,7 @@ + if(key == SDLK_KP_ENTER) key = SDLK_RETURN; + else if(key == SDLK_RSHIFT) key = SDLK_LSHIFT; + else if(key == SDLK_RALT) key = SDLK_LALT; ++ else if(key == SDLK_MODE) key = SDLK_LALT; /* AltGr */ + else if(key == SDLK_RCTRL) key = SDLK_LCTRL; + else + { +@@ -497,6 +533,18 @@ + GP2X_ButtonUp(event->jbutton.button); + break; + #endif ++ ++ /* ++ case SDL_MOUSEWHEEL: ++ { ++ mw_dn = mw_up = false; ++ if (event->wheel.y < 0) ++ mw_dn = true; ++ else if(event->wheel.y > 0) ++ mw_up = true; ++ break; ++ } ++ */ + } + } + +diff -Naur wolf4sdl-2.0+20210408_f31f41a/wl_def.h wolf4sdl-2.0+20210408_f31f41a.patched/wl_def.h +--- wolf4sdl-2.0+20210408_f31f41a/wl_def.h 2023-01-17 21:39:16.000000000 -0500 ++++ wolf4sdl-2.0+20210408_f31f41a.patched/wl_def.h 2023-01-18 03:22:12.893051223 -0500 +@@ -949,6 +949,8 @@ + extern int param_mission; + extern boolean param_goodtimes; + extern boolean param_ignorenumchunks; ++extern boolean param_novert; ++extern boolean param_crosshair; + + + void NewGame (int difficulty, int episode); +diff -Naur wolf4sdl-2.0+20210408_f31f41a/wl_draw.c wolf4sdl-2.0+20210408_f31f41a.patched/wl_draw.c +--- wolf4sdl-2.0+20210408_f31f41a/wl_draw.c 2023-01-17 21:39:16.000000000 -0500 ++++ wolf4sdl-2.0+20210408_f31f41a.patched/wl_draw.c 2023-01-18 03:22:12.893051223 -0500 +@@ -956,6 +956,17 @@ + SimpleScaleShape(viewwidth/2,SPR_DEMO,viewheight+1); + } + ++void DrawCrosshair (void) ++{ ++ if (gamestate.victoryflag || gamestate.weapon < wp_pistol) ++ return; ++ ++ const int c = (gamestate.health >= 50) ? 2 : (gamestate.health >= 25) ? 6 : 4; ++ const int h = (viewsize == 21 && ingame) ? screenHeight : screenHeight - scaleFactor * STATUSLINES; ++ ++ VL_Hlin (screenWidth / 2 - scaleFactor, h / 2, 2 * scaleFactor + 1, c); ++ VL_Vlin (screenWidth / 2, h / 2 - scaleFactor, 2 * scaleFactor + 1, c); ++} + + //========================================================================== + +@@ -1666,6 +1677,8 @@ + #endif + + DrawPlayerWeapon (); // draw player's hands ++ if (param_crosshair) ++ DrawCrosshair (); + + if(Keyboard(sc_Tab) && viewsize == 21 && gamestate.weapon != -1) + ShowActStatus(); +diff -Naur wolf4sdl-2.0+20210408_f31f41a/wl_main.c wolf4sdl-2.0+20210408_f31f41a.patched/wl_main.c +--- wolf4sdl-2.0+20210408_f31f41a/wl_main.c 2023-01-17 21:39:16.000000000 -0500 ++++ wolf4sdl-2.0+20210408_f31f41a.patched/wl_main.c 2023-01-18 03:40:19.681065262 -0500 +@@ -102,6 +102,10 @@ + int param_mission = 0; + boolean param_goodtimes = false; + boolean param_ignorenumchunks = false; ++boolean param_novert = false; ++boolean param_crosshair = false; ++extern boolean autorun; ++extern boolean autostrafe; + + /* + ============================================================================= +@@ -1644,6 +1648,28 @@ + fullscreen = false; + forcegrabmouse = true; + } ++ else IFARG("--novert") ++ { ++ param_novert = true; ++ } ++ else IFARG("--crosshair") ++ { ++ param_crosshair = true; ++ } ++ else IFARG("--strafe") ++ { ++ autostrafe = true; ++ } ++ else IFARG("--run") ++ { ++ autorun = true; ++ } ++ else IFARG("--modern") ++ { ++ autostrafe = true; ++ param_crosshair = true; ++ param_novert = true; ++ } + else IFARG("--res") + { + if(i + 2 >= argc) +@@ -1824,6 +1850,11 @@ + " --hard Sets the difficulty to hard for tedlevel\n" + " --nowait Skips intro screens\n" + " --windowed[-mouse] Starts the game in a window [and grabs mouse]\n" ++ " --novert Suppresses vertical mouse movement\n" ++ " --crosshair Shows a crosshair\n" ++ " --run Always run\n" ++ " --strafe Always strafe\n" ++ " --modern Same as --novert --crosshair --strafe\n" + " --res Sets the screen resolution\n" + " (must be multiple of 320x200 or 320x240)\n" + " --resf Sets any screen resolution >= 320x200\n" +diff -Naur wolf4sdl-2.0+20210408_f31f41a/wl_play.c wolf4sdl-2.0+20210408_f31f41a.patched/wl_play.c +--- wolf4sdl-2.0+20210408_f31f41a/wl_play.c 2023-01-17 21:39:16.000000000 -0500 ++++ wolf4sdl-2.0+20210408_f31f41a.patched/wl_play.c 2023-01-18 03:22:12.894051239 -0500 +@@ -260,10 +260,19 @@ + void PollKeyboardButtons (void) + { + int i; ++ extern boolean autorun; + + for (i = 0; i < NUMBUTTONS; i++) + if (Keyboard(buttonscan[i])) + buttonstate[i] = true; ++ ++ if (autorun) ++ { ++ if (Keyboard(buttonscan[bt_run])) ++ buttonstate[bt_run] = false; ++ else ++ buttonstate[bt_run] = true; ++ } + } + + +@@ -278,6 +287,9 @@ + void PollMouseButtons (void) + { + int buttons = IN_MouseButtons (); ++ /* ++ extern boolean mw_dn, mw_up; ++ */ + + if (buttons & 1) + buttonstate[buttonmouse[0]] = true; +@@ -285,6 +297,14 @@ + buttonstate[buttonmouse[1]] = true; + if (buttons & 4) + buttonstate[buttonmouse[2]] = true; ++ ++ /* This doesn't work, sadly. ++ if (mw_dn) ++ buttonstate[bt_prevweapon] = true; ++ if (mw_up) ++ buttonstate[bt_nextweapon] = true; ++ mw_dn = mw_up = false; ++ */ + } + + +@@ -320,15 +340,26 @@ + void PollKeyboardMove (void) + { + int delta = buttonstate[bt_run] ? RUNMOVE * tics : BASEMOVE * tics; ++ extern boolean autostrafe; + + if (Keyboard(dirscan[di_north])) + controly -= delta; + if (Keyboard(dirscan[di_south])) + controly += delta; + if (Keyboard(dirscan[di_west])) +- controlx -= delta; ++ { ++ if (autostrafe) ++ buttonstate[bt_strafeleft] = true; ++ else ++ controlx -= delta; ++ } + if (Keyboard(dirscan[di_east])) +- controlx += delta; ++ { ++ if (autostrafe) ++ buttonstate[bt_straferight] = true; ++ else ++ controlx += delta; ++ } + } + + +@@ -356,7 +387,8 @@ + #endif + + controlx += mousexmove * 10 / (13 - mouseadjustment); +- controly += mouseymove * 20 / (13 - mouseadjustment); ++ if (!param_novert) ++ controly += mouseymove * 20 / (13 - mouseadjustment); + } + + diff --git a/games/wolf4sdl/wolf4sdl.6 b/games/wolf4sdl/wolf4sdl.6 index b65e1f88df..38406c64a9 100644 --- a/games/wolf4sdl/wolf4sdl.6 +++ b/games/wolf4sdl/wolf4sdl.6 @@ -1,4 +1,4 @@ -.TH WOLF4SDL "6" "March 2010" "wolf4sdl" "Games" +.TH WOLF4SDL "6" "January 18 2023" "2.0+" "SlackBuilds.org" .SH NAME Wolf4SDL \- Game engine for Wolfenstein 3D and Spear of Destiny .SH SYNOPSIS @@ -22,6 +22,10 @@ the original feel while taking advantage of some modern improvements. .PP Wolf4SDL is a game engine. To actually play the game, it requires the data files from the original game (see \fBFILES\fR, below). +.PP +This man page is for the SlackBuilds.org \fBgames/wolf4sdl\fR build, which +is based on the last available community version from \fIhttps://github.com/11001011101001011/Wolf4SDL\fR, with additional patches ported from Debian. + .SH OPTIONS .TP \fB\-\-help\fR @@ -52,7 +56,23 @@ Starts the game in a window, without mouse support. Starts the game in a window, with mouse support. The mouse pointer will be unable to leave the game window. .TP -\fB\-\-res\fR Sets the screen resolution +\fB\-\-novert\fR +Disables vertical mouse motion (see also \fB\-\-modern\fR). +.TP +\fB\-\-crosshair\fR +Shows a crosshair (see also \fB\-\-modern\fR). +.TP +\fB\-\-run\fR +Always run (press both Shift keys to toggle; see also \fB\-\-modern\fR). +.TP +\fB\-\-strafe\fR +Always strafe instead of turning left/right (press both Alt keys or Alt+RightShift to toggle; see also \fB\-\-modern\fR). +.TP +\fB\-\-modern\fR +Same as \fB\-\-novert\fR \fB\-\-crosshair\fR \fB\-\-run\fR \fB\-\-strafe\fR. +.TP +\fB\-\-res\fR +Sets the screen resolution (must be multiple of 320x200 or 320x240). In fullscreen mode, the game switches to the smallest available fullscreen mode that's equal to or larger than the chosen resolution (e.g. 960x720 usually results in a 1024x768 display with black @@ -110,7 +130,7 @@ Ignores the number of chunks in VGAHEAD.* Sets the directory where game data files are searched for. When this variable is not set, the default directory is \fIPREFIX\fR\fB/share/games/wolf3d\fR (\fIPREFIX\fR was set at -compile time, and defaults to /usr/local). +compile time, and defaults to \fB/usr\fR). .PP Note that data files are always searched for in the current directory first, regardless of this setting. @@ -216,14 +236,28 @@ Right Button (#2) Strafe Center Button (#3) Open Door .TE .PP +.TS +box; +cB s +lB l. +Other Controls (non-remappable) +Left Shift + Right Shift Toggle autorun +Left Alt + Right Alt Toggle autostrafe +Left Alt + Right Shift Toggle autostrafe (same as above) +.TE +.PP Also, if the game was run with \fB\-\-goobers\fR (Wolf) or \fB\-\-debugmode\fR (Spear), the standard cheat codes are available. Remember to press Alt\-Shift\-Backspace first, and \fBbe careful\fR not to accidentally hit Alt\-Ctrl\-Backspace instead (*boom*, there goes your X session...) .SH AUTHORS -Ported by Chaos\-Software (http://www.chaos\-software.de.vu) +Ported by Chaos\-Software: http://www.chaos\-software.de.vu .PP Original Wolfenstein 3D by id Software. .PP -This man page by B. Watson. +The Wolf4SDL project was started by Ripper, and continued by various +authors. See https://wl6.fandom.com/wiki/Wolf4SDL for more information. +.PP +This man page written for the SlackBuilds.org project +by B. Watson, and is licensed under the WTFPL. diff --git a/games/wolf4sdl/wolf4sdl.SlackBuild b/games/wolf4sdl/wolf4sdl.SlackBuild index 50a0469584..70b54d0409 100644 --- a/games/wolf4sdl/wolf4sdl.SlackBuild +++ b/games/wolf4sdl/wolf4sdl.SlackBuild @@ -6,14 +6,12 @@ # Licensed under the WTFPL. See http://www.wtfpl.net/txt/copying/ for details. -# TODO: investigate the patches from https://packages.debian.org/sid/wolf4sdl -# These don't apply cleanly to the original source (which is what -# we use), but I don't want to use Debian's "dfsg" source because it -# removes the OPL MIDI emulation for licensing reasons. It'll take some -# effort: I'll have to port the patches manually, or else re-add the OPL -# stuff to the Debian source. Also worth looking at: -# https://github.com/11001011101001011/Wolf4SDL (which apparently adds SDL2 -# support). +# 20230117 bkw: Updated for 2.0+20210408_f31f41a, the last commit from +# the "community" version, which uses SDL2. This script can't build +# 1.7 any more. Also ported some of Debian's 1.7 patches to 2.0 and +# switched the icon to theirs (it looks better at smaller sizes). +# Updated the man page and made the .desktop files run the game fullscreen, +# which works a lot better with SDL2. # 20230112 bkw: BUILD=3, install doinst.sh to right place (derp). # 20211015 bkw: BUILD=2, new-style icons. @@ -21,8 +19,8 @@ cd $(dirname $0) ; CWD=$(pwd) PRGNAM=wolf4sdl -VERSION=${VERSION:-1.7} -BUILD=${BUILD:-3} +VERSION=${VERSION:-2.0+20210408_f31f41a} +BUILD=${BUILD:-1} TAG=${TAG:-_SBo} PKGTYPE=${PKGTYPE:-tgz} @@ -64,18 +62,36 @@ SRCNAM=Wolf4SDL rm -rf $PKG mkdir -p $TMP $PKG $OUTPUT cd $TMP -rm -rf $SRCNAM-$VERSION-src -unzip $CWD/$SRCNAM-$VERSION-src.zip -cd $SRCNAM-$VERSION-src +rm -rf $PRGNAM-$VERSION +tar xvf $CWD/$PRGNAM-$VERSION.tar.xz +cd $PRGNAM-$VERSION chown -R root:root . find -L . -perm /111 -a \! -perm 755 -a -exec chmod 755 {} \+ -o \ \! -perm /111 -a \! -perm 644 -a -exec chmod 644 {} \+ +# This old code has a terrifying amount of warnings, uncomment to see... +#SLKCFLAGS+=" -Wall" + +# The shading looks awful. Apparently upstream agrees, since it's +# disabled by default. If someone really wants to try it, here it is +# as an undocumented build option. +[ "${SHADING:-no}" = "yes" ] && SLKCFLAGS+=" -DUSE_SHADING" + # look for game data files in /usr/share/games/wolf3d -zcat $CWD/datadir.diff.gz | patch -p1 +patch -p1 < $CWD/patches/datadir.diff # show correct executable name in usage message (instead of Wolf4SDL) -zcat $CWD/exename.diff.gz | patch -p1 +patch -p1 < $CWD/patches/exename.diff + +# 20230117 bkw: The gameplay patch was adapted from: +# https://packages.debian.org/sid/wolf4sdl +# It includes their novert, crosshair, autorun, and +# autostrafe patches, ported to the 2.0 codebase (and SDL2). +# Also added --run --strafe --modern options (see man page). +# Didn't include shading (awful looking), pc-speaker (awful-sounding), +# datadir (already got one), or compiler-warnings (a *lot* of work). +# Didn't include mousewheel *yet* because I didn't get it working yet. +patch -p1 < $CWD/patches/gameplay.diff # don't use 'make install', do it manually. mkdir -p $PKG/usr/games $PKG/usr/share/games/wolf3d @@ -88,7 +104,7 @@ cat <config.slack CFLAGS=$SLKCFLAGS -DVERSIONALREADYCHOSEN -DCARMACIZED -DUPLOAD EOF make CONFIG=config.slack PREFIX=/usr -install -m0755 -s wolf3d $PKG/usr/games/$PRGNAM-wolf-demo +install -m0755 -s wolf4sdl $PKG/usr/games/$PRGNAM-wolf-demo # Wolfenstein 3D 1.4 Full/Registered (GT/ID/Activision) # NOTE: If the game complains about your data files being incompatible, @@ -100,7 +116,7 @@ cat <config.slack CFLAGS=$SLKCFLAGS -DVERSIONALREADYCHOSEN -DCARMACIZED -DGOODTIMES EOF make CONFIG=config.slack PREFIX=/usr -install -m0755 -s wolf3d $PKG/usr/games/$PRGNAM-wolf-full +install -m0755 -s wolf4sdl $PKG/usr/games/$PRGNAM-wolf-full # Spear of Destiny 1.4 Demo make clean @@ -108,7 +124,7 @@ cat <config.slack CFLAGS=$SLKCFLAGS -DVERSIONALREADYCHOSEN -DCARMACIZED -DSPEAR -DSPEARDEMO EOF make CONFIG=config.slack PREFIX=/usr -install -m0755 -s wolf3d $PKG/usr/games/$PRGNAM-spear-demo +install -m0755 -s wolf4sdl $PKG/usr/games/$PRGNAM-spear-demo # Spear of Destiny 1.4 Full/Registered make clean @@ -116,7 +132,7 @@ cat <config.slack CFLAGS=$SLKCFLAGS -DVERSIONALREADYCHOSEN -DCARMACIZED -DSPEAR -DGOODTIMES EOF make CONFIG=config.slack PREFIX=/usr -install -m0755 -s wolf3d $PKG/usr/games/$PRGNAM-spear-full +install -m0755 -s wolf4sdl $PKG/usr/games/$PRGNAM-spear-full # Wolfenstein 3D demo data unzip $CWD/wolfdata.zip @@ -136,8 +152,7 @@ for i in {wolf,spear}-{demo,full}; do ln -s $PRGNAM.6.gz $PKGMAN6/$PRGNAM-$i.6.gz done -# Icons extracted from macosx/wolf4sdl.icns with icns2png. -# 48.png scaled down from 512.png with 'convert -resize'. +# Icons created from the Debian SVG icon, with rsvg-convert. # Don't install 256x256 or 512x512 icons. for i in $CWD/icons/*.png; do px=$( basename $i | cut -d. -f1 ) @@ -151,10 +166,10 @@ mkdir -p $PKG/usr/share/applications $PKG/usr/share/pixmaps ln -s ../icons/hicolor/48x48/apps/$PRGNAM.png $PKG/usr/share/pixmaps/$PRGNAM.png # .desktop files written for this build. -cp $CWD/*.desktop $PKG/usr/share/applications/ +install -m0644 -oroot -groot $CWD/desktop/*.desktop $PKG/usr/share/applications/ mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION -cp -a Changes.txt README.txt license-*.txt $PKG/usr/doc/$PRGNAM-$VERSION +cp -a Changes.txt README.TXT license-*.txt $PKG/usr/doc/$PRGNAM-$VERSION cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild mkdir -p $PKG/install diff --git a/games/wolf4sdl/wolf4sdl.info b/games/wolf4sdl/wolf4sdl.info index 705b1f72ed..c515e9fbc5 100644 --- a/games/wolf4sdl/wolf4sdl.info +++ b/games/wolf4sdl/wolf4sdl.info @@ -1,10 +1,10 @@ PRGNAM="wolf4sdl" -VERSION="1.7" +VERSION="2.0+20210408_f31f41a" HOMEPAGE="https://wl6.fandom.com/wiki/Wolf4SDL" -DOWNLOAD="https://slackware.uk/~urchlay/src/Wolf4SDL-1.7-src.zip \ +DOWNLOAD="https://slackware.uk/~urchlay/src/wolf4sdl-2.0+20210408_f31f41a.tar.xz \ https://downloads.sourceforge.net/project/wolfgl/Data/Demo/wolfdata.zip \ https://downloads.sourceforge.net/project/wolfgl/Data/Demo/sdmdata.zip" -MD5SUM="303f340598bfbe3440523c1ddb9f52e8 \ +MD5SUM="7efa65b8afbaea5581969687704f4763 \ bc4564940cae816aec0f4af0b8436baf \ 0aa1f89a8f5ddef700613b0f428fd8b0" DOWNLOAD_x86_64="" diff --git a/games/wolf4sdl/wolf4sdl.png b/games/wolf4sdl/wolf4sdl.png deleted file mode 100644 index ddd8ffe76756989324eabac22d5c34ed27354442..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 753 zcmVAxV?>(&_Gm7fi(2sBWt5x^*v8ZF7d**{Dg2=%t3eS>HY*_Q-Qdg_YJ_tz2sAA@ov5Vsf5{JRp(po${Y>oVTGDfPDN!0xs5yB+}U4DR9v# z5fUQTa1Rhktz6QzDPdd)|Gjh!Vhr%bh`cEK_Uq3eBDLF4?A|F{tW9!BS>SiAml{Q> zJvj;CV?;Fq7Sk!IAmpuYnpeQv84FDa!>=Bo?0WjPFXQTSF z*RKG6pzDCocf~S9K|-X6suo2*5XS-qW*F(*jtB4NK}e}oD~F1?o0Hj_1(+QG zXbjcwemxF$h%YOSWPLsx)rDs!-2+q;!k`T8p1O>Hz8<8=Ly}a@4_%(he}Y&Ccp7o= z8bD;^YJPEz#kCTREPyY-zlSLb097DX@=OX(9RVlckdA@I3vHf10(xeL2#ZfRmrBDN zL;?M+W&!jm24Ix?z~Bjl=`;}>Ykn$@#cLd@Dy$hzIR?ZikFi>*> zvTs8AP(PeYeWxcGdEyZ!d4TT@i2n;x8@`lC#8dx_I4L0{r?x2dh&1=>nlj jN4Z{<+Gh%3>Jj_}#B{oxc@UQ_00000NkvXXu0mjfPEuNT