Interrupting the start button for EVO: My Senior Project


#1

ALONG time ago, one of the admins, Omni I think, mentioned to the community if anyone had the skillz to make a device that would prevent accidental pauses while idjits mash their buttons.

To graduate, I need to have those skillz. :slight_smile:

I am currently developing a device to be housed in a project box to interrupt the start command from a PS2 controller.

I am currently enrolled in an Electronic Engineering Technology program at the NSCC IT campus in NS, Canada. The main chip used will be the PIC 16F88 with a 5 V voltage regulator using the unused 9V out from the PS2 as the power source - so there will be no outside power source needed.

Any help, comments, encouragements are welcome.


#2

good luck :slight_smile:


#3

So I guess you will just have the controllers plug into the box which plugs into the system and then whatever electronics are in the box would prevent the start button’s signal from going through?


#4

That isn’t that hard, is it, I was thinking about how it’d be done myself… It’s the same basic way that you’d make a converter for a different system, you just route it all back to the PS again, and leave the start button out, is what I was thinking.


#5

or just put the start button on the side.

but kudos anyway!


#6

A couple ideas… which you might have already had.

  1. Put a switch on the box to turn it’s effect on and off. It would suck to have to plug the controllers back and forth to access anything that required start.

  2. Not all games are the same, some may pause with start, others with select. Some make have configurable pause options, like assigning a button to show your command list (which would obviously pause the game). If possible try to make the box configurable, so you can turn off more than just start.

  3. Maybe setup the box so it’s already two player, obviously this is more cosmetic than anything else, but two single player boxes makes less sense to me, commerically, than a single box which regulates two players.


#7

Sorta related, it’d be cool if you could setup a ‘controller squid’, a box with multiple playstation inputs that can then be mapped to either one of the 2 playstation inputs. It’d prevent all the constant controller swapping at meetups: Everyone just plugs their stick into one of the inputs and then you select the proper inputs on the box.

I tried to build one a couple years ago, but it was clearly beyond my expertise.


#8

might wanna add a switch to control whether it works for start or select (or both too maybe), don’t a few games out there use select for pausing?


#9

Excellent, Im all for more geeks around and would love to see this made reality. I hope you dont mind, but Id like to throw a few things out before you go too much further.

You’d be much better off using the 3.3v line for power directly instead of dropping the 9v through a 7805 or other voltage regulator. 7805s are fun, but if you have a usable voltage source, theres no need to waste the current due to the 7805s 60-80% efficiency. Also, that higher voltage line has a separate set of fuses on the PSX and PS2, and are known to blow easily. The controller port will continue to run normally, but without any power to that line. Just use an LF version of whatever PIC you settle on.

The 16F88 is a great little chip (except for its lack of being able to be an i2c master. Grrrr. Found that one out way too far into a project.). You could use the SPI module as either the in or the out, but you’d have to bitbang the serial communication to the other. If you could find a chip that has two separate SPI modules, that’d lessen the amount of work needed. Since it’d be easier to have the SPI module control your clock signal, and use bitbanging to react to the console’s provided clock signal, having the SPI module controlling the PSX controller would prolly be easiest.

The only code for emulating a PSX controller on a PIC is the code I used in the UPCB; you’re free to use it however you like. It doesn’t work worth a damn on converters, so if you make any helpful tweaks to the code, please let me know so I can push them back into the UPCB project. The code is in Microchip’s C18 and is very simple.

The clock speed for reading a controller is 250KHz, so make sure when you decide on your clock speeds that you use a Fosc speed that you can easily have the SPI module cut down to 250KHz for the master serial clock out.

Best of luck!


#10

I know that some games also pause using Select, but I read in some Sirlin blog post that Sony enforces that–if a pause feature will exist at all–pause must be configured to the Start button.

Sort of off-topic… I can’t imagine for the life of me how anyone NOT playing Marvel is being wild enough with their hands to accidentally pause. Marvel itself is a gong-show, though; I watched a buddy of mine reset the entire game while mashing a super. :rofl:


#11

Why not just use an ps2 extensioncord and add on/off switches for start/select ??

Easy, simple and cheap. No extra pcb’s or chips, to cause inputlag and/or incompatibility with converters.

Thats just my 2 re :stuck_out_tongue:


#12

There are 8 wires in a PSX cable. Which one do you think should go through a switch?

VCC? That’d cut all power to the board. Controller no workie.
GND? That’d cut all power to the board. Controller no workie.
9v? Rumble motors wouldn’t work, but everything else would, including Start.
CLK? The controller wouldn’t see the clock to know when to read and respond. Controller no workie.
ATT? The controller wouldn’t know the console was talking to it. Controller no workie.
CMD? The controller wouldn’t know when the console was giving it commands. Controller no workie.
ACK? The console wouldn’t know it was ok to send the byte of data. Controller no workie.
DAT? The controller wouldn’t have any way of tell the console what buttons are pressed. Controller no workie.

I’m all for creative thinking, but dumbass ideas from people who don’t know what they’re talking about that might be followed up by dumber people actually listening.


#13

For the controller newbs, the information is not sent in parallel, so there is no start wire.

It is sent serially, all on PIN 1 on the controller. The other pins do something else.


#14

double press to accept start… that’s a thought


#15

Disconnect your Start button and just have the other dude select Versus mode.
Simple.


#16

LOL. SRK (unintentionally) doesn’t want you to graduate it seems, except Toodles.

I have an good idea of how you can disable just the start button, but I can only program half of the idea but not for a PIC. So here’s just the idea.

Basically, when the PS2 console sends a 0x42 through the CMD line, that’s the cue for “gimme the button status” and the controller gives the status information back to the playstation in a couple bytes. So if I were to make a device to hijack the signals in between the ps2 and the controller, the device would pass everything through without touching them EXCEPT when the playstation asks for the the byte that contains the start button status info. I’ll always write the start button’s bit to read “not pressed” into that byte, THEN pass it to the playstation.


#17

I have no clue about the technical side of this, but in terms of practical application, it would be immensely important that the device introduces no input lag, even when another converter is being used in conjunction with it.


#18

Exactly correct. The only part that is slightly nervewracking is that the SPI module on PICs works a byte at a time. If you wanted to use the SPI module, youd have to try and read the PSX pad as soon as possible BEFORE the console asks for the information, so you have a moment to set the Start bit before sending to the console.

On the other hand, if you’re willing to bitbang everything, you could have the ATT, CLK, and CMD line going to inputs on the PIC as well as to the controller. For the DAT line, have it go to an output pin on the PIC, and the DAT line from the controller going to the PIC. Have it constantly polling the controller DAT line, setting it to the one from the controller. Keep track of the CMDs in the background, and if its a check status, then set the Start bit high and pass all of the rest without interference. Hell, you could still use the SPI module to read the CMD byte by byte, and just control the DAT line bit by bit.


#19

just put the start and selcet button out in the sides or front so you wont accidentaly mash it:sweat::rofl: thats what i did to my new stick:rofl:


#20

Update:

I’ve been looking on this site and anywhere else, but I can’t find much history of the Evo tournaments. I need some of this back history for the Senior Project document that I am required to make. I have some information, but because of shoryuken server crashes of the past, much of the previous history has been erased. The Wiki is sparse.

I was able to find Javier Moreno’s recap, which is great, but it only goes up to about Evo 2k2.

Any help or reminiscences would be appreciated. Thank you.