A way to lock a PS3 controller as Player 1 or Player 2?



  • Greetings to all and thank you Nefarious and your team of contributors and testers for all that you have done for the community! I have an issue that I have been tryig to solve for a few years now: I built an arcade cabinet running Hyperspin with about 77 systems. Te cabinet is built with a swappable control panel and I have all of the peripherals (Joysticks, track ball, spinners, etc...) to cover almost any game. Collectively, there are 19 or 20 USB device connected to a PC running the latest version of Windows 10 pro, including 2 PS3 controllers and 2 navigation controllers (all authentic Sony branded). The idea of my cabinet design is to make it so that games could be played either with the PS3 controllers or the joysticks on the controll panel. All of the PS3 peripherals were wired connected via SB cable as wireless is not a real concern for the cabinet.

    I had been running SCP toolkit (on the arcade origianally running Win 7 pro) which has pretty much been problem free except for one issue: The PS3 controllers would randomly swap between player 1 and player 2 (and assumably the nav controllers swicth between P3 and P4) whenever I restarted or shut down and startup. It wasn't a monumental issue, but it was a slight annoyance. I upgraded to Windows 10 pro so that I could make the arcade cabinet into a server in Parsec so that I could connect to it using my Nvidia shield/ PC and play from the couch (Parsec server function is NOT supported in Win 7!). The upgrade to Win 10 removed SCPtoolkit, and I stumbled on this thread looking for th latest in PS3 controller connectivity. I installed BthPS3 and I am running Shibari as a service---all works well (great job on the project!). Unfortunately, restarts of the PC still randomly assigns PS3/Nav controllers to slots 1-4. Infact, unpluging them from USB makes them reconnect sometimes in a different slot occupied already by another controller. For example, once I saw the bluetooth driver assing the PS3 controller to a slot already occupied by the other PS3 controller---I essentially had both PS3 controllers locked to slot 4! I could not determine the fate of the Nav devices because I no longer have the Monitor function like SCP toolkit has.

    Is there a way using BthPS3 as wired or wireless to force a controller to always be assigned as P1, P2, P3, or P4 whether its wired or wireless, and to maintain that slot after shutdown/restart?

    Second, with all of my PS3 controller peripherals connected by USB cable, I am unable to evaluate button reponse and joystick movemnt in Windows. If you go to the printers/devices section in Windows, all PS3 controllers show up as HID compliant game controllers. However, if I right click to properties and try to test inputs, I am unable to register any movement or button presses. The controllers work fine in hypersspin though.



  • It is not possible to lock a player, this isn't something that can be controlled. It's just whatever connects first.

    Additionally, are you using a legitimate DS3?



  • @wderbi said in A way to lock a PS3 controller as Player 1 or Player 2?:

    Greetings to all and thank you Nefarious and your team of contributors and testers for all that you have done for the community! I have an issue that I have been tryig to solve for a few years now: I built an arcade cabinet running Hyperspin with about 77 systems. Te cabinet is built with a swappable control panel and I have all of the peripherals (Joysticks, track ball, spinners, etc...) to cover almost any game. Collectively, there are 19 or 20 USB device connected to a PC running the latest version of Windows 10 pro, including 2 PS3 controllers and 2 navigation controllers (all authentic Sony branded). The idea of my cabinet design is to make it so that games could be played either with the PS3 controllers or the joysticks on the controll panel. All of the PS3 peripherals were wired connected via SB cable as wireless is not a real concern for the cabinet.

    Sounds like a cool project! 🙂

    @wderbi said in A way to lock a PS3 controller as Player 1 or Player 2?:

    I had been running SCP toolkit (on the arcade origianally running Win 7 pro) which has pretty much been problem free except for one issue: The PS3 controllers would randomly swap between player 1 and player 2 (and assumably the nav controllers swicth between P3 and P4) whenever I restarted or shut down and startup. It wasn't a monumental issue, but it was a slight annoyance. I upgraded to Windows 10 pro so that I could make the arcade cabinet into a server in Parsec so that I could connect to it using my Nvidia shield/ PC and play from the couch (Parsec server function is NOT supported in Win 7!). The upgrade to Win 10 removed SCPtoolkit, and I stumbled on this thread looking for th latest in PS3 controller connectivity. I installed BthPS3 and I am running Shibari as a service---all works well (great job on the project!). Unfortunately, restarts of the PC still randomly assigns PS3/Nav controllers to slots 1-4. Infact, unpluging them from USB makes them reconnect sometimes in a different slot occupied already by another controller. For example, once I saw the bluetooth driver assing the PS3 controller to a slot already occupied by the other PS3 controller---I essentially had both PS3 controllers locked to slot 4! I could not determine the fate of the Nav devices because I no longer have the Monitor function like SCP toolkit has.

    Device order and therefore player index is and always has been determined by connection order and the way Windows keeps this info stored in the registry. This isn't specific to the PS3 peripherals, they follow the same rules all HID-peripherals do on Windows. That's basically it, has also little to do with how SCP or BthPS3 operates.

    @wderbi said in A way to lock a PS3 controller as Player 1 or Player 2?:

    Is there a way using BthPS3 as wired or wireless to force a controller to always be assigned as P1, P2, P3, or P4 whether its wired or wireless, and to maintain that slot after shutdown/restart?

    BthPS3 exposes devices in the order they arrive/connect, nothing more, nothing less and has no more influence on that. Plus BthPS3 has no say and doesn't care in/about gaming APIs, it simply provides the connection broker for the devices. What they are and what they do it does neither care nor influence.

    @wderbi said in A way to lock a PS3 controller as Player 1 or Player 2?:

    Second, with all of my PS3 controller peripherals connected by USB cable, I am unable to evaluate button reponse and joystick movemnt in Windows. If you go to the printers/devices section in Windows, all PS3 controllers show up as HID compliant game controllers. However, if I right click to properties and try to test inputs, I am unable to register any movement or button presses. The controllers work fine in hypersspin though.

    What exactly do you mean by that? If we're talking wired I assume we talk using FireShock, which isn't a HID driver, it needs Shibari as a translator and ViGEm as an "output" to present the DS3 as either an X360 or DS4 pad to the system. Their order/player index is again determined by arrival/connection order. In case you use XInput there's also a bug where poorly developed games can cause stuck player slots until the right process is killed or the system has been rebooted.

    I've explained it many many times already, if one cannot influence the device connection order, the only real other feasible way would be API-hooking the XInput functions and manipulate the player index with custom logic.

    Cheers



  • @Daltz333 said in A way to lock a PS3 controller as Player 1 or Player 2?:

    It is not possible to lock a player, this isn't something that can be controlled. It's just whatever connects first.

    Additionally, are you using a legitimate DS3?

    All real sony products. I have never had a clone that matched the quality of the OEM.

    @nefarius

    Thanks for explaining it. If I understand correctly, slots assigned are pretty much made according to the order of their connection. I can accept that logic and it is what I assumed would be the case. However, it is weird that the order it sees devices seems to change randomly even though the controllers are usually not removed from the USB cable...I could leave the devices connected and untouched. If I do 4 restarts, the PS3 controller order would change at least twice! In other words, I have a grey PS3 controller and a blue PS3 controller both connected by USB. If grey is P1 and blue is P2, it would swap order (p1 vs P2) at least twice if I do 4 restarts in a row without touching either controller.

    What I mean when I say that I cannot register movements or any button pushes, I am referring to the Windows utility to test game controllers. I followed all steps in BthPS3 install thread and in the post BTHPS3 install thread. That means that after I installed BthPS3, I installed VIGem, then fireshock, and finally Shibari. I installed each device 1 at a time first by conecting the USB (ensuring that they registered in Shibari as a USB device, I then disconnected the USB cable and pressed the PS button to register it in Shibari as a bluetooth connected device. I connected them one at a time in the order of which gameing slot I wanted them in (P1-P4). I stopped the Shibari and saw that the connection to the PS3 controllers had dropped. I installed Shibari as a service, rebooted the computer, and saw that the controllers had reconnected in the order I wanted them (YES!). Unfortunately, rebooting a second time changed the order and this is why I posted here. Although the Windows utility cannot track controller movements and butten presses, the PS3 controllers do indeed work in navigating through hyperspin and in game emulation.



  • @wderbi said in A way to lock a PS3 controller as Player 1 or Player 2?:

    Thanks for explaining it. If I understand correctly, slots assigned are pretty much made according to the order of their connection. I can accept that logic and it is what I assumed would be the case. However, it is weird that the order it sees devices seems to change randomly even though the controllers are usually not removed from the USB cable...I could leave the devices connected and untouched. If I do 4 restarts, the PS3 controller order would change at least twice! In other words, I have a grey PS3 controller and a blue PS3 controller both connected by USB. If grey is P1 and blue is P2, it would swap order (p1 vs P2) at least twice if I do 4 restarts in a row without touching either controller.

    That's expected, it doesn't matter that they're kept plugged in, a reboot causes the USB hubs to re-enumerate all their children (connected devices) and if that happens asynchronously you may end up with a different connection/arrival order 🙂 You could try to attach them to a common USB hub in between the controllers and the mainboard port and observe what happens.

    @wderbi said in A way to lock a PS3 controller as Player 1 or Player 2?:

    What I mean when I say that I cannot register movements or any button pushes, I am referring to the Windows utility to test game controllers. I followed all steps in BthPS3 install thread and in the post BTHPS3 install thread. That means that after I installed BthPS3, I installed VIGem, then fireshock, and finally Shibari. I installed each device 1 at a time first by conecting the USB (ensuring that they registered in Shibari as a USB device, I then disconnected the USB cable and pressed the PS button to register it in Shibari as a bluetooth connected device. I connected them one at a time in the order of which gameing slot I wanted them in (P1-P4). I stopped the Shibari and saw that the connection to the PS3 controllers had dropped. I installed Shibari as a service, rebooted the computer, and saw that the controllers had reconnected in the order I wanted them (YES!). Unfortunately, rebooting a second time changed the order and this is why I posted here. Although the Windows utility cannot track controller movements and butten presses, the PS3 controllers do indeed work in navigating through hyperspin and in game emulation.

    That doesn't sound right, the devices emulated by Shibari will definitely be kept up by Windows utilities and APIs and reflect input changes. Whatever the case is here is definitely not how it's supposed to be.


Log in to reply