11001011101001011 / wolf4sdl Goto Github PK
View Code? Open in Web Editor NEWA cross-platform port of Wolfenstein 3D with a number of changes and additions.
License: GNU General Public License v2.0
A cross-platform port of Wolfenstein 3D with a number of changes and additions.
License: GNU General Public License v2.0
Wolf4SDL by Moritz "Ripper" Kroll (http://www.chaos-software.de.vu - OFFLINE) Original Wolfenstein 3D by id Software (http://www.idsoftware.com) Modifications to r262 by Andy_Nonymous and others (http://diehardwolfers.areyep.com/viewtopic.php?t=6693) ============================================================================= Wolf4SDL is an open-source port of id Software's classic first-person shooter Wolfenstein 3D 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 mentioned in the list below. Main features: -------------- - Cross-platform: Supported operating systems are at least: - Windows 98, Windows ME, Windows 2000, Windows XP, Windows Vista (32 and 64 bit), Windows 7 (32 and 64 bit), Windows 10 (32 and 64 bit) - Linux - BSD variants - Mac OS X (x86) - KallistiOS (used for Dreamcast) Only little endian platforms like x86, ARM and SH-4 are currently supported. - AdLib sounds and music: This port includes the OPL2 emulator from MAME, so you can not only hear the AdLib sounds but also music without any AdLib-compatible soundcard in near to perfect quality! - Multichannel digitized sounds: Digitized sounds play on 8 channels! So in a fire fight you will always hear, when a guard opens the door behind you ;) - Higher screen resolutions: Aside from the original 320x200 resolution, Wolf4SDL currently supports any resolutions being multiples of 320x200 or 320x240, the default being 640x400. Unlike some other ports, Wolf4SDL does NOT apply any bilinear or similar filtering, so the graphics are NOT blurred but pixelated just as we love it. - Fully playable with only a game controller: Wolf4SDL can be played completely without a keyboard. At least two buttons are required (shoot/YES and open door/NO), but five or more are recommended (run, strafe, ESC). Additional features: -------------------- - Two additional view sizes: Wolf4SDL supports one view size using the full width of the screen and showing the status bar, like in Mac-enstein, and one view size filling the whole screen (press TAB to see the status bar). - (Nearly) unlimited sound and song lengths: Mod developers are not restricted to 64kB for digitized sounds and IMF songs anymore, so longer songs and digitized sounds with better quality are possible. - Resuming ingame music: When you come back to the game from the menu or load a save game, the music will be resumed where it was suspended rather than started from the beginning. - Freely movable pushwalls: Moving pushwalls can be viewed from all sides, allowing mod developers to place them with fewer restrictions. The player can also follow the pushwall directly instead of having to wait until the pushwall has left a whole tile. - Optional integrated features for mod developers: Wolf4SDL already contains the shading, directional 3D sprites, floor and ceiling textures, high resolution textures/sprites, parallax sky, cloud sky and outside atmosphere features, which can be easily activated in version.h. The following versions of Wolfenstein 3D data files are currently supported by the source code (choose the version by commenting/uncommenting lines in version.h as described in that file): - Wolfenstein 3D v1.1 full Apogee - Wolfenstein 3D v1.4 full Apogee - Wolfenstein 3D v1.4 full GT/ID/Activision - Wolfenstein 3D v1.4 full Imagineer (Japanese) - Wolfenstein 3D v1.0 shareware Apogee - Wolfenstein 3D v1.1 shareware Apogee - Wolfenstein 3D v1.2 shareware Apogee - Wolfenstein 3D v1.4 shareware - Spear of Destiny full - Spear of Destiny demo - Spear of Destiny - Mission 2: Return to Danger (not tested) - Spear of Destiny - Mission 3: Ultimate Challenge (not tested) How to play: ------------ To play Wolfenstein 3D with Wolf4SDL, you just have to copy the original data files (e.g. *.WL6) into the same directory as the Wolf4SDL executable. Please make sure, that you use the correct version of the executable with the according data files version as the differences are hardcoded into the binary! On Windows SDL.dll and SDL_mixer.dll must also be copied into this directory. SDL 1.2.15 Runtimes can be acquired at: https://www.libsdl.org/download-1.2.php and download "SDL-1.2.15-win32.zip" SDL_mixer 1.2.12 Runtimes can be acquired at: https://www.libsdl.org/projects/SDL_mixer/release-1.2.html and download "SDL_mixer-1.2.12-win32.zip" ! ATTENTION ! Do NOT download the x64 version of SDL or SDL_mixer. x86 binairies are required. If you play in windowed mode (--windowed parameter), press SCROLLLOCK or F12 to grab the mouse. Press it again to release the mouse. Usage: ------ Wolf4SDL supports the following command line options: --help This help page --tedlevel <level> Starts the game in the given level --baby Sets the difficulty to baby for tedlevel --easy Sets the difficulty to easy for tedlevel --normal Sets the difficulty to normal for tedlevel --hard Sets the difficulty to hard for tedlevel --nowait Skips intro screens --windowed[-mouse] Starts the game in a window [and grabs mouse] --res <width> <height> Sets the screen resolution (must be multiple of 320x200 or 320x240) --resf <w> <h> Sets any screen resolution >= 320x200 (which may result in graphic errors) --bits <b> Sets the screen color depth (Use this when you have palette/fading problem or perhaps to optimize speed on old systems. Allowed: 8, 16, 24, 32, default: "best" depth) --nodblbuf Don't use SDL's double buffering --extravbls <vbls> Sets a delay after each frame, which may help to reduce flickering (SDL does not support vsync...) (unit is currently 8 ms, default: 0) --joystick <index> Use the index-th joystick if available --joystickhat <index> Enables movement with the given coolie hat --samplerate <rate> Sets the sound sample rate (given in Hz) --audiobuffer <size> Sets the size of the audio buffer (-> sound latency) (given in bytes) --ignorenumchunks Ignores the number of chunks in VGAHEAD.* (may be useful for some broken mods) --configdir <dir> Directory where config file and save games are stored (Windows default: current directory, others: $HOME/.wolf4sdl) For Spear of Destiny the following additional options are available: --mission <mission> Mission number to play (1-3) --goodtimes Disable copy protection quiz Compiling from source code: --------------------------- The current version of the source code is available on GitHub at: https://github.com/AryanWolf3D/Wolf4SDL The following ways of compiling the source code are supported: - Makefile (for Linux, BSD variants and MinGW/MSYS) - Visual C++ 2019 (Wolf4SDL.VC2019.sln and Wolf4SDL.VC2019.vcproj) (see README-VC.txt) - Visual C++ 2008 (Wolf4SDL.VC9.sln and Wolf4SDL.VC9.vcproj) - Visual C++ 2005 (Wolf4SDL.sln and Wolf4SDL.vcproj) - Visual C++ 6 (Wolf4SDL.dsw and Wolf4SDL.dsp) - Code::Blocks 8.02 (Wolf4SDL.cbp) - Dev-C++ 5.0 Beta 9.2 (4.9.9.2) (Wolf4SDL.dev) (see README-devcpp.txt) - Xcode (for Mac OS X, macosx/Wolf4SDL.xcodeproj/project.pbxproj) - Special compiling for Dreamcast (see README-dc.txt) - Special compiling for GP2X (see README-GP2X.txt) To compile the source code you need the development libraries of - SDL (https://www.libsdl.org/download-1.2.php) and - SDL_mixer (https://www.libsdl.org/projects/SDL_mixer/release-1.2.html) and have to adjust the include and library paths in the projects accordingly. Please note, that there is no official SDL_mixer development pack for MinGW, yet, but you can get the needed files from a Dev-C++ package here: http://sourceforge.net/project/showfiles.php?group_id=94270&package_id=151751 Just rename the file extension from ".devpack" to ".tar.bz2" and unpack it with for example WinRAR. Then add the directories include/SDL and lib to the according search paths in your project. IMPORTANT: Do not forget to take care of version.h! By default it compiles for "Wolfenstein 3D v1.4 full GT/ID/Activision"! TODOs: ------ - Center non-ingame screens for resolutions being a multiple of 320x240 - Add support for any graphic resolution >= 320x200 Known bugs: ----------- - None! ;D Troubleshooting: ---------------- - If your frame rate is low, consider using the original screen resolution (--res 320 200) or lowering the sound quality (--samplerate 22050) Credits: -------- - Special thanks to id Software! Without the source code we would still have to pelt Wolfenstein 3D with hex editors and disassemblers ;D - Special thanks to the DOSBox team for providing a GPL'ed OPL2/3 emulator! - Special thanks to the MAME developer team for providing the source code of the OPL2 emulator! - Many thanks to "Der Tron" for hosting the svn repository, making Wolf4SDL FreeBSD compatible, testing, bugfixing and cleaning up the code! - Thanks to Chris Chokan for his improvements on Wolf4GW (base of Wolf4SDL) - Thanks to Pickle for the GP2X support and help on 320x240 support - Thanks to fackue for the Dreamcast support - Thanks to Chris Ballinger for the Mac OS X support - Thanks to Xilinx, Inc. for providing a list of maximum-length LFSR counters used for higher resolutions of fizzle fade Licenses: --------- - The original source code of Wolfenstein 3D: At your choice: - license-id.txt or - license-gpl.txt - The OPL2 emulator: At your choice: - license-mame.txt (fmopl.cpp) - license-gpl.txt (dbopl.cpp, USE_GPL define in version.h or set GPL=1 for Makefile)
The all-caps filenames currently prevent this from being compiled under case sensitive file systems. It seems like they should be lowercase as the filenames in Wolf4SDL.vcproj and the includes suggest it.
So I was adding KyleRTCW's spotsaw stuff here:
http://dhw.wolfenstein3d.com/viewtopic.php?p=77859#77859
And realized: "man, this isn't wolf3d anymore... this is some lameass jpb-tier cheating bullshit!". Also, if the guards you can't see are still shown, it's another form of cheating by ruining the surprise. This automap feature feels like opening a can of worms into hell. I think a better idea is to just keep it a Tab-O debug cheat that can see everything (all enemies and sprites) etc. and fuck automap, fuck ecwolf, fuck Blzut3, and fuck Zombie. I miss Zombie being healthy.
TL;DR Wolf3d is better as memory game or surprise game so fuck automap. At the very least I think if the "automap" is a non-cheating normal feature in Wolf4SDL rather than a debug cheat then the #define VIEWMAP in version.h should be off/commented out by default. It's REALLY TERRIBLE to have this as a normal part of wolf3d! Imagine people actually using it when playing the game normally. Having those NO NO NO NO! Tile16M images being shown for the entire 64x64 grid would be better or a message saying "you are a lamer". 🥂
I have done this for Chocolate Wolfenstein 3D.
I see this codebase is moving away from C++, but I can use something other than an unordered_map for input. The SDL code in here looks very similar still?
IDK if they are already implemented (i've based my fixes on official Ubuntu repos, they can be obsolete).
Thanks for attention.
How do you load this? no executable?
Hi All,
I'm receiving a SafeMalloc error when trying to play the Wolf3d shareware version 1.4 with the latest source code download from this repository.
System: Linux Mint Cinnamon (Ubuntu 20.04); i5 6600K; 32GB RAM
Error message: SafeMalloc: Out of memory at id_ca.c: line 992
Steps to reproduce:
Clone this repository
Update version.h to remove #define of GOODTIMES and to add #define of UPLOAD
Download Wolfenstein 3D Shareware version 1.4 and copy data files into root Wolf4SDL directory. I have received the error with two separate repositories - https://archive.org/download/Wolfenstein3d/Wolfenstein3dV14sw.ZIP from https://archive.org/details/Wolfenstein3d and wolf3d-box.zip from https://www.dosgamesarchive.com/download/wolfenstein-3d/)
As Linux is case-senstiive I also have to rename the files to lowercase (have done this twice and cross-checked the names both times)
Run make in the Wolf4SDL root directory
Run wolf3d, my screens go blank for about 2 seconds and then it returns to my Linux desktop with the above error message on my terminal.
I have done a small amount of source code investigation and have found that the size of the vgahead.wl1 file in the above repositories does not seem to be large enough for the value of NUMCHUNKS that the program is attempting to read (vgahead.wl1 is 471 bytes vs 161 NUMCHUNKS x3 bytes / chunk =481 bytes), and the SafeMalloc() error appears to occur on chunk 156. However, I am definitely not an expert with the Wolf3d source code so any feedback about how to fix would be appreciated.
Kind regards,
Daniel
I don't know what causes this, but sometimes it's very hard to ignore. Try moving against a wall while firing the chaingun and you'll see what I mean.
Wolfenstein 3D control scheme is a little too oldschool.
Nice to have what I'd call 'strafe mode', instead of dedicated strafe keys, so you can't really play it like you would any other FPS.
like in this fork
https://github.com/Billy2600/wolf4sdl
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.