Jump to content
IGNORED

7800 buttons - Why are they wired as they are?


tta583

Recommended Posts

I have been messing around, as of late, with converting some digital 2 button capable controllers in the spirit of Stargunner’s wonderful Radica Space Invaders TV Game to 7800 joystick conversion.

 

http://www.atariage.com/forums/index.php?showtopic=72198

 

Given the pin out and button diagrams from the faq:

 

http://www.atariage.com/7800/faq/index.htm...mID=7800#cat2_9

 

I can easily recreate the circuit but I have a question on the function of the bottoms. In a typical 2600 stick, and when looking at the compass direction of the 7800, all the functions are detected by shorting a given wire to ground. For example short pin 1, the white wire, to ground at pin 8, which is the black wire, and the console knows the player is pushing UP on the stick. Same deal on the 2600 single fire button, connect pin 6 (Orange) to 8 (blank) = FIRE!!!

 

What is going on with the buttons in the 7800?? There is an unused pin (5 or 9) that could have been use to “ground” the 2nd button so that it worked just like all the other pins. Instead we have this weird path back to the console. As I read the diagram in the FAQ a button press connects through to pin 9 or 5, depending on the button, AND that 620ohm resistor. To me you are taking what ever voltage is on pin 6, dumping some of it to ground via the 620, but allowing the residual back to the console (via 9 or 5 depending on the button). Is there some IC or something or other that uses this signal back from the controller for something??? I am guessing that it is used for something since the buttons do not short directly to ground like all of the other functions.

 

OR…am I looking at this in the wrong way. Does the 7800 want the feedback to the console, as opposed to a short to ground, to detect a button push thus the resistor is there to make that path the path of least resistance when in 7800 mode. In 2600 mode does the console “open” pins 5 and 9 (infinite resistance) so that, even with the resistor, the buttons go to ground as that is now the path of least resistance and, thus, function like a 2600…..or am I just thinking to much into this????

Link to comment
Share on other sites

I've often wondered about this too. I know the only way would be to use one of the paddle inputs, instead of this weird AND gate, but when the 7800 is usign a 7800 Cart that has Joystick controls using 2 buttons, the pins for the paddles aren't being used, so they are free. right? And there aren't any 2 button paddle games, so when playing a paddle game - obviously the pins are being used for the paddle.

Link to comment
Share on other sites

The only easy way to remain compatible with 2600/800 joysticks and have 2 buttons is to have the 2nd one coming into a paddle input.

 

Paddle inputs work by applying resistance to +5V, then sampling it each VBlank.

 

It's a bit more complicated than that. Whoever designed the control scheme was willing to add some complexity to the console to minimize cost on the crontrollers.

 

In 2600 mode, the fire button pin has a "normal" pullup on it. The paddle inputs will typically be floating, but they may be pulled down hard to ground depending upon what software writes to the VBLANK register. The normal pullup is no match for the 680 ohm resistors; when either button is pushed, the fire button input will be pulled down enough to register a clean "low"; the paddle input will be pulled up a little bit, but not enough to register a "high".

 

In 7800 mode, the fire button will get a much stronger pullup. This pullup will overpower the 680 ohm resistors. If the paddle inputs are floating, they will register a fire button push, but the "normal" fire button input will not. If the paddles are switched to ground (using VBLANK) or if a 2600 joystick fire button is pushed, the "normal" fire button input will see a "low", but the paddle inputs will see nothing.

 

Clever design, though my own taste would have favored adding a transistor and a couple more resistors to each controller.

Link to comment
Share on other sites

OK, I "think" I am getting this. Please bear with me, I am teaching myself this stuff as I go along. Taking it out helps me!!

 

First off, after posting it occurred to me there was a paddle issue here I was not factoring in. Where can I get a map of the pins for the paddle?

 

 

It's a bit more complicated than that. Whoever designed the control scheme was willing to add some complexity to the console to minimize cost on the crontrollers.

 

In 2600 mode, the fire button pin has a "normal" pullup on it. The paddle inputs will typically be floating, but they may be pulled down hard to ground depending upon what software writes to the VBLANK register. The normal pullup is no match for the 680 ohm resistors; when either button is pushed, the fire button input will be pulled down enough to register a clean "low"; the paddle input will be pulled up a little bit, but not enough to register a "high".

 

I was just reading on pullups, downs, and "floating" as luck would have it. OK, so if I follow along in 2600 mode pin 6 is pulledup, or fed a constant voltage so that it is a definite high. I am guessing there is an IC in the console, at the other end of pin 6 registering that high and waiting for a low to trigger it?? I am going to guess 5v is the pullup value? Push the button you connect through to the 680ohm resistor. Pin 6 is pulled up with enough voltage that, despite the resistor, it gets pulled low enough, to ground via pin 8 out the back of the 680, to register a low.

 

In 7800 mode, the fire button will get a much stronger pullup. This pullup will overpower the 680 ohm resistors. If the paddle inputs are floating, they will register a fire button push, but the "normal" fire button input will not. If the paddles are switched to ground (using VBLANK) or if a 2600 joystick fire button is pushed, the "normal" fire button input will see a "low", but the paddle inputs will see nothing.

 

Clever design, though my own taste would have favored adding a transistor and a couple more resistors to each controller.

 

Now in 7800 mode you have a larger pullup, as you said. It will, again, or can, overpower the 680 if connected through via button push. You said if the paddle inputs are floating.. I am guessing the paddle inputs are 5 and 9? Floating meaning they are give no specific pullup (fed a voltage) or pulldown (forced to a ground). This is decided via programming, correct? Now for the how it works part...If they are floating then you can use the paddle inputs to detect button 1 or 2. The 2 paths are to ground via the 620 or back up 5 or 9. 5 or 9, depending on the button, would be the path of least resistance so the paddle inputs, on the other end of those pins, detects the "button". Following through if you (the program) switch the paddle inputs to ground (grounds pin 5 and 9) a button push will just flat out ground pin 6 leaving the logic at the head of pin 6 to be able to detect the push.

 

Sound sort's maybe about right?

Link to comment
Share on other sites

Why yes, I think it does!! The table shows, I think, what is being discussed. Let's see if I can get this...talking it out again.

 

 

The directions are pretty much straight forward. P1 through 4 are pulled up (5.0 for 1 and 2, about 3.5 for 3 and 4). When a direction is pushed you short to ground (p8) and the given voltage goes low (.1-.2) which is detected by some IC in the console.

 

Now to the buttons. In 7800 mode p6 is high (5v). A button push shorts 6 to 5 or 9, depending on the button. Given the previous conversations I am going to say going high on 5 or 9 is then "detectable" by the paddle controllers and registers as a button push for software (game) written to watch for this. Up to this pint 5 and 9 were floating (no specific pull up or down). Guess here (the learning part!) that this is the case because of the 2 paths, strait up the pin (5 or 9) or through the resistor, the path up the pin is favorable (no resistance). Now in 2600 mode the console end of pins 5 and 9 are switch open. When a button is pushed there is one path to ground, through the resistor, which is then detectable by the old school 2600 method when pin 6 goes low.

Link to comment
Share on other sites

Gee... A lot of discussion over such a simple thing.

 

7800 joysticks are set so either button will work with a 2600 game, yet the buttons are independent for 7800 games (if desired). You don't need to delve into the hardware that much. It's all part of the 7800 runs 2600 games concept.

Link to comment
Share on other sites

Gee... A lot of discussion over such a simple thing.

 

7800 joysticks are set so either button will work with a 2600 game, yet the buttons are independent for 7800 games (if desired). You don't need to delve into the hardware that much. It's all part of the 7800 runs 2600 games concept.

 

 

My thoughts exactly, Whippy shit !! It's 2 resistors and an extra line!! WOW!! 2 fire buttons!! What a technical marvel :roll:

Link to comment
Share on other sites

My thoughts exactly, Whippy shit !! It's 2 resistors and an extra line!! WOW!! 2 fire buttons!! What a technical marvel :roll:
Well, it is nice to see a detailed explanation of how it all works (even though I had already figured out the gist of it on my own). I remember wondering about it myself when I first got into the 7800, so it's not an off-the-wall question.

 

One thing I'm not sure I understand yet (and forgive me if this is a stupid question or if it's already been explained elsewhere) ... if the 7800 is capable of detecting when the paddle inputs are pulled to ground by the dual action buttons, would anything prevent other Atari systems that use paddles (the 8-bit computers, for instance) from doing the same thing? Could there be games for the 2600 or the 400/800 that use both fire buttons independently, or is this something unique about the 7800 that the other machines cannot replicate?

Edited by jaybird3rd
Link to comment
Share on other sites

"My thoughts exactly, Whippy shit !! It's 2 resistors and an extra line!! WOW!! 2 fire buttons!! What a technical marvel "

 

Was it necessary to post that Silver Surfer or whatever your current name is? (Pretty sure you changed it or something)

 

No harm in someone being interesting in how the 7800 works, it is a Atari 7800 board after all. No reason to be rude.

Edited by Atariboy
Link to comment
Share on other sites

One thing I'm not sure I understand yet (and forgive me if this is a stupid question or if it's already been explained elsewhere) ... if the 7800 is capable of detecting when the paddle inputs are pulled to ground by the dual action buttons, would anything prevent other Atari systems that use paddles (the 8-bit computers, for instance) from doing the same thing? Could there be games for the 2600 or the 400/800 that use both fire buttons independently, or is this something unique about the 7800 that the other machines cannot replicate?

Already been done, the Omega Race booster control for the 2600. It has three separate fire buttons, but the game uses two of them for the same thing (thrust).

Link to comment
Share on other sites

"My thoughts exactly, Whippy shit !! It's 2 resistors and an extra line!! WOW!! 2 fire buttons!! What a technical marvel "

 

Was it necessary to post that Silver Surfer or whatever your current name is? (Pretty sure you changed it or something)

 

No harm in someone being interesting in how the 7800 works, it is a Atari 7800 board after all. No reason to be rude.

 

 

It wasn't directed at anyone, I was just making a comment on how simple it was fo rthem to make the 7800 have the 2 button and 1 button mode on the controller. Sorry if it seemed rude, that was not my intent at all.

Link to comment
Share on other sites

Already been done, the Omega Race booster control for the 2600. It has three separate fire buttons, but the game uses two of them for the same thing (thrust).
Interesting. I seem to recall someone saying that the 400/800 and 2600 couldn't use dual fire buttons in the way the 7800 did, but I guess that's not the case.
Link to comment
Share on other sites

One thing I'm not sure I understand yet (and forgive me if this is a stupid question or if it's already been explained elsewhere) ... if the 7800 is capable of detecting when the paddle inputs are pulled to ground by the dual action buttons, would anything prevent other Atari systems that use paddles (the 8-bit computers, for instance) from doing the same thing? Could there be games for the 2600 or the 400/800 that use both fire buttons independently, or is this something unique about the 7800 that the other machines cannot replicate?

 

 

Humm, that is a good question. Now, if I understand this correctly I "think" you have it backwards. The paddle controllers , or rather the pin to them, are pulled up when a button is pressed. It was posted above that the controllers read a voltage to determine movement, or actually a range of voltages controlled by the pot in the handset. If I am following along the software (game) is looking for some voltage, like right at 5v (Mitch's table, thanks Mitch!). I would guess that the game has to be programed to have the controller look for close to the max value as, since it appears to be a floating circuit, it could pick up some interference and fluxuate some all on its own. Looking for "any" value in the paddle controller my lead to false "fires". Make sense or am I off base? If I am correct then I would think the answer would be Yes (given there is not some BIOS type of software in a 7800, or some hardware control available to games (software) in the 7800 that the 8bits lack).

 

As to the other comments, well at first I was not going to even dignify them with a response but, well, I changed my mind. Here is the deal, I am tyring to teach myself some electronics. I also happen to like and collect Atari. I am looking in to some controller projects as a teaching aid. I also like to understand how things work as opposed to just duplicating them (IE just duping the wiring) If you don't care then don't read the thread. Beyond that, thanks to the others who are chiming in and helping out!!

Link to comment
Share on other sites

Already been done, the Omega Race booster control for the 2600. It has three separate fire buttons, but the game uses two of them for the same thing (thrust).
Interesting. I seem to recall someone saying that the 400/800 and 2600 couldn't use dual fire buttons in the way the 7800 did, but I guess that's not the case.

Or since there are two paddle (analog) inputs, you could make a controller with an analog stick, d-pad, and one fire button. Plus you could support up to 7 more buttons by using the player 2 jack (or 12 by using a keypad). And you have three non-momentary switches from the color/bw and difficulty settings.

 

The processor time to read all that might screw you up though.

Edited by jsoper
Link to comment
Share on other sites

If I am following along the software (game) is looking for some voltage, like right at 5v (Mitch's table, thanks Mitch!).

 

The paddle inputs do NOT sense analog voltage. They simply indicate whether the voltage on the pin is above or below a certain threshhold, and allow a means of grounding it. In addition, there is a cap tied between each paddle pin and ground.

 

The effect of this is that when the grounding circuit is released, the cap can charge through the paddle controller (if one is plugged in). Software can then watch to see how long it takes for the paddle pin to reach the switching threshhold (if it ever does) after releasing the grounding circuit.

 

In a 7800 controller, pushing one of the fire buttons will connect the "main" fire button pin to a paddle pin; the paddle pins also have 680 ohm pulldowns within the controller. Because the pullup on the fire button in anything other than a 7800 in 7800 mode is fairly week, it can't pull the paddle pin anywhere near the switching threshhold, and thus software can't see anything useful on the paddle pins. In 7800 mode, there is an extra-strong pullup on the fire button pin; it will overpower the 680 ohm resistors and get the paddle pins up to the switching threshhold.

 

The controller design is a little esoteric; while it offers compatibility with the 2600 and other systems, it does not offer two-button functionality with them.

 

IMHO, it would have been better if Atari had produced a three-button controller and had one of the buttons behave like the "normal" 2600 button; the other two would be wired to the paddles. But maybe Atari didn't want to have three buttons.

Link to comment
Share on other sites

Also, keep this in mind - if you are an Atari ST owner, do not plug in a 7800 joystick or joystick into any of the detachable keyboards. The resistor pullup in the controllers doesn't sit well with the keyboards "IKBP" (Intelligent Keyboard Protocol) which essentially halts the keyboard/mouse until you unplug the controller.

 

 

 

 

Curt

Link to comment
Share on other sites

If I am following along the software (game) is looking for some voltage, like right at 5v (Mitch's table, thanks Mitch!).

 

The paddle inputs do NOT sense analog voltage. They simply indicate whether the voltage on the pin is above or below a certain threshhold, and allow a means of grounding it. In addition, there is a cap tied between each paddle pin and ground.

 

The effect of this is that when the grounding circuit is released, the cap can charge through the paddle controller (if one is plugged in). Software can then watch to see how long it takes for the paddle pin to reach the switching threshhold (if it ever does) after releasing the grounding circuit.

 

In a 7800 controller, pushing one of the fire buttons will connect the "main" fire button pin to a paddle pin; the paddle pins also have 680 ohm pulldowns within the controller. Because the pullup on the fire button in anything other than a 7800 in 7800 mode is fairly week, it can't pull the paddle pin anywhere near the switching threshhold, and thus software can't see anything useful on the paddle pins. In 7800 mode, there is an extra-strong pullup on the fire button pin; it will overpower the 680 ohm resistors and get the paddle pins up to the switching threshhold.

 

 

 

OK, that makes sense, but (Now here is where I hi-jack my own thread and head off in a different direction!!) I am a little fuzzy on the function of the paddle controller when using a real paddle. I would have guessed it detected an analog voltage, not just a voltage, so that it could detect just where in the range the paddle was. So how does it know you are going right, left ,etc. and when you stop?

 

Oh, and just so that I understand the terms:

 

In 7800 mode, there is an extra-strong pullup on the fire button pin; it will overpower the 680 ohm resistors and get the paddle pins up to the switching threshhold.

 

When you say over powers the resister to me that means you have enough pullup voltage that even with the bleed off to ground through the resistor there is still enough "left over" to get the paddle pins up to the switching threshold. Is that right?

Edited by tta583
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...