Jump to content

Controller woes


Danfun64

Recommended Posts

I posted this on the Split Screen thread, but was told to move this into another thread because it was an upstream problem.

 

3 hours ago, Danfun64 said:

Not sure if this issue also applies to normal Eternity, but the D-Pad of the Xbox 360 Wireless Controller seems inaccessible for some reason, meaning the four D-Pad buttons don't appear with the "test gamepad" feature.

 

On a similar note, I'm trying to create a "SDL Profile" that matches the control scheme of the Xbox 360 version of Classic Doom as shown here:

PplwxyXl.png?1
 

Here's what it looks like so far:


bind joy1 use
bind joy2 weaponup
bind joy3 map_toggle
bind joy4 weapondown
bind joy5 
bind joy6 
bind joy7
bind joy8 menu_toggle
bind joy9 weapondown
bind joy10 weaponup
bind joy11 use
bind joy12 flip
bind joy13 jump
bind joy14 map_toggle
bind axis3 speed
bind axis3 attack
g_axisaction1 strafe
g_axisaction2 move
g_axisaction5 turn

I have three problems with this. First, how do I reverse the axis (for move). Second, how can I specify whether an axis is pressed positive or negative, as for whatever reason the triggers on the controller are read as one axis? Third, and least importantly, which D-Pad button corresponds exactly to each weapon when it comes to "quick weapon switch"?

Share this post


Link to post
  • 5 weeks later...

Hmm. About the axis... I also had similar problems with a joystick. Even though it reported the axis directions as correct during testing, I would only have one option per axis, so I would only be able to turn in one direction instead of both.

Share this post


Link to post

To invert an axis, find the axis # that reads upside down or backwards, and then set g_axisorientation#, with # being the axis index, to -1. This can be included as part of the profile.

 

To get the Xbox 360 or Xbox One pads' L and R analog triggers to read as separate axes, you must use them through the XInput driver and not the SDL MMSYSTEM driver, since Microsoft intentionally nerfs use of them through any API except XInput.

Share this post


Link to post
  • 2 weeks later...

That's automatic. As long as the controller itself is xinput (and is installed correctly), Eternity will detect it and show you an xinput controller in the settings.

Share this post


Link to post

The controller shows up as "SDL Controller (Xbox 360 Wireless Controller for Windows)"

Maybe I have to do something specific to ensure that it compiles with XInput support?

Share this post


Link to post

... "compiles"? Eternity comes with it compiled already. You haven't told us the full story of what you're doing.

Share this post


Link to post

I've been self-compiling your BananaSplit fork with upstream elements merged. Looking through Cmake-GUI, XInput isn't mentioned any way.

Give me a moment to try the latest stable build of normal Eternity...

 

edit: For the record, i've been compiling using MSYS2+Mingw_w64 (with cmake -G "MSYS Makefiles"). Do I need to compile it with Visual Studio to get XInput to work? What about non-Windows operating systems?

 

edit2: The XInput choice shows up with the official, non splitscreen binary.

Edited by Danfun64

Share this post


Link to post

XInput, being a windows API, obviously will not compile on non-windows operating systems. When compiling on Windows, make sure EE_FEATURE_XINPUT is defined in the preprocessor.

Edited by Edward850

Share this post


Link to post

In the projects preprocossor definitions. You know, the same way you define anything in C++ and CMAKE.

Edited by Edward850

Share this post


Link to post

You define it to exist. It doesn't need to be anything, it just needs to exist.

Edited by Edward850

Share this post


Link to post

How (especially with cmake)? I know it might be a dumb question, and I know i'm not much of a programmer, but i'd still like to know...

Share this post


Link to post

Where is it supposed to go? I tried adding the following to the very end of CMakeLists.txt


##
add_definitions(-DEE_FEATURE_XINPUT)

but nothing changed. Also is that the right syntex?

Share this post


Link to post

I was going to say you need to make sure it's in the main Eternity Cmake (the one in /source), but it's already there as long as you're building with MSVC (Visual Studio).

Edited by Edward850

Share this post


Link to post

Out of curiosity, what is EE_FEATURE_MIDIRPC?

 

edit: So because of an error regarding 'XINPUT_DLL_A' I decided to give up on XInput through cmake and MSYS2/MinGW-W64 and just compile through Visual Studio 2015. I sure can't wait until Eternity's mainstream finishes SDL2 support...

 

edit 2: Attached are two configuration files based off the Doom 3 BFG control scheme, though each are slightly modified. One of them has support for freelook and jumping, while the other removes freelook, replaces the jump button bind with a strafe button bind and adds support for moving with the dpad.

gamepads.zip

Edited by Danfun64
Why in the world are txt files not as an "accepted file type"?

Share this post


Link to post

EE_FEATURE_MIDIRPC enables the midiproc stuff that post-XP Windows requires to separate MIDI volume from game volume.

Share this post


Link to post

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...