RetroPie forum home
    • Recent
    • Tags
    • Popular
    • Home
    • Docs
    • Register
    • Login

    ECWolf - Wolfenstein 3D source port for mods

    Scheduled Pinned Locked Moved General Discussion and Gaming
    ecwolfwolf3decwolf modwolf3d mod
    167 Posts 9 Posters 39.4k Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • cyperghostC
      cyperghost @tpo1990
      last edited by

      @tpo1990 I tried this way and it works. Them the patch command is reduced to just patch -p0 -i patch.diff

      cyperghostC tpo1990T 2 Replies Last reply Reply Quote 0
      • cyperghostC
        cyperghost @cyperghost
        last edited by

        @cyperghost I can't upload files - journey for work in progress

        1 Reply Last reply Reply Quote 0
        • Solid OneS
          Solid One
          last edited by Solid One

          @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.

          cyperghostC 1 Reply Last reply Reply Quote 0
          • cyperghostC
            cyperghost @Solid One
            last edited by

            @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

            Solid OneS 1 Reply Last reply Reply Quote 0
            • Solid OneS
              Solid One @cyperghost
              last edited by

              @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).

              tpo1990T 1 Reply Last reply Reply Quote 0
              • tpo1990T
                tpo1990 @cyperghost
                last edited by

                @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.rej

                At the moment it does not work for me even with the command: patch -p0 -i

                Greetings from Denmark. :-)

                Developer of install scripts for ports such as Hexen 2, Return to Castle Wolfenstein and Caesar III. See my other projects at my profile.

                1 Reply Last reply Reply Quote 0
                • tpo1990T
                  tpo1990 @Solid One
                  last edited by

                  @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.

                  Greetings from Denmark. :-)

                  Developer of install scripts for ports such as Hexen 2, Return to Castle Wolfenstein and Caesar III. See my other projects at my profile.

                  Solid OneS cyperghostC 2 Replies Last reply Reply Quote 0
                  • Solid OneS
                    Solid One @tpo1990
                    last edited by

                    @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.

                    1 Reply Last reply Reply Quote 0
                    • cyperghostC
                      cyperghost @tpo1990
                      last edited by

                      @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

                      1 Reply Last reply Reply Quote 0
                      • cyperghostC
                        cyperghost
                        last edited by cyperghost

                        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 now

                        root@DietPi:~/bash/ecwolf/ecwolf-ecwolf-5065aaefe055# patch -p0 -i ecwolf_keyboardpatch.diff
                        patching file ./src/wl_play.cpp
                        

                        tpo1990T 1 Reply Last reply Reply Quote 1
                        • tpo1990T
                          tpo1990 @cyperghost
                          last edited by tpo1990

                          @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.

                          Greetings from Denmark. :-)

                          Developer of install scripts for ports such as Hexen 2, Return to Castle Wolfenstein and Caesar III. See my other projects at my profile.

                          ExarKunIvE cyperghostC 2 Replies Last reply Reply Quote 1
                          • ExarKunIvE
                            ExarKunIv @tpo1990
                            last edited by

                            @tpo1990 cant wait for the update.

                            have not had time to mess with learning how to compile anything yet :(

                            RPi3B+ / 200GB/ RetroPie v4.5.14, RPi4 Model B 4gb / 256gb / RetroPie 4.8.2
                            RPi5 4gb / 512gb / RetroPie 4.8.9 -Basic
                            Maintainer of RetroPie-Extra .

                            1 Reply Last reply Reply Quote 0
                            • cyperghostC
                              cyperghost @tpo1990
                              last edited by cyperghost

                              @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"
                              
                              1. 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
                              
                              1. 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

                              1. 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
                              1 Reply Last reply Reply Quote 0
                              • cyperghostC
                                cyperghost
                                last edited by

                                @tpo1990
                                Let us talk in this gist here
                                https://gist.github.com/crcerror/9e1742e78d50e58d585f3735dd67e855

                                tpo1990T 1 Reply Last reply Reply Quote 0
                                • tpo1990T
                                  tpo1990 @cyperghost
                                  last edited by tpo1990

                                  @cyperghost Good idea. Let's talk about the development in the gist instead of here.

                                  I know that my scriptmodule needs code review, but to begin with my initial idea was just for testing out the source port and making that available for the community. Now it seems that the further progression on this suggests a final release. Maybe replacing Wolf4SDL as the primary source port for Wolfenstein 3D or as an alternative.

                                  I really appreciate your opinion and i'm open for help on developing into making it happen. ;-)

                                  Greetings from Denmark. :-)

                                  Developer of install scripts for ports such as Hexen 2, Return to Castle Wolfenstein and Caesar III. See my other projects at my profile.

                                  cyperghostC 1 Reply Last reply Reply Quote 1
                                  • cyperghostC
                                    cyperghost @tpo1990
                                    last edited by cyperghost

                                    @tpo1990 I have a solid solution in my pocket. It will work like the prboom script module. It will find all files placed into wolf3d directory - version does not matter and it may be expanded to future game support like corridor 7 or Black stone.

                                    Let me post this in a few hours

                                    tpo1990T 1 Reply Last reply Reply Quote 0
                                    • cyperghostC
                                      cyperghost
                                      last edited by

                                      @mitu
                                      Can you take a look here: gist

                                      How to proper patch sourcefiles?
                                      Use wget, load the patch and use patch command?
                                      Is there a better way?

                                      The patch is needed to make ESC key work --> see here

                                      1 Reply Last reply Reply Quote 0
                                      • tpo1990T
                                        tpo1990 @cyperghost
                                        last edited by

                                        @cyperghost Sounds good. It might be put to good use in other scriptmodules as well. :-)

                                        Greetings from Denmark. :-)

                                        Developer of install scripts for ports such as Hexen 2, Return to Castle Wolfenstein and Caesar III. See my other projects at my profile.

                                        cyperghostC 1 Reply Last reply Reply Quote 0
                                        • cyperghostC
                                          cyperghost @tpo1990
                                          last edited by

                                          @tpo1990 Yes but I think there is a better way of patching inside scriptmodules. I think some patches are in RestroPie-Setup directory for "offlline" patching - that better coding practice and makes control of code easier.

                                          But I think you can take the gist and after some final tests you can set a PR.
                                          I think I cleanup the code a bit and then I'm done.

                                          tpo1990T 1 Reply Last reply Reply Quote 0
                                          • cyperghostC
                                            cyperghost
                                            last edited by cyperghost

                                            scriptmodule is working now

                                            get it with

                                            wget https://gist.githubusercontent.com/crcerror/9e1742e78d50e58d585f3735dd67e855/raw/34493a8dc6f3cbb75fda8f381a8a94eb4ec67d82/ecwolf.sh
                                            
                                            cyperghostC 1 Reply Last reply Reply Quote 1
                                            • First post
                                              Last post

                                            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.