Estel

[BUG]PlayStation Sixaxis 3 - D-Pad not working in DS and Shipwrecked

Recommended Posts

Estel    30

Hello Klei,

I have quite strange issue, with both DS and Shipwrecked on Android, if using controller (as in title, PlayStation Sixaxis 3). Namely, every button/trigger works as per tooltip, *EXCEPT* D-Pad (up, left, right, down), used to control selected item in inventory. Tooltips (like "down to drop") appear as they should, but pressing d-pad buttons does absolutely nothing, in any circumstances. The missing function isn't binded to anything else, too.

As you may imagine, it makes gameplay using controller rather impossible. I am - also - quite certain, that it is issue on DS (Shipwrecked)'s side, as events for d-pad are registered, and every other game on same device doesn't have problems with registering d-pad controls.

Hoping it won't be complicated fix, and ready to provide any logs you may need, on request. Help appreciated.

Cheers,

/Estel

//Edit:

Albeit most likely irrelevant, here is specification of my Android device:

Samsung Galaxy S5 Plus (SM-901F, kccat6)
Android version: 7.1.2
LineageOS 14.1-2018-03-02-kccat6

//Edit 2

I am realtively certain that including rebind option with "press the button you want to assign <...> to" would save you guys trying to include definition for every gamepad device in the world (albeit I am quite surprised, that the Sixaxis - being second only to [albeit, arguably, much better than] xbox controler - doesn't work) and its rip-off copies.

Still, huge thanks for adding controller support for Android port, at last! I almost lost hope of ever seeing it.

Edited by Estel
  • Like 1

Share this post


Link to post
Share on other sites
JanH    4,769

Hey there, sorry for the delay as we were investigating this further. Unfortunately both the DualShock 3 nor the PS3 Sixaxis controllers are not officially supported on Android (and so far cannot be used without the use of 3rd party apps, an OTG, or having a rooted device) which means that these two controllers will not be compatible with the game.

  • Thanks 1

Share this post


Link to post
Share on other sites
Estel    30

Well, a disappointing reply is better than nothing, so - without any irony - thanks for making it clear.

I must admit, through, that the situation is kind of strange, as it makes DS one and only (with huge chance of being the literaly sole specimen) controller supporting Android program that refuses to acknowledge sixaxis-type controllers. While what you have said it's technically* true, everything and its uncle - from MAME emulators to drone control software - works without problems with said controller and *all* its input.

Well, maybe I will be able to sort it myself via third party remaping (no chance of providing info what scancodes/keycodes DS expects for that damned D-Pad input?...), or if DS ever supports in-game controls remap. In all honesty - given how long the wait between iDevices controller support and bringing it to Android was - I don't have high hopes for that one, soon...

 

*Technically, cause connecting via Sixaxis application became de-facto gold standard ages ago... To the point of everything recognising its "native gamepad" mode as vanilla Sixaxis connected, like on PC.

 

Edited by Estel

Share this post


Link to post
Share on other sites
LeszczyQ    1

Hi, 

I have made some workaround about this problem. DSPE is registering input pad like xbox - it has analog d-pad. Sixaxis has  digital one. Only way to make it work is to remap right analog stick as analog d-pad (axis 0x02 HAT_X axis 0x05 HAT_Y in  android .kl file). it's take a while to get used to it but it make it playable on android. Sorry for my english...

  • Like 1

Share this post


Link to post
Share on other sites
Estel    30

Thanks a ton, that works - also using GUI methods of remapping. With some tweaks, it should even allow to map sixaxis d-pad in a way that makes it behave like digital-only d-pad of xbox pad (technically, sixaxis d-pad IS digital, but each and every single button in sixaxis have also pressure-sensitivity axis... No idea why it affects don't starve even when DISABLED - IMO it is still bug on DS part - but whatever...).

Share this post


Link to post
Share on other sites
pulsecode    1

I'm running into the same problem with most likely a similar setup.

I'm using my ps3 controller through a third party app called Sixaxis Controller. This was worked for every other game I've played, but I'm running into issues with DSPE. I've found the controller is much more fluid and fun than holding the phone at awkward positions with tapping and the built in virtual stick.

Unfortunately, since you can't use the D-Pad buttons with this setup you obviously can't get very far.

I'm hoping that there will be a fix for this eventually.

In the meantime though, could someone help explain how to rebind inputs in the .kl files a bit more? Would appreciate a way to play this without having to buy another controller.

  • Like 1

Share this post


Link to post
Share on other sites

I am having a almost similar problem only I'm using a X-Box Controller. I even went and bought a new controller assuming my old one was broken. It sadly was not. The only way for me to fix this is to reset the game at least 4-5 times in a hour just to play. Very frustrating and if anyone knows a fix I'd be grateful.

Share this post


Link to post
Share on other sites
Bippy    0

Hello, I don't know if anyone has found a solution but I have another workaround, but you NEED to have a ROOTED phone and a PERMISSIVE SELINUX, using the app USB/BT Joystick Center (you have to buy it but before anything just download the free version to test in your device). My phone is the Samsung S7 Flat, and my controller is the Dualshock 3 (no arrows) and a MOGA pocket (nothing works) too, so I rooted my phone, flashed a new kernel (in stock rom, because of enforcing SELinux), and activated the emulation for x360 joystick, works like a charm. The only thing is that you can't pair with Bluetooth the Dualshock 3 (the moga pocket works fine) without a dongle (idk why Sixaxis does this but this app not) so only OTG. The MOGA pocket doesn't have all the necessary buttons, but you can remmap and play without camera control (just use the touch screen) and a tedious inventory management (no left/right scroll without pressing RT). I leave a few screenshots. I hope that I explained myself right (English is not my native language). Otherwise I will be glad to answer some questions. Also, this should work with any incompatible joystick.

20190105_004748.png

20190105_004634.png

Screenshot_20190105-003901.png

Share this post


Link to post
Share on other sites
Estel    30
Posted (edited)

Incidentally, during winter holidays I had a chance to work on this a little more, and come to two solutions - one of them being exactly the application mentioned in Bippy's post.

First solution - free of charge - comes from using Magisk, and a this module:
https://forum.xda-developers.com/apps/magisk/module-1controller-1-module-to-support-t3865889

 

...but, instead of "just" installing it, you need to download it and modify before, editing the keymap files to match events to your controller (prior gathered via something like uevent monitor). Overall, it is complicated, long work, and I'm not recommending it (not to mention that if you're advanced enough to go through the procedure, you don't need my recommendations nor this guide-thread, TBH).

Second solution - and IMO the recommended one - is using the application from Blippy's post, USB/BT Joystick center, in tandem with Sixaxis Controller application that you use to pair your DS3 equivalent (in case of using physical sixaxis controller). the procedure is as follows:

1. Pair your siaxis via Sixaxis Controller application like you usually do,

2. Ensure that "default" gamepad profile mapping is used (aka not modified for any other game, you can also create automatic application profile in Sixaxis Controller app, making it enable itself when USB/BT Joystick center is started).

3. Follow the instructions from Blippy's post - aka, enable driver middleman itself (J > T set to ON), x360 emulation ( Joy > set to "360"), and IME (input method) of USB/BT Joystick center enabled and in use.

4. Bind your siaxis buttons to their 360 equivalents (dpad to dpad, etc, or any way you want), or just load pre-made mapping from attachment to this very post.

5. Enjoy.
---

Final note: It is real shame, that you have to use TWO additional paid programs to just use super-popualar controller in DS, just because porting team was too lazy to include siaxis dpad output events to filter of accepted dpad input in game. Android and its process of pairing with siaxis doesn't have anything to do with it, the game is just dumbly hardcoded to expect set of possible input events, and without any way for user to define own control scheme, if not using 3rd party applications. Grrrr...

In any case, I am glad that it works in the end, and I can finally play it on my device, after just a little more than a year after purchase. Well, at least it wasn't trying to discourage me by implementing some anti-root detection...

// Edit

Root is obviously required, but it should't be a surprise (given that you already need it for Sixaxis Controller application).

Don'tStarve_JoyPrefsFile_HID_1356_616_0.xml

Edited by Estel

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now