Doom Legacy - Doom Split-screen Source port
-
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.
-
@Solid-One
Worked for me using the Wii U Pro controllers. I just had to play around with the values a bit. (I feel kinda dumb that I missed that in the documentation during my previous searches for a solution. http://doomlegacy.sourceforge.net/docs/console.html)Edit for clarity.... this is without needing to bother with xboxdrv
-
@jcook84 Glad to know it worked. But a few question: what about menu navigation? Could you navigate in the menus only with your controller, without bothering with xboxdrv? Or you had to attach a keyboard, just for that purpose?
@tpo1990 That would be awesome. I really like how Retroarch deals automatically with controllers in emulators and ports, and if DL becomes a libretro port with automatic analog controller mappings, that would be very handy to use for some Doom splitscreen fragfest. But indeed that would require a lot of coding and testing. However, if you wish to try that approach, I can test it for you in my free time.
BTW, yesterday I tested @tpo1990 's DL script module on my RPI2 and I confirm it worked. I used this PS2 USB adapter, with two PS2 controllers attached:
After adding the lines below in my "config.cfg" file, the analogs were configured just fine for my two controllers:
bindjoyaxis 0 0 0 3 0.001000 bindjoyaxis 0 1 0 1 -0.001000 bindjoyaxis 0 2 0 2 -0.020000 bindjoyaxis 1 0 1 3 0.001000 bindjoyaxis 1 1 1 1 -0.001000 bindjoyaxis 1 2 1 2 -0.020000
However, I couldn't navigate in the menus with my controllers. The only thing that worked is menu selection from one of the buttons of the first controller, but I couldn't navigate in the menus by pressing D-Pad or any of analog sticks. I've even tried turning on/off the analogs by pressing the button between Select and Start, but to no avail.
Although there's a way of mapping controller to keypresses by using xboxdrv, is there a way of allowing menu navigation from the controllers by default?
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.