Electronicks / JoyShockMapper

A tool for PC gamers to play games with DualShock 4s, JoyCons, and Pro Controllers. Gyro aiming, flick stick.
Other
332 stars 20 forks source link

[bug] Virtual DS4 Left Stick "pulling" S-E #100

Closed 80T closed 10 months ago

80T commented 10 months ago

Using A DualSense or DualSense Edge regardless, when trying to emulate a DS4 controller, the Left Analog Stick is by default "pulling" S-E by itself. Trying to push the stick the opposite way (N-W) only gets the stick almost up to the center point. The Stick output seems to be "locked" in the bottom right quadrant of the full range and even there, pulling to the S-E corner. Changing only the line: "VIRTUAL_CONTROLLER = DS4" to: "VIRTUAL_CONTROLLER = XBOX" fixes the issue. Trouble is, now the emulated controller, obviously is an XBox controller, not a DualShock 4..

Following is my temp config:

# This configuration file will map a virtual xbox controller from Dualshock 4 controller.
# FlickStick and gyro_release
RESET_MAPPINGS

REAL_WORLD_CALIBRATION = 100
IGNORE_OS_MOUSE_SPEED
IN_GAME_SENS = 1
VIRTUAL_CONTROLLER = XBOX # DS4

LEFT_TRIGGER_EFFECT = OFF
RIGHT_TRIGGER_EFFECT = OFF

UP = X_UP
DOWN = X_DOWN
LEFT = X_LEFT
RIGHT = X_RIGHT

W = X_X
S = X_A
N = X_Y
E = X_B

- = X_BACK
+ = X_START

HOME = CALIBRATE # XB_GUIDE
CAPTURE = NONE
TOUCH = E

L = X_LB
R = X_RB
ZL,R = Z

ZL_MODE = X_LT
ZR_MODE = X_RT

L3 = X_LS
R3 = X_RS

MIC = LSHIFT

LEFT_STICK_MODE = LEFT_STICK
RIGHT_STICK_MODE = RIGHT_STICK

# Aim settings
# Gyro sens of 1 means you'll turn the same amount in game as in the real world
GYRO_SENS = 0
ZL,GYRO_SENS = 1
L,GYRO_SENS = 1.1
# Gyro thresholds are in degrees per second
MIN_GYRO_THRESHOLD = 0
MAX_GYRO_THRESHOLD = 75

GYRO_OFF = RIGHT_STICK
80T commented 10 months ago

Update: Using an XB Elite Series 2 gives the same results, so it's not the input controller, but something with the emulated virtual DS4.

santarl commented 10 months ago

@80T have you tried flicking the stick and rotating it 360 degrees once? It does this for me at the start, but if I pull the stick in a direction and trace a circle while having it pulled, it stops sending the "pull" input.

80T commented 10 months ago

@80T have you tried flicking the stick and rotating it 360 degrees once? It does this for me at the start, but if I pull the stick in a direction and trace a circle while having it pulled, it stops sending the "pull" input.

I do not have issues with the Right (aiming) Stick, I've this problem with my Left (movement) Stick. Also, I do not use Flick-Stick (see the above config) It also shows this in the Control Panel under devices and Printers. That's how I could see what the analog stick actually outputs on the emulated DS4 controller. ALSO, it does not have this issue if I simply change the "DS4" to "XBOX", thus emulating an XBOX Controller.

santarl commented 10 months ago

I should've been more clear, You don't have to be using flick stick for this to happen. Can you try this and report if the phantom pulling still happens?

calibrate_stick

80T commented 10 months ago

I should've been more clear, You don't have to be using flick stick for this to happen. Can you try this and report if the phantom pulling still happens?

calibrate_stick

No difference whatsoever. I've already tried moving the sticks all the way first thing regardless. Again, it is only when emulating the DS4, that is the only change in the config. I edit the config with only changing "DS4" into "XBOX" in the same config file, save it "Ctrl+S" then drag it again over JSM to reload it - Problem gone.. (only now it's emulating an XBOX controller.

Screenshot 2023-09-12 191709

80T commented 10 months ago

Changing the LEFT_STICK_MODE to "AIM" or to "RIGHT_STICK" solves the problem.. Although, again.. I'm left without a.. LEFT Analog Stick.. Another weird thing is that if I hit PrintScreen the My mouse cursor starts dragging bottom-left.. when the "LEFT_STICK_MODE" has no binding to a mouse..

Seems like only when the VC is set to DS4 and LEFT_STICK_MODE is LEFT_STICK I get this issue. Even if I set LEFT_STICK_MODE to RIGHT_ANALOG, the right analog has no problem, it works perfectly whether I move the Left or Right analogs.

santarl commented 10 months ago

Seems like only when the VC is set to DS4 and LEFT_STICK_MODE is LEFT_STICK I get this issue. Even if I set LEFT_STICK_MODE to RIGHT_ANALOG, the right analog has no problem, it works perfectly whether I move the Left or Right analogs.

are you doing RESET_MAPPINGS / reopen jsm after changing these?

I think it's a deadzone issue, try increasing the inner deadzone

80T commented 10 months ago

I think it's a deadzone issue then, try increasing the inner deadzone

The emulated Left Stick doesn't even get to the center if I pull the stick all the way n the other direction, it's like "stuck" into the "S-E quadrant".. and not even covering all of that range. Is there a difference between emulating a DS4 and XBOX controllers once I'm using the same input and no other changes whatsoever in the config ?

I've set LEFT_STICK_DEADZONE_INNER = 0.5 - No difference whatsoever. The default was 0.15, which should be plenty. My DSE is almost brand new and I also have 2 spare replacement stick modules. DS regular one - the same behavior, DS4 - same behavior, XB Series - same behavior, Elite S2 - same behavior. 3rd party controllers - same behavior. The ONLY change in my config is the emulated controller.

80T commented 10 months ago

This seems to have been resolved with the 3.5.0 release.