Jump to content
IGNORED

Four joysticks on 2600


batari

Recommended Posts

I was thinking of an easy way to allow four joysticks on the 2600. It would have to be simple enough so people could create their own cables, and at least one joystick would be reverse-compatible with existing games so it could be left plugged in. It should require as few parts as possible.

 

So my thought was that two joysticks could be connected straight-through to a single port with a DE9 splitter cable (these are available for just a few dollars.) The cable would only need pin 8 to each joystick snipped, and the first one could be wired directly to pin 5 from the console (with a pullup resistor), while the other would need an inverted pin 5. To do the inversion, you could use an inverter chip or an ordinary bipolar transistor with pullup (pin 5 to base, emitter to ground, collector to pin 8 on the second joystick, with the pullup resistor on this line.)

 

Normally, the second joystick would be active and would work with most existing games. To read from the first joystick, you will need the paddle cap discharged by writing D6=1 to VBLANK. Doing so will briefly enable the second joystick by putting ground on its ground pin. You need to read SWCHA once and store the value as the joystick won't be enabled for long since the pullup on pin 5 should be sized such that cap will be rapidly charged, as once charged you can read the other joystick.

 

Do you think this would work? Is there an easier way to do this (that is, with fewer parts?)

Link to comment
Share on other sites

  • 3 weeks later...

While I was pouring over pages about Paddles and Joysticks trying to find data for my Paddle as Joystick controller (I'll be posting this somewhere in the Forums soon... yes for reals), I found a few discussions about hooking up Four Joysticks to have Four player games on the 2600. So here we go:

 

Four-Player Joystick games? by almightytodd

http://www.atariage.com/forums/topic/105756-four-player-joystick-games/page__p__1282133#entry1282133

 

almightytodd was very happy to add a Nintendo Wii to his life and is probably right now enjoying all those Four Player games with his friends. His only downfall is that He can't seem to properly put Image files in his posts... sad really...

 

 

Paired Joysticks by trucker_monkey

http://www.atariage.com/forums/topic/152986-paired-joysticks/page__view__findpost__p__1872362

 

When this Civil/Hydrological/Geological Engineer was a kid he had childhood aspirations of 4-Player Combat. However, these days he's forgetting that we need to move diagonal and that he has to try the codebreaker key-combination's near the statue of Mary inside the church. Lets all hope that 2012 is his year.

 

 

Ive got it! by Cupcakus

http://www.atariage.com/forums/topic/14493-ive-got-it/

 

There must be a condition where one can't move diagonally, because Cupcakus, like trucker_monkey, is also afflicted with it. I guess he's right... He's got it! Although Cupcakes condition only cost him $3 dollars, it looks like trucker_monkeys' was free.

 

Post #16 by Eckhard Stolberg

This has an interesting link in it which still works amazingly enough, but if you can't read Czech I guess you're out of luck.

 

Kidding! :D Here's a translated link:

http://translate.google.com/translate?hl=en&sl=cs&tl=en&u=http%3A%2F%2Fraster.infos.cz%2Fatari%2Fhw%2Fmultijoy.htm

 

 

In conclusion I can honestly say I didn't learn anything from all this... oh wait! I take that back. I did learn one thing:

Don't talk with your mouthful... wait for it to be empty BEFORE you put your foot in it.

 

Illya

Edited by PAC-MAN-RED
Link to comment
Share on other sites

Is it possible to install controller ports into a game cartridge itself, similar to a J-Cart for the Genesis? (Used in Micro Machines)

 

That's a good idea. I looked at the FAQ where it has the cartridge pinouts and I'd have to say it is possible. However, it might be alot of work depending on what parts would be needed to build it, and how much coding skill would be needed program it though. If some one else with more knowledge on this subject jumps in, they can perhaps shed more light on your idea.

 

Illya

Link to comment
Share on other sites

Is it possible to install controller ports into a game cartridge itself, similar to a J-Cart for the Genesis? (Used in Micro Machines)

 

That's a good idea, there could be a pass-through cartridge (similar the 7800 HSC) with a couple controller ports on it. The only down side would be that if the cord gets pulled, it could mess up the cartridge connection crashing the game.

Edited by Wickeycolumbus
Link to comment
Share on other sites

It's possible to install in the cart, but expensive - needs cutting, a new board, ports, etc. And, it would only work for that one cart. I'm more looking for a universal solution that is possible for someone with minimal skills to build, uses minimal parts and is reverse-compatible with existing games without having to unplug controllers. It kind of has to be this way if anyone is going to create any games using 4 players.

 

The other ideas shown above all have fatal flaws - analog (resistive) schemes don't work due to the difficulty in reading them. Eckhard's is the closest to my idea but is overly complex and requires unplugging to use the second controller normally. I think mine is a lot like Eckhard's except mine just multiplexes two controllers per port and does not require 5 diodes per joystick.

 

Though interestingly, the application I had in mind was the same as some others - I recently played multiplayer Bomeberman and had a blast!

 

Does anyone see any reason why mine wouldn't work, or something easier (it currently would require one transistor and two resistors per port and a commonly-available MMF DE9 splitter cable.)

Link to comment
Share on other sites

batati,

I would of replied sooner but needed to spend some time looking at the schematics listed on AA to make sure I understoond how the Joysticks/paddles worked apart from them being the Atari standard of active Low.

 

I think you idea could work with a little modification...

1) Use a MOSFET not a Bipolar transitor, ZVN4306A would be a good choice as it is designed for logic level gate drive, Drain goes to the relevent Joysticks Pin 8 and the Source goes to Ground (0V) as per your original concept.

2) Connect a resistor from Pin 7 (+5V) on one Joystick to pin 5 and the Gate of its FET and repeat on the second Joystick but using pin 9.

 

This way you can select the Joystick being read by discharging the appropriate Paddle Cap (Left, pin 5 or Right, pin 9). Note: As the FET is on with its gate at logic High (=>2.5V) the one not being discharged will be the one being read. However I don't think it would be easy to modify the splitter cable itself which is what you appeared to be suggesting, a small PCB would probably be required either at the split end of the splitter cable (one for each Joystick) or one that plugs directly into the 2600 Joystick port with connectons for two Joystick on it.

 

Another option would be to make the modification to the Joysticks themselves, provided that non paddle games do not try to discharge the paddle caps at any time the paddle cap will charge shortly after power up thus enabling the Joystick and apart from that small delay it it should then operate just like a standard Joystick and you you would need is a standard splitter cable plus 1 reisistor and one MOSFET per Joystick.

Link to comment
Share on other sites

That's a good idea. I looked at the FAQ where it has the cartridge pinouts and I'd have to say it is possible. However, it might be alot of work depending on what parts would be needed to build it, and how much coding skill would be needed program it though. If some one else with more knowledge on this subject jumps in, they can perhaps shed more light on your idea.

 

Illya

 

Cool.

 

For educational purposes (I'd really love to learn more about this system), how can you tell if it's possible through those schematics?

 

In fact, what documentation should I read to help me better understand them?

 

 

@Wicky: I like the passthrough cartridge idea even more! And yea it would be a pain if someone yanked, but I wouldn't think it would happen TOO often now eh? :P

Link to comment
Share on other sites

batati,

I would of replied sooner but needed to spend some time looking at the schematics listed on AA to make sure I understoond how the Joysticks/paddles worked apart from them being the Atari standard of active Low.

 

I think you idea could work with a little modification...

1) Use a MOSFET not a Bipolar transitor, ZVN4306A would be a good choice as it is designed for logic level gate drive, Drain goes to the relevent Joysticks Pin 8 and the Source goes to Ground (0V) as per your original concept.

2) Connect a resistor from Pin 7 (+5V) on one Joystick to pin 5 and the Gate of its FET and repeat on the second Joystick but using pin 9.

 

This way you can select the Joystick being read by discharging the appropriate Paddle Cap (Left, pin 5 or Right, pin 9). Note: As the FET is on with its gate at logic High (=>2.5V) the one not being discharged will be the one being read. However I don't think it would be easy to modify the splitter cable itself which is what you appeared to be suggesting, a small PCB would probably be required either at the split end of the splitter cable (one for each Joystick) or one that plugs directly into the 2600 Joystick port with connectons for two Joystick on it.

 

Another option would be to make the modification to the Joysticks themselves, provided that non paddle games do not try to discharge the paddle caps at any time the paddle cap will charge shortly after power up thus enabling the Joystick and apart from that small delay it it should then operate just like a standard Joystick and you you would need is a standard splitter cable plus 1 reisistor and one MOSFET per Joystick.

Thanks for your input.

 

I thought I should mention that there are a few wrinkles. The paddle ports do not charge in a reasonable amount of time (like a few frames, if at all) without a pullup on each. So this adds a gate resistor to a MOSFET. Second, joysticks do not have conductors for pins 5 and 9 so it's not possible to put parts inside unless you replace the whole cable.

 

I agree that cutting the splitter cable may be tough as you may not know what color wire corresponds to each conductor. However if many were purchased in bulk, a sacrificial cable could be used to find the proper wires.

 

But I like your idea of joystick mods so much that I think that's one direction I will take this as an alternative. So the splitter could alternatively replace joystick cables with parts added to one of them.

 

Now that you say it, a MOSFET may be a better choice than a bipolar even if it doesn't save anything. But a single device should be able to control both, and one joystick would still work with existing games, correct?

Link to comment
Share on other sites

That's a good idea. I looked at the FAQ where it has the cartridge pinouts and I'd have to say it is possible. However, it might be alot of work depending on what parts would be needed to build it, and how much coding skill would be needed program it though. If some one else with more knowledge on this subject jumps in, they can perhaps shed more light on your idea.

 

Illya

 

Cool.

 

For educational purposes (I'd really love to learn more about this system), how can you tell if it's possible through those schematics?

 

Through the cartridge port you have access to three things that any electronic circuit needs that's plugged into the 2600: 1) Voltage to bring your circuit to life. 2) Ground which is needed for certain electronics to function. 3) Communication with the CPU.

 

In fact, what documentation should I read to help me better understand them?

 

There are documentation sites listed at Atariage, though most of them seem to lead to a 404 error:

http://www.atariage.com/2600/programming/index.html

 

The tutorials help quite a bit too, and some were written by active members on the forum:

http://www.atariage.com/2600/programming/2600_101/

 

And of course there's always throwing your question into a search engine to see what you find. :)

 

Illya

Link to comment
Share on other sites

Thanks for your input.

 

I thought I should mention that there are a few wrinkles. The paddle ports do not charge in a reasonable amount of time (like a few frames, if at all) without a pullup on each. So this adds a gate resistor to a MOSFET. Second, joysticks do not have conductors for pins 5 and 9 so it's not possible to put parts inside unless you replace the whole cable.

Doh! How did I miss NC to Joystick Pins 5 & 9, otherwise a flawless plan. As for the pull up I covered that in number 2 of my original post, see attachment.

 

I agree that cutting the splitter cable may be tough as you may not know what color wire corresponds to each conductor. However if many were purchased in bulk, a sacrificial cable could be used to find the proper wires.

While that is an issue I thinking more of...

a) How it could be done and look neat and

b) how easy it would be for the average person to do as you initially stated you wanted it easy enough for people to make their own.

 

Which is why I suggested a PCB at one end of the cable (would have to be VCS end as no pin 5 & 9 connection in the Joystick cable), admittedly not everyone can produce a PCB but I believe some people here have the facilites do do them at home or someone can get them made professionallyand either sell bare boards for peole to assemble or as finished units.

 

But I like your idea of joystick mods so much that I think that's one direction I will take this as an alternative. So the splitter could alternatively replace joystick cables with parts added to one of them.

Possible, but if you wire the joysticks directly to the ends of the splitter then...

a) if the splitter cable is like the one I had for my ST it will be short so not convienent

b) it permantly ties the joysticks together which people may not like

If you go for the internal mod I personally would replace the original Joystick cable with one that has all pins wired.

 

Now that you say it, a MOSFET may be a better choice than a bipolar even if it doesn't save anything. But a single device should be able to control both, and one joystick would still work with existing games, correct?

MOSFETs are better for this application as they are Voltage controlled, Bipolar are current controlled.

I don't see how one device could control both, while it is true that connecting pin 8 of one joystick directly to Pin 5 and pin 8 of the other one via an FET that one is effecively on and the other effectively off there is a problem in that the outpus (Direction and Fire) of both joysticks will always be connected on parallel.

Using my method with each joystick connected to ground by an FET this is not a problem as the buttons on the joystick with no connection to ground will float and have no effect on the other Joystick when pressed. With your menthod when the joystick switched by the FET is active pin 8 of the other jostick is connected to Pin5, as a result of this when a button on the "acitive" joystick is pressed it willl effecively connect Pin5 to ground and thus try to discharge the Capacitor which could result in all kinds of undesirable effects including joystick miss reads.

Joystick.bmp

Link to comment
Share on other sites

Well, the simplest design I've seen involved putting resistors between the joystick direction wires and the paddle input. The idea being that the paddle input value would be one of a series of fixed values, depending on which joystick (or series of joystcks) was being used. This approach would allow more than one stick to be read at once. I think the guy who came up with it sent me a 'proto' but I don't know what happened to it (he probably wanted it back).

 

At the time, we were discussing this issue. The solution I put forward was similar but used a DAC to hook the sticks to the pot input. Then multijoy came out and we didn't discuss it further.

 

IIRC multijoy switches between the extra ports. Both methods have their advantages. A switching system is probably easier to support and program for.

Link to comment
Share on other sites

MOSFETs are better for this application as they are Voltage controlled, Bipolar are current controlled.

I don't see how one device could control both, while it is true that connecting pin 8 of one joystick directly to Pin 5 and pin 8 of the other one via an FET that one is effecively on and the other effectively off there is a problem in that the outpus (Direction and Fire) of both joysticks will always be connected on parallel.

Using my method with each joystick connected to ground by an FET this is not a problem as the buttons on the joystick with no connection to ground will float and have no effect on the other Joystick when pressed. With your menthod when the joystick switched by the FET is active pin 8 of the other jostick is connected to Pin5, as a result of this when a button on the "acitive" joystick is pressed it willl effecively connect Pin5 to ground and thus try to discharge the Capacitor which could result in all kinds of undesirable effects including joystick miss reads.

If I understand it correctly, pin 5 for one joystick and pin 9 for another will not work, unfortunately. The problem is you can only dump all four paddle caps at once, you can't control them individually, so you can't get the needed 0/1 and 1/0 logic levels to read both. You can if you connect pin 5 to the input of the FET, then pin 8 from one joystick here, and pin 8 of the other joystick to the output of the FET.

 

I hadn't thought of the button, but I'm not quite sure I understand why this would be an issue. The ground on the two joysticks is provided by pin 5 and the FET output, respectively, and if one is high, there should be no effect, right?

Link to comment
Share on other sites

If I understand it correctly, pin 5 for one joystick and pin 9 for another will not work, unfortunately. The problem is you can only dump all four paddle caps at once.

 

I hadn't thought of the button, but I'm not quite sure I understand why this would be an issue. The ground on the two joysticks is provided by pin 5 and the FET output, respectively, and if one is high, there should be no effect, right?

 

I did not realise that, I though they could be discharged individually. In regard to the button problem image Joystick 2 (attached) shows the circuit for the two joysticks, in this case only the fire switches are shown for simplification, SW1 is for Joystick 1 and SW2 is for Joystick 2.

 

Pin5 = 0V (Paddle Cap discharged):

The FET is off and hense very high resistance, effectively open circuit so if SW2 is closed (both players pressing fire at once) it should have no effect on the input voltage at Pin 6, only the switch on the joystick being read (SW1) will pull the voltage at pin 6 down to 0V which is what you want.

 

Pin5 => 2.5V (Paddle Cap charging or charged):

The FET is on so SW2 will pull the voltage at Pin6 down to 0V when the fire button is pressed which is what you want. However if both players are pressing fire at the same time then with both switches closed pin 5 is connected to 0V (via SW1 to Pin 6 and then to pin 8 (0V) via SW2). This will try to pull the voltage at pin 5 down to 0V and will cause the circuit to ocsillate as the voltage on pin 5 drops below 2.5V and the FET switches off, with the FET off there is no longer a connection to 0V via SW2 and the Paddle cap start to charge again. Once the voltage on pin 5 is high enough for the FET to switch back on and SW2 (if still pressed) will re-connect it to 0V once again discharging the Paddle cap and the cycle starts again.

I hope that has expained the problem clearly enough.

 

Another relevtively simple and low component count solution would be as shown in image Joystick 3 (attached).

Both JK flip flops are in the same IC. R1 & C1 will hold the Clear Button low for roughly 0.6 * (C*R) at power up, a few milliseconds should do it, but ensure it is at least twice as long as the time it take the paddle cap the charge (charge resistors not shown). This will make the inital states Q = 0V (Read Joy2 & 4) and Not Q = 5V (Joy1 & 3 floating).

 

Everytime the clock input goes high by discharging the paddle cap and letting it recharge again the output state of Q and not Q will alternate allowing you to alternately read either Joy2 & 4 or Joy1 & 3. Any game that does not discharge the Paddle cap will read Joy2 & 4 only. Note 74LS73 is shown but I would use 74HC73 if you can find one or a 74HC107 (different pin numbers but functionally the same) if you can't.

Joystick2.bmp

Joystick3.bmp

Link to comment
Share on other sites

If I understand it correctly, pin 5 for one joystick and pin 9 for another will not work, unfortunately. The problem is you can only dump all four paddle caps at once.

 

I hadn't thought of the button, but I'm not quite sure I understand why this would be an issue. The ground on the two joysticks is provided by pin 5 and the FET output, respectively, and if one is high, there should be no effect, right?

 

I did not realise that, I though they could be discharged individually. In regard to the button problem image Joystick 2 (attached) shows the circuit for the two joysticks, in this case only the fire switches are shown for simplification, SW1 is for Joystick 1 and SW2 is for Joystick 2.

 

Pin5 = 0V (Paddle Cap discharged):

The FET is off and hense very high resistance, effectively open circuit so if SW2 is closed (both players pressing fire at once) it should have no effect on the input voltage at Pin 6, only the switch on the joystick being read (SW1) will pull the voltage at pin 6 down to 0V which is what you want.

 

Pin5 => 2.5V (Paddle Cap charging or charged):

The FET is on so SW2 will pull the voltage at Pin6 down to 0V when the fire button is pressed which is what you want. However if both players are pressing fire at the same time then with both switches closed pin 5 is connected to 0V (via SW1 to Pin 6 and then to pin 8 (0V) via SW2). This will try to pull the voltage at pin 5 down to 0V and will cause the circuit to ocsillate as the voltage on pin 5 drops below 2.5V and the FET switches off, with the FET off there is no longer a connection to 0V via SW2 and the Paddle cap start to charge again. Once the voltage on pin 5 is high enough for the FET to switch back on and SW2 (if still pressed) will re-connect it to 0V once again discharging the Paddle cap and the cycle starts again.

I hope that has expained the problem clearly enough.

I'm sure you have, but I'm a visual guy so I'll have to draw it out to understand.

Another relevtively simple and low component count solution would be as shown in image Joystick 3 (attached).

Both JK flip flops are in the same IC. R1 & C1 will hold the Clear Button low for roughly 0.6 * (C*R) at power up, a few milliseconds should do it, but ensure it is at least twice as long as the time it take the paddle cap the charge (charge resistors not shown). This will make the inital states Q = 0V (Read Joy2 & 4) and Not Q = 5V (Joy1 & 3 floating).

 

Everytime the clock input goes high by discharging the paddle cap and letting it recharge again the output state of Q and not Q will alternate allowing you to alternately read either Joy2 & 4 or Joy1 & 3. Any game that does not discharge the Paddle cap will read Joy2 & 4 only. Note 74LS73 is shown but I would use 74HC73 if you can find one or a 74HC107 (different pin numbers but functionally the same) if you can't.

This will work but I think it's getting too complex. If you're going to use an IC, instead of a flip-flop, you could just use a single pullup and a 74156 (dual quad demux with open collector output) and this will work for two joysticks per port with no need for FETs at the output, I think. A single chip could work for both ports, actually, but wiring might be a little funky.
Link to comment
Share on other sites

How about using paddle input A as the input for a joystick and paddle input B for the trigger alone? Each bit of the 4 direction bits of the joystick would be encoded by resistors to yield an analog voltage. Much like simple resistor based DACs like the Covox:

 

http://upload.wikimedia.org/wikipedia/commons/8/8d/Covox-Stecker.svg

 

Then one will just need to read the paddle from the register and decode them into movement. The advantage is, that it's an inexpensive and non-intrusive way of having 2 joysticks per joystick port.

Link to comment
Share on other sites

The problem with analog solutions is they are a pain to read on the 2600. They are read by measuring the time it takes to charge a cap. You can use low resistances that will complicate programming during blanking periods or use much if the time, and you can't use resistances too low because you need to account for tolerances and differences between consoles. Higher resistances must be read in the display kernel and these hog around 10 cycles per scanline in the kernel while digital solutions have no effect on the kernel. Then, the postprocessing of the analog data is likely to be cumbersome as well.

 

I still haven't tried any ideas out but if I do I will report back.

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...