Doom Legacy - Doom Split-screen Source port
-
@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?
-
@Solid-One Good to know. Maybe i could find some useful information or look into another already built libretro source port, it could make it easier to implement a libretro port of Doom Legacy.
Im not sure if it is possible to configure the controller to be able to navigate the menu by it's native joystick support. It could very be, a limitation of Doom Legacy as a source port for Doom since all the avaliable Doom source ports out there can be different when it comes to how they work.
Right now at the moment our best option is to use Xboxdrv for mapping our controller.
-
These days I tried to tweak a bit with xboxdrv for Doom Legacy, in order to implement the following functionalities only through a joystick:
- Fully navigate the menu without the need of a keyboard or a mouse;
- Bind some commands that are unbindable by default (Ex: Show map by pressing TAB key);
- Add / remove bots inside a deathmatch game (without having to recur to console commands for that task).
I'm using two PS2 controllers connected through a USB adapter. And at the same time, I'm still using bindjoyaxis for analog sticks in both controllers, since it's the only way of having real movement sensitivity for two players (in other words, no mouse-to-controller mapping for looking / aiming).
Creating xboxdrv instances
Firstly, we're going to use xboxdrv in order to create two virtual joysticks with button mappings similar to a Xbox 360, except for some exceptions that will have to be mapped as keys. After following the instructions here, let's assume the event location by name of each controller is as shows:
- First controller:
/dev/input/by-id/usb-PS2Controller-p1-event
- Second controller:
/dev/input/by-id/usb-PS2Controller-p2-event
With the event locations in hands, let's start the first xboxdrv instance for player one's virtual joystick:
sudo /opt/retropie/supplementary/xboxdrv/bin/xboxdrv --evdev /dev/input/by-id/usb-PS2Controller-p1-event \ --silent \ --detach-kernel-driver \ --force-feedback \ --deadzone-trigger 15% \ --deadzone 4000 \ --device-name "Doom Legacy PS2 USB Mapper - P1" \ --trigger-as-button \ --axismap -Y1=Y1 \ --axismap -Y2=Y2 \ --evdev-absmap ABS_X=x1,ABS_Y=y1,ABS_RZ=x2,ABS_Z=y2,ABS_HAT0X=dpad_x,ABS_HAT0Y=dpad_y \ --evdev-keymap BTN_THUMB2=a,BTN_THUMB=b,BTN_TOP=x,BTN_TRIGGER=y,BTN_BASE=lb,BTN_BASE2=rb,BTN_TOP2=lt,BTN_PINKIE=rt,BTN_BASE3=back,BTN_BASE4=start,BTN_BASE5=tl,BTN_BASE6=tr \ --ui-buttonmap du=KEY_UP,dd=KEY_DOWN,dl=KEY_LEFT,dr=KEY_RIGHT \ --ui-buttonmap rb=KEY_TAB,start=KEY_ESC,a=KEY_ENTER,b=KEY_BACKSPACE,y=KEY_Y,back+lb=KEY_B,back+rb=KEY_N &
Let me explain some parameters (ordered by relevance):
- --device-name: A friendly name of the virtual joystick. Will be useful for testing purposes;
- --evdev-absmap and --evdev-keymap: Needed for mapping axis and button names to a specific Xbox 360 button. More details here;
- --trigger-as-button: Convert Left / Right Trigger (LT and RT) to buttons. Needed for mapping buttons to L2 and R2 on my PS2 controller, since Doom Legacy treats LT and RT as axis, thus not allowing us to map them for actions such as shoot or open doors;
- --axismap: Needed if you get some inverted axes. On my controllers, both analog sticks were vertically inverted, so I had to include those two lines;
- --ui-buttonmap (first line): Map D-Pad to keyboard arrow keys. Needed for menu navigation and to allow binding actions to the D-pad (change weapons or inventory items per example), since there's no option to do that directly from the controller;
- --ui-buttonmap (second line): Map the following buttons to keyboard keys:
- Right Bumper (RB) to TAB key: To show automap from the controller's R1 button, since we can't change that binding from the menus;
- Start button to Escape key: To access main menu from the controller, since we can't do that without ESC key;
- A button to Enter key: To choose an option in the menus from the controller's Cross button;
- B button to Backspace key: To go back in the menus from the controller's Circle button;
- Y button to Y key: To choose Yes in menu confirmations from the controller's Triangle button. Without that, we won't be able to exit the game, per example;
- Back button + Left Bumper (LB) to B key: A button combination that calls the B key when you press Select + L1 from the controller. Used for adding bots in the game;
- Back button + Right Bumper (RB) to N key: A button combination that calls the N key when you press Select + L1 from the controller. Used for removing bots in the game;
Now let's start the second xboxdrv instance for player two's virtual joystick:
sudo /opt/retropie/supplementary/xboxdrv/bin/xboxdrv --evdev /dev/input/by-id/usb-PS2Controller-p2-event \ --silent \ --detach-kernel-driver \ --force-feedback \ --deadzone-trigger 15% \ --deadzone 4000 \ --device-name "Doom Legacy PS2 USB Mapper - P2" \ --trigger-as-button \ --axismap -Y1=Y1 \ --axismap -Y2=Y2 \ --evdev-absmap ABS_X=x1,ABS_Y=y1,ABS_RZ=x2,ABS_Z=y2,ABS_HAT0X=dpad_x,ABS_HAT0Y=dpad_y \ --evdev-keymap BTN_THUMB2=a,BTN_THUMB=b,BTN_TOP=x,BTN_TRIGGER=y,BTN_BASE=lb,BTN_BASE2=rb,BTN_TOP2=lt,BTN_PINKIE=rt,BTN_BASE3=back,BTN_BASE4=start,BTN_BASE5=tl,BTN_BASE6=tr \ --ui-buttonmap du=KEY_I,dd=KEY_K,dl=KEY_J,dr=KEY_L \ --ui-buttonmap rb=KEY_TAB &
Most parameters are the same as the ones of the first xboxdrv instance, except for a few differences:
- --device-name: The virtual joystick name has its suffix changed from P1 to P2;
- --ui-buttonmap (first line): The D-Pad of the second controller isn't mapped to arrow keys, but to IJKL instead. This way, we'll be able to allow binding actions to the D-pad without conflicting with the ones from first xboxdrv instance. Besides, it'll allow menu navigation only to player one;
- --ui-buttonmap (second line): Instead of all the mappings above, we'll use only the one for showing automap. Player two won't be able to navigate through menus, neither allow adding / removing bots, so there's no need to map Enter / Escape / Backspace to player two, let alone the Back+LB/RB button combinations.
Including additional Doom Legacy bindings through autoexec.cfg
Now we're going to add axis and bots bindings. Just as I explained in previous posts, you have to use DL's "bindjoyaxis" command to allow character movement through analog sticks. So, I'm gonna assume you followed my bindjoyaxis instructions and have the commands at hand.
The first thing to mention is that we won't include the commands in the "config.cfg", but instead we'll create a "autoexec.cfg" file, put it in the same folder as the "doomlegacy" binary, and include our commands inside. The file "autoexec.cfg", as the name says, is a file containing commands that are automatically executed whenever Doom Legacy is opened. It's the preferred way of adding custom bindings.
The "config.cfg" file, on the other hand, won't work correctly: Whenever you open and close DL, the "config.cfg" file is automatically updated, and some custom binding commands can be deleted in the process. In my case, if I accidentally open DL without having the controllers plugged, DL fails to map the axis and delete the lines from the file. Besides, if I include in "config.cfg" the custom bindings for adding bots, they will work when you open DL, but will be deleted after DL is closed. Both issues were solved for me after I put those commands in "autoexec.cfg".
Anyway, here's the contents of "autoexec.cfg" (ignore the comments in the process):
// Player one's axis bindings bindjoyaxis 2 0 0 3 0.001000 bindjoyaxis 2 1 0 1 -0.001000 bindjoyaxis 2 4 0 2 -0.020000 // Player two's axis bindings bindjoyaxis 3 0 1 3 0.001000 bindjoyaxis 3 1 1 1 -0.001000 bindjoyaxis 3 4 1 2 -0.020000 // Custom bindings for managing bots bind b addbot bind n "kick Frag-God; kick Thresh; kick Reptile; kick Archer; kick Freak; kick TF-Master; kick Carmack; kick Quaker; kick FragMaster; kick Punisher; kick Romero; kick Xoleras; kick Hurdlerbot; kick Meisterbot; kick Borisbot; kick Tailsbot; kick crackbaby; kick 'yo momma'; kick crusher; kick aimbot; kick crash; kick akira; kick meiko; kick undead; kick death; kick TonyD-bot; kick unit; kick fodder; kick '2-vile'; kick nitemare; kick nos482; kick billy"
There's a few things to explain about the commands above.
Firstly, for the "bindjoyaxis" commands, you can see that the <joynum> parameter is 2 for player one, and 3 for player two, thus telling DL that the player one will use the third joystick and the player two will use the fourth joystick. But you don't have four controllers, but only two instead, so why?
That's needed due to how xboxdrv works: whenever you add a xboxdrv instance for a existing joystick, it basically creates a virtual joystick which tries to override the physical one. And since we've going to add two xboxdrv instances, it'll result in your SO having the following joystick recognizing structure:
- PS2Controller P1 (joynum 0, physical);
- PS2Controller P2 (joynum 1, physical);
- Doom Legacy PS2 USB Mapper - P1 (joynum 2, virtual);
- Doom Legacy PS2 USB Mapper - P2 (joynum 3, virtual).
As a result, Doom Legacy will recognize both physical and virtual joysticks, thus telling that you have four joysticks instead of two. That results in a problem: If you try accessing the axis for the physical joysticks, DL won't work, so you can't put <joynum> to 0 and 1. Instead, you have to access the axis for the virtual joysticks, thus putting <joynum> to 2 for player one, and to 3 for player two.
Secondly, about the custom bindings for managing bots, we'll bind "B" key to the command "addbot", so when a player press that key, a bot will be added in the game. The same applies for the "N" key, whose purpose is to kick all bots added in a game. The "kickings" routine works by running 32 kick commands by nickname, where the bot nicknames were obtained directly from DL's source code.
With the custom bindings added, now let's go back to the xboxdrv button combination for player one. Since Back button + Left Bumper (LB) will call the "B" key, then for adding a bot in a game, all I have to do is press Select + L1. And Since Back button + Right Bumper (RB) will call the "N" key", then you can remove all bots added in a match by pressing Select + R1.
Putting everything together
If you've done everything correctly so far, you'll have two things: the xboxdrv command parameters and the contents of "autoexec.cfg". Now let's put everything together and make it work.
Firstly, the xboxdrv parameters. Similarly as the instructions mentioned here, we'll create the
runcommand-onstart.sh
file in the/opt/retropie/configs/all/
folder (or edit if it doesn't already exist), in order to add a command section specific for "doomlegacy" port.#!/bin/sh if [ "$1" = "doomlegacy" ] then sudo killall >> /dev/shm/runcommand.log 2>&1 xboxdrv sudo /opt/retropie/supplementary/xboxdrv/bin/xboxdrv --evdev /dev/input/by-id/usb-PS2Controller-p1-event \ --silent \ --detach-kernel-driver \ --force-feedback \ --deadzone-trigger 15% \ --deadzone 4000 \ --device-name "Doom Legacy PS2 USB Mapper - P1" \ --trigger-as-button \ --axismap -Y1=Y1 \ --axismap -Y2=Y2 \ --evdev-absmap ABS_X=x1,ABS_Y=y1,ABS_RZ=x2,ABS_Z=y2,ABS_HAT0X=dpad_x,ABS_HAT0Y=dpad_y \ --evdev-keymap BTN_THUMB2=a,BTN_THUMB=b,BTN_TOP=x,BTN_TRIGGER=y,BTN_BASE=lb,BTN_BASE2=rb,BTN_TOP2=lt,BTN_PINKIE=rt,BTN_BASE3=back,BTN_BASE4=start,BTN_BASE5=tl,BTN_BASE6=tr \ --ui-buttonmap du=KEY_UP,dd=KEY_DOWN,dl=KEY_LEFT,dr=KEY_RIGHT \ --ui-buttonmap rb=KEY_TAB,start=KEY_ESC,a=KEY_ENTER,b=KEY_BACKSPACE,y=KEY_Y,back+lb=KEY_B,back+rb=KEY_N & sudo /opt/retropie/supplementary/xboxdrv/bin/xboxdrv --evdev /dev/input/by-id/usb-PS2Controller-p2-event \ --silent \ --detach-kernel-driver \ --force-feedback \ --deadzone-trigger 15% \ --deadzone 4000 \ --device-name "Doom Legacy PS2 USB Mapper - P2" \ --trigger-as-button \ --axismap -Y1=Y1 \ --axismap -Y2=Y2 \ --evdev-absmap ABS_X=x1,ABS_Y=y1,ABS_RZ=x2,ABS_Z=y2,ABS_HAT0X=dpad_x,ABS_HAT0Y=dpad_y \ --evdev-keymap BTN_THUMB2=a,BTN_THUMB=b,BTN_TOP=x,BTN_TRIGGER=y,BTN_BASE=lb,BTN_BASE2=rb,BTN_TOP2=lt,BTN_PINKIE=rt,BTN_BASE3=back,BTN_BASE4=start,BTN_BASE5=tl,BTN_BASE6=tr \ --ui-buttonmap du=KEY_I,dd=KEY_K,dl=KEY_J,dr=KEY_L \ --ui-buttonmap rb=KEY_TAB & fi
If done right, the commands above will be executed whenever Doom Legacy is opened, thus automatically detecting your controllers and doing all needed button / axis mappings.
But it's not over yet: we still need to ensure that xboxdrv is torn down as DL is closed. That's done by creating the
runcommand-onend.sh
file in the/opt/retropie/configs/all/
folder, and putting the following commands inside:#!/bin/sh sudo killall >> /dev/shm/runcommand.log 2>&1 xboxdrv
Lastly, the autoexec.cfg. Go to the folder where resides the files "doomlegacy" and "legacy.wad" (probably in /opt/retropie/ports/doom/), create a file called "autoexec.cfg" and put the contents above in there. Then save and close the file. If done right, the binding commands should run automatically whenever DL is opened, thus binding the joystick axis and the commands for adding / removing bots.
If everything is done right, open Doom Legacy and try navigating in the menus through the joystick. Then go and configure your controllers for each player. Finally, start a two-player deathmatch game, and happy fragfesting!
Conclusion
Although those instructions can work at some extent, unfortunately it's kinda complicated for most users to implement IMO. And it's buggy as hell too. I decided to share those experiments of mine not only because it can work, but as a way of sharing knowledge as well. Maybe in the future it could be useful in order to make it easier to edit DL's source code to implement those missing features.
BTW, in parallel to those experiments, I'm studying DL's source code, trying to implement a way of allowing menu navigation, game exiting, and bot management in games, without having to recurr to xboxdrv to that task. If I succeed, I'll share my results here.
-
@Solid-One Thank you very much for your contribution. I still haven't figured out how to get the 2 player with both controllers working perfect with xboxdrv. Everytime i did do it, it resulted in breaking the sound for the Raspberry Pi.
Did you ever experience the error: alsa lib pcm.c:8306:(snd_pcm_recover) underrun occurred after running with both the xboxdrv controller configurations. I did everytime on my Raspberry Pi 3B. This is the error that broke the sound.
If your way does work without the sound error, then you have just saved me a bunch of time. :-)
-
@tpo1990 I haven't tested my xboxdrv solution on my RPi2 yet, but on my Desktop PC with Ubuntu 14.04 64-bits instead. It's faster to test IMO, and since Ubuntu and Debian are a lot similar, I believe it should work the same on both cases.
On my Desktop PC, I've followed the steps above using my PS2 controllers through a USB adapter. I got no sound issues in the process. I'd guess this problem is entirely related to xboxdrv, maybe giving issues on your specific use case. BTW, you got this problem only with one of your controllers, right? Do you have other controllers to test, just to see if the sound issue would persist or not?
Last but not least, hold your horses just a bit, because I'm having a great progress in editing DL's source code, in order to implement all those features (and some more) without xboxdrv. If everything goes right, I should post a patch here in the next days.
-
@Solid-One It could very well be related to xboxdrv configurations and though i'm not quite sure, since the problem only persist when i use both of the same controllers with 2 xboxdrv instances running and configured for both players. It is only sound that did not work.
I should point out that it is a long time ago since i last tested it. The use of xboxdrv and with the release of RetroPie updates it can have been changed.
Sounds promising. I hope you figure it out.
-
New changes to the scriptmodule has been made and uploaded to my git repository for Doom Legacy.
I have added Doom registered version, Doom 2, TNT and Plutonia versions to the scriptmodule. This means that in order to use the full registered version, you must have a "doom" roms folder with the path: "/home/pi/RetroPie/roms/ports/doom"
If you already have Doom Legacy installed, you can try updating the install from the RetroPie setup after downloading the scriptmodule again, but i have not tested if it works. Otherwise you will probably have to reinstall it again.
Also 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.
Very important. First put your doom.wad, doom2.wad, tnt.wad and plutonia.wad in "/home/pi/RetroPie/roms/ports/doom" then download the scriptmodule again from the download section and install Doom Legacy. This will give you new runcommand launch files for all of them like this.
- Doom.sh
- Doom II: Hell on Earth.sh
- Final Doom - TNT: Evilution.sh
- Final Doom - The Plutonia Experiment.sh
Edit: It is also possible to add Heretic to the scriptmodule. (Hexen and Strife is not supported by Doom Legacy). Let me know what you think about this.
-
@tpo1990 Strife still isn't supported in Doom Legacy.
Besides Doom variants (Doom 1, Doom 2 and Final Doom wads), only Heretic works on DL. So for now, only Heretic would be interesting to add to the scriptmodule.
And last but not least, both Strife and Hexen are mostly single-player games with a non-linear campaign similar to Quake 2 and Half-Life. I don't see many benefits by playing those games in split-screen on Doom Legacy (except for deathmatches in custom maps designed specifically for that game style, and you'll even have to search those maps by yourself). So, in those cases, using Zdoom is a much better approach, since it fully supports both Hexen and Strife.
-
@Solid-One Now that i have checked it. You're right it is only Heretic that works besides the Doom wads and of course some mods works as well, but not zdoom mods that has the pk3 file extension.
It could still be cool to play Hexen split-screen but that is something to dream of. Strife is probably the last one that is very different since it has some dialogue with rpg elements to it. Zdoom is capable but i also think that Zandronum is capable too at running Hexen and Strife. Let me just check it.
Edit: I can confirm that Hexen and Strife works in Zandronum source port with bots in a deathmatch as well.
-
Sorry for the delay. I was kinda busy these days. But anyway, here's what I've promised.
Recently I've done a lot of changes and improvements in DL source code, in order to natively implement some of the missing features that I've mentioned on previous posts. Now, it's possible to fully use Doom Legacy from controllers, without having to use xboxdrv.
The changes are contained in a diff patch that I've created specifically for this version of Doom Legacy (1.47.2).
Changes contained in the patch
- Allow menu navigation with a gamepad: The D-Pad of the first controller now works as arrow keys in menus, thus allowing player one to navigate in the menus with your gamepad;
- Translation of joystick hats to button mappings: Now it's possible to bind D-Pad directions to actions, without having to use "bindjoyaxis". Useful for mapping D-Pad to changing weapons / inventory, per se;
- Translation of Xbox360 triggers to button mappings: On Xbox360 controllers, now it's possible to bind LT or RT buttons to actions, such as shoot, looking up, running, etc;
- Joystick axis deadzone support: Applies axes movements only if the values are between 4000 and 32768, or -4000 and -32768. This way, axes won't be super-sensitive to smallest movements occurred when the analog sticks aren't fully centered, or somehow loosen. Useful to avoid a bug where players keep moving like crazy on controllers sometimes;
- Axes movements sensible to "Run" command: Doubles axes values when "Run" is pressed / activated, thus allowing players to run, when moving with a controller axis. Works only when player is moving or strafing;
- Ability to read autoexec file in home folder: Useful for having "autoexec.cfg" in the same folder as "config.cfg". This way, you won't have to necessarily put "autoexec.cfg" file on /opt/retropie/ports/doomlegacy folder, which is a path accessible only for users with admin privileges;
- New automatic bindings for the first plugged controller:
- "Y" key to Button 1: To confirm the operation in confirmation popups, such as ending a game or exiting DL without a keyboard;
- "N" key to Button 2: To cancel the operation in confirmation popups;
- "S" key to Button 1: In order to start a multiplayer game when "Wait players" is greater than 1 and other players haven't connected to you yet;
- New control bindings:
- Automap: To show the map from a controller button (ex: R1 or RB);
- Main Menu: To open main menu from a controller button (ex: START);
- Pause: To pause the game from a controller button (ex: SELECT or BACK);
- New multiplayer / splitscreen game options:
- Bots: Allows you to add bots in a game, without having to recurr to "addbot" console command;
- Randomize Maps: If true, a random map will be chosen when a level is finished. Useful for PWADs optimized for deathmatches;
- Randomize Bots: If true, bots will be added with random names, colors and skins (if there's any), with the possibility of randomizing on each map change or game creation. If false, bots will be added in the original sequence of names (Frag-God, Thresh, Reptile, etc), colors (green, indigo, brown, red, etc) and will always use the default "Marine" skin.
- On multiplayer menu:
- Changed "Wait Players" default option from 2 to 1;
- Changed "Difficulty" default option from 4 (Ultra-Violence) to 2 (Hey, Not Too Rough). Better optimized for controller gameplay on deathmatches with bots.
- On setup players' menus:
- Changed default player 1 name from "Pi" to "P1";
- Changed default player 2 name from "Big B" to "P2";
- Fixed a bug that wasn't setting multiplayer skill correctly, and was always drawing back to skill 2, "Hey, Not Too Rough", thus preventing higher weapons / items to show up on some maps;
- Implemented a newer bug fix, done by the maintainers of DL, that fixes an issue on some sound effects with frequency higher than 11khz, such as Super Shotgun reloading, and item respawning.
Instructions to apply the patch
- Install the needed dependencies in order to compile DL
sudo apt-get install cmake libsdl1.2-dev libsdl-net1.2-dev libsdl-sound1.2-dev libsdl-mixer1.2-dev libsdl-image1.2-dev timidity freepats
- Get main code and unzip it
wget -O- -q https://netcologne.dl.sourceforge.net/project/doomlegacy/1.47.2/doomlegacy_1.47.2_source.tar.bz2 | tar -xvj --strip-components=1
- Enter in the DL source code folder
cd doomlegacy_1.47.2_source/src
- Download the patch file
wget https://raw.githubusercontent.com/leomontenegro6/DoomLegacy-RPI/master/dl_consolelike_1.47.2_rev20190109.diff
- Patch source
patch -p0 -i dl_consolelike_1.47.2_rev20190109.diff
- Compile DL with
make
--> doomlegacy binary will be created
If you've done the steps correctly, the doomlegacy binary will be created in "doomlegacy_1.47.2_source/src/bin" folder. From now on, you can simply replace the previous "doomlegacy" binary file in "/opt/retropie/ports/doomlegacy" folder (if you've installed DL from @tpo1990's scriptmodule). Or if trying to do all the steps manually, you can simply get any doom / heretic .wad file, combine it with "legacy.wad" file from doomlegacy_1.47.2_common.zip, put everything in a same folder and then run the binary directly.
Here's some screenshots showing some of the changes I've made:
Conclusion
Most of the changes done by this patch were already sent to the maintainers of DL, as a ticket on sourceforge. So, if my patch is accepted, then it's a matter of time for them to be included in the next stable version 1.47.4. But, at least while those changes aren't official yet, feel free to include that patch on any of Retropie's scriptmodules.
And if you guys find any bugs in DL, please remember to post it not only here, but on DL project page on sourceforge.
-
@Solid-One Thank you for this huge work of yours. I would like to add your changes and patch to my Doom Legacy scriptmodule so that it will get improved and even better than it is today. You will have my special thanks and gratitude
Once i get the time off work i will test out your changes.
If you are on github, you can fork my Doom Legacy repository and create a pull request. :-)
-
@tpo1990 Sure, go ahead. I've even deleted my previous repo that I created manually, forked yours and created a pull request containing the patches.
BTW, today I've updated the patch. Implemented some nice new features, besides the ones mentioned previously:
- New multiplayer / splitscreen game options:
- Randomize Maps: If true, a random map will be chosen when a level is finished. Useful for PWADs optimized for deathmatches, such as Dwango5, which has 24 maps and this option can randomize those 24 maps on game creation;
- Randomize Bots: Added a new option "On map change". This way, bots will be randomized everytime a map is changed;
- On setup players' menus:
- Changed default player 1 name from "Pi" to "P1";
- Changed default player 2 name from "Big B" to "P2".
- New multiplayer / splitscreen game options:
-
@Solid-One Thank you. I will soon test it out in my free time and then merge your changes.
As always good work. I am looking forward to see your changes into the Doom Legacy port. :-)
-
Just telling you guys that Doom Legacy v1.48 was released a few days ago. In that version, most changes from the patch I provided above are already included by default, so simply compile it from source and run the binary and everything should work just fine.
@tpo1990 Can you update your scriptmodules with the latest version, and see if it's working on your end?
-
I have completely missed this. Thank you!
-
@Solid-One Thank you for the good news. I will soon update my scriptmodule to the latest Doom Legacy v1.48 and release it.
-
The Doom Legacy scriptmodule has now been updated to include the latest Doom Legacy 1.48.4 version. The scriptmodule has been improved and ingame music has been fixed by adding missing fluidsynth as a needed dependency. The latest Doom Legacy 1.48.4 adds several fixes to the port such as better control of coop and multiplayer. bot menu selection and gamepad support.
The updated scriptmodule has been tested on my RPI 3B RetroPie 4.6.1 (buster) and it runs great both singleplayer, 2 player and with bots in multiplayer.
I recommend these video settings after installing the latest version as the game runs best with those.
Drawing options:32bit
Resolution:1280x960
Download the scriptmodule again from the download link to replace it in your RetroPie-setup. You might have to reinstall Doom Legacy or update it.
I haven't tested it yet on the latest RetroPie on a RPI 4B with buster. Let me know how it works out for some of you that have one.
-
Thanks for the update. Good to know everything is working!
@tpo1990 said in Doom Legacy - Doom Split-screen Source port:
The scriptmodule has been improved and ingame music has been fixed by adding missing fluidsynth as a needed dependency
I'm curious: Music wasn't working in DL on your end, and you solved it by adding fluidsynth? AFAIK, DL works fine if you have timidity & freepats installed on your device through apt-get, and I guess music on DL uses only timidity and not fluidsynth (although I may be mistaken here). Does music worked fine through DL on fluidsynth?
-
Hi im fairly new to the Linux and the rpi and don't understand the build process of the doom legacy application can you please explain to me how you compile it. Sorry if I sound like a big noob @tpo1990 @Solid-One
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.