Doom Legacy - Doom Split-screen Source port
-
Doom Legacy source port 1.47.2 for Raspberry Pi
So i decided that i want other community members here to be able to test Doom Legacy in RetroPie and therefore i now present
Doom Legacy, which is a Doom source port that can be built and run on our Raspberry Pi. The port features 2 player Split-screen multiplayer and has support for bots. This port relies on SDL1 libs. Note: This is not final version.The game is fully playable. No bugs has been found yet. If you do find bugs, please report them into this thread.
The scriptmodule provides an automatic installation and uninstallation for compiling and building on Raspberry Pi with RetroPie-Setup.Raspberry Pi 4B and Raspbian Buster: The port has not been tested with the latest RPI 4 and Raspbian Buster release. It is only guaranteed to work on the latest official release of RetroPie as the one that can be found on the RetroPie download page. Therefore users who has this might not be able to install the port and play the game. Users may need to wait for official release and support for Raspberry Pi 4B and Buster.
Download scriptmodule RetroPie:
wget https://raw.githubusercontent.com/tpo1990/DoomLegacy-RPI/master/doomlegacy.sh -P $HOME/RetroPie-Setup/scriptmodules/ports/
After downloading scriptmodule, go to the experimental section in RetroPie Setup to install.
Install time: 5-10 minutes
Build process:
1: Download and install necessary required libs for SDL and etc.
2: Download Doom Legacy from sourceforge.
3: Compile/install Doom Legacy source from makefile.
4: Download Doom1.wad Shareware, Legacy.wad and extract into root of Doom folder.
5: Configure and add Doom Legacy as a port into RetroPie with the Doom.sh file.Registered/Full version:
First put your doom.wad, doom2.wad, tnt.wad and plutonia.wad in "/home/pi/RetroPie/roms/ports/doom" then download the scriptmodule from the download section and install Doom Legacy. This will give you 4 new runcommand launch files as long all 4 doom wad files are present in the doom roms folder.Notice: if doom.wad is not present in the doom roms folder, Doom Shareware version (doom1.wad) will be installed along with your other wads.
Additional configuration:
It is possible to add bots to the game with Doom Legacy console by using the command "addbot". Start either a mulitplayer server or a 2 player server and then use the console to add bots. Bots works best in deathmatch mode. For optimal resolution change it to 640x480 resolution. This will provide a much sharper image just like Zdoom port.Notes:
It is working great and the script is experimental. The scriptmodule might see some additional changes to the code. A pull request for the RetroPie project is planned at a later stage for merging into RetroPie project.Disclaimer:
This installation script is provided as is. I'm not responsible for anything happening with your Raspberry Pi. The script has been tested to run on my test RPI. You should always have a backup ready. For support and help you can contact me here on RetroPie forums.Contributors:
Solid OneScreenshots:
-
Reserved for future use
-
Changelog
27-05-2020: Updated Doom Legacy to latest version 1.48.4. Fixed missing ingame music by adding fluidsynth as dependency. Improved scriptmodule.
05-03-2020: Added Raspberry Pi 4B and Raspbian Buster section.
30-07-2019: Added Doom registered version, Doom 2, TNT and Plutonia version to scriptmodule. Improved scriptmodule.
27-05-2019: Changed path in wget command to variable: -P $HOME/RetroPie-Setup/scriptmodules/ports/
04-02-2019: Finished scriptmodule and uploaded to github repository. Created thread on RetroPie Forum. -
This looks great! However, I am having an issue getting it installed. I copy pasted directly what you posted and the install process took maybe 3 seconds and nothing shows up in my ports section for doom legacy.
Edit: nevermind I'm an idiot. I figured out I have to install through retropie setup once the script module is added.
-
So I have it installed and everything seems to be running great. However whenever I load a 2 player game there are extra weapons all over the place (first level there shouldn't be a rocket launcher and chaingun). Id like to play co-op without the added weapons. Is there a setting to turn off the additional weapons?
-
@quicksilver Glad to hear you got it working. As default in Doom Legacy when going to start a 2 player game it will always choose deathmatch type 3 with no monsters. If you want coop then you must change Deathmatch type to coop and change monsters to Yes
Monsters: Yes
Deathmatch Type: COOPOne more thing to be aware of, is that if you install other doom ports after installing Doom Legacy, it will override default emulator setting to be that specific doom port. ex Zdoom.
(Notice this will only happen if the other doom ports use the same Doom config folder as Doom Legacy).
-
@avensis Thank you for testing. Your feedback is appreciated. In that way i will know that it is also working for others as well :-)
Yes the test is running great. I stil think though that some fine tuning to the scriptmodule is required. I also have some ideas for creating a runcommand file to select and run mods (pwads) within Doom Legacy.
-
@tpo1990 thanks for the response. Unfortunately even with those settings it doesn't turn off the extra weapons. If doom legacy is still being developed, is there a place to report the issue to the developer?
-
@quicksilver I would think of that there might be some setting in the Doom Legacy options to turn off the extra weapons. Yes Doom Legacy is still active in development.
The version that i have made the scriptmodule for Retropie, is based on Doom Legacy 1.47.2. You could always try to contact or report bugs at the original developers website: http://doomlegacy.sourceforge.net/
-
@tpo1990 So I found this very old bug report: https://sourceforge.net/p/doomlegacy/bugs/372/
They noted that : "Possibly another bug; launching a similar Co-op game
using the external launcher uses the item placements
from Deathmatch, not Co-op."Ill comment on it and see if I get a response.
Thanks again for the help!
-
A big thanks @tpo1990 for the easy install steps, everything works great however I'm having a hard time configuring movements on my two controllers (Dualshock PS4 and Switch Gamepad).
For some reason it doesn't recognize D-Pad presses nor joystick movement (other buttons work fine) on both controllers, am I missing any configuration? -
@tiagop Happy to share my work. Doom Legacy does support joystick but not controller so it will only show as joy mappings when trying to configure your controller.
You need to use xboxdrv configuration for Doom Legacy. Thats the way i use it with my Zeroplus P4 controller (PS4 generic controller).
One thing to take note of is that i did get 2 controllers to work for both the players in split screen mode and noticed that all sound on my RetroPie system was gone and it appears to be caused by a bug when using Xboxdrv.
If you have never used xboxdrv or are interested i can share my xboxdrv configuration for Doom Legacy, but you will have to change the buttons and analog mappings to support your Dualshock PS4 controller. :-)
-
@quicksilver i downloaded the script module where do i place it?? I then go to retropie setup to install right?
-
@RetroFreak89 if you did the wget command as per the first post it's already in the right place. it will be in the 'experimental' section of retropie-setup package manager.
-
There's another way of configuring analog sticks in Doom Legacy (and maybe d-pad presses in the process). Take a look: Doom Legacy Player Controls
If you open the link above, and scroll down a bit, you'll find something similar as the table below:
command definition bindjoyaxis [<joynum> <axisnum> [<playernum> <control> <scale>]] Lists, releases or creates joystick axis bindings. A few years ago, I've done a few tests with this command, in order to see if it's possible to map the left analog stick to movement (forward / backward / strafe left / strafe right), and the right analog stick to mouselooking (even if it's only for left and right). The results weren't perfect, but they worked.
I don't remember exactly how to use that command, but maybe I still have something on my PC back home. I'll post it here if I find. But even without those files, you can find the values by tweaking its values in the console.
-
@Solid-One Good find. This can become useful. Maybe it could be inserted as part of a script to make it easier to configure.
I have used xboxdrv and it works great when it has been configured for specific keyboard buttons for my gamepad. I can only get it to work for 1 player and not the second player. I think the best solution is to create a libretro port of Doom Legacy, just like lr-prboom :-)
-
Yesterday I've done a few tests in Doom Legacy, in order to understand how the syntax of "bindjoyaxis" command works. The tests were done in the latest Doom Legacy version (1.47.2 rev1412), windows version, on my desktop (with Windows 7), and I've used a Xbox360 controller.
The first thing to mention is about the fourth parameter, <control>. Initially, I've thought that Doom Legacy would accept values such as:
forward, backward, strafe, straferight, strafeleft, speed, turnleft, turnright, fire, use, lookup, lookdown, centerview, mouseaiming, weapon1, weapon2, ..., weapon8, talkkey, scores, jump, console.
However, at least on that version of DL, none of the values above worked. Instead, I got it to work by using only numeric values from 0 to 3, where each number is associated to a specific control:
0 - Look up / down 1 - Move forward / backward 2 - Look left / right 3 - Strafe left / right
Any values other than the ones above won't work. Besides, this limit in the <control> parameter means that axis can be bound only to character movement. You won't be able to use Right Trigger to shoot, or D-Pad left / right to change weapons per example.
But at least it's better than nothing, so let's move on and make it work. Assuming you have two identical Xbox360 controllers such as mine, and want to play DL in split-screen, edit your "config.cfg" file, and include the following lines (ignore the comments in the process, they were included only for explanation purposes):
bindjoyaxis 0 0 0 3 0.001000 // 1st controller, Player 1, Strafe left / right, left analog stick bindjoyaxis 0 1 0 1 -0.001000 // 1st controller, Player 1, Forward / backward, left analog stick bindjoyaxis 0 4 0 2 -0.020000 // 1st controller, Player 1, Look left / right, right analog stick bindjoyaxis 0 3 0 0 -0.500000 // 1st controller, Player 1, Look up / down, right analog stick (optional) bindjoyaxis 1 0 1 3 0.001000 // 2nd controller, Player 2, Strafe left / right, left analog stick bindjoyaxis 1 1 1 1 -0.001000 // 2nd controller, Player 2, Forward / backward, left analog stick bindjoyaxis 1 4 1 2 -0.020000 // 2nd controller, Player 2, Look left / right, right analog stick bindjoyaxis 1 3 1 0 -0.500000 // 2nd controller, Player 2, Look up / down, right analog stick (optional)
A few notes:
- The bindings above will configure only doomguy movements for two controllers. You'll still have to configure the other buttons manually, such as shoot, open doors, change weapons / inventory, jump, etc;
- The axis movement bindings above won't be influenced by the "Run" command or the "Autorun" option. This will be automatically done according in the fifth parameter, <scale>, where according to the sensitivity, your doomguy may move normally or run;
- The second parameter, <axisnum>, may vary from controller to controller. You gotta adapt it, according to the controller you have. The axis 2 on my Xbox360 controller, per example, is associated to both LT and RT buttons;
- Although I've included it above, I don't recommend you to use the analog for looking up / down. I barely could use it to aim, since it's super sensitive and it keeps centering view automatically when you stop pressing the right analog stick up / down. I had more luck by deactivating that feature, and using the original "autoaim" feature present in the game;
- The fifth parameter, <scale>, refers to the analog sensibility. Negative values means inverted axis. And probably, the sensibility for each parameter may vary from controller to controller, so you gotta adapt it too, according to your controllers;
- You may find strange the low values in the <scale> parameter, but I noticed that values such as 1.0000 would result in super sensitive commands. The smallest movement in your analog sticks would result in your doomguy moving and spinning like crazy. And even on low values, I still got doomguy moving by itself even when the controller isn't being used.
-
@Solid-One This looks like a good workaround to get gamepad/controllers to work for split-screen in Doom Legacy. The DL version for RetroPie/Raspberry Pi is also the latest version like the one that you tested on Windows, so it should also work there.
Thank you for your tests and contribution. I will sure be testing this later to see how it works for my 2 PS4 Generic USB controllers.
I still think we should look into creating a libretro port of Doom Legacy but that will require som coding and work. :-) -
you can use it here.
it is already compiled for pi3
https://github.com/spartrekus/hexen-2-raspberry-multiplayer -
@spartrekus This post does not belong in this topic. Please create a new topic or use my topic for Hexen 2: Hammer of Thyrion
I have already created a working scriptmodule for RetroPie.
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.