Doom Legacy - Doom Split-screen Source port
-
@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
-
@ish Did you look at the very first post? There are step by step instructions there. What specifically about the instructions dont you understand?
-
@quicksilver i typed the script module into the terminal on retropie installed it through the experimental section in the setup and installed it tried to open doom. I opened it got a black screen then it sent me back to the emulation station menu
-
@ish after building using the latest script I am having the same issue (on my Pi 4)
Executing: DOOMWADDIR=/home/pi/RetroPie/roms/ports/doom /opt/retropie/ports/doomlegacy/bin/doomlegacy -iwad "/home/pi/RetroPie/roms/ports/doom/doom.wad" /opt/retropie/supplementary/runcommand/runcommand.sh: line 1255: /opt/retropie/ports/doomlegacy/bin/doomlegacy: No such file or directory
After installing I am getting the above error message. I double checked and the
/opt/retropie/ports/doomlegacy/bin/doomlegacy
directory doesnt exist. Any idea what might be happening here? -
@quicksilver Look in the install log and check if the binary was built.
-
@quicksilver could I use the previous script if its still available some how
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.