Post Reply 
 
Thread Rating:
  • 2 Votes - 4.5 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Control Mapping for dualshock 3 (RetroPie)
07-25-2016, 01:24 PM
Post: #1
Control Mapping for dualshock 3 (RetroPie)
Hello,

I installed the standalone PPSSPP on my raspberrypi 3 from source (not RetroArch).

I just can't get my PS3 controller mapped properly. I use the control mapping in the ppsspp menu, and I just leave the keyboard mapping alone. The default mapping for gamepad is all over the place for PS3 controllers - X is down, for example...

So I map everything for the controller, and they work in game just fine. However, it completely breaks the ppsspp menu navigation. First of all, the mapping doesn't seem to apply at all to the menu. X is still down, even though it's not in game. What's worse is that it also seems to break keyboard navigation. I can't even go down to select something because it immediately goes back up!

I've deleted controls.ini and ppsspp.ini like a dozen times now trying to get it to work. It's like there's some confliction with the controls, like they are hardcoded for menu nav.

Any ideas?
Find all posts by this user
Quote this message in a reply
07-26-2016, 01:07 PM
Post: #2
RE: Control Mapping for dualshock 3 (RetroPie)
After doing some reading on the github page, I see that the controls in the PPSSPP UI are hardcoded and the mappings set by the user are ignored except for in game.

Seems they did this so that the user doesn't get themselves into a situation where they have cleared the mappings and made it all but impossible to fix it. What's frustrating is that the end result is the same for me! When I do map it, I get constant keyup input being registered... which makes it impossible to fix Smile Have to force the emu to close in putty, and then delete the controls.ini file.

Well, if anyone has any solutions... I'm all ears. Only thing I can think of is a script to run joy2key or something.
Find all posts by this user
Quote this message in a reply
07-28-2016, 08:44 PM
Post: #3
RE: Control Mapping for dualshock 3 (RetroPie)
Man it feels lonely in here.

Anyways, I've tried my best to figure this out myself. It seems SDLjoystick.h holds they key... and maybe keycodes? and keymaps? sigh...

Is anyone familiar with the confusing mapping structures employed in PPSSPP? All I want to do is control the menu with my dualshock 3. I know someone has the answer and you will be my best friend if you explain what I need to do Smile

I am assuming SDLJoyButtonMap[x] is the button that is sent to ppsspp. It is then mapped to some NKCODE_XXX variable, which is again mapped to the ppsspp controls...? So all I need to do is change the SDLJoyButtonMap[x]=NKCODE_XXX entries in SDLjoystick.h?

But how do I know what NKCODE_BUTTON_6 is mapped to in ppsspp? It sounds like an awful lot of trial and error. That and I'm not smart enough for this.
Find all posts by this user
Quote this message in a reply
07-30-2016, 03:23 PM
Post: #4
RE: Control Mapping for dualshock 3 (RetroPie)
I'm also using a PS3 controller with PPSSPP on Pi, but don't have time to code at present.

The default mappings, if the comments are correct are for the XBox controller. https://github.com/kripken/emscripten/issues/2193 is the first resource I could find with info on them. PPSSPP seems to be hardcoded to the SDL1.2 mappings.

http://wiki.ros.org/ps3joy has the button mappings for the Dualshock. You'd need to find the XBox button referenced in the first link, and replace it with the Dualshock button from the second.
Find all posts by this user
Quote this message in a reply
07-31-2016, 06:33 AM (This post was last modified: 07-31-2016 06:33 AM by IT Support.)
Post: #5
RE: Control Mapping for dualshock 3 (RetroPie)
(07-25-2016 01:24 PM)Concat Wrote:  Hello,

I installed the standalone PPSSPP on my raspberrypi 3 from source (not RetroArch).

I just can't get my PS3 controller mapped properly. I use the control mapping in the ppsspp menu, and I just leave the keyboard mapping alone. The default mapping for gamepad is all over the place for PS3 controllers - X is down, for example...

So I map everything for the controller, and they work in game just fine. However, it completely breaks the ppsspp menu navigation. First of all, the mapping doesn't seem to apply at all to the menu. X is still down, even though it's not in game. What's worse is that it also seems to break keyboard navigation. I can't even go down to select something because it immediately goes back up!

I've deleted controls.ini and ppsspp.ini like a dozen times now trying to get it to work. It's like there's some confliction with the controls, like they are hardcoded for menu nav.

Any ideas?

(07-26-2016 01:07 PM)Concat Wrote:  After doing some reading on the github page, I see that the controls in the PPSSPP UI are hardcoded and the mappings set by the user are ignored except for in game.

Seems they did this so that the user doesn't get themselves into a situation where they have cleared the mappings and made it all but impossible to fix it. What's frustrating is that the end result is the same for me! When I do map it, I get constant keyup input being registered... which makes it impossible to fix Smile Have to force the emu to close in putty, and then delete the controls.ini file.

Well, if anyone has any solutions... I'm all ears. Only thing I can think of is a script to run joy2key or something.

this infortion help ful
Find all posts by this user
Quote this message in a reply
07-31-2016, 11:14 AM (This post was last modified: 07-31-2016 11:25 AM by Skinjacker.)
Post: #6
RE: Control Mapping for dualshock 3 (RetroPie)
Very similar problem here. I have PPSSPP (DEV-working) on my iPhone 6s 9.3.3. I'm using my PS3 controller, and [START] & [SELECT] are both registered as kbd.esc (keyboard, escape). Is there any way to change that? It's really annoyingAngry. I've looked at controls.ini and ppsspp.ini, and couldn't figure anything out. I just want to bind my start button to start and select button to select. Why is it so difficult?

Anything, anything at this point would help.

Please send help. Thanks. P.S., I kinda wanna make this its own thread so it gets more visibility, but I don't know if I should do that... I'm just really desperate...

Edit: Done. I made a new thread. I honestly want to get this fixed as soon as possible.
Find all posts by this user
Quote this message in a reply
08-11-2016, 01:34 AM
Post: #7
RE: Control Mapping for dualshock 3 (RetroPie)
Well my discovery doesn't even matter because SDLjoystick doesn't exist on my pi. I don't know much about Linux or the Pi... but I'm guessing it's all in PPSSPPSDL which is a binary file?

How can I edit individual files after it's built in the pi? Is that even possible?
Find all posts by this user
Quote this message in a reply
08-11-2016, 05:14 AM
Post: #8
RE: Control Mapping for dualshock 3 (RetroPie)
(08-11-2016 01:34 AM)Concat Wrote:  Well my discovery doesn't even matter because SDLjoystick doesn't exist on my pi. I don't know much about Linux or the Pi... but I'm guessing it's all in PPSSPPSDL which is a binary file?

How can I edit individual files after it's built in the pi? Is that even possible?

You can't edit source files after they've been compiled into the binary. And I don't think RetroPie's packages include the source.

I can work on a patch and compile a new binary, but not for a couple weeks. August is proving busy for me.
Find all posts by this user
Quote this message in a reply
08-11-2016, 04:00 PM (This post was last modified: 08-11-2016 04:01 PM by Concat.)
Post: #9
RE: Control Mapping for dualshock 3 (RetroPie)
Ah I see... thanks for responding.

It wouldn't be so bad if there wasn't a bug in the mapping. Like, I get that the UI mapping is hardcoded and I can live with that. If I have to press X to navigate down and L2 to confirm then so be it. It's wonky, but at least workable.

The bug I am actually referring to is when I use the UI control mapping to map the in-game controls properly, it breaks the UI mapping. Every time I go back into the menu to exit the emulator (for example) the selector just constantly scrolls up! If I press down, it goes back up immediately as if it thinks UP is being pressed. The same behavior happens when I use a keyboard to press down. I can't even get to the option to exit the emulator so I have to either unplug my raspberry pi or get to a terminal to kill the process or reboot. It makes it completely unusable.

I have had success using LinuxJoystickMapper to map all the buttons to the keyboard controls in PPSSPP, but have so far failed to map the analog stick. Seems every road I go down to fix this for myself has too many hurdles. LR-PPSSPP has noticeably worse performance... but the control mapping actually works. Sigh.
Find all posts by this user
Quote this message in a reply
09-03-2016, 02:47 AM
Post: #10
RE: Control Mapping for dualshock 3 (RetroPie)
Finally, I have some time to code.

It takes a bit of programming skill, but add this to your SDLJoystick.h before compiling:

Code:
#elif _PS3_

                SDLJoyButtonMap[14] = NKCODE_BUTTON_1;   // Cross
                SDLJoyButtonMap[13] = NKCODE_BUTTON_2;   // Circle
                SDLJoyButtonMap[15] = NKCODE_BUTTON_3;   // Sqlare
                SDLJoyButtonMap[12] = NKCODE_BUTTON_4;   // Triangle
                SDLJoyButtonMap[10] = NKCODE_BUTTON_5;   // L1
                SDLJoyButtonMap[11] = NKCODE_BUTTON_6;   // R1
                SDLJoyButtonMap[8] = NKCODE_BUTTON_7;   // L2
                SDLJoyButtonMap[9] = NKCODE_BUTTON_8;   // R2
                SDLJoyButtonMap[0] = NKCODE_BUTTON_9;   // Select
                SDLJoyButtonMap[3] = NKCODE_BUTTON_10;  // Start
                SDLJoyButtonMap[1] = NKCODE_BUTTON_11; // L3
                SDLJoyButtonMap[2] = NKCODE_BUTTON_12; // R3
                SDLJoyButtonMap[16] = NKCODE_BUTTON_13; // PS
                SDLJoyButtonMap[4] = NKCODE_DPAD_UP;
                SDLJoyButtonMap[6] = NKCODE_DPAD_DOWN;
                SDLJoyButtonMap[7] = NKCODE_DPAD_LEFT;
                SDLJoyButtonMap[5] = NKCODE_DPAD_RIGHT;
                SDLJoyAxisMap[0] = JOYSTICK_AXIS_X;
                SDLJoyAxisMap[1] = JOYSTICK_AXIS_Y;
                SDLJoyAxisMap[2] = JOYSTICK_AXIS_Z;
                SDLJoyAxisMap[3] = JOYSTICK_AXIS_RZ;
#else

Then define _PS3_ however you please and build.

I'm working on possibly converting this to a runtime rather than compile time option and submitting to git.
Find all posts by this user
Quote this message in a reply
09-03-2016, 04:38 AM
Post: #11
RE: Control Mapping for dualshock 3 (RetroPie)
Pull request #8949 submitted to add --PS3 command line option for this.
Find all posts by this user
Quote this message in a reply
Post Reply 


Forum Jump: