Work in Progress
This install guide will show you how to install a pause button switch inside the Sega Master System controller and a logic circuit inside the console that allows the switch to work. Mods using Mega Drive and NES controllers exist, but this pause button mod is designed to retain the use of original controllers whilst having the benefit of a pause button.
To understand how to make a controller pause button work inside a Master System it is important to understand logic gates.
A | B | Q |
0 | 0 | 0 |
1 | 0 | 1 |
0 | 1 | 1 |
1 | 1 | 1 |
A | B | Q |
0 | 0 | 0 |
1 | 0 | 0 |
0 | 1 | 0 |
1 | 1 | 1 |
A | B | Q |
0 | 0 | 1 |
1 | 0 | 0 |
0 | 1 | 0 |
1 | 1 | 0 |
'A' and 'B' are inputs and 'Q' is the output. The state of 'A' and 'B' determines the state of 'Q'.
In the case of the Master System controller, '0' (logic low) represents a grounded state and '1' (logic high) represents a +5V connection.
The unpressed buttons on the Master System controller; Up, Down, Left, Right, A, and B are all a 1 (logic high) to begin. When the controller buttons are pressed, the contacts are grounded. This means the controller buttons are active low.
Because there are no extra buttons on the controller, two buttons are needed to simulate an extra pause button. A and B can not be used because together they serve an obvious function within games, the same applies to Down and Left, Up and Right, etc. For this reason the button combination Up and Down, or Left and Right can be used. These are known as impossible button combinations. The impossible button combination Up and Down might be a better option to use because on a platform game heavy system, Up and Down are probably used less often than Left and Right, therefore there may be less chance of accidentally triggering a pause due to a worn out controller D-Pad which could accidentally actuate both Left and Right during normal play. For this reason, Up and Down will be used in this guide.
To "press" the button combination Up and Down, a tactile On/Off switch can be used (now called button 'Z' in this guide).
The switch (Z) needs one side connecting to the controller pads for Up and Down respectively, and the opposite side of the switch (Z) connecting to Ground.
(IMAGE OF CONTROL PAD CIRCUIT WITH LABELS AND BUTTON DIAGRAM TO GO HERE)
When 'Z' is pressed, the Up and Down controller pads are grounded.
If these two signals from the controller for Up and Down are fed into a logic OR Gate, the output of the OR Gate can be used to ground the Master System console's physical pause button.
(IMAGE OF LOGIC GATE CHIP AND CONSOLE PAUSE BUTTON HERE)
Look at the Truth Table for the OR Gate.
If Up and Down are logic high by default due to how the controller buttons work, the output of the OR Gate is also logic high which is the pause button's normal state.
B (UP) | A (DOWN) | Q (Master Pause) | |
0 | 0 | 0 | |
0 | 1 | 1 | |
1 | 0 | 1 | |
Default | 1 | 1 | 1 |
When 'Z' is pressed, Up and Down become logic low and the output of the OR Gate becomes logic low which will ground the console's pause button and pause the game.
B (UP) | A (DOWN) | Q (Master Pause) | |
'Z' Pressed | 0 | 0 | 0 |
0 | 1 | 1 | |
1 | 0 | 1 | |
Default | 1 | 1 | 1 |
The reason why an OR Gate is used is because the OR Gate will only allow a logic low output on one condition, when both inputs are logic low. If not for this, the logic gate would change when using the D-Pad Up and D-Pad down on their own.
OR Gate
B (UP) | A (DOWN) | Q (Master Pause) | |
'Z' Pressed | 0 | 0 | 0 |
D-Pad Up Pressed | 0 | 1 | 1 |
D-Pad Down Pressed | 1 | 0 | 1 |
Default | 1 | 1 | 1 |
AND Gate
B (UP) | A (DOWN) | Q (Master Pause) | |
'Z' Pressed | 0 | 0 | 0 |
D-Pad Up Pressed | 0 | 1 | 0 |
D-Pad Down Pressed | 1 | 0 | 0 |
Default | 1 | 1 | 1 |
Back to the controller.
Button Z is connected to both Up and Down on the D-Pad, because of this, when Up is pressed and grounded it will also ground the Down button because they are both connected to a common point at button Z, this will in turn cause the output of the logic gate to become active low and pause the game. To prevent this from happening, the two connections to button 'Z' need isolating from each other. This is achieved by using resistors. 27kOhm is popularly used which is low enough to ground the +5V connected buttons, Up and Down, respectively when Z is pressed. But because there are now two resistors in series between Up and Down, connected at the common point of 'Z', it means the total resistance of 54kOhm between them is high enough to prevent them from grounding each other when pressed individually during normal game play.
(IMAGE TO GO HERE SHOWING RESISTORS AND CONNECTIONS BETWEEN UP, DOWN AND Z)
The above shows how to get a single controller pause button to work with a single OR gate, but how can this be applied to make two controllers work?
The two outputs of the OR Gates will only match and cause a pause when both Z buttons are pressed on both controllers at the same time. The console's pause button will be receiving both a +5V connection and also be grounded at the same time.
Z | 1B | 1A | 1Q | 2B | 2A | 2Q | |
Controller 1 | 1 (Default) | 1 | 1 | 1 | |||
Controller 2 | 1 (Default) | 1 | 1 | 1 | |||
Controller 1 | 0 (Pressed) | 0 | 0 | 0 | |||
Controller 2 | 1 (Default) | 1 | 1 | 1 | |||
Controller 1 | 1 (Default) | 1 | 1 | 1 | |||
Controller 2 | 0 (Pressed) | 0 | 0 | 1 | |||
Controller 1 | 0 (Pressed) | 0 | 0 | 0 | |||
Controller 2 | 0 (Pressed) | 0 | 0 | 0 |
This will make the logic of the truth table correct for pausing the game with separate controllers independently. But it will also hook up both controllers together. This will mean that when Up is pressed on one controller D-Pad, it will also control the up for the second controller. In two player games this will not be ideal.
Controller 1 Up and Down are fed into an OR Gate, Controller 2 Up and Down are fed into a second OR Gate, the outputs of these two OR Gates are fed into the third OR Gate. The output of this OR Gate is then connected to the master pause button. This will fully isolate the two controllers inputs.
OR Gate 1 | OR Gate 2 | Outputs 1Q and 2Q feed inputs 3A and 3B. | OR Gate 3 | ||||||||
IN | OUT | IN | OUT | IN | OUT | ||||||
Pause Button (Z) | 1A | 1B | 1Q | 2A | 2B | 2Q | 3A | 3B | 3Q | ||
Controller 1 | 1 (Default) | 1 | 1 | 1 | 1 | 1 | |||||
Controller 2 | 1 (Default) | 1 | 1 | 1 | 1 | ||||||
Controller 1 | 0 (Pressed) | 0 | 0 | 0 | 0 | 1 | |||||
Controller 2 | 1 (Default) | 1 | 1 | 1 | 1 | ||||||
Controller 1 | 1 (Default) | 1 | 1 | 1 | 1 | 1 | |||||
Controller 2 | 0 (Pressed) | 0 | 0 | 0 | 0 | ||||||
Controller 1 | 0 (Pressed) | 0 | 0 | 0 | 0 | 0 | |||||
Controller 2 | 0 (Pressed) | 0 | 0 | 0 | 0 |
As you can see from the logic table of the three OR Gates, there is no configuration that will achieve a reset when only one Z button is pressed. Pause with two controllers is not possible with just the pure logic from OR Gates.
The same as the previous example, but instead of feeding the outputs of the two OR Gates into a third OR Gate, the outputs are fed into an AND Gate.
OR Gate 1 | OR Gate 2 | Outputs 1Q and 2Q feed inputs A and B. | AND Gate | ||||||||
IN | OUT | IN | OUT | IN | OUT | ||||||
Pause Button (Z) | 1A | 1B | 1Q | 2A | 2B | 2Q | A | B | Q | ||
Controller 1 | 1 (Default) | 1 | 1 | 1 | 1 | 1 | |||||
Controller 2 | 1 (Default) | 1 | 1 | 1 | 1 | ||||||
Controller 1 | 0 (Pressed) | 0 | 0 | 0 | 0 | 0 | |||||
Controller 2 | 1 (Default) | 1 | 1 | 1 | 1 | ||||||
Controller 1 | 1 (Default) | 1 | 1 | 1 | 1 | 0 | |||||
Controller 2 | 0 (Pressed) | 0 | 0 | 0 | 0 | ||||||
Controller 1 | 0 (Pressed) | 0 | 0 | 0 | 0 | 0 | |||||
Controller 2 | 0 (Pressed) | 0 | 0 | 0 | 0 |
Now the logic of the outputs is exactly what is needed to achieve pause with two controllers. But this now uses multiple chips.
NOR Gate 1 | NOR Gate 2 | Outputs 1Q and 2Q feed inputs 3A and 3B. | NOR Gate | ||||||||
IN | OUT | IN | OUT | IN | OUT | ||||||
Pause Button (Z) | 1A | 1B | 1Q | 2A | 2B | 2Q | 3A | 3B | 3Q | ||
Controller 1 | 1 (Default) | 1 | 1 | 0 | 0 | 1 | |||||
Controller 2 | 1 (Default) | 1 | 1 | 0 | 0 | ||||||
Controller 1 | 0 (Pressed) | 0 | 0 | 1 | 1 | 0 | |||||
Controller 2 | 1 (Default) | 1 | 1 | 0 | 0 | ||||||
Controller 1 | 1 (Default) | 1 | 1 | 0 | 0 | 0 | |||||
Controller 2 | 0 (Pressed) | 0 | 0 | 1 | 1 | ||||||
Controller 1 | 0 (Pressed) | 0 | 0 | 1 | 1 | 0 | |||||
Controller 2 | 0 (Pressed) | 0 | 0 | 1 | 1 |
Again this logic is perfect for controlling the master pause button and it only uses 1 chip to accomplish this.