https://github.com/midzer/wolf4sdl Skip to content Toggle navigation Sign up * Product + Actions Automate any workflow + Packages Host and manage packages + Security Find and fix vulnerabilities + Codespaces Instant dev environments + Copilot Write better code with AI + Code review Manage code changes + Issues Plan and track work + Discussions Collaborate outside of code + Explore + All features + Documentation + GitHub Skills + Blog * Solutions + For + Enterprise + Teams + Startups + Education + By Solution + CI/CD & Automation + DevOps + DevSecOps + Case Studies + Customer Stories + Resources * Open Source + GitHub Sponsors Fund open source developers + The ReadME Project GitHub community articles + Repositories + Topics + Trending + Collections * Pricing [ ] * # In this repository All GitHub | Jump to | * No suggested jump to results * # In this repository All GitHub | Jump to | * # In this user All GitHub | Jump to | * # In this repository All GitHub | Jump to | Sign in Sign up {{ message }} midzer / wolf4sdl Public forked from fabiangreffrath/wolf4sdl * Notifications * Fork 7 * Star 14 Emscripten-Port of Wolfenstein 3D and Spear of Destiny wolfenstein.netlify.app/ License GPL-2.0 license 14 stars 7 forks Star Notifications * Code * Pull requests 0 * Actions * Projects 0 * Security * Insights More * Code * Pull requests * Actions * Projects * Security * Insights midzer/wolf4sdl This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository. master Switch branches/tags [ ] Branches Tags Could not load branches Nothing to show {{ refName }} default View all branches Could not load tags Nothing to show {{ refName }} default View all tags Name already in use A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch? Cancel Create 1 branch 0 tags Code * Local * Codespaces * Clone HTTPS GitHub CLI [https://github.com/m] Use Git or checkout with SVN using the web URL. [gh repo clone midzer] Work fast with our official CLI. Learn more. * Open with GitHub Desktop * Download ZIP Sign In Required Please sign in to use Codespaces. Launching GitHub Desktop If nothing happens, download GitHub Desktop and try again. Launching GitHub Desktop If nothing happens, download GitHub Desktop and try again. Launching Xcode If nothing happens, download Xcode and try again. Launching Visual Studio Code Your codespace will open once ready. There was a problem preparing your codespace, please try again. This branch is 2 commits ahead of fabiangreffrath:master. Latest commit @midzer midzer enable linker flto ... e776b71 Mar 2, 2023 enable linker flto e776b71 Git stats * 52 commits Files Permalink Failed to load latest commit information. Type Name Latest commit message Commit time dosbox remove remnants of Special compiling for Dreamcast July 23, 2020 15:02 .travis.sh clean list of defines to be left undefined for Travis CI cppcheck July 23, 2020 15:42 .travis.yml fix all cppcheck and -Wall compiler warnings (fabiangreffrath#19) July 14, 2020 08:35 Changes.txt first commit July 1, 2020 20:34 Makefile enable linker flto March 2, 2023 13:03 README.txt remove all non-critical uses of the GOODTIMES macro August 10, 2020 14:21 audiosod.h first commit July 1, 2020 20:34 audiowl6.h first commit July 1, 2020 20:34 config.default separate "Customize Keyboard" and "Customize Mouse/JS" menus ( fabiang... October 28, 2021 12:48 f_spear.h first commit July 1, 2020 20:34 foreign.h first commit July 1, 2020 20:34 gfxv_apo.h first commit July 1, 2020 20:34 gfxv_sod.h first commit July 1, 2020 20:34 gfxv_wl6.h first commit July 1, 2020 20:34 id_ca.cpp first emscripten build March 2, 2023 09:29 id_ca.h re-define "pragma pack()" on a per-struct base (fabiangreffrath#20) July 14, 2020 18:08 id_in.cpp separate "Customize Keyboard" and "Customize Mouse/JS" menus ( fabiang... October 28, 2021 12:48 id_in.h separate "Customize Keyboard" and "Customize Mouse/JS" menus ( fabiang... October 28, 2021 12:48 id_pm.cpp first emscripten build March 2, 2023 09:29 id_pm.h first commit July 1, 2020 20:34 id_sd.cpp convert sound effects to target format using SDL_AudioCVT API January 17, 2023 08:20 id_sd.h first commit July 1, 2020 20:34 id_us.h re-define "pragma pack()" on a per-struct base (fabiangreffrath#20) July 14, 2020 18:08 id_us_1.cpp replace strcpy() with memmove() to prevent string overlap October 28, 2021 13:56 id_vh.cpp remove remnants of SDL1 July 23, 2020 10:33 id_vh.h port source code over to SDL2 July 1, 2020 20:35 id_vl.cpp apply aspect ratio correction for 640x400 and 320x200 video modes October 28, 2021 14:13 id_vl.h apply aspect ratio correction for 640x400 and 320x200 video modes October 28, 2021 14:13 license-gpl.txt first commit July 1, 2020 20:34 license-id.txt first commit July 1, 2020 20:34 signon.cpp first commit July 1, 2020 20:34 sodpal.inc first commit July 1, 2020 20:34 states.cpp fix all cppcheck and -Wall compiler warnings (fabiangreffrath#19) July 14, 2020 08:35 states.h organize all available statetype variables in a states[] array ( fabia... July 13, 2020 14:10 version.h first emscripten build March 2, 2023 09:29 wl_act1.cpp fix all cppcheck and -Wall compiler warnings (fabiangreffrath#19) July 14, 2020 08:35 wl_act2.cpp remove Japanese i18n July 24, 2020 11:22 wl_agent.cpp add an "Always Run" switch to the Control menu August 12, 2020 09:46 wl_atmos.cpp first commit July 1, 2020 20:34 wl_atmos.h first commit July 1, 2020 20:34 wl_cloudsky.cpp first commit July 1, 2020 20:34 wl_cloudsky.h first commit July 1, 2020 20:34 wl_debug.cpp fix all cppcheck and -Wall compiler warnings (fabiangreffrath#19) July 14, 2020 08:35 wl_def.h feed actual samplerate back into param_samplerate January 16, 2023 17:34 wl_dir3dspr.cpp first commit July 1, 2020 20:34 wl_draw.cpp fix all clang++ warnings except for -Wcast-align July 14, 2020 18:23 wl_floorceiling.cpp first commit July 1, 2020 20:34 wl_game.cpp remove Japanese i18n July 24, 2020 11:22 wl_inter.cpp remove all non-critical uses of the GOODTIMES macro August 10, 2020 14:21 wl_main.cpp feed actual samplerate back into param_samplerate January 16, 2023 17:34 wl_menu.cpp first emscripten build March 2, 2023 09:29 wl_menu.h separate "Customize Keyboard" and "Customize Mouse/JS" menus ( fabiang... October 28, 2021 12:48 wl_parallax.cpp first commit July 1, 2020 20:34 wl_play.cpp add an "Always Run" switch to the Control menu August 12, 2020 09:46 wl_shade.cpp first commit July 1, 2020 20:34 wl_shade.h first commit July 1, 2020 20:34 wl_state.cpp fix all cppcheck and -Wall compiler warnings (fabiangreffrath#19) July 14, 2020 08:35 wl_text.cpp remove Japanese i18n July 24, 2020 11:22 wolfpal.inc first commit July 1, 2020 20:34 View code README.txt Wolf4SDL by Moritz "Ripper" Kroll (http://www.chaos-software.de.vu) Original Wolfenstein 3D by id Software (http://www.idsoftware.com) ============================================================================= 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) - Linux - BSD variants - Mac OS X (x86) Only little endian platforms like x86, ARM and SH-4 are supported, yet. - 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.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. They are also available at http://www.chaos-software.de.vu Usage: ------ Wolf4SDL supports the following command line options: --help This help page --tedlevel 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 --fullscreen Starts the game in fullscreen mode --nograbmouse Does not grab the mouse in windowed mode --res Sets the screen resolution (must be multiple of 320x200 or 320x240) --resf Sets any screen resolution >= 320x200 (which may result in graphic errors) --joystick Use the index-th joystick if available --joystickhat Enables movement with the given coolie hat --samplerate Sets the sound sample rate (given in Hz) --audiobuffer 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 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 number to play (1-3) Compiling from source code: --------------------------- The following ways of compiling the source code are supported: - Makefile (for Linux, BSD variants and MinGW/MSYS) 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: - license-gpl.txt (dbopl.cpp) About Emscripten-Port of Wolfenstein 3D and Spear of Destiny wolfenstein.netlify.app/ Resources Readme License GPL-2.0 license Stars 14 stars Watchers 1 watching Forks 7 forks Languages * C++ 94.6% * C 5.1% * Other 0.3% Footer (c) 2023 GitHub, Inc. Footer navigation * Terms * Privacy * Security * Status * Docs * Contact GitHub * Pricing * API * Training * Blog * About You can't perform that action at this time. You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.