ECWolf - Wolfenstein 3D source port for mods
-
Some optimizations for COMMAND line:
add--extravbls 2
to ecwolfs to each.ecwolf
file inside$HOME/RetroPie/roms/ports/wolf3d
- Reduces CPU usage up to 50%
- Prevents from overheating
Additional optimization:
Main Menu --> Options --> Display Options- Activate Fullscreen
- Activate VSYNC (will save 3-4% CPU on a RPi3)
- Aspect ratio set to AUTO
- Set resolution to 512x384 (0,5x HD)
Additional EXTRA-FUN
Download Noahpak - The Invasion - this needs SUPER NOAH ARCH 3D -
@cyperghost I already tried your instructions with trying to execute the patch but it fails at the step 5: Transform patch code from LF EOL --> CRLF EOL unix2dos wl_play_patch.diff from your post
unix2dos is not recognized as a command on my test RPI setup. Is there another dependency that i need to install first? Maybe i forgot something in the process.
As for getting the source files, wget seems to work great so i think we could change from using hg (mercurial) to wget leaving out the mercurial dependency from the scriptmodule.
-
@tpo1990 You need 'dos2unix' package. But it would be better to transform the patch in correct format. That is also better for a proper PR. As I said use the files that I prepared as you want - This version of Wolf is really great and also easy to setup now.
-
With proper format I mean to patch the file with converted file and then use diff again to recreate the new patch. This would avoid the install of unwanted packages.
Gold way - send the creator a P R but I do not have a bit bucket account
-
@cyperghost Ah i see. I did find out that the dos2unix package is avaliable with apt-get from the official raspbian repository.
If we did include the dos2unix package(dependency) in the scriptmodule, wouldn't it be possible to make the scriptmodule do it automatically with executing the patch, as long as dos2unix package has been installed first?
At least considering this, it could be the primary way until a better solution for a proper format shows up. Just as a temporary solution.
I also don't have a bit bucket account.
-
@tpo1990 I would avoid the installation of the converter and just use a proper prepared patch.
As I said patch first with help from the conver t and then use diff command to prepare patch
-
@cyperghost Yes it probably is. I will try that approach first.
-
@tpo1990 I tried this way and it works. Them the patch command is reduced to just patch -p0 -i patch.diff
-
@cyperghost I can't upload files - journey for work in progress
-
@cyperghost hey, I was thinking: is it really necessary to bother using unix2dos for converting linebreaks? I'm asking this because recently I've made a small patch for Doom Legacy in sourceforge, that allows users to create a multiplayer game with bots without having to recurr to console commands for that task. I've created that patch on a desktop with Ubuntu 14.04 at home, and it worked just fine for me when I tested applying it on a clean copy of DL obtained through SVN.
I'm guessing the reason why it wasn't needed to convert line breaks is because DL source code files were created and edited in Linux instead of Windows. On your case, assuming you were using notepad in Windows for editing those files, by default it can change the structure of the line breaks of the file, thus resulting in DOS line breaks, instead of Unix line breaks.
If that's the case, then if you edit the file in Linux instead of Windows (or at least using other text editor that won't change line breaks' structure, such as Notepad++, Geany or Atom per example), the patch generated probably won't have this issue when being applied to the original source code. So, if it works this way, then unix2dos won't be needed anymore.
Ah, about Bitbucket, you guys can easily create an account in there. I've created mine a few years ago, and with that account, I have even reported a few bugs in Splitwolf. It's free of charge, and as easy as setting up an account in Github.
-
@Solid-One no the source files are using CRLF and I created the patch on the Raspberry by inserting code to source with LF only. Therefore the mismatch
-
@cyperghost So I guess it's the opposite of what I initially thought: The developers of ECWolf probably used only Windows for coding, instead of Linux (just like DL developers). That being the case, then you could edit those files from Windows instead of directly in RPi, and it should work. Or at least try editing the files with another Linux text editor that don't change line breaks (although it's hard to find a console text editor that don't change line breaks' structure).
-
@cyperghost If i try to patch ECWolf with the file wl_play_patch.diff, it fails with this in the terminal:
patching file ./src/wl_play.cpp
Hunk #1 FAILED at 73 (different line endings).
1 out of 1 hunk FAILED -- saving rejects to file ./src/wl_play.cpp.rejAt the moment it does not work for me even with the command: patch -p0 -i
-
@Solid-One Much of the work i create is directly on a Raspberry Pi 3B on a Sandisk 16gb micro sd card as my test environment. I use Geany as the text editor, when i create the scriptmodules and then test the scriptmodules many times before releasing it to the RetroPie community including ECWolf.
ECWolf is based off the code from the Wolf4SDL project and built to enhance gameplay further. Maybe the developers of Wolf4SDL used Windows as development platform and that explains why ECWolf is working the same way.
-
@tpo1990 Well, assuming the use of Windows as a development platform for Wolf4SDL and/or ECWolf by the developers of those source ports, I guess there's a way of circunventing this issue on Geany.
Try those steps below on Geany:
- Open wl_play.cpp file;
- Go to "Document -> Define Line Break -> Convert and Define to CR/LF (Windows)¹";
- Save the file and exit;
- Try applying @cyperghost's patch.
Assuming the Geany function for converting line breaks to windows-style works, then maybe the patch should work.
¹ The names can be a little different. My desktop is in portuguese, and I don't know the exact term in english.
-
@tpo1990 use --binary switch
The error is an the mix of the line endings.The Unix part for the patch uses L F only but for the patch itself the data uses CRLF so there is a mix of line endings inside the file. I will upload the patch in the evening today
-
For building your ecWolf refer to the description given HERE
@Solid-One @tpo1990
The problem was because of this constellation.First lines are LF like proper unix format
Other lines are CRLF
This patch works nowroot@DietPi:~/bash/ecwolf/ecwolf-ecwolf-5065aaefe055# patch -p0 -i ecwolf_keyboardpatch.diff patching file ./src/wl_play.cpp
-
@cyperghost Great work. Let me try it out again and get back to you.
Edit: The patching works now. Thanks. I will update the scriptmodule with your patch and make some changes to what runcommand files to generate depending on if you have shareware or registered versions of Wolf3d and SOD.
-
@tpo1990 cant wait for the update.
have not had time to mess with learning how to compile anything yet :(
-
@tpo1990 I would suggest following
instead
function configure_ecwolf() { addPort "$md_id" "ecwolf-spear3d" "ECWolf - Spear3d" "$md_inst/ecwolf --data sdm --file %ROM%" addPort "$md_id" "ecwolf-wolf3d" "ECWolf - Wolf3d" "$md_inst/ecwolf --data wl1 --file %ROM%" mkRomDir "ports/wolf3d"
- better use
function configure_ecwolf() { addPort "$md_id" "ecwolf" "Wolfenstein 3D" "pushd $romdir/ports/wolf3d; $md_inst/ecwolf --data wl1; popd" addPort "$md_id" "ecwolf" "Wolfenstein 3D - Spear of Destiny" "pushd $romdir/ports/wolf3d; $md_inst/ecwolf --data sod; popd" mkRomDir "ports/wolf3d" moveConfigDir "$home/.local/share/ecwolf" "$md_conf_root/ecwolf" moveConfigDir "$home/.config/ecwolf" "$romdir/ports/wolf3d
- or just a a launch menu with some helper files ...
function configure_ecwolf() { addPort "$md_id" "ecwolf" "Wolfenstein 3D" "pushd $romdir/ports/wolf3d; $md_inst/ecwolf.sh %ROM%; popd" mkRomDir "ports/wolf3d" moveConfigDir "$home/.local/share/ecwolf" "$md_conf_root/ecwolf" moveConfigDir "$home/.config/ecwolf" "$romdir/ports/wolf3d" #Install Graphical Selection Menu - scriptmodule needs improvement for this cd "$romdir/ports" wget -N -q --show-progress "https://raw.githubusercontent.com/crcerror/ECWolf-RPI/master/file_dl/Wolfenstein 3D.sh" chown $user:$user "Wolfenstein 3D.sh" #Install Translator - scriptmodule needs improvement for this cd "$md_inst" wget -N -q --show-progress "https://raw.githubusercontent.com/crcerror/ECWolf-RPI/master/file_dl/ecwolf.sh" chmod +x "ecwolf.sh" [[ "$md_mode" == "install" ]] && game_data_ecwolf }
that will lead to a menu like this one here in this posting
- I don't want to send you an PR becaus I'm the opinion that you as creator should decide what's the best solution. I strongly modified your scriptmodule but it needs much code review (like yours, too) ---> Take a look here
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.