Wolfenstein3d (Wolf4sdl) remapping?
-
@dudleydes ok, I will give it a try, thanks for responding!
-
I know this topic is incredibly old, but I just wanted to report back that @dudleydes's instructions do indeed work, but you must delete the
~/.wolf4sdl/config.wl*
config file(s) after you rebuild for your changes to take effect. This is because as the contents ofbuttonjoy
are read in from the config file inside ofInitGame()
when the game is launched.So the complete solution is as follows:
cd RetroPie-Setup/ sudo ./retropie_packages.sh wolf4sdl depends sudo ./retropie_packages.sh wolf4sdl sources
Edit
wl_play.cpp
as described above to correspond to your joystick's buttons:sudo nano tmp/build/wolf4sdl/wl_play.cpp
Then, build/install/configure and nuke the config files:
sudo ./retropie_packages.sh wolf4sdl get_opts sudo ./retropie_packages.sh wolf4sdl get_bins sudo ./retropie_packages.sh wolf4sdl build sudo ./retropie_packages.sh wolf4sdl install sudo ./retropie_packages.sh wolf4sdl configure rm ~/.wolf4sdl/config.wl*
On the next launch, you'll be set with the right bindings!
-
I got a bit carried away and decided to implement modern FPS-style controls for Wolfenstein, allowing you to strafe and turn with the thumbsticks on your controller instead of using buttons.
You can give it a try by running this instead of editing
wl_play.cpp
:cd ~/RetroPie-Setup/tmp/build/wolf4sdl/ sudo su git remote add lazd "https://github.com/lazd/wolf4sdl.git" git fetch lazd git checkout sdl2remap
Then, continue with the rest of the instructions.
On this branch, movement, aiming, and strafing are all controlled by joystick axes so they're smooth and granular, unlike the existing jerky d-pad like feeling. Now you can creep up slow, aim precisely, and literally run circles around those Nazis.
On the XBox One (or similar controller), you'll get the following mapping:
- Left stick X axis: Strafe
- Left stick Y axis: Move forward/back
- Right stick X axis: Turn
- Left stick button: Run
- Right stick button: Run
- Left bumper: Previous weapon
- Right bumper: Next weapon
- Left trigger: Use
- Right trigger: Fire
- Select: Pause
- Start: Escape
Try running by pressing in the right or left stick button, just like you would in modern console FPS games.
Run affects turning rates too, so try doing an "about-face" (180°) by pressing the right stick button as you yank the right stick left or right.
This also fixes the mapping of the select/back buttons in the menu, which was driving me insane.
If that mapping isn't conducive to your controller, go ahead and remap it as described in this thread.
-
The bug that was causing @Blackegg13 and @denisuu's mappings to not take effect actually means we can share our controller mappings by simply copying one another's
config.wl6
.If you happen to have an XBox One, 8BitDo N30 Pro, or Logitech Dual Action controller, you can use my
config.wl6
files from this repository to get your controls mapped nicely without having to build from source: https://github.com/lazd/wolf4sdl-controller-mappingsIf you have a controller mapping for another controller that matches the control scheme I've outlined, feel free to send a pull request or just post it on this thread!
-
I got a little carried away (again), and with SDL2 and the GameController API, plus the publicly curated GameController_DB, I've implemented what I think is full game controller support for Wolf, including the ability to remap all controls within Wolf's UI:
As well as the ability to adjust turn speed:
I also implemented a workaround for RetroPie's nasty xmod patch that forces
triggers_as_buttons
and confuses SDL's mapping for XBox controllers (this doesn't fix other controllers with analog triggers, you'll have to edit/etc/modprobe.d/xpad.conf
and settriggers_to_buttons=0
for those).You can try it by doing the following:
cd /home/pi/RetroPie-Setup/ sudo apt-get install libsdl2-dev libsdl2-mixer-dev sudo ./retropie_packages.sh wolf4sdl depends sudo ./retropie_packages.sh wolf4sdl sources sudo chown -R pi:pi /home/pi/RetroPie-Setup/tmp/build/wolf4sdl/ cd ~/RetroPie-Setup/tmp/build/wolf4sdl/ git remote add lazd "https://github.com/lazd/wolf4sdl.git" git fetch lazd git checkout sdl2remap git submodule init git submodule update cd ~/RetroPie-Setup/ sudo ./retropie_packages.sh wolf4sdl get_opts sudo ./retropie_packages.sh wolf4sdl get_bins sudo ./retropie_packages.sh wolf4sdl build sudo ./retropie_packages.sh wolf4sdl install sudo ./retropie_packages.sh wolf4sdl configure rm ~/.wolf4sdl/config.wl*
Tested and working on RetroPie 4.4 with an XBox One controller, Logitech Dual Action, and 8BitDo N30 Pro, as well as macOS with an XBox One controller and keyboard/mouse controls (just to make sure they still work!).
Please let me know if this works for your gamepad of choice, and report back any issues!
Source code is available here: https://github.com/lazd/wolf4sdl/tree/sdl2remap
-
Thanks @lazd it works like a charm!
-
@denisuu Awesome, glad you're up and running! What gamepad are you using?
Also, heads up, we're working on a turn-key install of Splitwolf with gamepad controls, so you can do 2-4 player Wolfenstein co-op on your RetroPie. I'll announce it when it's ready.
In the mean time, I might send a PR against RetroPie-Setup to use my SDL2 fork with the GameController support so people don't have to mess around with git to get their game controllers working nicely.
-
@denisuu If you have a minute, give this a try:
- Optional: Copy all of your Wolf3D Full and SoD game files to
roms/ports/wolf3d/
- Run these commands
cd ~/RetroPie-Setup git remote add lazd https://github.com/lazd/RetroPie-Setup.git git fetch lazd git checkout splitwolf
- Run RetroPie Setup
- Select "Manage Packages" -> "Manage optional packages" -> "splitwolf" -> "Install from binary" (if binary doesn't work, please post the output of
cat /dev/shm/runcommand.log
and try "Install from source")
You should then have Splitwolf in your Ports tab and can play 2-4 player Wolfenstein! And yes, your game controller will work perfect, and you can remap all of the buttons :)
Hopefully we can get this directly into RetroPie for everyone to enjoy soon. Please let me know if it works for you!
- Optional: Copy all of your Wolf3D Full and SoD game files to
-
Hello,
I'm running Wolfenstein 3D on a self built Gameboy CM3 with Kites Circuit Sword, so button alignment is a bit different to the normal XBOX or PS4 controller.
I purchased the game from 3D Realms and got it successfully running in full version. Also I could remap the buttons to the right configuration like it's in Doom as well.
Now my only problem is, that only the Joystick is working and not the D-Pad. I could totally live with that, cause it's absolutely playable but all directions are reversed and I can't figure it out what's the reason for that. Every other game hasn't any problem with this and both D-Pad and joystick are working simultaneously, so you can use both.
I already tried to edit the wl_play.cpp in a section further down under Joymovement by changing moveforeward to movebackward and so on. Also I flipped the x and y for directions and I tried to reverse the input values like <64 to ->64 and vise versa. But nothing caused a change to the behavior of the gameplay.
I hope anyone maybe has a clue or even a solution for that and can help, I would be very grateful for that.Merry Christmas!
-
@Phiro13 Are you using Splitwolf with the instructions above? If so, you can remap your game controller using SDL2's
controllermap
utility.-
Follow these instructions to generate a remap string for your controller: https://www.gabriel.urdhr.fr/2014/06/11/sdl2-gamepad-calibration/
-
Add the string to
/opt/retropie/ports/splitwolf/gamecontrollerdb.txt
-
-
This post is deleted! -
@lazd said in Wolfenstein3d (Wolf4sdl) remapping?:
I got a little carried away (again), and with SDL2 and the GameController API, plus the publicly curated GameController_DB, I've implemented what I think is full game controller support for Wolf, including the ability to remap all controls within Wolf's UI:
As well as the ability to adjust turn speed:
I also implemented a workaround for RetroPie's nasty xmod patch that forces
triggers_as_buttons
and confuses SDL's mapping for XBox controllers (this doesn't fix other controllers with analog triggers, you'll have to edit/etc/modprobe.d/xpad.conf
and settriggers_to_buttons=0
for those).You can try it by doing the following:
cd /home/pi/RetroPie-Setup/ sudo apt-get install libsdl2-dev libsdl2-mixer-dev sudo ./retropie_packages.sh wolf4sdl depends sudo ./retropie_packages.sh wolf4sdl sources sudo chown -R pi:pi /home/pi/RetroPie-Setup/tmp/build/wolf4sdl/ cd ~/RetroPie-Setup/tmp/build/wolf4sdl/ git remote add lazd "https://github.com/lazd/wolf4sdl.git" git fetch lazd git checkout sdl2remap git submodule init git submodule update cd ~/RetroPie-Setup/ sudo ./retropie_packages.sh wolf4sdl get_opts sudo ./retropie_packages.sh wolf4sdl get_bins sudo ./retropie_packages.sh wolf4sdl build sudo ./retropie_packages.sh wolf4sdl install sudo ./retropie_packages.sh wolf4sdl configure rm ~/.wolf4sdl/config.wl*
Tested and working on RetroPie 4.4 with an XBox One controller, Logitech Dual Action, and 8BitDo N30 Pro, as well as macOS with an XBox One controller and keyboard/mouse controls (just to make sure they still work!).
Please let me know if this works for your gamepad of choice, and report back any issues!
Source code is available here: https://github.com/lazd/wolf4sdl/tree/sdl2remap
Thanks a lot for this, I was following the instructions today,
however at the build stage I'm getting the following error, any idea what it might be caused by?
I know it's about the missing directory.pi@retropie:~/RetroPie-Setup $ sudo ./retropie_packages.sh wolf4sdl build /home/pi/RetroPie-Setup/tmp/build/wolf4sdl /home/pi/RetroPie-Setup = = = = = = = = = = = = = = = = = = = = = Building 'wolf4sdl' : Wolf4SDL - port of Wolfenstein 3D / Spear of Destiny engine = = = = = = = = = = = = = = = = = = = = = ===> CLEAN ===> DEP wl_text.cpp ===> DEP wl_state.cpp ===> DEP wl_play.cpp ===> DEP wl_parallax.cpp ===> DEP wl_menu.cpp ===> DEP wl_main.cpp ===> DEP wl_inter.cpp ===> DEP wl_game.cpp ===> DEP wl_floorceiling.cpp ===> DEP wl_draw.cpp ===> DEP wl_debug.cpp ===> DEP wl_cloudsky.cpp ===> DEP wl_atmos.cpp ===> DEP wl_agent.cpp ===> DEP wl_act2.cpp ===> DEP wl_act1.cpp ===> DEP signon.cpp ===> DEP id_vl.cpp ===> DEP id_vh.cpp ===> DEP id_us_1.cpp ===> DEP id_sd.cpp ===> DEP id_pm.cpp ===> DEP id_in.cpp ===> DEP id_ca.cpp ===> DEP mame/fmopl.cpp ===> CXX mame/fmopl.cpp ===> CXX id_ca.cpp ===> CXX id_in.cpp ===> CXX id_pm.cpp ===> CXX id_sd.cpp ===> CXX id_us_1.cpp ===> CXX id_vh.cpp ===> CXX id_vl.cpp id_sd.cpp: In function ‘void SD_PrepareSound(int)’: id_sd.cpp:632:88: warning: narrowing conversion of ‘param_samplerate’ from ‘int’ to ‘longword’ {aka ‘unsigned int’} inside { } [-Wnarrowing] {'f','m','t',' '}, 0x10, 0x0001, 1, param_samplerate, param_samplerate*2, 2, 16}; ^ id_sd.cpp:632:79: warning: narrowing conversion of ‘(param_samplerate * 2)’ from ‘int’ to ‘longword’ {aka ‘unsigned int’} inside { } [-Wnarrowing] {'f','m','t',' '}, 0x10, 0x0001, 1, param_samplerate, param_samplerate*2, 2, 16}; ~~~~~~~~~~~~~~~~^~ id_sd.cpp:633:57: warning: narrowing conversion of ‘(destsamples * 2)’ from ‘int’ to ‘longword’ {aka ‘unsigned int’} inside { } [-Wnarrowing] wavechunk dhead = {{'d', 'a', 't', 'a'}, destsamples*2}; ~~~~~~~~~~~^~ ===> CXX signon.cpp ===> CXX wl_act1.cpp ===> CXX wl_act2.cpp ===> CXX wl_agent.cpp ===> CXX wl_atmos.cpp ===> CXX wl_cloudsky.cpp ===> CXX wl_debug.cpp ===> CXX wl_draw.cpp ===> CXX wl_floorceiling.cpp ===> CXX wl_game.cpp ===> CXX wl_inter.cpp ===> CXX wl_main.cpp ===> CXX wl_menu.cpp ===> CXX wl_parallax.cpp ===> CXX wl_play.cpp ===> CXX wl_state.cpp ===> CXX wl_text.cpp ===> LD wolf3d mv: cannot stat 'wolf4sdl': No such file or directory ===> CLEAN ===> DEP wl_text.cpp ===> DEP wl_state.cpp ===> DEP wl_play.cpp ===> DEP wl_parallax.cpp ===> DEP wl_menu.cpp ===> DEP wl_main.cpp ===> DEP wl_inter.cpp ===> DEP wl_game.cpp ===> DEP wl_floorceiling.cpp ===> DEP wl_draw.cpp ===> DEP wl_debug.cpp ===> DEP wl_cloudsky.cpp ===> DEP wl_atmos.cpp ===> DEP wl_agent.cpp ===> DEP wl_act2.cpp ===> DEP wl_act1.cpp ===> DEP signon.cpp ===> DEP id_vl.cpp ===> DEP id_vh.cpp ===> DEP id_us_1.cpp ===> DEP id_sd.cpp ===> DEP id_pm.cpp ===> DEP id_in.cpp ===> DEP id_ca.cpp ===> DEP mame/fmopl.cpp ===> CXX mame/fmopl.cpp ===> CXX id_ca.cpp ===> CXX id_in.cpp ===> CXX id_pm.cpp ===> CXX id_sd.cpp ===> CXX id_us_1.cpp ===> CXX id_vh.cpp ===> CXX id_vl.cpp id_sd.cpp: In function ‘void SD_PrepareSound(int)’: id_sd.cpp:632:88: warning: narrowing conversion of ‘param_samplerate’ from ‘int’ to ‘longword’ {aka ‘unsigned int’} inside { } [-Wnarrowing] {'f','m','t',' '}, 0x10, 0x0001, 1, param_samplerate, param_samplerate*2, 2, 16}; ^ id_sd.cpp:632:79: warning: narrowing conversion of ‘(param_samplerate * 2)’ from ‘int’ to ‘longword’ {aka ‘unsigned int’} inside { } [-Wnarrowing] {'f','m','t',' '}, 0x10, 0x0001, 1, param_samplerate, param_samplerate*2, 2, 16}; ~~~~~~~~~~~~~~~~^~ id_sd.cpp:633:57: warning: narrowing conversion of ‘(destsamples * 2)’ from ‘int’ to ‘longword’ {aka ‘unsigned int’} inside { } [-Wnarrowing] wavechunk dhead = {{'d', 'a', 't', 'a'}, destsamples*2}; ~~~~~~~~~~~^~ ===> CXX signon.cpp ===> CXX wl_act1.cpp ===> CXX wl_act2.cpp ===> CXX wl_agent.cpp ===> CXX wl_atmos.cpp ===> CXX wl_cloudsky.cpp ===> CXX wl_debug.cpp ===> CXX wl_draw.cpp ===> CXX wl_floorceiling.cpp ===> CXX wl_game.cpp ===> CXX wl_inter.cpp ===> CXX wl_main.cpp ===> CXX wl_menu.cpp ===> CXX wl_parallax.cpp ===> CXX wl_play.cpp ===> CXX wl_state.cpp ===> CXX wl_text.cpp ===> LD wolf3d mv: cannot stat 'wolf4sdl': No such file or directory ===> CLEAN ===> DEP wl_text.cpp ===> DEP wl_state.cpp ===> DEP wl_play.cpp ===> DEP wl_parallax.cpp ===> DEP wl_menu.cpp ===> DEP wl_main.cpp ===> DEP wl_inter.cpp ===> DEP wl_game.cpp ===> DEP wl_floorceiling.cpp ===> DEP wl_draw.cpp ===> DEP wl_debug.cpp ===> DEP wl_cloudsky.cpp ===> DEP wl_atmos.cpp ===> DEP wl_agent.cpp ===> DEP wl_act2.cpp ===> DEP wl_act1.cpp ===> DEP signon.cpp ===> DEP id_vl.cpp ===> DEP id_vh.cpp ===> DEP id_us_1.cpp ===> DEP id_sd.cpp ===> DEP id_pm.cpp ===> DEP id_in.cpp ===> DEP id_ca.cpp ===> DEP mame/fmopl.cpp ===> CXX mame/fmopl.cpp ===> CXX id_ca.cpp ===> CXX id_in.cpp ===> CXX id_pm.cpp ===> CXX id_sd.cpp ===> CXX id_us_1.cpp ===> CXX id_vh.cpp ===> CXX id_vl.cpp id_sd.cpp: In function ‘void SD_PrepareSound(int)’: id_sd.cpp:632:88: warning: narrowing conversion of ‘param_samplerate’ from ‘int’ to ‘longword’ {aka ‘unsigned int’} inside { } [-Wnarrowing] {'f','m','t',' '}, 0x10, 0x0001, 1, param_samplerate, param_samplerate*2, 2, 16}; ^ id_sd.cpp:632:79: warning: narrowing conversion of ‘(param_samplerate * 2)’ from ‘int’ to ‘longword’ {aka ‘unsigned int’} inside { } [-Wnarrowing] {'f','m','t',' '}, 0x10, 0x0001, 1, param_samplerate, param_samplerate*2, 2, 16}; ~~~~~~~~~~~~~~~~^~ id_sd.cpp:633:57: warning: narrowing conversion of ‘(destsamples * 2)’ from ‘int’ to ‘longword’ {aka ‘unsigned int’} inside { } [-Wnarrowing] wavechunk dhead = {{'d', 'a', 't', 'a'}, destsamples*2}; ~~~~~~~~~~~^~ ===> CXX signon.cpp ===> CXX wl_act1.cpp ===> CXX wl_act2.cpp ===> CXX wl_agent.cpp ===> CXX wl_atmos.cpp ===> CXX wl_cloudsky.cpp ===> CXX wl_debug.cpp ===> CXX wl_draw.cpp ===> CXX wl_floorceiling.cpp ===> CXX wl_game.cpp ===> CXX wl_inter.cpp ===> CXX wl_main.cpp ===> CXX wl_menu.cpp ===> CXX wl_parallax.cpp ===> CXX wl_play.cpp ===> CXX wl_state.cpp ===> CXX wl_text.cpp ===> LD wolf3d mv: cannot stat 'wolf4sdl': No such file or directory ===> CLEAN ===> DEP wl_text.cpp ===> DEP wl_state.cpp ===> DEP wl_play.cpp ===> DEP wl_parallax.cpp ===> DEP wl_menu.cpp ===> DEP wl_main.cpp ===> DEP wl_inter.cpp ===> DEP wl_game.cpp ===> DEP wl_floorceiling.cpp ===> DEP wl_draw.cpp ===> DEP wl_debug.cpp ===> DEP wl_cloudsky.cpp ===> DEP wl_atmos.cpp ===> DEP wl_agent.cpp ===> DEP wl_act2.cpp ===> DEP wl_act1.cpp ===> DEP signon.cpp ===> DEP id_vl.cpp ===> DEP id_vh.cpp ===> DEP id_us_1.cpp ===> DEP id_sd.cpp ===> DEP id_pm.cpp ===> DEP id_in.cpp ===> DEP id_ca.cpp ===> DEP mame/fmopl.cpp ===> CXX mame/fmopl.cpp ===> CXX id_ca.cpp ===> CXX id_in.cpp ===> CXX id_pm.cpp ===> CXX id_sd.cpp ===> CXX id_us_1.cpp ===> CXX id_vh.cpp ===> CXX id_vl.cpp id_sd.cpp: In function ‘void SD_PrepareSound(int)’: id_sd.cpp:632:88: warning: narrowing conversion of ‘param_samplerate’ from ‘int’ to ‘longword’ {aka ‘unsigned int’} inside { } [-Wnarrowing] {'f','m','t',' '}, 0x10, 0x0001, 1, param_samplerate, param_samplerate*2, 2, 16}; ^ id_sd.cpp:632:79: warning: narrowing conversion of ‘(param_samplerate * 2)’ from ‘int’ to ‘longword’ {aka ‘unsigned int’} inside { } [-Wnarrowing] {'f','m','t',' '}, 0x10, 0x0001, 1, param_samplerate, param_samplerate*2, 2, 16}; ~~~~~~~~~~~~~~~~^~ id_sd.cpp:633:57: warning: narrowing conversion of ‘(destsamples * 2)’ from ‘int’ to ‘longword’ {aka ‘unsigned int’} inside { } [-Wnarrowing] wavechunk dhead = {{'d', 'a', 't', 'a'}, destsamples*2}; ~~~~~~~~~~~^~ ===> CXX signon.cpp ===> CXX wl_act1.cpp ===> CXX wl_act2.cpp ===> CXX wl_agent.cpp ===> CXX wl_atmos.cpp ===> CXX wl_cloudsky.cpp ===> CXX wl_debug.cpp ===> CXX wl_draw.cpp ===> CXX wl_floorceiling.cpp ===> CXX wl_game.cpp ===> CXX wl_inter.cpp ===> CXX wl_main.cpp ===> CXX wl_menu.cpp ===> CXX wl_parallax.cpp ===> CXX wl_play.cpp ===> CXX wl_state.cpp ===> CXX wl_text.cpp ===> LD wolf3d mv: cannot stat 'wolf4sdl': No such file or directory ===> CLEAN ===> DEP wl_text.cpp ===> DEP wl_state.cpp ===> DEP wl_play.cpp ===> DEP wl_parallax.cpp ===> DEP wl_menu.cpp ===> DEP wl_main.cpp ===> DEP wl_inter.cpp ===> DEP wl_game.cpp ===> DEP wl_floorceiling.cpp ===> DEP wl_draw.cpp ===> DEP wl_debug.cpp ===> DEP wl_cloudsky.cpp ===> DEP wl_atmos.cpp ===> DEP wl_agent.cpp ===> DEP wl_act2.cpp ===> DEP wl_act1.cpp ===> DEP signon.cpp ===> DEP id_vl.cpp ===> DEP id_vh.cpp ===> DEP id_us_1.cpp ===> DEP id_sd.cpp ===> DEP id_pm.cpp ===> DEP id_in.cpp ===> DEP id_ca.cpp ===> DEP mame/fmopl.cpp ===> CXX mame/fmopl.cpp ===> CXX id_ca.cpp ===> CXX id_in.cpp ===> CXX id_pm.cpp ===> CXX id_sd.cpp ===> CXX id_us_1.cpp ===> CXX id_vh.cpp ===> CXX id_vl.cpp id_sd.cpp: In function ‘void SD_PrepareSound(int)’: id_sd.cpp:632:88: warning: narrowing conversion of ‘param_samplerate’ from ‘int’ to ‘longword’ {aka ‘unsigned int’} inside { } [-Wnarrowing] {'f','m','t',' '}, 0x10, 0x0001, 1, param_samplerate, param_samplerate*2, 2, 16}; ^ id_sd.cpp:632:79: warning: narrowing conversion of ‘(param_samplerate * 2)’ from ‘int’ to ‘longword’ {aka ‘unsigned int’} inside { } [-Wnarrowing] {'f','m','t',' '}, 0x10, 0x0001, 1, param_samplerate, param_samplerate*2, 2, 16}; ~~~~~~~~~~~~~~~~^~ id_sd.cpp:633:57: warning: narrowing conversion of ‘(destsamples * 2)’ from ‘int’ to ‘longword’ {aka ‘unsigned int’} inside { } [-Wnarrowing] wavechunk dhead = {{'d', 'a', 't', 'a'}, destsamples*2}; ~~~~~~~~~~~^~ ===> CXX signon.cpp ===> CXX wl_act1.cpp ===> CXX wl_act2.cpp ===> CXX wl_agent.cpp ===> CXX wl_atmos.cpp ===> CXX wl_cloudsky.cpp ===> CXX wl_debug.cpp ===> CXX wl_draw.cpp ===> CXX wl_floorceiling.cpp ===> CXX wl_game.cpp ===> CXX wl_inter.cpp ===> CXX wl_main.cpp ===> CXX wl_menu.cpp ===> CXX wl_parallax.cpp ===> CXX wl_play.cpp ===> CXX wl_state.cpp ===> CXX wl_text.cpp ===> LD wolf3d mv: cannot stat 'wolf4sdl': No such file or directory Could not successfully build wolf4sdl - Wolf4SDL - port of Wolfenstein 3D / Spear of Destiny engine (bin/wolf4sdl-sw-v14 not found). /home/pi/RetroPie-Setup Errors: Could not successfully build wolf4sdl - Wolf4SDL - port of Wolfenstein 3D / Spear of Destiny engine (bin/wolf4sdl-sw-v14 not found).
-
Contributions to the project are always appreciated, so if you would like to support us with a donation you can do so here.
Hosting provided by Mythic-Beasts. See the Hosting Information page for more information.