PS controller using XIM

Started by neemz, February 25, 2008, 06:00:26 AM

Previous topic - Next topic

neemz

Hi folks.

Over here http://obsiv.spaces.live.com/default.aspx obsiv has made a device to control an xbox360 using the PC. It works by outputting as a playstation2 controller and then connecting to a PS2->Xbox adapter called the XFPS.

A few of us have had some success using the same thing to control a PS3 using keyboard and mouse, rather then use an XFPS we are using PS2->PS3 controller adapters.

The problem we have that I would really appreciate some help with is working out why it only works with certain PS2->PS3 adapters. On some adapters it works flawlessly but on mine it exhibits the following behaviour.

The only keypress that seems to work is UP+Start which simulates the "PS button" as PS2 controllers don't have the playstation button. No other keypresses work at all, registering nothing on the console. (I am testing by trying to move about in the PS3 menu).

One thing I did notice is that if I press a key immediately after doing UP+Start then that key gets through but acts like it is held down. So if I do UP+Start and very quickly hit right then it will scroll all the way to the right of the menu.

So this seems particulaly confusing to me, obviously the device that obsiv creating doesn't perfectly emulate a playstation2 controller and thus it seems to only work on adapters that aren't too fussy about what they receive.

Obsiv has no plans to give away the source code so I have disassembled the source code to the devices firmware in order to find out whats going wrong.

-It seems like his device is emulating a PS 1 Dual Shock controller in analogue RED mode, he uses the microcontrollers built in SPI to drive it (reversing the bits himself) and using another port to spit out the acknowledgement signal.

-I have modified it to emulate analogue green but it only caused the buttons to be bound incorrectly, it did not fix anything (expected).

-The device updates the PS2->PS3 adapter between 60 and 64 times per second.

-The acknowledgement pulse does seem to be active for over a single clock cycle.

The fact that a button press does seem to get through (and be held down) after UP+Start has been pressed is leading me to think that there is a timing issue but I have been unable to find anything in the Assembly to back this up.

Any ideas?

I can supply assembly to anyone who thinks it might help.

Neemz

Thanks for reading.