tta583 Posted March 14, 2006 Share Posted March 14, 2006 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???? Quote Link to comment Share on other sites More sharing options...
Rybags Posted March 14, 2006 Share Posted March 14, 2006 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. Quote Link to comment Share on other sites More sharing options...
Danno Posted March 14, 2006 Share Posted March 14, 2006 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. Quote Link to comment Share on other sites More sharing options...
supercat Posted March 15, 2006 Share Posted March 15, 2006 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. Quote Link to comment Share on other sites More sharing options...
tta583 Posted March 15, 2006 Author Share Posted March 15, 2006 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? Quote Link to comment Share on other sites More sharing options...
+Mitch Posted March 15, 2006 Share Posted March 15, 2006 Take a look at this page and see if it helps any. Mitch Quote Link to comment Share on other sites More sharing options...
tta583 Posted March 15, 2006 Author Share Posted March 15, 2006 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. Quote Link to comment Share on other sites More sharing options...
Harry_Dodgson Posted March 15, 2006 Share Posted March 15, 2006 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. Quote Link to comment Share on other sites More sharing options...
Shawn Posted March 15, 2006 Share Posted March 15, 2006 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 Quote Link to comment Share on other sites More sharing options...
jaybird3rd Posted March 15, 2006 Share Posted March 15, 2006 (edited) My thoughts exactly, Whippy shit !! It's 2 resistors and an extra line!! WOW!! 2 fire buttons!! What a technical marvel 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 March 15, 2006 by jaybird3rd Quote Link to comment Share on other sites More sharing options...
Atariboy Posted March 15, 2006 Share Posted March 15, 2006 (edited) "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 March 15, 2006 by Atariboy Quote Link to comment Share on other sites More sharing options...
jsoper Posted March 15, 2006 Share Posted March 15, 2006 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). Quote Link to comment Share on other sites More sharing options...
Shawn Posted March 15, 2006 Share Posted March 15, 2006 "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. Quote Link to comment Share on other sites More sharing options...
Atariboy Posted March 15, 2006 Share Posted March 15, 2006 No problem, it just came out that way and kind of surprised me since I found the discussion interesting. Quote Link to comment Share on other sites More sharing options...
jaybird3rd Posted March 15, 2006 Share Posted March 15, 2006 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. Quote Link to comment Share on other sites More sharing options...
tta583 Posted March 15, 2006 Author Share Posted March 15, 2006 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!! Quote Link to comment Share on other sites More sharing options...
jsoper Posted March 15, 2006 Share Posted March 15, 2006 (edited) 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 March 15, 2006 by jsoper Quote Link to comment Share on other sites More sharing options...
supercat Posted March 15, 2006 Share Posted March 15, 2006 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. Quote Link to comment Share on other sites More sharing options...
Curt Vendel Posted March 15, 2006 Share Posted March 15, 2006 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 Quote Link to comment Share on other sites More sharing options...
+Mitch Posted March 16, 2006 Share Posted March 16, 2006 (Mitch's table, thanks Mitch!). Actually, that page is on John's (jsoper) web site, I just linked to it. Mitch Quote Link to comment Share on other sites More sharing options...
tta583 Posted March 16, 2006 Author Share Posted March 16, 2006 (edited) 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 March 16, 2006 by tta583 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
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.