Jump to content

Atari 7800 :- Controller remote pause function modification


This is something I've messed with on and off again over the years. After I discovered the controller pause modification you can do on the Sega Master System, it got me to thinking if something similar was possible on the 7800. And yes, it totally is as similar to the SMS, the pause line on the 7800 is always active and only when pulled low to ground does it trigger the pause. So I had played with it a bit using home made perfboard setups etc. But it wasn't really as useful or needed on the 7800 as it is on the SMS so I hadn't really invested much into it.

For those that might not be aware, the Master System also uses a 2-button controller like the 7800, but the SMS also has a pause button on the console itself just like the 7800. The difference it that many SMS games actually use the pause on the console as a 3rd button to pull up inventory or stats..etc. in quite a few games. As a result, playing those games can be a bother when you have to get up and press the pause on your console each time you want to access those extra functions in the game. So naturally a modification for the SMS was going to come about to allow a person to add a 3rd button to their controller and along with a simple logic circuit in the console, you can make impossible controller combinations trigger functions inside the system. In the case of the SMS it is using an extra button to trigger either an Left+Right direction combo, or Up+Down depending on how you wire it up. That in turn is fed to a logic OR gate so that when you press that button on the controller it sends that impossible combination to the chip and that in turn will trigger the reset function. 

The 7800 sharing essentially the same setup here can also be done in the same manner. However, due to the 2600 and 7800 internal logic regarding the paddles controllers; you can't use the Left+Right combo because it will confuse the console and sometimes thing paddles are plugged in. But aside from that, it is the same. 

Consoles Unleashed in the UK sells a lot of excellent quality modification and upgrade kits for various consoles. One of those they have the most kits for, is the Sega Master System. They provide their own pause button modification kit that is really well made and looks nice. Well, I ordered up a few several weeks back and got them in yesterday. I immediately went to work on installing one into my personal 7800 as I have 2 controllers that I've modified in the past to be able to use this setup. Here is what that looks like:

ITC78_A1DD_Port1_Pause_wiring1.jpg.b514f56e2759ca70123fa35dad60448d.jpg

As you can see it is a tiny PCB that will fit in lots of places on the 7800 main board. Again, it is designed for the SMS but will work just as well in the 7800. In the pic above you can see that I'm getting power and ground from the bypass cap just to the right of the 6502. The Player 1 Up and Dn connections are at the top of those two resistors right next to that cap. So you have half of what you need right there in that spot. 

ITC78_A1DD_Pause_wiring2.jpg.d762306ae0687b45aabcf45bad067d53.jpg

Above is where the rest of the connections in my setup are going. The small blue wire that runs by itself to that single point below the RIOT IC is the reset trigger. This is an unused via that is present on every single 7800 main board revision I've see and always in this same spot. I assume it was there for testing but is also makes a great place to attach the PB pad from that board to trigger the pause function. The other two blue wires are going into cleaned out unused vias so they pass back down on the bottom of the board to attach to a similar set of resistors for the player 2 Up and Down connections. I did it this way because I didn't want to trim the RF shielding. The resistors are outside of the shielding for the player 2 controller port next to the Reset switch.

ITC78_A1DD_Port2_pause_wiring.jpg.21071a7cf66d26f3612fdd83e31b2156.jpg

And this is where the two wires come back through to the bottom of the PCB to attach to the resistors mentioned above. BTW, the Up and Down combo wiring attaches to Pins 1 and 2 on the controller ports.

And that's it! Now with this in place, I can use my modified controllers to remote activate the pause on the 7800 console from either controller port.

One thing to mention about using this kit from Console's Unleashed...

You have to wire both controller ports! The reason is because instead of using an OR logic in this setup, they are using a NOR logic chip. As a result, the controller ports are always registering high. If you don't connect up the second set of wires, then the logic on the pause board in the kit ends up triggering the pause constantly. It needs to see that +5 from the port pins in order to maintain the logic. So if you only wanted one port to activate this, you need to use a different logic IC. Also, the kits from consoles unleashed has extra stuff I don't normally need as it comes with additional small PCBs to mount a 3rd button to and provide as a template to drill the hole into your SMS controllers for mounting it. An excellent touch to be sure, but I don't like the SMS control pads compared to other controllers and wouldn't be using them on a 7800 anyway. But they aren't that expensive and I might need those boards in the future so who knows? I might go into details on what is required on the controller side someday for this modification to work as there is work required in the controllers. I think I've covered it elsewhere online but might do that as a follow up someday.

Here is a link to Consoles Unleashed in the UK and again, they have some excellent quality kits on hand to help modders and tech with making their projects look that more professional and easier to install.

https://www.consolesunleashed.com/

6 Comments


Recommended Comments

alex_79

Posted (edited)

Nice mod and very clean job!

A couple of notes:

1- You don't need to wire the second port, but you cannot just leave the inputs of a logic gate unconnected, else they'll show erratic behavior, electrical noise and increased power consumption (especially with HC/HCT family ICs like in this case).

Simply tie "2U" and "2D" inputs on the mod board to +5V if you don't want the pause function for the second port.

 

2- Consider adding a switch to disable the mod (e.g. break the connection between the "PB" output of the board and RIOT pin 21). Else, some controllers such as driving controllers and trackballs will trigger the pause (or B&W switch in 2600 mode) function.

This can also happen when a game uses the ports as outputs: for example, pins 1 and 2 ("up" and "down" in a joystick) are used to interface with an Atarivox, and the RIOT outputs can be set simultaneously LOW by the code while trying to communicate with the device, even if nothing is plugged in the port, and that again will trigger the pause/B&W switch.

 

Given the number of different controllers and devices (and the new ones that the homebrew community keeps developing), and the great flexibility of the 2600/7800 controller ports I/O pins, there isn't a combination  that is really "impossible". There will always be some game or device that will trigger it, so you need to be able to disable it if needed.

Edited by alex_79
CrossBow

Posted

8 hours ago, alex_79 said:

Nice mod and very clean job!

A couple of notes:

1- You don't need to wire the second port, but you cannot just leave the inputs of a logic gate unconnected, else they'll show erratic behavior, electrical noise and increased power consumption (especially with HC/HCT family ICs like in this case).

Simply tie "2U" and "2D" inputs on the mod board to +5V if you don't want the pause function for the second port.

 

2- Consider adding a switch to disable the mod (e.g. break the connection between the "PB" output of the board and RIOT pin 21). Else, some controllers such as driving controllers and trackballs will trigger the pause (or B&W switch in 2600 mode) function.

This can also happen when a game uses the ports as outputs: for example, pins 1 and 2 ("up" and "down" in a joystick) are used to interface with an Atarivox, and the RIOT outputs can be set simultaneously LOW by the code while trying to communicate with the device, even if nothing is plugged in the port, and that again will trigger the pause/B&W switch.

 

Given the number of different controllers and devices (and the new ones that the homebrew community keeps developing), and the great flexibility of the 2600/7800 controller ports I/O pins, there isn't a combination  that is really "impossible". There will always be some game or device that will trigger it, so you need to be able to disable it if needed.

I wasn't aware of the AtariVox functions being affected by this? I will have to give that try as one of the other many mods on my 7800 is an Audio input jack that I plug my AtariVox into to be mixed within the console and come out with the rest of the audio so I don't have to connect it to separate external speakers.

But the reason I use Up+Dn is not just because this pause kit also does, but because I originally years ago was using the Left+right combo and the Harmony cart did NOT care for it at all. I do have a diode pair inside my controllers to isolate the signals from each other independently, but the actual SMS kits only use a pair of 220ohm resistors off the inputs.

As for the driving controller and trackballs? I own them, but I never use them on my 7800 as I just don't play any games that use them.

 

alex_79

Posted

3 hours ago, CrossBow said:

I wasn't aware of the AtariVox functions being affected by this?

The AtariVox will work just fine (the gate input are high impedance and do not affect the levels of the pins), but the pause mod can be triggered while the Atari communicates with the device. Whether this causes issues or not depends on the specific game. The fact that current games work fine doesn't exclude the possibility that future ones might have issues.

 

The SNES2Atari adapter supported, for example, by "Attack of the PETSCII Robots" for the 7800, uses pins 1 and 2 to send the clock and latch signal to the SNES controller. The Savekey uses pins 3 and 4 for the I2C serial data and clock protocol. The "Compumate" for the 2600 uses pins 1-4 on both ports for the bankswitching of the Computer ROM.

There are some roms that use the ports to communicate with a computer serial port, or to drive external devices, and it's possible, for example, to use them to connect two consoles and play multiplayer games that way...

 

 

The 2600RGB mod uses a similar method of "impossible combination of inputs" to add an extra SWITCH on the controller to allow for remote RESET and SELECT switches, as well as an hardware PAUSE (it halts the CPU) and a PALETTE select function.

That proved to be incompatible with the mentioned trackball games (which caused disappointment to the unaware customers), but also in other cases which are less obvious:

e.g. "Track and Field" is unplayable (with a standard joystick, not only with the "Track and Field" controller that allows to press left and right simultaneously) if you have a RGB mod with the extra function wired to the controller port. And doesn't matter if you actually have the extra switch installed on the joystick.  That's because, for whatever reason, the code in the game briefly pulses pins 1-4 LOW in both ports on each frame!

 

My point is that the pins on the controller ports are general purpose Input/Output ones, and the game code has full control over them. Not only different controllers can pull up/down different combination of inputs, but the code itself can drive them directly, even when nothing is connected to the port, and the pause mod cannot tell the difference. The possibilities are infinite, and new games and controller/devices keeps being developed. That's why I suggest to have a switch to disable the function: if you ever encounter a game (or controller or device) that conflicts with it, you can just temporarily turn it off.

CrossBow

Posted

3 hours ago, alex_79 said:

The AtariVox will work just fine (the gate input are high impedance and do not affect the levels of the pins), but the pause mod can be triggered while the Atari communicates with the device. Whether this causes issues or not depends on the specific game. The fact that current games work fine doesn't exclude the possibility that future ones might have issues.

 

The SNES2Atari adapter supported, for example, by "Attack of the PETSCII Robots" for the 7800, uses pins 1 and 2 to send the clock and latch signal to the SNES controller. The Savekey uses pins 3 and 4 for the I2C serial data and clock protocol. The "Compumate" for the 2600 uses pins 1-4 on both ports for the bankswitching of the Computer ROM.

There are some roms that use the ports to communicate with a computer serial port, or to drive external devices, and it's possible, for example, to use them to connect two consoles and play multiplayer games that way...

 

 

The 2600RGB mod uses a similar method of "impossible combination of inputs" to add an extra SWITCH on the controller to allow for remote RESET and SELECT switches, as well as an hardware PAUSE (it halts the CPU) and a PALETTE select function.

That proved to be incompatible with the mentioned trackball games (which caused disappointment to the unaware customers), but also in other cases which are less obvious:

e.g. "Track and Field" is unplayable (with a standard joystick, not only with the "Track and Field" controller that allows to press left and right simultaneously) if you have a RGB mod with the extra function wired to the controller port. And doesn't matter if you actually have the extra switch installed on the joystick.  That's because, for whatever reason, the code in the game briefly pulses pins 1-4 LOW in both ports on each frame!

 

My point is that the pins on the controller ports are general purpose Input/Output ones, and the game code has full control over them. Not only different controllers can pull up/down different combination of inputs, but the code itself can drive them directly, even when nothing is connected to the port, and the pause mod cannot tell the difference. The possibilities are infinite, and new games and controller/devices keeps being developed. That's why I suggest to have a switch to disable the function: if you ever encounter a game (or controller or device) that conflicts with it, you can just temporarily turn it off.

Wow, all excellent info! Thanks! Well in my case, I believe I still have my channel select switch in place on my console and since I removed the RF from it over a year ago to add in the audio input jack, seems as good an option for making it useful again as possible? I will reform the leads on it a bit so I can try and move it further back a tiny bit to make it easier to reach.

CrossBow

Posted

On 3/31/2024 at 5:08 AM, alex_79 said:

The AtariVox will work just fine (the gate input are high impedance and do not affect the levels of the pins), but the pause mod can be triggered while the Atari communicates with the device. Whether this causes issues or not depends on the specific game. The fact that current games work fine doesn't exclude the possibility that future ones might have issues.

 

The SNES2Atari adapter supported, for example, by "Attack of the PETSCII Robots" for the 7800, uses pins 1 and 2 to send the clock and latch signal to the SNES controller. The Savekey uses pins 3 and 4 for the I2C serial data and clock protocol. The "Compumate" for the 2600 uses pins 1-4 on both ports for the bankswitching of the Computer ROM.

There are some roms that use the ports to communicate with a computer serial port, or to drive external devices, and it's possible, for example, to use them to connect two consoles and play multiplayer games that way...

 

 

The 2600RGB mod uses a similar method of "impossible combination of inputs" to add an extra SWITCH on the controller to allow for remote RESET and SELECT switches, as well as an hardware PAUSE (it halts the CPU) and a PALETTE select function.

That proved to be incompatible with the mentioned trackball games (which caused disappointment to the unaware customers), but also in other cases which are less obvious:

e.g. "Track and Field" is unplayable (with a standard joystick, not only with the "Track and Field" controller that allows to press left and right simultaneously) if you have a RGB mod with the extra function wired to the controller port. And doesn't matter if you actually have the extra switch installed on the joystick.  That's because, for whatever reason, the code in the game briefly pulses pins 1-4 LOW in both ports on each frame!

 

My point is that the pins on the controller ports are general purpose Input/Output ones, and the game code has full control over them. Not only different controllers can pull up/down different combination of inputs, but the code itself can drive them directly, even when nothing is connected to the port, and the pause mod cannot tell the difference. The possibilities are infinite, and new games and controller/devices keeps being developed. That's why I suggest to have a switch to disable the function: if you ever encounter a game (or controller or device) that conflicts with it, you can just temporarily turn it off.

Alex, I tested my Avox+ and SNES2Atari adapter and didn't encounter any issues on my primary 7800. But, to be on the safe side. I did cut all the traces to the channel select switch and run new wire from the pause board and back to the RIOT to a slightly modified channel select switch to allow me to turn that pause line on/off just in case. It would be better if I could find switches just like those used originally but with longer switches so they can poke through the back of the shell better. Currently I've been reforming the pins on the bottom and using the front set of vias closest to the edge of the board to mount standard difficult/channel select switches. I did it on both my main 7800 and on an extra in the lab that I actually sold last night in a record 20min time.

Anyway, thank you again for that suggestion!

 

CrossBow

Posted

Meant to add an update that while I've still not encountered any issues with this pause mod on the Avox games I've played it with, I did finally start to have some issues with it when I got my physical copy of EXO from this past PRGE 2024 event. 

The issue, is that sometimes pressing the pause button on my controller, would actually cause the console to quickly pause and then unpause. So it could take a few tries to finally get it to work right. 

The issue as I could tell off the bat...was bouncing of the signal. This is because I have that pause signal going straight to the pause to the RIOT. I though the logic on the pause mod board would correct for this, but apparently it doesn't. The fix on this was simple, I just had to relocate where the pause signal goes back to the beginning of the capacitor that the actual pause button uses to debounce the signal normally.

The only other issue, I've found is that even with the down/up combo being used, I've found that some of my NES style controllers, appear to make it easy for the down and up to be pressed just playing a game normally. So as a result, just moving around on the screen in up down directions quickly would also cause the pause to trigger mid-game.

I've corrected for this by applying a little kapton tape to the contact pads to lessen their contact surface that the membranes can touch. But ultimately, it might just be something that will happen when using dpad type controllers. My joystick arcade type controllers do NOT have this issue of course.

 

Guest
Add a comment...

×   Pasted as rich text.   Restore formatting

  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...
×
×
  • Create New...