Jump to content
IGNORED

Atari 2600/7800 Dualshock 2 Adapter Part Deux


CPUWIZ

Recommended Posts

Hello,

 

I optimized this code, removed the crystal from the board and clocked the chip at 8MHz, then I re-wrote all the timing routines for the PS2 protocol decoding etc.! This freed up the last two pins that can be used for outputs on the PIC I use for the MCP IO-Board. This now allows me to do 13 signals for direction/buttons. I also am in the middle of writing some code to put the adapter into config mode, which will allow for selecting different configurations of button layouts. The selection stays alive, when the joystick adapter is unplugged, I will store the current selection in the internal EEPROM of the PIC.

 

I've created a template for layouts, now I would love to see some good examples, like a Spy Hunter or Omega Race config, etc.! ;)

 

Cheers,

-R

 

EDIT: Fixed template, so it includes L3 and R3.

 

EDIT2: Figured out a way to control the last of the 14 signals, updated template.

DualShock2_Template.png

  • Like 10
Link to comment
Share on other sites

I will consider including any design that uses my template, just copy and paste the desired function into the boxes. Also of note, for real 2 button operation, the buttons for those functions need to be specified by "Fire1 & Fire1A" or "Fire1 & Fire1B". Anything can be mapped to anywhere. Also, I forgot, I can also read the L3 and R3 buttons (forgot to include boxes for those).

  • Like 1
Link to comment
Share on other sites

Just got done with the code for the config button and visual feedback. Hold down select for N seconds and the controller will blink X times, then go to the next config (although I may change that and use the controller map instead, so a proper instruction manual could be created, maybe I'll leave it blinking until another button is pressed that specifies the config). Rambling, nevermind...

 

For homebrew usage, you could even do something creative, like assigning UD or LR to a single button, to create a virtual button that is normally impossible to do on a joystick.

 

For instance, X = Fire1, O = Fire1A, Square = Fire1B, Triangle = Left1 + Right1. In code, you can then check if left and right (or up and down for another virtual button) are pressed a the same time, before doing the code for left and right. ;)

 

If you want to go really crazy and create another virtual button, assign UDLR all to one special button.

 

Ahh, the possibilities. :cool:

  • Like 1
Link to comment
Share on other sites

I will also consider custom digital only controller configs, like the Namco stick for the PS1. Use the same template and ignore buttons that are not present on digital pads or sticks. As with the analog controller, SELECT can not be used for anything.

 

namco.jpg

 

DDR-R1001-2.jpg

original-ps-controller.jpg

  • Like 1
Link to comment
Share on other sites

Are the analog sticks mappable to paddles? :D

Buy two boards to play 4-player warlords with two people! B

oard 1 = two of the warlord shields, against one other person playing the remaining two shields = Board 2.

(Hard to remember which two of the four output cords goes into which port 1 or 2 though.)

 

Have I hurt your brain enough? I tried.

 

How many games use both ports?

I can only think of Spy Hunter 2600, Stargate 2600, and the Defender Arcade 2600 (Stargate hack), and 7800 Robotron.

I forget how Omega Race control works.

I'll be playing those a LOT if you sell these!

Do Sega Genesis or ColecoVision have any games that use both ports? They are Atari stick compatible.

 

As far as layout mapping, I'll have to think about each special case game.

Default: it should allow digital joystick P1 on the digital and analog left stick, P2 digital joystick on the analog right stick.

The square, triangle, x, and o buttons should map to 2600 P1 fire, 2600 P2 fire, 7800 P1 fire #2, 7800 P2 fire #2.

 

Second: Joystick 1 as the analog sticks should be swapped depending on the kind of game.

It is not always a left handed, right handed thing.

Right handed players of Joust have the joystick on the left hand because it's just left/right, the dominant right hand needs the most precision controlling the flap button (that's why right handed guitar players strum/pick with the right dominant hand because that hand has the precision to hold the "beat". Your dominant hand has the rhythm.)

In games where joystick needs all the precision, like PAC Man, a right handed person should prefer to use the right hand.

  • Like 1
Link to comment
Share on other sites

Not without re-design and loss of functionality, you would need to use PWM to simulate a paddle (probably pretty fiddly too). All outputs are digital in this design.

I didn't think so.

I was just trying to think of other uses, because there are PS2 stick to Atari adapters, just not an adapter for both ports.

Plus as you've said the ability to make one button chords of both l/r, u/d, etc.

Link to comment
Share on other sites

I was just pondering on something mildly interesting, with a 9V battery source, I can turn on the rumble motors upon a "signal", it sure wouldn't be as cool as a PlayStation rumble, but the effect can be programmed in the micro (e.g. small motor go or big motor go). :ponder:

 

I'd have to verify that though, the controller PCB says 7.5V, but I am sure it could take 9V.

  • Like 2
Link to comment
Share on other sites

I was just pondering on something mildly interesting, with a 9V battery source, I can turn on the rumble motors upon a "signal", it sure wouldn't be as cool as a PlayStation rumble, but the effect can be programmed in the micro (e.g. small motor go or big motor go). :ponder:

 

I'd have to verify that though, the controller PCB says 7.5V, but I am sure it could take 9V.

 

But 5v wouldn't be enough though correct?

Link to comment
Share on other sites

Awesome you have thought of this. Kudos for building it! :cool:

 

I have considered modding an SNES controller into a Robotron controller or for simultaneous control of two player VCS games. A/B/X/Y would be P2 and of course the L and R flippers for fire buttons. That would be a bit simpler. :P

Link to comment
Share on other sites

Would there be a way to have feedback to the controller from a programmed game to the controller to have rumble(with aux power source etc.) like have the game put two directions at once or something and that trigger the rumble when hitting a wall etc. ?

Just trying to think of the usefullness of the rumble on the 7800.

Link to comment
Share on other sites

YES! This is fantastic! Great to see this being worked on.

 

CPUWIZ, my prime concern lies with button layout. You can see mine and other's configuration thoughts here.

 

In summary (for me):

Ergonomically, holding the controller in the natural position of the hand and using your right thumb (Presuming common use of a PS2 pad)...

Button 1/Left button should be Square and Triangle (Tip of thumb usage).

Button 2/Right button should be X and O (Closer to palm usage).

 

If someone were using their pointer and middle fingers from their right hand instead (Presuming common use of a [PS2] Arcade joystick)...

Button 1/Left button should be Square and X.

Button 2/Right button should be Triangle and O.

 

More flushed out reasoning in this post respecting my preference, if interested.

  • Like 1
Link to comment
Share on other sites

CPUWIZ, my prime concern lies with button layout. You can see mine and other's configuration thoughts here.

 

Take the template from the first post and make your optimal layout(s), that is what I am hoping for. I should easily be able to fit all 15 configs in memory. Just copy the black text into the red boxes, however you want.

 

I optimized a lot of the code today and made more space. The config selection code is completely done already and works, the current selection stays around until switched, even if the adapter is unplugged. :)

 

EDIT: Once we have 15 configs, these will be manufactured and shipped from Canada. ;)

 

P.S. Hooking up both joysticks is not needed, the chip draws practically nothing and the Dualshock seems happy running from just one port. :cool:

Link to comment
Share on other sites

Just need some clarity on how these listings translate exactly:

 

FIRE1

FIRE1A

FIRE1B

 

FIRE2

FIRE2A

 

I guess what's throwing me a curve is why three fire listings for Player 1?

 

How exactly does...

 

Player 1 Left Fire Button

Player 1 Right Fire Button

 

Player 2 Left Fire Button

Player 2 Right Fire Button

 

...translate?

 

I could possibly see...

 

FIRE1 = Player 1 Left Fire Button

FIRE1A = Player 1 Right Fire Button

 

FIRE2 = Player 2 Left Fire Button

FIRE2A = Player 2 Right Fire Button

 

...but then I don't understand what is FIRE1B supposed to denote, and why there is no FIRE2B :?

 

Pardon my ignorance. :dunce:

Link to comment
Share on other sites

I will also consider custom digital only controller configs, like the Namco stick for the PS1. Use the same template and ignore buttons that are not present on digital pads or sticks. As with the analog controller, SELECT can not be used for anything.

 

 

 

DDR-R1001-2.jpg

 

 

I have 2 of these at home. And I also have a powerpad and one other I forget the name.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...