debian/0000755000000000000000000000000012220337563007171 5ustar debian/compat0000644000000000000000000000000212220337234010362 0ustar 9 debian/wolf4sdl.svg0000644000000000000000000001067612220337234011455 0ustar wolf3d icon image/svg+xml wolf3d icon Fabian Greffrath 5 Sep 2013 debian/wolf4sdl.install0000644000000000000000000000033312220337234012311 0ustar wolf4sdl-* usr/games debian/wolf4sdl.desktop usr/share/applications debian/wolf4sdl.png usr/share/icons/hicolor/32x32/apps debian/wolf4sdl.svg usr/share/icons/hicolor/scalable/apps debian/wolf4sdl.xpm usr/share/pixmaps debian/wolf4sdl.desktop0000644000000000000000000000026112220337234012314 0ustar [Desktop Entry] Type=Application Name=Wolf4SDL Comment=SDL-Port of Wolfenstein 3-D and Spear of Destiny Icon=wolf4sdl TryExec=wolf4sdl Exec=wolf4sdl Categories=Game;ActionGame; debian/wolf4sdl.xpm0000644000000000000000000001057412220337234011457 0ustar /* XPM */ static char *wolf4sdl[] = { /* columns rows colors chars-per-pixel */ "32 32 140 2 ", " c black", ". c #010000", "X c #010101", "o c #020000", "O c #030000", "+ c #020202", "@ c gray1", "# c #050000", "$ c #050101", "% c #050202", "& c #060303", "* c #040404", "= c gray2", "- c #060606", "; c #070707", ": c #090303", "> c #0E0000", ", c #080404", "< c #0B0404", "1 c #0B0505", "2 c #0E0606", "3 c gray3", "4 c #090909", "5 c gray4", "6 c #0B0B0B", "7 c #0C0C0C", "8 c gray5", "9 c #0E0E0E", "0 c gray6", "q c #120000", "w c #140000", "e c #160000", "r c #190000", "t c #1E0000", "y c #180909", "u c #111111", "i c gray7", "p c #131313", "a c gray9", "s c #1B1B1B", "d c #1D1D1D", "f c gray12", "g c #260000", "h c #2A0000", "j c #2C0000", "k c #280707", "l c #220C0C", "z c #2C0C0C", "x c #300000", "c c #2C1414", "v c gray13", "b c gray14", "n c gray15", "m c #282828", "M c gray16", "N c gray17", "B c #2C2C2C", "V c #2F2F2F", "C c #373737", "Z c gray22", "A c gray23", "S c #430000", "D c #4D0000", "F c #560000", "G c #590000", "H c #560E0E", "J c #661111", "K c #721313", "L c #532121", "P c #6B2C2C", "I c #7E2222", "U c #7C2B2B", "Y c #753434", "T c #414141", "R c gray26", "E c #444444", "W c gray27", "Q c #4C4C4C", "! c gray32", "~ c gray33", "^ c #565656", "/ c #5D5D5D", "( c gray37", ") c #646464", "_ c #656565", "` c gray40", "' c #686868", "] c DimGray", "[ c #6C6C6C", "{ c gray43", "} c #717171", "| c #727272", " . c gray46", ".. c #797979", "X. c #7B7B7B", "o. c #7E7E7E", "O. c #8C2626", "+. c #903F3F", "@. c #A33939", "#. c #A63A3A", "$. c #BC4C4C", "%. c #BF4D4D", "&. c #D86060", "*. c #D96060", "=. c #818181", "-. c #848484", ";. c gray52", ":. c gray53", ">. c #888888", ",. c #898989", "<. c gray54", "1. c #909090", "2. c gray57", "3. c #959595", "4. c #9A9A9A", "5. c #9B9B9B", "6. c gray62", "7. c gray63", "8. c gray64", "9. c gray66", "0. c #AAAAAA", "q. c gray67", "w. c #ACACAC", "e. c gray68", "r. c #B2B2B2", "t. c gray70", "y. c #B4B4B4", "u. c #B6B6B6", "i. c #BBBBBB", "p. c gray75", "a. c #C8C8C8", "s. c gray82", "d. c gray84", "f. c #D7D7D7", "g. c #DADADA", "h. c #E4E4E4", "j. c #ECECEC", "k. c #F6F6F6", "l. c gray100", "z. c None", /* pixels */ "z.z.z.z.z.z.z.z.= z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.", "z.z.z.z.z.z.= 6 R u = z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.", "z.z.z.z.z.= f ` [ ] V + z.z.z.z.z.z.z.z.z.z.z.z.= z.z.z.z.z.z.z.", "z.z.z.z.= C . . . . .^ 6 = z.z.z.z.z.z.z.z.= v ^ u 6 z.z.z.z.z.", "z.z.z.= R o.o.o.-.o.o.o. .b = z.z.z.z.z.z.= ! o.o...A = z.z.z.z.", "z.z.6 E ,.,.,.:.,.,.:.:.,.,.! + z.z.z.= a .,.,.,.:.:.` 6 = z.z.", "z.z.f 1.1.1.1.1.1.1.1.1.1.1.1.+ z.z.z.0 ,.1.1.1.1.1.1.1.,.M 6 z.", "z.= :.4.4.4.4.` b 4.6.4.4.4.4.+ z.z.= -.4.4.4.4.4.4.4.4.4.4.( + ", "z.a 8.8.8.8.( 6 + 8.8.8.8.8.8.+ z.z.s 8.8.8.8.8.8.8.8.8.8.8.8.+ ", "z.A w.w.9...6 z.+ 9.w.w.w.9.w.+ z.z.E w.w.w.w.[ B w.w.9.w.w.9.+ ", "+ ( u.u.r.6 z.z.+ u.u.u.u.u.u.+ z.6 ] u.u.u.o.6 + u.u.u.u.u.u.+ ", "z.R p.p.4.0 z.z.+ p.p.p.p.p.p.+ z.z.Q p.p.i.6 z.+ p.p.p.p.p.p.+ ", "z.f a.a.-.u z.z.+ a.a.a.a.a.a.+ z.z.v a.a.8.0 z.+ a.a.a.a.a.a.+ ", "z.= u.s.9.0 z.z.+ s.s.f.s.s.s.+ z.z.= 8.s.8.0 z.+ s.s.s.s.s.s.+ ", "z.z.M f.f.6 z.z.+ f.f.f.f.f.g.+ z.z.z.0 w.f.6 z.+ f.g.g.f.f.f.+ ", "z.z.0 | h.6.6 z.+ h.h.h.h.h.h.+ z.z.z.z.0 9.3.6 + h.h.h.h.h.h.+ ", "z.z.z.6 r.j.[ 0 + j.j.j.j.j.j.+ z.z.z.z.z.6 u z.+ j.j.j.j.j.j.+ ", "z.z.z.z.0 ,.0 z.+ k.k.k.k.k.k.+ z.z.z.z.z.z.z.z.+ k.k.k.k.k.k.+ ", "z.z.z.z.z.0 z.z.+ l.l.l.l.l.l.+ z.6 + + + + 6 z.+ l.l.l.l.l.l.+ ", "z.z.z.z.z.z.z.z.+ 9.w.w.9.9.9.+ z.M 9.9.9.9.+ z.+ 9.9.w.9.9.9.+ ", "z.z.z.z.z.z.z.z.+ ^ ^ ^ ^ ^ ^ + = B ^ ^ ^ ^ + z.+ ^ ^ ^ ^ ^ ^ + ", "z.z.z.z.z.z.z.z.+ + + + + + + + + + + + + + + z.+ + + + + + + + ", "z.z.z.z.z.z.z.z.+ e e e e e e + + e e e e e + z.+ e e e e e q + ", "z.z.z.z.z.z.z.z.+ j h h j h h + q j j j h h + + r h j j h h # z.", "z.z.z.z.z.z.z.z.+ S S S S S S + x S S S S S + q S S S S S e + z.", "z.z.z.z.z.z.z.z.+ G F G G G G g F G G F G G t D G G G G j # z.z.", "z.z.z.z.z.z.z.z.+ K K K K K K K K K J k K K K K K K K H # z.z.z.", "z.z.z.z.z.z.z.z.+ O.O.O.O.O.O.O.O.O.z + O.O.O.O.O.O.I : z.z.z.z.", "z.z.z.z.z.z.z.z.# @.#.#.#.#.@.@.@.U : + @.#.#.#.@.@.l z.z.z.z.z.", "z.z.z.z.z.z.z., P $.%.%.%.%.%.%.%.y z.+ %.$.%.%.%.L 1 z.z.z.z.z.", "z.z.z.z.z.z.z.c &.&.*.*.*.*.*.*.Y 1 z.+ &.*.*.*.+.1 z.z.z.z.z.z.", "z.z.z.z.z.z.1 + + + + + + + + + , z.z.# + + + + , z.z.z.z.z.z.z." }; debian/man/0000755000000000000000000000000012220337234007737 5ustar debian/man/wolf4sdl.60000644000000000000000000000534712220337234011575 0ustar .TH WOLF4SDL 6 "December 2010" "1.6" "Wolf4SDL" .SH NAME wolf4sdl \- An open-source port of id Software's classic first-person shooter .SH SYNOPSIS .B wolf4sdl .RI [ options ] .B wolf4sdl-wl6 .RI [ options ] .B wolf4sdl-wl6a .RI [ options ] .B wolf4sdl-wl1 .RI [ options ] .B wolf4sdl-sod .RI [ options ] .B wolf4sdl-sdm .RI [ options ] .SH DESCRIPTION .B Wolf4SDL is an open-source port of id Software's classic first-person shooter .B Wolfenstein 3D to the cross-plattform multimedia library .B "Simple DirectMedia Layer (SDL)" (http://www.libsdl.org). It is meant to keep the original feel while taking advantage of some improvements. The .B wolf4sdl-wl6, .B wolf4sdl-wl6a, .B wolf4sdl-wl1, .B wolf4sdl-sod and .B wolf4sdl-sdm binaries start the .B Wolf3d Full v1.4 GT/ID/Activision, .B Wolf3d Full v1.4 Apogee (with ReadThis), .B Wolf3d Shareware v1.4, .B Spear of Destiny Full and Mission Disks and .B Spear of Destiny Demo games, respectively. The .B wolf4sdl binary is a symbolic link to one of these and is handled via Debian's .B update-alternatives mechanism. .SH OPTIONS .TP \fB\-\-help\fR This help page .TP \fB\-\-tedlevel\fR Starts the game in the given level .TP \fB\-\-baby\fR Sets the difficulty to baby for tedlevel .TP \fB\-\-easy\fR Sets the difficulty to easy for tedlevel .TP \fB\-\-normal\fR Sets the difficulty to normal for tedlevel .TP \fB\-\-hard\fR Sets the difficulty to hard for tedlevel .TP \fB\-\-nowait\fR Skips intro screens .TP \fB\-\-windowed\fR Starts the game in a window .TP \fB\-\-novert\fR Suppresses vertical mouse movement .TP \fB\-\-crosshair\fR Shows a crosshair .TP \fB\-\-res\fR Sets the screen resolution (must be multiple of 320x200 or 320x240) .TP \fB\-\-resf\fR Sets any screen resolution >= 320x200 (which may result in graphic errors) .TP \fB\-\-bits\fR Sets the screen color depth (use this when you have palette/fading problems allowed: 8, 16, 24, 32, default: "best" depth) .TP \fB\-\-joystick\fR Use the index\-th joystick if available (\-1 to disable joystick, default: 0) .TP \fB\-\-joystickhat\fR Enables movement with the given coolie hat .TP \fB\-\-samplerate\fR Sets the sound sample rate (given in Hz, default: 44100) .TP \fB\-\-audiobuffer\fR Sets the size of the audio buffer (\-> sound latency) (given in bytes, default: 2048 / (44100 / samplerate)) .TP \fB\-\-ignorenumchunks\fR Ignores the number of chunks in VGAHEAD.* (may be useful for some broken mods) .SH AUTHORS Wolf4SDL v1.6 ($Revision: 232 $) .PP Ported by Chaos-Software (http://www.chaos-software.de.vu) .PP Original Wolfenstein 3D by id Software .PP This manual page was written by Fabian Greffrath for the Debian project (but may be used by others). debian/control0000644000000000000000000000326212220337234010572 0ustar Source: wolf4sdl Section: contrib/games Priority: extra Maintainer: Debian Games Team Uploaders: Fabian Greffrath Build-Depends: debhelper (>= 9), libsdl1.2-dev, libsdl-mixer1.2-dev Standards-Version: 3.9.2 Homepage: http://www.chaos-software.de.vu/ Vcs-Git: git://anonscm.debian.org/pkg-games/wolf4sdl.git Vcs-Browser: http://anonscm.debian.org/gitweb/?p=pkg-games/wolf4sdl.git;a=summary Package: wolf4sdl Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, wolf3d-data | game-data-packager (>= 27) Description: SDL-Port of Wolfenstein 3-D and Spear of Destiny Maybe it was the fact that people got to blow away Nazis. Maybe it was the sheer challenge of it all. For whatever reason, Wolfenstein 3-D and Spear of Destiny, pioneered the first-person shooter genre and brought its legendary creators, id Software, worldwide notoriety and numerous awards. In fact, The Computer Gaming World Hall of Fame recognized Wolfenstein 3D as helping to shape the overall direction of the computer gaming industry. . Wolf4SDL is an open-source port of id Software's classic first-person shooter Wolfenstein 3-D to the cross-platform multimedia library "Simple DirectMedia Layer (SDL)" (http://www.libsdl.org). It is meant to keep the original feel while taking advantage of some improvements. . The wolf4sdl game requires additional data files which are not available under a free license and cannot be distributed by Debian. Thus, this package contains no data files, but current releases of `game-data-packager' are able to generate suitable data packages from the publicly available Wolfenstein 3-D shareware episode. debian/source/0000755000000000000000000000000012220337234010464 5ustar debian/source/format0000644000000000000000000000001412220337234011672 0ustar 3.0 (quilt) debian/source/include-binaries0000644000000000000000000000002412220337234013620 0ustar debian/wolf4sdl.png debian/copyright0000644000000000000000000000442512220337234011124 0ustar Format: http://anonscm.debian.org/viewvc/dep/web/deps/dep5.mdwn?revision=174 Upstream-Name: Wolf4SDL Upstream-Contact: Moritz "Ripper" Kroll Source: http://www.alice-dsl.net/mkroll/downloads.html Files: * Copyright: © 1992 Id Software, Inc. License: GPL-2.0+ Comment: From: John Carmack To: Fabian Greffrath Subject: Re: License of Wolf3d source code Date: Thu, 1 Sep 2011 14:08:38 +0000 . Yes, we relicensed it under the gpl years ago. . Sent from my iPad . On Sep 1, 2011, at 2:57 AM, "Fabian Greffrath" wrote= : . > Dear Mr. Carmack, >=20 > I have just recently found out that you have released a Wolf3d app for th= e Apple iphone and also released its source code under the terms of the GNU= GPL. My question is, does this also apply to the original wolf3d source co= de that is distributed in the wolfsrc.zip file from 1996? >=20 > With its current license, the source code is not redistributable by Linux= distributions like e.g. Debian. This is a pity, because many people still = like to play the game or one of its numerous open source ports. >=20 > so could you please you give confirmation that the original wolf3d source= code is relicensed under the terms of the GNU GPL? >=20 > Best regards, > Fabian Greffrath Files: dosbox/* Copyright: © 2002-2010, The DOSBox Team License: GPL-2.0+ Files: debian/* Copyright: © 2010-2013, Fabian Greffrath License: GPL-2.0+ License: GPL-2.0+ This package is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. . This package is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. . You should have received a copy of the GNU General Public License along with this program. If not, see . On Debian systems, the complete text of the GNU General Public License version 2 can be found in "/usr/share/common-licenses/GPL-2". debian/watch0000644000000000000000000000017612220337234010221 0ustar version=3 opts=dversionmangle=s/\+dfsg1// \ http://www.alice-dsl.net/mkroll/downloads.html \ bins/Wolf4SDL-([\d\.]*)-src\.zip debian/gbp.conf0000644000000000000000000000005712220337234010605 0ustar [DEFAULT] pristine-tar = True sign-tags = True debian/wolf4sdl.postinst0000644000000000000000000000110412220337234012523 0ustar #!/bin/sh set -e if [ "$1" = "configure" ] || [ "$1" = "abort-upgrade" ] then update-alternatives --quiet --install /usr/games/wolf4sdl wolf4sdl /usr/games/wolf4sdl-wl1 30 update-alternatives --quiet --install /usr/games/wolf4sdl wolf4sdl /usr/games/wolf4sdl-wl6 20 update-alternatives --quiet --install /usr/games/wolf4sdl wolf4sdl /usr/games/wolf4sdl-wl6a 20 update-alternatives --quiet --install /usr/games/wolf4sdl wolf4sdl /usr/games/wolf4sdl-sod 20 update-alternatives --quiet --install /usr/games/wolf4sdl wolf4sdl /usr/games/wolf4sdl-sdm 20 fi #DEBHELPER# debian/clean0000644000000000000000000000006112220337234010166 0ustar wl_shade.d wl_shade.o wolf3d wolf4sdl wolf4sdl-* debian/rules0000755000000000000000000000353612220337234010253 0ustar #!/usr/bin/make -f DEB_CFLAGS_MAINT_APPEND += $(shell dpkg-buildflags --get CPPFLAGS) DEB_CFLAGS_MAINT_APPEND += -Wall -Wno-sign-compare -Wno-switch DEB_CFLAGS_MAINT_APPEND += -DDATADIR=\"/usr/share/games/wolf3d/\" DEB_CFLAGS_MAINT_APPEND += -fno-toplevel-reorder DEB_LDFLAGS_MAINT_APPEND += -Wl,-z,defs -Wl,--as-needed export DEB_CFLAGS_MAINT_APPEND DEB_LDFLAGS_MAINT_APPEND export GPL=1 Q="" define set_defines @$(foreach def, $(1), \ if [ "$(shell echo $(def) | cut -c1)" = "-" ]; then \ sed -e "s|^\(//\)\?\(#define $(shell echo $(def) | cut -c2-)\)|//\2|" -i version.h; \ elif [ "$(shell echo $(def) | cut -c1)" = "+" ]; then \ sed -e "s|^\(//\)\?\(#define $(shell echo $(def) | cut -c2-)\)|\2|" -i version.h; \ fi; \ ) endef debian/wolf4sdl.xpm: debian/wolf4sdl.png convert $^ $@ debian/wolf4sdl.png: debian/wolf4sdl.svg inkscape --export-png=$@ $^ %: dh $@ override_dh_auto_build: # Wolf3d Full v1.4 GT/ID/Activision $(MAKE) clean $(call set_defines,-SPEAR -SPEARDEMO -UPLOAD +GOODTIMES +CARMACIZED) dh_auto_build -- BINARY=wolf4sdl-wl6 # Wolf3d Full v1.4 Apogee (with ReadThis) $(MAKE) clean $(call set_defines,-SPEAR -SPEARDEMO -UPLOAD -GOODTIMES +CARMACIZED) dh_auto_build -- BINARY=wolf4sdl-wl6a # Wolf3d Shareware v1.4 $(MAKE) clean $(call set_defines,-SPEAR -SPEARDEMO +UPLOAD -GOODTIMES +CARMACIZED) dh_auto_build -- BINARY=wolf4sdl-wl1 # Spear of Destiny Full and Mission Disks (and GOODTIMES for no FormGen quiz) $(MAKE) clean $(call set_defines,+SPEAR -SPEARDEMO -UPLOAD +GOODTIMES +CARMACIZED) dh_auto_build -- BINARY=wolf4sdl-sod # Spear of Destiny Demo $(MAKE) clean $(call set_defines,+SPEAR +SPEARDEMO -UPLOAD -GOODTIMES +CARMACIZED) dh_auto_build -- BINARY=wolf4sdl-sdm override_dh_auto_clean: $(call set_defines,-SPEAR -SPEARDEMO -UPLOAD +GOODTIMES +CARMACIZED) dh_auto_clean override_dh_auto_install: debian/patches/0000755000000000000000000000000012220337234010613 5ustar debian/patches/42-mousewheel.patch0000644000000000000000000000255512220337234014243 0ustar Subject: Change weapons with the mouse wheel. Author: Fabian Greffrath --- a/id_in.cpp +++ b/id_in.cpp @@ -237,6 +237,8 @@ boolean IN_JoyPresent() return Joystick != NULL; } +boolean mw_dn = false, mw_up = false; + static void processEvent(SDL_Event *event) { switch (event->type) @@ -328,6 +330,15 @@ static void processEvent(SDL_Event *even break; } + case SDL_MOUSEBUTTONDOWN: + { + if (event->button.button == SDL_BUTTON_WHEELDOWN) + mw_dn = true; + else if(event->button.button == SDL_BUTTON_WHEELUP) + mw_up = true; + break; + } + case SDL_ACTIVEEVENT: { if(fullscreen && (event->active.state & SDL_APPACTIVE) != 0) --- a/wl_play.cpp +++ b/wl_play.cpp @@ -273,6 +273,7 @@ void PollKeyboardButtons (void) void PollMouseButtons (void) { int buttons = IN_MouseButtons (); + extern boolean mw_dn, mw_up; if (buttons & 1) buttonstate[buttonmouse[0]] = true; @@ -280,6 +281,12 @@ void PollMouseButtons (void) buttonstate[buttonmouse[1]] = true; if (buttons & 4) buttonstate[buttonmouse[2]] = true; + + if (mw_dn) + buttonstate[bt_prevweapon] = true; + if (mw_up) + buttonstate[bt_nextweapon] = true; + mw_dn = mw_up = false; } debian/patches/31-pc-speaker.patch0000644000000000000000000001636412220337234014121 0ustar Subject: PC speaker emulation Origin: http://www.fileden.com/files/2010/12/31/3049394/pc-speaker-by-ljbade-build255.patch Forwarded: http://www.shoppark.de/cgi-bin/abrakadabra.cgi?id=chaosdeluxe Author: Leith Bade (ljbade) Reviewed-by: chrisl --- a/id_sd.cpp +++ b/id_sd.cpp @@ -466,28 +466,29 @@ SDL_PCStopSampleInIRQ(void) _asm and al,0xfd // ~2 _asm out 0x61,al } +#endif /////////////////////////////////////////////////////////////////////////// // // SDL_PCPlaySound() - Plays the specified sound on the PC speaker // /////////////////////////////////////////////////////////////////////////// -#ifdef _MUSE_ -void -#else static void -#endif SDL_PCPlaySound(PCSound *sound) { +/* // _asm pushfd _asm cli +*/ pcLastSample = -1; pcLengthLeft = sound->common.length; pcSound = sound->data; +/* // _asm popfd _asm sti +*/ } /////////////////////////////////////////////////////////////////////////// @@ -495,24 +496,24 @@ SDL_PCPlaySound(PCSound *sound) // SDL_PCStopSound() - Stops the current sound playing on the PC Speaker // /////////////////////////////////////////////////////////////////////////// -#ifdef _MUSE_ -void -#else static void -#endif SDL_PCStopSound(void) { +/* // _asm pushfd _asm cli +*/ pcSound = 0; +/* _asm in al,0x61 // Turn the speaker off _asm and al,0xfd // ~2 _asm out 0x61,al // _asm popfd _asm sti +*/ } /////////////////////////////////////////////////////////////////////////// @@ -523,20 +524,141 @@ SDL_PCStopSound(void) static void SDL_ShutPC(void) { +/* // _asm pushfd _asm cli +*/ pcSound = 0; +/* _asm in al,0x61 // Turn the speaker & gate off _asm and al,0xfc // ~3 _asm out 0x61,al // _asm popfd _asm sti +*/ } -#endif +// Adapted from Chocolate Doom (chocolate-doom/pcsound/pcsound_sdl.c) +#define SQUARE_WAVE_AMP 0x2000 + +static void SDL_PCMixCallback(void *udata, Uint8 *stream, int len) +{ + static int current_remaining = 0; + static int current_freq = 0; + static int phase_offset = 0; + + Sint16 *leftptr; + Sint16 *rightptr; + Sint16 this_value; + int oldfreq; + int i; + int nsamples; + + // Number of samples is quadrupled, because of 16-bit and stereo + + nsamples = len / 4; + + leftptr = (Sint16 *) stream; + rightptr = ((Sint16 *) stream) + 1; + + // Fill the output buffer + + for (i=0; ipriority < SoundPriority) return 0; @@ -1244,9 +1369,6 @@ SD_PlaySound(soundnames sound) SoundPositioned = ispos; SoundNumber = sound; SoundPriority = s->priority; -#else - return 0; -#endif } else { @@ -1276,7 +1398,7 @@ SD_PlaySound(soundnames sound) switch (SoundMode) { case sdm_PC: -// SDL_PCPlaySound((PCSound *)s); + SDL_PCPlaySound((PCSound *)s); break; case sdm_AdLib: SDL_ALPlaySound((AdLibSound *)s); @@ -1330,7 +1452,7 @@ SD_StopSound(void) switch (SoundMode) { case sdm_PC: -// SDL_PCStopSound(); + SDL_PCStopSound(); break; case sdm_AdLib: SDL_ALStopSound(); --- a/wl_menu.cpp +++ b/wl_menu.cpp @@ -104,7 +104,7 @@ CP_itemtype SndMenu[] = { {1, "", 0}, #else {1, STR_NONE, 0}, - {0, STR_PC, 0}, + {1, STR_PC, 0}, {1, STR_ALSB, 0}, {0, "", 0}, {0, "", 0}, debian/patches/44-autostrafe.patch0000644000000000000000000000454612220337234014247 0ustar Subject: Toggle autostrafe for the keyboard when both Alt keys are pressed. By the way, accept the German AltGr key as a right Alt key. Author: Fabian Greffrath --- a/id_in.cpp +++ b/id_in.cpp @@ -239,6 +239,7 @@ boolean IN_JoyPresent() boolean mw_dn = false, mw_up = false; boolean autorun = false; +boolean autostrafe = false; static void processEvent(SDL_Event *event) { @@ -262,6 +263,9 @@ static void processEvent(SDL_Event *even SDLMod mod = SDL_GetModState(); if ((mod & KMOD_LSHIFT) && (mod & KMOD_RSHIFT)) autorun = !autorun; + if (((mod & KMOD_LALT) && (mod & KMOD_RALT)) || + ((mod & KMOD_LALT) && (mod & KMOD_MODE))) + autostrafe = !autostrafe; if(Keyboard[sc_Alt]) { @@ -272,6 +276,7 @@ static void processEvent(SDL_Event *even 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 { @@ -314,6 +319,7 @@ static void processEvent(SDL_Event *even 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 { --- a/wl_play.cpp +++ b/wl_play.cpp @@ -329,15 +329,22 @@ void PollJoystickButtons (void) 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; } debian/patches/21-compiler-warnings.patch0000644000000000000000000005325112220337234015522 0ustar Subject: Fix some compiler warnings so the code compiles cleanly with g++-4.5 and CFLAGS+="-Wall -Wno-sign-compare -Wno-switch". Author: Fabian Greffrath --- a/id_ca.cpp +++ b/id_ca.cpp @@ -25,7 +25,6 @@ loaded into the data segment #endif #include "wl_def.h" -#pragma hdrstop #define THREEBYTEGRSTARTS @@ -693,7 +692,7 @@ void CA_Startup (void) void CA_Shutdown (void) { - int i,start; + int i,start = STARTADLIBSOUNDS; if(maphandle != -1) close(maphandle); @@ -803,7 +802,7 @@ void CA_CacheAdlibSoundChunk (int chunk) void CA_LoadAllSounds (void) { - unsigned start,i; + unsigned start = STARTADLIBSOUNDS,i; switch (oldsoundmode) { @@ -1045,7 +1044,7 @@ void CA_CacheMap (int mapnum) int32_t pos,compressed; int plane; word *dest; - memptr bigbufferseg; + memptr bigbufferseg = 0; unsigned size; word *source; #ifdef CARMACIZED --- a/id_pm.cpp +++ b/id_pm.cpp @@ -82,7 +82,7 @@ void PM_Startup() uint8_t *ptr = (uint8_t *) PMPageData; for(i = 0; i < ChunksInFile; i++) { - if(i >= PMSpriteStart && i < PMSoundStart || i == ChunksInFile - 1) + if((i >= PMSpriteStart && i < PMSoundStart) || i == ChunksInFile - 1) { size_t offs = ptr - (uint8_t *) PMPageData; --- a/id_sd.cpp +++ b/id_sd.cpp @@ -849,6 +849,7 @@ SDL_ShutAL(void) // SDL_CleanAL() - Totally shuts down the AdLib card // /////////////////////////////////////////////////////////////////////////// +/* static void SDL_CleanAL(void) { @@ -858,6 +859,7 @@ SDL_CleanAL(void) for (i = 1; i < 0xf5; i++) alOut(i, 0); } +*/ /////////////////////////////////////////////////////////////////////////// // @@ -877,6 +879,7 @@ SDL_StartAL(void) // emulating an AdLib) present // /////////////////////////////////////////////////////////////////////////// +/* static boolean SDL_DetectAdLib(void) { @@ -888,6 +891,7 @@ SDL_DetectAdLib(void) return true; } +*/ //////////////////////////////////////////////////////////////////////////// // @@ -914,12 +918,14 @@ SDL_ShutDevice(void) // SDL_CleanDevice() - totally shuts down all sound devices // /////////////////////////////////////////////////////////////////////////// +/* static void SDL_CleanDevice(void) { if ((SoundMode == sdm_AdLib) || (MusicMode == smm_AdLib)) SDL_CleanAL(); } +*/ /////////////////////////////////////////////////////////////////////////// // --- a/id_us_1.cpp +++ b/id_us_1.cpp @@ -22,7 +22,6 @@ #include "wl_def.h" -#pragma hdrstop #if _MSC_VER == 1200 // Visual C++ 6 #define vsnprintf _vsnprintf @@ -177,7 +176,7 @@ void US_PrintUnsigned(longword n) { char buffer[32]; - sprintf(buffer, "%lu", n); + sprintf(buffer, "%lu", (long unsigned int) n); US_Print(buffer); } @@ -488,11 +487,11 @@ US_LineInput(int x,int y,char *buf,const { boolean redraw, cursorvis,cursormoved, - done,result, checkkey; + done,result = false, checkkey; ScanCode sc; char c; char s[MaxString],olds[MaxString]; - int cursor,len; + int cursor,len = 0; word i, w,h, temp; @@ -530,7 +529,7 @@ US_LineInput(int x,int y,char *buf,const curtime = GetTimeCount(); // After each direction change accept the next change after 250 ms and then everz 125 ms - if(ci.dir != lastdir || curtime - lastdirtime > TickBase / 4 && curtime - lastdirmovetime > TickBase / 8) + if(ci.dir != lastdir || (curtime - lastdirtime > TickBase / 4 && curtime - lastdirmovetime > TickBase / 8)) { if(ci.dir != lastdir) { @@ -558,7 +557,7 @@ US_LineInput(int x,int y,char *buf,const if(!s[cursor]) { USL_MeasureString(s,&w,&h); - if(len >= maxchars || maxwidth && w >= maxwidth) break; + if(len >= maxchars || (maxwidth && w >= maxwidth)) break; s[cursor] = ' '; s[cursor + 1] = 0; @@ -572,7 +571,7 @@ US_LineInput(int x,int y,char *buf,const if(!s[cursor]) { USL_MeasureString(s,&w,&h); - if(len >= maxchars || maxwidth && w >= maxwidth) break; + if(len >= maxchars || (maxwidth && w >= maxwidth)) break; s[cursor + 1] = 0; } s[cursor] = USL_RotateChar(s[cursor], 1); @@ -584,7 +583,7 @@ US_LineInput(int x,int y,char *buf,const if(!s[cursor]) { USL_MeasureString(s,&w,&h); - if(len >= maxchars || maxwidth && w >= maxwidth) break; + if(len >= maxchars || (maxwidth && w >= maxwidth)) break; s[cursor + 1] = 0; } s[cursor] = USL_RotateChar(s[cursor], -1); --- a/id_vh.cpp +++ b/id_vh.cpp @@ -356,7 +356,7 @@ boolean FizzleFade (SDL_Surface *source, unsigned width, unsigned height, unsigned frames, boolean abortable) { unsigned x, y, frame, pixperframe; - int32_t rndval, lastrndval; + int32_t rndval = 0, lastrndval; int first = 1; lastrndval = 0; --- a/id_vl.cpp +++ b/id_vl.cpp @@ -2,7 +2,6 @@ #include #include "wl_def.h" -#pragma hdrstop // Uncomment the following line, if you get destination out of bounds // assertion errors and want to ignore them during debugging --- a/wl_act1.cpp +++ b/wl_act1.cpp @@ -1,7 +1,6 @@ // WL_ACT1.C #include "wl_def.h" -#pragma hdrstop /* ============================================================================= @@ -17,6 +16,7 @@ statobj_t *laststatobj; struct +statinfo_t { short picnum; wl_stat_t type; @@ -844,7 +844,7 @@ void MovePWalls (void) pwally += dy; if (actorat[pwallx+dx][pwally+dy] - || xl<=pwallx+dx && pwallx+dx<=xh && yl<=pwally+dy && pwally+dy<=yh) + || (xl<=pwallx+dx && pwallx+dx<=xh && yl<=pwally+dy && pwally+dy<=yh)) { pwallstate = 0; tilemap[pwallx][pwally] = oldtile; --- a/wl_act2.cpp +++ b/wl_act2.cpp @@ -3,7 +3,6 @@ #include #include #include "wl_def.h" -#pragma hdrstop /* ============================================================================= @@ -307,7 +306,7 @@ boolean ProjectileTryMove (objtype *ob) void T_Projectile (objtype *ob) { int32_t deltax,deltay; - int damage; + int damage = 0; int32_t speed; speed = (int32_t)ob->speed*tics; --- a/wl_agent.cpp +++ b/wl_agent.cpp @@ -1,7 +1,6 @@ // WL_AGENT.C #include "wl_def.h" -#pragma hdrstop /* ============================================================================= @@ -163,15 +162,11 @@ void CheckWeaponChange (void) void ControlMovement (objtype *ob) { - int32_t oldx,oldy; int angle; int angleunits; thrustspeed = 0; - oldx = player->x; - oldy = player->y; - if(buttonstate[bt_strafeleft]) { angle = ob->angle + ANGLES/4; --- a/wl_debug.cpp +++ b/wl_debug.cpp @@ -7,7 +7,6 @@ #endif #include "wl_def.h" -#pragma hdrstop #ifdef USE_CLOUDSKY #include "wl_cloudsky.h" @@ -52,7 +51,7 @@ void SimpleScaleShape (int xcenter, int int maporgx; int maporgy; -enum {mapview,tilemapview,actoratview,visview} viewtype; +enum viewtype_t {mapview,tilemapview,actoratview,visview} viewtype; void ViewMap (void); @@ -181,7 +180,7 @@ void BasicOverhead (void) // left side (filtered) uintptr_t tile; - int color; + int color = 0; offx -= 128; for(x=0;x> 6); if((yintbuf >> 16) == focalty) // ray hits pushwall back? @@ -1166,8 +1165,8 @@ void AsmRefresh() continue; } } - else if(pwalldir == di_south && ytilestep == 1 - || pwalldir == di_north && ytilestep == -1) + else if((pwalldir == di_south && ytilestep == 1) + || (pwalldir == di_north && ytilestep == -1)) { int32_t xintbuf = xintercept - ((xstep * (64 - pwallpos)) >> 6); if((xintbuf >> 16) == focaltx) // ray hits pushwall back? @@ -1237,8 +1236,8 @@ vertentry: pwallposnorm = pwallpos; pwallposinv = 64-pwallpos; } - if(pwalldir == di_east && xtile==pwallx && ((uint32_t)yintercept>>16)==pwally - || pwalldir == di_west && !(xtile==pwallx && ((uint32_t)yintercept>>16)==pwally)) + if((pwalldir == di_east && xtile==pwallx && ((uint32_t)yintercept>>16)==pwally) + || (pwalldir == di_west && !(xtile==pwallx && ((uint32_t)yintercept>>16)==pwally))) { yintbuf=yintercept+((ystep*pwallposnorm)>>6); if((yintbuf>>16)!=(yintercept>>16)) @@ -1267,13 +1266,13 @@ vertentry: { int pwallposi = pwallpos; if(pwalldir==di_north) pwallposi = 64-pwallpos; - if(pwalldir==di_south && (word)yintercept<(pwallposi<<10) - || pwalldir==di_north && (word)yintercept>(pwallposi<<10)) + if((pwalldir==di_south && (word)yintercept<(pwallposi<<10)) + || (pwalldir==di_north && (word)yintercept>(pwallposi<<10))) { if(((uint32_t)yintercept>>16)==pwally && xtile==pwallx) { - if(pwalldir==di_south && (int32_t)((word)yintercept)+ystep<(pwallposi<<10) - || pwalldir==di_north && (int32_t)((word)yintercept)+ystep>(pwallposi<<10)) + if((pwalldir==di_south && (int32_t)((word)yintercept)+ystep<(pwallposi<<10)) + || (pwalldir==di_north && (int32_t)((word)yintercept)+ystep>(pwallposi<<10))) goto passvert; if(pwalldir==di_south) @@ -1306,8 +1305,8 @@ vertentry: } else { - if(pwalldir==di_south && (int32_t)((word)yintercept)+ystep>(pwallposi<<10) - || pwalldir==di_north && (int32_t)((word)yintercept)+ystep<(pwallposi<<10)) + if((pwalldir==di_south && (int32_t)((word)yintercept)+ystep>(pwallposi<<10)) + || (pwalldir==di_north && (int32_t)((word)yintercept)+ystep<(pwallposi<<10))) goto passvert; if(pwalldir==di_south) @@ -1392,8 +1391,8 @@ horizentry: pwallposnorm = pwallpos; pwallposinv = 64-pwallpos; } - if(pwalldir == di_south && ytile==pwally && ((uint32_t)xintercept>>16)==pwallx - || pwalldir == di_north && !(ytile==pwally && ((uint32_t)xintercept>>16)==pwallx)) + if((pwalldir == di_south && ytile==pwally && ((uint32_t)xintercept>>16)==pwallx) + || (pwalldir == di_north && !(ytile==pwally && ((uint32_t)xintercept>>16)==pwallx))) { xintbuf=xintercept+((xstep*pwallposnorm)>>6); if((xintbuf>>16)!=(xintercept>>16)) @@ -1422,13 +1421,13 @@ horizentry: { int pwallposi = pwallpos; if(pwalldir==di_west) pwallposi = 64-pwallpos; - if(pwalldir==di_east && (word)xintercept<(pwallposi<<10) - || pwalldir==di_west && (word)xintercept>(pwallposi<<10)) + if((pwalldir==di_east && (word)xintercept<(pwallposi<<10)) + || (pwalldir==di_west && (word)xintercept>(pwallposi<<10))) { if(((uint32_t)xintercept>>16)==pwallx && ytile==pwally) { - if(pwalldir==di_east && (int32_t)((word)xintercept)+xstep<(pwallposi<<10) - || pwalldir==di_west && (int32_t)((word)xintercept)+xstep>(pwallposi<<10)) + if((pwalldir==di_east && (int32_t)((word)xintercept)+xstep<(pwallposi<<10)) + || (pwalldir==di_west && (int32_t)((word)xintercept)+xstep>(pwallposi<<10))) goto passhoriz; if(pwalldir==di_east) @@ -1461,8 +1460,8 @@ horizentry: } else { - if(pwalldir==di_east && (int32_t)((word)xintercept)+xstep>(pwallposi<<10) - || pwalldir==di_west && (int32_t)((word)xintercept)+xstep<(pwallposi<<10)) + if((pwalldir==di_east && (int32_t)((word)xintercept)+xstep>(pwallposi<<10)) + || (pwalldir==di_west && (int32_t)((word)xintercept)+xstep<(pwallposi<<10))) goto passhoriz; if(pwalldir==di_east) --- a/wl_game.cpp +++ b/wl_game.cpp @@ -3,7 +3,6 @@ #include #include "wl_def.h" #include -#pragma hdrstop #ifdef MYPROFILE #include @@ -1178,7 +1177,8 @@ void PlayDemo (int demonumber) NewGame (1,0); gamestate.mapon = *demoptr++; gamestate.difficulty = gd_hard; - length = READWORD(*(uint8_t **)&demoptr); + length = demoptr[0] | demoptr[1] << 8; + demoptr+=2; // TODO: Seems like the original demo format supports 16 MB demos // But T_DEM00 and T_DEM01 of Wolf have a 0xd8 as third length size... demoptr++; --- a/wl_inter.cpp +++ b/wl_inter.cpp @@ -1,7 +1,6 @@ // WL_INTER.C #include "wl_def.h" -#pragma hdrstop LRstruct LevelRatios[LRpack]; int32_t lastBreathTime = 0; @@ -386,7 +385,7 @@ Write (int x, int y, const char *string) break; default: - VWB_DrawPic (nx, ny, alpha[ch]); + VWB_DrawPic (nx, ny, alpha[(int)ch]); } nx += 16; } --- a/wl_main.cpp +++ b/wl_main.cpp @@ -7,7 +7,6 @@ #endif #include "wl_def.h" -#pragma hdrstop #include "wl_atmos.h" #include @@ -1444,7 +1443,7 @@ void Quit (const char *errorStr, ...) if (!pictable) // don't try to display the red box before it's loaded { ShutdownId(); - if (error && *error) + if (*error) { #ifdef NOTYET SetTextCursor(0,0); @@ -1458,7 +1457,7 @@ void Quit (const char *errorStr, ...) exit(1); } - if (!error || !*error) + if (!*error) { #ifdef NOTYET #ifndef JAPAN @@ -1478,7 +1477,7 @@ void Quit (const char *errorStr, ...) ShutdownId (); - if (error && *error) + if (*error) { #ifdef NOTYET memcpy((byte *)0xb8000,screen+7,7*160); @@ -1492,7 +1491,7 @@ void Quit (const char *errorStr, ...) exit(1); } else - if (!error || !(*error)) + if (!*error) { #ifdef NOTYET #ifndef JAPAN @@ -1520,7 +1519,9 @@ void Quit (const char *errorStr, ...) static void DemoLoop() { +#ifndef SPEARDEMO int LastDemo = 0; +#endif // // check for launch from ted @@ -1729,7 +1730,7 @@ void CheckParameters(int argc, char *arg screenWidth = atoi(argv[++i]); screenHeight = atoi(argv[++i]); unsigned factor = screenWidth / 320; - if(screenWidth % 320 || screenHeight != 200 * factor && screenHeight != 240 * factor) + if(screenWidth % 320 || (screenHeight != 200 * factor && screenHeight != 240 * factor)) printf("Screen size must be a multiple of 320x200 or 320x240!\n"), hasError = true; } } --- a/wl_menu.cpp +++ b/wl_menu.cpp @@ -15,7 +15,6 @@ #endif #include "wl_def.h" -#pragma hdrstop extern int lastgamemusicoffset; extern int numEpisodesMissing; @@ -920,7 +919,7 @@ CP_CheckQuick (ScanCode scancode) #ifdef SPANISH if (Confirm (ENDGAMESTR)) #else - if (Confirm (endStrings[US_RndT () & 0x7 + (US_RndT () & 1)])) + if (Confirm (endStrings[US_RndT () & (0x7 + (US_RndT () & 1))])) #endif #endif { @@ -2137,7 +2136,7 @@ CustomControls (int) void DefineMouseBtns (void) { - CustomCtrls mouseallowed = { 0, 1, 1, 1 }; + CustomCtrls mouseallowed = {{ 0, 1, 1, 1 }}; EnterCtrlData (2, &mouseallowed, DrawCustMouse, PrintCustMouse, MOUSE); } @@ -2149,7 +2148,7 @@ DefineMouseBtns (void) void DefineJoyBtns (void) { - CustomCtrls joyallowed = { 1, 1, 1, 1 }; + CustomCtrls joyallowed = {{ 1, 1, 1, 1 }}; EnterCtrlData (5, &joyallowed, DrawCustJoy, PrintCustJoy, JOYSTICK); } @@ -2161,7 +2160,7 @@ DefineJoyBtns (void) void DefineKeyBtns (void) { - CustomCtrls keyallowed = { 1, 1, 1, 1 }; + CustomCtrls keyallowed = {{ 1, 1, 1, 1 }}; EnterCtrlData (8, &keyallowed, DrawCustKeybd, PrintCustKeybd, KEYBOARDBTNS); } @@ -2173,7 +2172,7 @@ DefineKeyBtns (void) void DefineKeyMove (void) { - CustomCtrls keyallowed = { 1, 1, 1, 1 }; + CustomCtrls keyallowed = {{ 1, 1, 1, 1 }}; EnterCtrlData (10, &keyallowed, DrawCustKeys, PrintCustKeys, KEYBOARDMOVE); } @@ -2190,7 +2189,7 @@ void EnterCtrlData (int index, CustomCtrls * cust, void (*DrawRtn) (int), void (*PrintRtn) (int), int type) { - int j, exit, tick, redraw, which, x, picked, lastFlashTime; + int j, exit, tick, redraw, which = 0, x = 0, picked, lastFlashTime; ControlInfo ci; @@ -2241,7 +2240,7 @@ EnterCtrlData (int index, CustomCtrls * // // CHANGE BUTTON VALUE? // - if ((type != KEYBOARDBTNS && type != KEYBOARDMOVE) && (ci.button0 | ci.button1 | ci.button2 | ci.button3) || + if (((type != KEYBOARDBTNS && type != KEYBOARDMOVE) && (ci.button0 | ci.button1 | ci.button2 | ci.button3)) || ((type == KEYBOARDBTNS || type == KEYBOARDMOVE) && LastScan == sc_Enter)) { lastFlashTime = GetTimeCount(); @@ -2362,7 +2361,7 @@ EnterCtrlData (int index, CustomCtrls * // // EXIT INPUT? // - if (IN_KeyDown (sc_Escape) || type != JOYSTICK && ci.button1) + if (IN_KeyDown (sc_Escape) || (type != JOYSTICK && ci.button1)) { picked = 1; SD_PlaySound (ESCPRESSEDSND); @@ -2942,7 +2941,7 @@ CP_Quit (int) #ifdef SPANISH if (Confirm (ENDGAMESTR)) #else - if (Confirm (endStrings[US_RndT () & 0x7 + (US_RndT () & 1)])) + if (Confirm (endStrings[US_RndT () & (0x7 + (US_RndT () & 1))])) #endif #endif @@ -3406,7 +3405,7 @@ HandleMenu (CP_iteminfo * item_i, CP_ite if (ci.button0 || Keyboard[sc_Space] || Keyboard[sc_Enter]) exit = 1; - if (ci.button1 && !Keyboard[sc_Alt] || Keyboard[sc_Escape]) + if ((ci.button1 && !Keyboard[sc_Alt]) || Keyboard[sc_Escape]) exit = 2; } @@ -3848,7 +3847,7 @@ Message (const char *string) h += font->height; } else - w += font->width[string[i]]; + w += font->width[(int8_t)string[i]]; } if (w + 10 > mw) --- a/wl_play.cpp +++ b/wl_play.cpp @@ -1,7 +1,6 @@ // WL_PLAY.C #include "wl_def.h" -#pragma hdrstop #include "wl_cloudsky.h" #include "wl_shade.h" @@ -688,8 +687,6 @@ void CheckKeys (void) #endif scan == sc_F9 || scan == sc_F7 || scan == sc_F8) // pop up quit dialog { - short oldmapon = gamestate.mapon; - short oldepisode = gamestate.episode; ClearMemory (); ClearSplitVWB (); US_ControlPanel (scan); --- a/wl_state.cpp +++ b/wl_state.cpp @@ -1,7 +1,6 @@ // WL_STATE.C #include "wl_def.h" -#pragma hdrstop /* ============================================================================= --- a/wl_text.cpp +++ b/wl_text.cpp @@ -1,7 +1,6 @@ // WL_TEXT.C #include "wl_def.h" -#pragma hdrstop /* ============================================================================= debian/patches/series0000644000000000000000000000026412220337234012032 0ustar 02-enable-shading.patch 10-datadir.patch 21-compiler-warnings.patch 31-pc-speaker.patch 40-novert.patch 41-crosshair.patch 42-mousewheel.patch 43-autorun.patch 44-autostrafe.patch debian/patches/10-datadir.patch0000644000000000000000000001214212220337234013462 0ustar Subject: Use /usr/share/games/wolf3d for data files. Author: Fabian Greffrath --- a/id_ca.cpp +++ b/id_ca.cpp @@ -83,13 +83,13 @@ int numEpisodesMissing = 0; char extension[5]; // Need a string, not constant to change cache files char graphext[5]; char audioext[5]; -static const char gheadname[] = "vgahead."; -static const char gfilename[] = "vgagraph."; -static const char gdictname[] = "vgadict."; -static const char mheadname[] = "maphead."; -static const char mfilename[] = "maptemp."; -static const char aheadname[] = "audiohed."; -static const char afilename[] = "audiot."; +static const char gheadname[] = DATADIR "vgahead."; +static const char gfilename[] = DATADIR "vgagraph."; +static const char gdictname[] = DATADIR "vgadict."; +static const char mheadname[] = DATADIR "maphead."; +static const char mfilename[] = DATADIR "maptemp."; +static const char aheadname[] = DATADIR "audiohed."; +static const char afilename[] = DATADIR "audiot."; void CA_CannotOpen(const char *string); @@ -445,7 +445,7 @@ void CA_RLEWexpand (word *source, word * void CAL_SetupGrFile (void) { - char fname[13]; + char fname[13 + sizeof(DATADIR)]; int handle; byte *compseg; @@ -547,7 +547,7 @@ void CAL_SetupMapFile (void) int i; int handle; int32_t length,pos; - char fname[13]; + char fname[13 + sizeof(DATADIR)]; // // load maphead.ext (offsets and tileinfo for map file) @@ -571,7 +571,7 @@ void CAL_SetupMapFile (void) // open the data file // #ifdef CARMACIZED - strcpy(fname, "gamemaps."); + strcpy(fname, DATADIR "gamemaps."); strcat(fname, extension); maphandle = open(fname, O_RDONLY | O_BINARY); @@ -627,7 +627,7 @@ void CAL_SetupMapFile (void) void CAL_SetupAudioFile (void) { - char fname[13]; + char fname[13 + sizeof(DATADIR)]; // // load audiohed.ext (offsets for audio file) --- a/id_pm.cpp +++ b/id_pm.cpp @@ -16,7 +16,7 @@ uint8_t **PMPages; void PM_Startup() { - char fname[13] = "vswap."; + char fname[13 + sizeof(DATADIR)] = DATADIR "vswap."; strcat(fname,extension); FILE *file = fopen(fname,"rb"); --- a/version.h +++ b/version.h @@ -3,6 +3,10 @@ #ifndef VERSIONALREADYCHOSEN // used for batch compiling +#ifndef DATADIR +#define DATADIR "" +#endif + /* Defines used for different versions */ //#define SPEAR --- a/wl_menu.cpp +++ b/wl_menu.cpp @@ -4030,12 +4030,12 @@ CheckForEpisodes (void) // #ifdef JAPAN #ifdef JAPDEMO - if(!stat("vswap.wj1", &statbuf)) + if(!stat(DATADIR "vswap.wj1", &statbuf)) { strcpy (extension, "wj1"); numEpisodesMissing = 5; #else - if(!stat("vswap.wj6", &statbuf)) + if(!stat(DATADIR "vswap.wj6", &statbuf)) { strcpy (extension, "wj6"); #endif @@ -4055,7 +4055,7 @@ CheckForEpisodes (void) // ENGLISH // #ifdef UPLOAD - if(!stat("vswap.wl1", &statbuf)) + if(!stat(DATADIR "vswap.wl1", &statbuf)) { strcpy (extension, "wl1"); numEpisodesMissing = 5; @@ -4064,7 +4064,7 @@ CheckForEpisodes (void) Quit ("NO WOLFENSTEIN 3-D DATA FILES to be found!"); #else #ifndef SPEAR - if(!stat("vswap.wl6", &statbuf)) + if(!stat(DATADIR "vswap.wl6", &statbuf)) { strcpy (extension, "wl6"); NewEmenu[2].active = @@ -4077,7 +4077,7 @@ CheckForEpisodes (void) } else { - if(!stat("vswap.wl3", &statbuf)) + if(!stat(DATADIR "vswap.wl3", &statbuf)) { strcpy (extension, "wl3"); numEpisodesMissing = 3; @@ -4085,7 +4085,7 @@ CheckForEpisodes (void) } else { - if(!stat("vswap.wl1", &statbuf)) + if(!stat(DATADIR "vswap.wl1", &statbuf)) { strcpy (extension, "wl1"); numEpisodesMissing = 5; @@ -4102,28 +4102,28 @@ CheckForEpisodes (void) #ifndef SPEARDEMO if(param_mission == 0) { - if(!stat("vswap.sod", &statbuf)) + if(!stat(DATADIR "vswap.sod", &statbuf)) 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(!stat(DATADIR "vswap.sd1", &statbuf)) 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(!stat(DATADIR "vswap.sd2", &statbuf)) 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(!stat(DATADIR "vswap.sd3", &statbuf)) strcpy (extension, "sd3"); else Quit ("NO SPEAR OF DESTINY DATA FILES TO BE FOUND!"); @@ -4133,7 +4133,7 @@ CheckForEpisodes (void) strcpy (graphext, "sod"); strcpy (audioext, "sod"); #else - if(!stat("vswap.sdm", &statbuf)) + if(!stat(DATADIR "vswap.sdm", &statbuf)) { strcpy (extension, "sdm"); } debian/patches/40-novert.patch0000644000000000000000000000363612220337234013402 0ustar Subject: Suppress vertical mouse movement when the "--novert" parameter is given. Author: Fabian Greffrath --- a/wl_def.h +++ b/wl_def.h @@ -933,6 +933,7 @@ extern int param_audiobuffer; extern int param_mission; extern boolean param_goodtimes; extern boolean param_ignorenumchunks; +extern boolean param_novert; void NewGame (int difficulty,int episode); --- a/wl_main.cpp +++ b/wl_main.cpp @@ -101,6 +101,7 @@ int param_audiobuffer = 2048 / (4410 int param_mission = 0; boolean param_goodtimes = false; boolean param_ignorenumchunks = false; +boolean param_novert = false; /* ============================================================================= @@ -1718,6 +1719,8 @@ void CheckParameters(int argc, char *arg fullscreen = false; forcegrabmouse = true; } + else IFARG("--novert") + param_novert = true; else IFARG("--res") { if(i + 2 >= argc) @@ -1898,6 +1901,7 @@ void CheckParameters(int argc, char *arg " --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" " --res Sets the screen resolution\n" " (must be multiple of 320x200 or 320x240)\n" " --resf Sets any screen resolution >= 320x200\n" --- a/wl_play.cpp +++ b/wl_play.cpp @@ -347,7 +347,8 @@ void PollMouseMove (void) mouseymove -= screenHeight / 2; controlx += mousexmove * 10 / (13 - mouseadjustment); - controly += mouseymove * 20 / (13 - mouseadjustment); + if (!param_novert) + controly += mouseymove * 20 / (13 - mouseadjustment); } debian/patches/02-enable-shading.patch0000644000000000000000000000166012220337234014717 0ustar Subject: Enable shading support (just because I like it). Author: Fabian Greffrath --- a/Makefile +++ b/Makefile @@ -65,6 +65,7 @@ SRCS += wl_agent.cpp SRCS += wl_atmos.cpp SRCS += wl_cloudsky.cpp SRCS += wl_debug.cpp +SRCS += wl_shade.cpp SRCS += wl_draw.cpp SRCS += wl_floorceiling.cpp SRCS += wl_game.cpp --- a/version.h +++ b/version.h @@ -32,7 +32,7 @@ #endif //#define USE_FEATUREFLAGS // Enables the level feature flags (see bottom of wl_def.h) -//#define USE_SHADING // Enables shading support (see wl_shade.cpp) +#define USE_SHADING // Enables shading support (see wl_shade.cpp) //#define USE_DIR3DSPR // Enables directional 3d sprites (see wl_dir3dspr.cpp) //#define USE_FLOORCEILINGTEX // Enables floor and ceiling textures stored in the third mapplane (see wl_floorceiling.cpp) //#define USE_HIRES // Enables high resolution textures/sprites (128x128) debian/patches/43-autorun.patch0000644000000000000000000000207412220337234013560 0ustar Subject: Toggle autorun when both Shift keys are pressed. Author: Fabian Greffrath --- a/id_in.cpp +++ b/id_in.cpp @@ -238,6 +238,7 @@ boolean IN_JoyPresent() } boolean mw_dn = false, mw_up = false; +boolean autorun = false; static void processEvent(SDL_Event *event) { @@ -259,6 +260,9 @@ static void processEvent(SDL_Event *even LastScan = event->key.keysym.sym; SDLMod mod = SDL_GetModState(); + if ((mod & KMOD_LSHIFT) && (mod & KMOD_RSHIFT)) + autorun = !autorun; + if(Keyboard[sc_Alt]) { if(LastScan==SDLK_F4) --- a/wl_play.cpp +++ b/wl_play.cpp @@ -255,10 +255,17 @@ int songs[] = { 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; } debian/patches/41-crosshair.patch0000644000000000000000000000500412220337234014052 0ustar Subject: Show a crosshair when the "--crosshair" parameter is given. Author: Fabian Greffrath --- a/wl_def.h +++ b/wl_def.h @@ -934,6 +934,7 @@ 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); --- a/wl_draw.cpp +++ b/wl_draw.cpp @@ -1052,6 +1052,17 @@ void DrawPlayerWeapon (void) 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); +} //========================================================================== @@ -1596,6 +1607,8 @@ void ThreeDRefresh (void) #endif DrawPlayerWeapon (); // draw player's hands + if (param_crosshair) + DrawCrosshair (); if(Keyboard[sc_Tab] && viewsize == 21 && gamestate.weapon != -1) ShowActStatus(); --- a/wl_main.cpp +++ b/wl_main.cpp @@ -102,6 +102,7 @@ int param_mission = 0; boolean param_goodtimes = false; boolean param_ignorenumchunks = false; boolean param_novert = false; +boolean param_crosshair = false; /* ============================================================================= @@ -1721,6 +1722,8 @@ void CheckParameters(int argc, char *arg } else IFARG("--novert") param_novert = true; + else IFARG("--crosshair") + param_crosshair = true; else IFARG("--res") { if(i + 2 >= argc) @@ -1902,6 +1905,7 @@ void CheckParameters(int argc, char *arg " --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" " --res Sets the screen resolution\n" " (must be multiple of 320x200 or 320x240)\n" " --resf Sets any screen resolution >= 320x200\n" debian/changelog0000644000000000000000000001511512220337234011041 0ustar wolf4sdl (1.7+svn262+dfsg1-2) unstable; urgency=low [ Jon Dowland ] * remove myself from uploaders [ Fabian Greffrath ] * Fix typo in README.Debian. * Bump debhelper compatibility to v9. * Add TODO to README.source. * Add CPPFLAGS to CFLAGS. * Apply a series of patches to improve mouse control: + Suppress vertical mouse movement when the "--novert" parameter is given. + Show a crosshair when the "--crosshair" parameter is given. + Change weapons with the mouse wheel. + Toggle autorun when both Shift keys are pressed. + Toggle autostrafe for the keyboard when both Alt keys are pressed. By the way, accept the German AltGr key as a right Alt key. * Adjust manpage accordingly. * Replace potentially non-free wolf4sdl.xpm with a self-drawn alternative and add a reproduction rule to debian/rules (Closes: #718287). -- Fabian Greffrath Thu, 05 Sep 2013 17:02:12 +0200 wolf4sdl (1.7+svn262+dfsg1-1) unstable; urgency=low [ Fabian Greffrath ] * Imported Upstream version 1.7+svn262+dfsg1 * Add debian/README.source and document the removal of the MAME OPL2 emulator sources. * Update debian/copyright with the copyright information of the GPL'ed OPL2/3 emulator from DOSBox. * Change section to contrib/games (the required data files are still non-free) from non-free/games. :) * Build with GPL=1. * Refresh all patches. * Remove debian/patches/32-mingw.patch, applied upstream. * Remove another compiler warning in 21-compiler-warnings.patch. [ Jon Dowland ] * Bump standards version. * Tweak watch file to exclude '+dfsg1' from versions. -- Jon Dowland Mon, 28 Nov 2011 13:32:28 +0000 wolf4sdl (1.7-2) unstable; urgency=low * Eliminate the last remaining compiler warning. * Build less verbosely again, it only adds to confusion. * Change license of the original cource code to GPL-2.0+ as confirmed via e-mail by John Carmack himself. Still non-free, though, because the Mame Software License does not allow commercial use. * Clarify relation to game-data-packager and its generated packages in debian/control. * Export CFLAGS LDFLAGS for them to take effect as per dpkg (>= 1.16.1). -- Fabian Greffrath Wed, 05 Oct 2011 15:31:57 +0200 wolf4sdl (1.7-1) unstable; urgency=low * Imported Upstream version 1.7 * Fix debian/watch file * Remove wl_shade.{d,o} in the clean rule * Replace wolf4sdl.xpm with the Windows icon from upstream SVN -- Fabian Greffrath Tue, 28 Jun 2011 14:22:03 +0200 wolf4sdl (1.7~svn255-0fab2) unstable; urgency=low [ Jon Dowland ] * add myself to uploaders * Recommend: game-data-packager (which can build wolf3d-data); Suggests: wolf3d-data * Update download URL in copyright file [ Fabian Greffrath ] * Add "-fno-toplevel-reorder" to the CFLAGS to ensure save game compatibility between different builds. Thanks to Hans de Goede for pointing this out! * Update 21-compiler-warnings.patch with new warnings from g++-4.6. * Clean up debian/rules. * Build more verbosely. -- Fabian Greffrath Tue, 03 May 2011 01:22:02 +0200 wolf4sdl (1.7~svn255-0fab1) unstable; urgency=low [ Jon Dowland ] * spelling correction * line-wrap changelog [ Fabian Greffrath ] * New upstream SVN snapshot (revision 255 of ). * Refresh all patches. * Drop 11-configdir.patch, implemented differently upstream. * Drop 22-compile-fixes.patch, first chunk applied upstream, second chunk unnecessary since dropping 11-configdir.patch. * 31-pc-speaker.patch: New patch to enable PC speaker emulation, adapt 21-compiler-warnings.patch accordingly. * 32-mingw.patch: New patch to fix portability issues on MinGW. * Add .gitignore, debian/gbp.conf and debian/source/local-options helper files. * Fix 21-compiler-warnings.patch to silence the compiler again. -- Fabian Greffrath Tue, 19 Apr 2011 00:08:44 +0200 wolf4sdl (1.6-2) experimental; urgency=low * Non-maintainer upload. * bump version to satisfy dak -- Jon Dowland Thu, 24 Mar 2011 15:35:12 +0000 wolf4sdl (1.6-1) experimental; urgency=low * Initial release (Closes: #615056). * Target at experimental until game-data-packager is able to create appropriate data packages. * Set Maintainer to Debian Games Team and add myself to Uploaders. * Fix upstream Homepage. * Add Vcs-* fields. * Play safe and run "make clean" between the builds. * Fix debian/watch file. * Document the missing game data files in both debian/control and README.Debian. -- Fabian Greffrath Mon, 28 Feb 2011 13:06:25 +0100 wolf4sdl (1.6-0fab3) unstable; urgency=low * Add some "sleep 1" between the different variant builds in debian/rules to avoid race conditions when e.g. version.h and wl_state.cpp have been modified within the same second. -- Fabian Greffrath Fri, 25 Feb 2011 17:11:14 +0100 wolf4sdl (1.6-0fab2) unstable; urgency=low * Build five variants of Wolf4SDL: + Wolf3d Full v1.4 Apogee (with ReadThis) + Wolf3d Full v1.4 GT/ID/Activision + Wolf3d Shareware v1.4 + Spear of Destiny Full and Mission Disks + Spear of Destiny Demo * Handle variants via update-alternatives, document this in the manual page and in README-Debian, add symlinks for the manual pages. * Add lintian overrides for desktop-command-not-in-package and menu-command-not-in-package. * Quit if getenv("HOME") returns NULL, thanks Hans de Goede . * Add a patch to get things to build with very recent gcc/glibc, thanks Hans de Goede . -- Fabian Greffrath Mon, 03 Jan 2011 13:49:27 +0100 wolf4sdl (1.6-0fab1) unstable; urgency=low * Initial release. * Build the Wolf3d Shareware v1.4 variant. * Enable shading support (just because I like it). * Use /usr/share/games/wolf3d for data files. * Use ~/.wolf4sdl for config files and saved games. * Rename game binary to wolf4sdl from wolf3d. * Fix some compiler warnings so the code compiles cleanly with g++-4.5 and CFLAGS+="-Wall -Wno-sign-compare -Wno-switch". * Add and install wolf4sdl.6 manual page. * Install README* documentation. * Add and install wolf4sdl.xpm icon based on NewWolf.ico. * Add and install wolf4sdl.menu and wolf4sdl.desktop files. -- Fabian Greffrath Wed, 22 Dec 2010 11:29:17 +0100 debian/wolf4sdl.manpages0000644000000000000000000000002612220337234012435 0ustar debian/man/wolf4sdl.6 debian/wolf4sdl.lintian-overrides0000644000000000000000000000022312220337234014277 0ustar # The /usr/games/wolf4sdl binary is handled via update-alternatives wolf4sdl: desktop-command-not-in-package wolf4sdl: menu-command-not-in-package debian/wolf4sdl.menu0000644000000000000000000000032512220337234011610 0ustar ?package(wolf4sdl):needs="X11" section="Games/Action"\ title="Wolf4SDL"\ longtitle="SDL-Port of Wolfenstein 3-D and Spear of Destiny"\ command="/usr/games/wolf4sdl"\ icon="/usr/share/pixmaps/wolf4sdl.xpm" debian/wolf4sdl.docs0000644000000000000000000000001012220337234011563 0ustar README* debian/README.source0000644000000000000000000000114412220337234011343 0ustar The non-free OPL2 emulator from MAME has been removed from the upstream source. This is how the Debian source tarball was created: $ svn export -r 262 svn://tron.homeunix.org:3690/wolf3d/trunk wolf4sdl-1.7+svn262 $ rm -rf wolf4sdl-1.7+svn262/mame/ $ tar czfv wolf4sdl_1.7+svn262+dfsg1.orig.tar.gz wolf4sdl-1.7+svn262/ Due to the missing mame sources, GPL=1 has to be set for the Makefile. TODO for the next snapshot: $ sed -e '/^ifdef GPL/, /^endif/ {s/^[[:space:]]*//; /^ifdef/d; /^endif/d}' \ -e '/^ifndef GPL/,/^endif/ {s/^[[:space:]]*//; /^ifndef/,/^else/d; /^endif/d}' \ -i Makefile debian/README.Debian0000644000000000000000000000275412220337234011235 0ustar Wolf4SDL for Debian ------------------- * The wolf4sdl game requires additional data files which are not available under a free license and cannot be distributed by Debian. Thus, this package contains no data files, but future releases of `game-data-packager' are expected to be able to generate suitable data packages for wolf4sdl. . For the time being, it is required to obtain the data files from external resources (hint: WolfGL home page, Files section) and copy them into the `/usr/share/games/wolf3d' directory. * The wolf4sdl package in Debian supports five variants of the game: Wolf3d Full v1.4 Apogee (with ReadThis), Wolf3d Full v1.4 GT/ID/Activision, Wolf3d Shareware v1.4, Spear of Destiny Full and Mission Disks, Spear of Destiny Demo. The corresponding binaries are named 'wolf4sdl-wl6a', 'wolf4sdl-wl6', 'wolf4sdl-wl1', 'wolf4sdl-sod' and 'wolf4sdl-sdm', respectively. In order to select which variant is started by the 'wolf4sdl' command and the desktop and menu files, Debian's 'update-alternatives' mechanism is used: . $ update-alternatives --config wolf4sdl . By default, the 'wolf4sdl-wl1' alternative is preferred. . The game expects its data files in the '/usr/share/games/wolf3d' directory (with lower case file names), so make sure to also copy the appropriate data files into this directory when changing the 'wolf4sdl' alternative. -- Fabian Greffrath Mon, 03 Jan 2011 15:10:21 +0100 debian/wolf4sdl.links0000644000000000000000000000054412220337234011767 0ustar usr/share/man/man6/wolf4sdl.6.gz usr/share/man/man6/wolf4sdl-wl6.6.gz usr/share/man/man6/wolf4sdl.6.gz usr/share/man/man6/wolf4sdl-wl6a.6.gz usr/share/man/man6/wolf4sdl.6.gz usr/share/man/man6/wolf4sdl-wl1.6.gz usr/share/man/man6/wolf4sdl.6.gz usr/share/man/man6/wolf4sdl-sod.6.gz usr/share/man/man6/wolf4sdl.6.gz usr/share/man/man6/wolf4sdl-sdm.6.gz debian/wolf4sdl.png0000644000000000000000000000317612220337234011437 0ustar PNG  IHDR szzsBIT|d pHYs B(xtEXtSoftwarewww.inkscape.org<tEXtTitlewolf3d iconA:tEXtAuthorFabian Greffrath8kˏtEXtCreation Time5 Sep 2013=6IDATXW]H[g~iiY&tZ*-!enatCыXi7Xlg zсcWV9"fiu1990JLΉ /$>h"u1<k,K0 0EQھ}{]d ]yN/Hw((]~ZD"X,1-`_wYT[[R|%(zzzX,VOD&<7rm}}`&nܸ422$vmmmݻyq]իaY+kMQO:hե꺾A?nذ떖1I}c@D,|O8x<Gp:===iZ=*!,m"b1A'O*~?#ŋUk999zIIB__=iګ$͛3*{quvv*<2Wbtww?4_x̻sr*^`Μ941`NzJKKD:::hn:=oYd KO AUUGWHu@U@ *ʼnah4< innM'2 c+&&& cUUGciK,dmkAD𾆆(<,_ZW0 dY~KPHQ  lsY2keYngdee-QVV"m[Oo'|j)$=D265O+WO1wKJJSNYܿa&F˗1A>$)+'r%K!0FN#:caIVQLpr >l~|`22P>p+nd"gd PxR/_˘ ldN"R(rOl,&(Is`f fr- T58]GSu"z de``0G,޸a蝙DVk1Ip<sLG $ه&WDt+s4c t7lI{}lLӴi~9\M[{SnlPM"1w]~ A Z}8c"ǽPDD< ©ο=f?IENDB`debian/wolf4sdl.prerm0000644000000000000000000000021612220337234011770 0ustar #!/bin/sh set -e if [ "$1" = "remove" ] || [ "$1" = "deconfigure" ] then update-alternatives --quiet --remove-all wolf4sdl fi #DEBHELPER#