Memoria icon indicating copy to clipboard operation
Memoria copied to clipboard

D-Pad defect on some controllers (PS4...)

Open tbartel opened this issue 4 years ago • 16 comments

After installing Memoria, my Xbox 360's D-Pad no longer works to control the characters or to navigate the UI. This happens even if I disable Analog in the .ini file.

tbartel avatar May 21 '20 17:05 tbartel

https://www.nexusmods.com/finalfantasy9/mods/3?tab=bugs This is the same problem, right?

Albeoris avatar May 21 '20 20:05 Albeoris

I cannot reproduce the problem.

I tested with both an official 360 controller and official xbox one controller on W10, and on both, the D-pad is working in the game and in menus.

snouz avatar May 21 '20 20:05 snouz

@Albeoris I'm not sure if it's the same bug, though it doesn't sound like it, as I'm not having any issues with swapped buttons.

@snouz At least one other person has reported having this same issue in the Moguri forum thread; see point 2 here.

For what it's worth, I'm using Steam to launch the game and have the overlay enabled. Essentially, I've left the default Steam configuration, but perhaps Steam's built-in controller mapping functionality is somehow involved?

Disabling analog via the following setting does not resolve it:

[AnalogControl]
Enabled = 0

tbartel avatar May 21 '20 20:05 tbartel

Does the Steam Overlay in the game work correctly for you?

Albeoris avatar May 21 '20 20:05 Albeoris

I have the same problem, even though analog is disabled in memoria.ini my dpad isn't working. I have a 8bitDo SN30 Pro + and I use Xinput. I can't access steam overlay either. And analog control is a bit weird, the character walks by himself whenever I push any direction.

Edit: By going in to Steam Big Picture mode > Controller and disabling Xbox Configuration Support the dpad starts working. But I use that settings in many other games, so it would be nice if it's possible to get it working.

e2zippo avatar May 24 '20 09:05 e2zippo

Glenn Seto:

"The d-pad issue (which I've seen people comment may also affect shoulder buttons?) went away for me, when I configured the game's properties in Steam, disabling the Steam Overlay and forcing Per-Game Input Settings on"

snouz avatar May 24 '20 18:05 snouz

Confirmed that disabling the Steam Overlay and forcing Per-Game Input Settings on fixes it.

e2zippo avatar May 25 '20 15:05 e2zippo

I can confirm the above fixed it for me as well. Closing this as a result.

tbartel avatar May 25 '20 16:05 tbartel

Why do you close it? the problem is apparently still present and this is just a workaround

snouz avatar May 25 '20 18:05 snouz

Yeah, workaround shouldn't be needed. It's nice that there is a workaround but issue still remains.

e2zippo avatar May 25 '20 19:05 e2zippo

I suspect the reason is Scaled Battle UI. Can somebody check it out?

sepam21 avatar Jun 06 '20 18:06 sepam21

I suspect the reason is Scaled Battle UI. Can somebody check it out?

I have the issue without the Scaled Battle UI.

e2zippo avatar Jun 06 '20 22:06 e2zippo

Maybe we can use this to help fix this problem?

https://www.reddit.com/r/Unity3D/comments/1syswe/ps4_controller_map_for_unity/ https://github.com/pbhogan/InControl

Don't know if I'm able to do that, and I don't own a ps4 controller, but if someone can...

snouz avatar Jun 27 '20 22:06 snouz

I have a PS4 controller and looked at it, and it really seems that the "work-around trick" is the only proper solution. For what I understand:

  1. The "DPadX/Y" axes can only be used if they were configured in UnityEditor, which they were not, so there's no way to get them (I've tried "UnityEngine.Input.GetAxis" with many names without any luck),
  2. The "Gamepad" class should have been the way to do it, but the Unity version used by the game doesn't have it (apparently, Unity v3.5 misses it or have it somewhere else). Instead, they use the API from XInputDotNetPure.dll that also has a GamePad class but simpler (no DualShockGamepad subclass for instance) and doesn't recognize the PS4 controllers ("XInputDotNetPure.GamePad.GetState(PlayerIndex).IsConnected" returns false whichever PlayerIndex is given; the analog stick directions are properly catched but using "UnityEngine.Input.GetAxis" instead).

I am afraid that having a fix without any configuration from the user's end would require upgrading the game's UnityEngine or XInputDotNetPure.

Tirlititi avatar Jul 18 '20 14:07 Tirlititi

@Tirlititi I know this is old but the problem is still there and I have problems with the PS5 controller as well, apparently we can remove XInputDotNetPure and use Incontrol instead.

https://forum.unity.com/threads/incontrol-input-and-cross-platform-controller-support-for-unity-made-easy.257619/

barkermn01 avatar Aug 17 '22 21:08 barkermn01

Requires Unity 4.5+

Unfortunatly, the game was compiled with Unity 3.5.

The main solution for using controllers properly is to enable "Fix Steam Overlay" on the launcher, which allows the player to use Steam's custom controller configuration (without the overlay, that Steam feature cannot be used). With that external way to remap the buttons, a proper configuration can be done. Now every button and pad works perfectly fine on my end.

Note that the option "Fix Steam Overlay" must be disabled when updating the FF9_Launcher.exe; it is best to disable that option, then run the patcher then re-enable the option.

I'm afraid the workaround solutions are still the only solutions.

Tirlititi avatar Aug 17 '22 22:08 Tirlititi

Must be solved by https://github.com/Albeoris/Memoria/pull/261 according to SamsamTS

snouz avatar Feb 19 '24 10:02 snouz