Pcsx2: Lilypad Regression: Controllers do not work on some games

Created on 17 Apr 2017  路  27Comments  路  Source: PCSX2/pcsx2

Last working version: pcsx2-v1.5.0-dev-1934-ga3efc77
Regression version: pcsx2-v1.5.0-dev-1939-gf3a89f5

Some games don't read controller inputs , pcsx2 reads the inputs fine fine but pressing the buttons in game does nothing.

Affected games: The Getaway Black Monday , Tekken 5
There could be more but these are the only ones that showed these results for me.
Some others showed some weird results as well but those sometimes work and sometimes not.

All default settings used without speedhacks , cheats ...etc
i3 4160, amd r7-360, 16gbram, windows 7 64 bit

Windows Regression

Most helpful comment

That build simply disables that feature when LilyPad is opened by PCSX2.
Anyway, I might just disable the feature.

I gave this a quick test again and it does fix it when the feature is disabled.
I think disabling it along with hiding the gui option and the ini read value under PCSX2 is the best choice.

All 27 comments

pgert reported on #1831 that the Network Access Disc didn't respond either.

Two guesses (try separately at first, then combined if neither work):

if (pad->mode == MODE_DIGITAL || pad->mode == MODE_PS1_MOUSE || pad->mode == MODE_NEGCON) {
 if (pad->mode != MODE_ANALOG) {

Disable "Use analog mode if possible".

@turtleli no result , still doesn't work.
@FlatOutPS2 that doesn't work either.

that doesn't work either.

Reboot the game.

Restart the game.

Ops I forgot to do that xD
It works now.

edit: Hmm Is analog mode enabled by default ? Seems a bit weird for it to work this way.
Shouldn't it be disabled then ?

The function is not enabled by default(and it is a regression, though the option only worked with PS1 emulators before). Native PS2 behaviour doesn't always enable analog controls if it's supported or even recommended.

The Projects Zero (Fatal Frame) games are also more or less unresponsive to DS2 input since the last commit-batch. Why not just revert?

So do the issues only exist when "Use Analog mode is possible" is enabled, or are there other regressions?

For the games I have disabling ""Use Analog mode is possible" fixes the issues.
Probably more than half of my games library are affected.

There are no other regressions.

"Use Analog mode is possible" is disabled with my settings,
but greyed out (I don't actually know how to enable it if wanted).

Guess I'll need to use trial and error to figure out which specific change isn't working. I can't just revert it because we'll learn nothing from it.

Try https://ci.appveyor.com/api/buildjobs/j8w0238ciaxbv5q9/artifacts/pcsx2-v1.5.0-dev-2124-gb336dd597-580-vs2015-Win32-AppVeyor.7z , which consists of the following change:

diff --git a/plugins/LilyPad/LilyPad.cpp b/plugins/LilyPad/LilyPad.cpp
index 1d997c7a3..cdf58b11e 100644
--- a/plugins/LilyPad/LilyPad.cpp
+++ b/plugins/LilyPad/LilyPad.cpp
@@ -1330,7 +1330,7 @@ u8 CALLBACK PADpoll(u8 value)
                         query.response[8] = Cap((sum->sticks[1].vert + 255) / 2);  // Left stick: up & down

                         query.numBytes = 9;
-                        if (pad->mode != MODE_ANALOG && !pad->config) {
+                        if (pad->mode != MODE_ANALOG) {
                             // Good idea?  No clue.
                             //query.response[3] &= pad->mask[0];
                             //query.response[4] &= pad->mask[1];

No difference with the Project Zero games or with Network Access Disc, using gb336dd597.

Try https://ci.appveyor.com/api/buildjobs/56s4et0wppaouk04/artifacts/pcsx2-v1.5.0-dev-2125-g44409980d-581-vs2015-Win32-AppVeyor.7z, which has the following additional change:

diff --git a/plugins/LilyPad/LilyPad.cpp b/plugins/LilyPad/LilyPad.cpp
index cdf58b11e..306784d1d 100644
--- a/plugins/LilyPad/LilyPad.cpp
+++ b/plugins/LilyPad/LilyPad.cpp
@@ -1364,7 +1364,7 @@ u8 CALLBACK PADpoll(u8 value)
             // QUERY_DS2_ANALOG_MODE
             case 0x41:
                 // Right?  Wrong?  No clue.
-                if (pad->mode == MODE_PS1_MOUSE || pad->mode == MODE_NEGCON) {
+                if (pad->mode == MODE_DIGITAL || pad->mode == MODE_PS1_MOUSE || pad->mode == MODE_NEGCON) {
                     queryMaskMode[1] = queryMaskMode[2] = queryMaskMode[3] = 0;
                     queryMaskMode[6] = 0x00;
                 } else {

Test results for g44409980d:
No difference with PZ1, PZ3, or Network Access Disc.
With PZ2, no controller is detected.

Try https://ci.appveyor.com/api/buildjobs/s7u48qnwlfyhhxsk/artifacts/pcsx2-v1.5.0-dev-2124-gd61058cd5-582-vs2015-Win32-AppVeyor.7z
Only change compared to master is:

diff --git a/plugins/LilyPad/LilyPad.cpp b/plugins/LilyPad/LilyPad.cpp
index 1d997c7a3..a724b0ed7 100644
--- a/plugins/LilyPad/LilyPad.cpp
+++ b/plugins/LilyPad/LilyPad.cpp
@@ -1242,7 +1242,7 @@ u8 CALLBACK PADpoll(u8 value)
             // CONFIG_MODE
             case 0x43:
                 if (pad->config && padtype != neGconPad) {
-                    if (pad->mode == MODE_DIGITAL && padtype == Dualshock2Pad && config.padConfigs[query.port][query.slot].autoAnalog) {
+                    if (pad->mode == MODE_DIGITAL && padtype == Dualshock2Pad && config.padConfigs[query.port][query.slot].autoAnalog && !ps2e) {
                         pad->mode = MODE_ANALOG;
                     }
                     // In config mode.  Might not actually be leaving it.
@@ -1465,7 +1465,7 @@ u8 CALLBACK PADpoll(u8 value)
                         pad->modeLock = 3;
                     } else {
                         pad->modeLock = 0;
-                        if (pad->mode == MODE_DIGITAL && padtype == Dualshock2Pad && config.padConfigs[query.port][query.slot].autoAnalog) {
+                        if (pad->mode == MODE_DIGITAL && padtype == Dualshock2Pad && config.padConfigs[query.port][query.slot].autoAnalog && !ps2e) {
                             pad->mode = MODE_ANALOG;
                         }
                     }

Test results for gd61058cd5:
Network Access Disc & the Project Zero games works normally.

Are you sure you don't have "Use Analog mode if possible" enabled (it's a per pad setting)? That build simply disables that feature when LilyPad is opened by PCSX2.

Anyway, I might just disable the feature.

Oups.
I thought that the "Use analog mode if possible" setting was general,
but it turned out that each PAD has its own setting.
By disabling the feature, the Network Access Disc & the Project Zero games works normally,
even with regular builds. Sorry.

Still, it shouldn't be like that.
Suggestion: Invert the value from the setting,
or rename it to "Don't use analog mode if possible".

Suggestion: Invert the value from the setting,

It's off by default. Inverting the value won't be great for most users, who'll suddenly find some of their games not working anymore.

So the only options are to leave it alone or disable the feature when LilyPad is run by PCSX2.

I already fixed this in a local branch last year shortly after this issue was created. I'm still waiting for a response to issue #1965 (if someone can make a blockdump for the Kung Fu Panda issue, please share), before I can release it though.

I thought the Kung Fu Panda issue was fixed ? Well anyway I can take a look at it tomorrow.

I thought the Kung Fu Panda issue was fixed ? Well anyway I can take a look at it tomorrow.

It wasn't fixed properly. It regressed the analog/pressure sensitivity behaviour in some other games.

@atomic83GitHub @lightningterror Can either of you upload a blockdump of KungFu Panda(see #1965)?

I need it before I push the fix for this issue.

@FlatOutPS2 can you push this fix? You've had blockdumps for 2 months :P

That build simply disables that feature when LilyPad is opened by PCSX2.
Anyway, I might just disable the feature.

I gave this a quick test again and it does fix it when the feature is disabled.
I think disabling it along with hiding the gui option and the ini read value under PCSX2 is the best choice.

Was this page helpful?
0 / 5 - 0 ratings