Several new control settings have been added, including the ability to disable forward/back mouse movement:
Gamepads can be bound with all sorts of actions:
Keyboards got some love too, with the ability to map new actions:
The code is here: https://bitbucket.org/lazd/split_wolf4s ... rc/master/
I've implemented the following:
Features:
- GameController support with SDL2
- Embedded GameController_DB SDL2 mappings for all known gamepads
- Support multiple gamepads
- Support remapping all 13 supported gamepad buttons
- Support gamepads with dpad only
- Support mapping strafe left/right, weapon prev/next, minimap, escape to gamepad buttons
- Support mapping strafe left/right and weapon prev/next to keyboard keys
- Support enabling/disabling moving with mouse
- Let any gamepad control menus by pressing a button°
- Let any gamepad pause/escape the game
Chores:
- Moved to SDL2
- Reorganize control menu so Split Screen Settings is on top
- Make menus more maintainable with UI constants
- Consistently print ? for unbound mouse/gamepad buttons instead of blank space
Bug fixes:
- Fix segfaults on macOS
- Fix menu item borders and gun overdraw
- Allow exiting Split Screen Settings with gamepad
- Use correct control style, sound, and text gap for radio buttons
- Workaround RetroPie's triggers_to_buttons breaking XBox One controllers †
Testing
Here's how to test it on *nix.
- Code: Select all
cd ~/RetroPie/roms/ports
git clone --revcursive https://bitbucket.org/linuxwolf6/splitwolf.git
cd splitwolf
sudo apt-get install libsdl2-dev libsdl2-mixer-dev
make DATADIR="./"
# copy your game files directly into the splitwolf folder
./splitwolf-wolf3d_full --split 2 --splitlayout 2x1
Here's how to test it on RetroPie (or other *nix). Run the following commands over SSH, restart Emulation Station, then select SplitWolf or SplitWolfSOD from the Ports menu.
1. Optional: Copy all of your Wolf3D Full and SoD game files to roms/ports/splitwolf/
2. Run these commands
- Code: Select all
cd ~/RetroPie-Setup
git remote add lazd https://github.com/lazd/RetroPie-Setup.git
git fetch lazd
git checkout splitwolf
3. Run RetroPie Setup
4. Select "Manage Packages" -> "Manage optional packages" -> "splitwolf" -> "Install from binary" or "Install from source"
Here's how to test it on macOS. Run the following commands in the Terminal:
- Code: Select all
git clone --revcursive https://bitbucket.org/linuxwolf6/splitwolf.git
brew install sdl2 sdl2_mixer
make DATADIR="./"
# copy your game files directly into the splitwolf folder
./splitwolf-wolf3d_full --split 2 --splitlayout 2x1
It should build fine on any *nix, but I haven't done anything to fix cross-compiling as I've never dealt with development in Windows before. With a little guidance, I'm sure I can make it work, or maybe @linuxwolf can make it happen more easily than me.
I've tested it on macOS and RetroPie (Raspbian Stretch) on a Raspberry Pi 3 B+, and it's working great. I've tested the following controller configurations:
- XBox One Controller over USB
- Logitech Dual Action Controller
- Retrolink SNES Controller (iNNEXT)
- Keyboard
- Keyboard and mouse
Remaining Issues
- ◻️Ability to assign mouse to a given player
- ◻️Ability to choose which player uses which gamepad (maybe?)
- ☑️Fix joysticks coming in with random order (gamepad 0 can be gamepad 1 between runs)
- ☑️Add per-gamepad sensitivity settings (so you can turn faster without pressing run)
- ☑️Ability to map minimap to button on gamepad
- ☑️Fix feel of analog triggers (too sensitive)
- ☑️Ability to map pause to button on gamepad
- ☑️Ability to zoom minimap with gamepad
- ☑️Ability to map change player color key on gamepad
- ☑️Ability to map strafe left / right buttons on gamepad
- ☑️Ability to map turn left / right buttons on gamepad
- ☑️Test UI with Spear of Destiny (menus are likely totally messed up)
- ☑️Fix incorrect (zoomed in) display at resolutions other than 640x400
- ◻️Test on Windows
- ◻️Test UI with Japanese release
- ◻️Test UI with Spanish internationalization
- ◻️Make sure all GameController_DB entries are being read in correctly (existing solution is super hacky, relies on grep), or switch to gamecontrollerdb.txt
- ◻️Window cross-compilation support
- ☑️Code review! I've hacked my way through this, and I doubt I've done it the most optimal way. My C++ skills aren't the best either, so I'm sure I've done a few things wrong.
- ☑️Proper RetroPie package, installation, and setup scripts
- ◻️Fix crash when resuming 1 player game after changing Split Screen Settings player count to 2
- ◻️Fix SoD logo disappearing when navigating back to main menu
Please test this and let me know what you think! I look forward to addressing any feedback and getting this contribution up to Team RayCast standards!
Thanks
Big thanks to @DoomJedi and @linuxwolf and the rest of Team RayCast for their amazing work on SplitWolf and for sharing the code. Thanks to @ioan-chera his SDL2 port of wolf4sdl, it was instrumental and making this happen.