Today Hazer has updated his ongoing PS3 SixAxis controller mod project and shared both a video below and schematics on making the PlayStation 3 controller fully remappable!
Download: PS3 Remap Controller User Guide (PDF) / PS3 Remap v1.0
To quote: Hello everyone, I am glad to introduce the long awaited PS3 Remappable controller. This project started with the express intention of granting Chuck Bittner his desire to remap the buttons on a standard controller.
With this controller, Chuck will be able to remap the buttons on any current and past game that he normally would have to pass on due to the ergonomics of the default button layout. But his petition is much more important than that, as it will allow stock controllers the same ability for all games in the future. So please visit his petition (petitiononline.com/cu5t0m/petition.html) and support the cause.
OK. Now onto the main event! I have spent better than 6 months of late nights (I dont have free time before 10PM) getting this modification to work just right. I have made the decision not only to make the first controller for Chuck, but I am also releasing the files neded for other modders to make thier own, or use it for other abled gamers.
In the past, my work has been raped/bunked/stolen as others work and this made me ponder if I should make this mod public or not. My compromise is this: I will release the hex files and the utility and the schematics, but the source code will remain my own. The mod will function as intended without giving anyone the hard work I put in to make a rapidfire and profit from me again.
If they want to market the remap as is, thats fine by me. This modification is difficult enough, it probably should be left in the hands of professional modders to perform. Which brings up the next point:
THE DIFFICULTY OF THIS MOD IS HIGHER THAN NORMAL. IT REQUIRES CUTTING TRACES AND SOLDERING TO VIAS. AS SUCH, PERFORMING THIS MOD IS AT YOUR OWN RISK AND ACIDMODS AND I TAKE NO RESPONSIBILITY FOR ANY DAMAGE THAT MAY OCCUR.
So, the reverse engineering of monitoring the button signals and then having the PIC replicate the signals correctly was a good adventure. First up (for the technically inclined) is that this mod uses the PIC18F14K50 and a modified bootloader to hold the firmware.
The bootlaoder was modified to use only one LED and keep the outputs in a safe condition for the PS3 controller during firmware updates. Then came the modding: The LED was installed into the PS3 button using a dual red/green SMD.
The tact button for enabling the bootloader and getting the controller into USB mode was installed on the top of the controller:
The USB port was fashioned from a 2.5mm plug and jack. The finished product was very sleek looking (too bad the tact looks ugly).
I know what your thinking: Why not use the USB port on the controller? I did not fully test the possibility, but there is a chance that wiring both USB ports together could result in either the PIC getting reallt messed up while your chargin the PS3, or you could lose the ability to charge your PS3 from now on. The PS3 requires a USB pre-amble to charge from the USB port.
You cannot simply use a 5V source with a USB cable end. The PS3 will shut itself off if it does not get the proper communication protocol when it needs to charge. So on to the wire tidying:
I really should have just etched a SMD PCB to get this all in, but I thought I was saving time by free-handing the entire circuit (I was wrong):
In the end, we now have the final mod for Chuck Bittner. A quick demo (video below).
Here is the main schematic. It shows the components leading to the points on the PS3 PCB:
Here are the PCB points on the V35X board: (pictures credit to RDC (really, who else?))
and the VX3.0
Once installed, the buttons are disconnected from the PS3 main inputs and the PIC then deciphers the remapping stored in EEPROM and sends out the new signals. This means you can map any button to any other button. You can make all the buttons be DPAD up if you want (but you never should). Another feature is the Toggle/Hold function. You can set the button to toggle its new mapping instead of direct remap.
By this I mean you tap the button to make the function turn on and stay on as if you were holding the button down indefinately, and another quick tap would turn the function off. This should help greatly with sight-aiming. One downfall of this mod is that the buttons are originally analog/pressure sensitive.
The PIC is programmed to create digital signals, so there is no intermediate values. Remember this for driving games. Another feature is that you can adjust the pressure needed for the PIC to see a button press. You can make the controller very sensitive, or require a good tap to register presses, its your choice.
The following buttons are the ones that can be remapped to each other: X, Circle, Trianlge, Square, R1, R2, L1, L2, DPAD up, DPAD down, DPAD right, DPAD left, right stick click (R3), and left stick click (L3). The analog sticks were left alone (sorry, no southpaw).
The user guide and zip file with all schematics and the PC utility can be downloaded (above).
This has been installed on my own V3.5X Dualshock that I am donating to Chuck. Modded Matt is in the process of testing one of the other versions.
In final mentioning, the bootloader has made it possible to fix any bugs that may be found in the future. It also means that if a remapping feature can be improved, I can create the firmware and it can be added without opening the controller. I will not be adding macros or rapidfire though. If I did that, this would simply not be public in any form or manner. Sorry, I have fed the Ebayers enough already.
And Chuck, I hope this controller helps in some small way, and is a good crutch until they finally make it so that the controller is remappable through the PS3 dashboard.
In related news, below is an XBox 360 Controller on PS3 with CFW by rz2p, as follows:
Hi, I've searched around on the topic but haven't found anything recent.
Is there any interest in making some kind of Xbox 360 (wired) controller driver for the PS3?
There seems to be a few working ones for different platforms already:
Xpad - Native Linux driver(which I think would be the easiest way to go): github.com/torvalds/linux/blob/master/drivers/input/joystick/xpad.c
OSX Driver: github.com/d235j/360Controller
There's also this here: pingus.seul.org/~grumbel/xboxdrv/
It wouldn't even matter to me if I had to run an app everytime my ps3 starts to activate the driver. Maybe even have the 360 controller in slot 2 and program that slot with the driver.. whatever.
If you search on the internet you will find lots of people who don't like the feel of the PS3 remote and are looking for a way to do this (and likewise of course, people trying to use ps3 on the xbox). But to some people, if they can't get comfortable, then they can't enjoy it.
I'm not trying to bash the PS3 controller, to each their own, but I think there are a lot of people that would really love to see something like this, you would be a boss.
I can't really help as far as building the driver, but I can help with anything else if needed, I am on 4.66 habib.. lol.
Also, I don't want to get into an argument over this and I already have a CronusMAX but it's totally wack and t-o-t-a-l-l-y has lag. Not very much, but playing racing games makes it noticeable when timing is everything.
This needs more testing but I made a sprx xpad driver for ps3. Not all games will work with it but most should. Currently it only supports wired Xbox 360 controllers. I may include wireless Xbox 360 & Xbox One controllers later if people are interested.
Also there is no rumble for now. (Need to find a way to grab actuator params from games). The Xbox button maps to the PS button and LEDs correspond to the port number it's connected to.
Note: PlayStation DS2 and DS3 controllers have pressure sensitive buttons while Xbox 360 controllers do not. This may make some games like Metal Gear Solid unplayable. Sixaxis is obviously unsupported too.
Thanks for reading.
Update: PS3XPAD Plugin v0.2 is now available from OsirisX followed by v0.3 with details below.
Download: ps3xpad_0.2.zip / ps3xpad_0.2.zip (Mirror) / ps3xpad_0.2.zip (Mirror #2) / ps3xpad_0.3.zip / ps3xpad_0.4.zip
Here is a new release which includes some third party controllers like the Razer Onza. Also as verified by malckdaddy the plugin seems to load better with prxloader rather than boot_plugins.txt method.
According to OsirisX, this currently works with Official 360 controllers and some third party controllers such as the Razer Onza. The Xbox button is mapped to the PS Button and it’s LEDs equate to the port the controller is connected to.
Along with not having wireless support at the moment, there is no rumble support yet either. It is important to also remember that Dualshock controllers have pressure sensitive buttons and Xbox360/One controllers don’t or they have a limited number of them, which can effect game play and support.
For one reason or another this may not work with every game, but it’s a good start.
Sorry for the wait guys. My receiver finally came in yesterday and took me about a day to make the changes. You can connect a maximum of 4 wireless controllers with one receiver.
The release includes both wired (xpad.sprx) and wireless (xpadw.sprx) plugins. Use each one accordingly. Please update if you were using an older version of xpad since this release includes some minor bug fixes.
There was an error setting some controller parameters such as data length. Some games didn't like it and wouldn't respond to controller input. There were also some other memory optimizations.
I still need to tidy up the source code before I release it. I'll probably post it on github once I get the chance.
Yes you can but both the wired controller and receiver must be physically connected before the plugins are loaded. And there is no rumble support in this release.
I've added all controller receivers that the original linux xpad driver accepts (there were only 2).
The problem is games like Guitar Hero and Rock Band look for a particular pid/vid of a PS3 compatible guitar. That's how it detects if other peripherals are connected such as drums.
Correct me if I'm wrong but those games don't allow you to play in guitar mode unless a valid guitar controller is connected. Emulating a peripheral other than a standard PS3 controller is not possible at the moment because of this vid/pid validation.
Pressure sensitivity can be emulated. I'll have a new release soon which will simply map each button press to there max sensitivity value (except for L2 and R2). That should make games that require pressure sensitivity more stable.
I realize a lot of you are having trouble getting the plugin to work. Usually if you're getting the "unknown usb" error, that means the plugin has not loaded properly. You should be getting a "XPAD Loaded!" message if everything was setup correctly. Third party receivers should be working too.
This release combines both wired and wireless controllers into one plugin. This makes things easier for those who want to use both types of controllers. It's also easier to maintain code when everything is in one place.
Pressure sensitivity is now emulated where each button press (except for L2 and R2) maps to their max sensitivity value. This should make games that require pressure sensitivity more stable. Source code is also included in the package.
Spoofing a DS3 controller is sort of working already. The standard API call cellPadLddRegisterController allows a logical controller to be registered but with limited capability. That is the PS3 sees the logical controller as one with no six axis, no vibration, and no pressure sensitivity much like a generic gamepad.
Some games will simply disregard controllers that don't support all the necessary capabilities that it needs in the game. This is the reason why some games that require pressure sensitivity don't even accept input from generic gamepads.
Syscall 574 allows one to register a logical controller with custom capability. That is how I'm able to give an Xbox 360 controller emulated pressure sensitivity. Pressure sensitive games will see this logical controller as pressure sensitive capable and will accept input from the controller.
The same thing can be said for vibration. Some games though take it one step further in checking the gamepad and will not accept logical controllers. It checks to see if it is a standard controller. Is it possible to spoof a logical controller into a standard controller? Possibly through modifying lv2 memory and hooking a call where it registers a lld controller.
Also capturing and wrapping the vibration feed from games is what I meant by hooking the call in my previous post. The guide by therifboy shows a possible implementation of this but he intercepts calls from a VSH process (vsh.self). We will need to intercept vibration send calls (cellPadSetActDirect) from a game process where offsets are definitely different from game to game.
Another way is to see the stack trace after cellPadSetActDirect is called. Is it passed to some pad manager or does it go straight to the controller through some usb/bluetooth interface.
More PlayStation 3 News...