Bally/Stern

From PinWiki
Revision as of 08:06, 23 April 2011 by Scochar (talk | contribs) (→‎Technical Info: Added LED flash sequence info)
Jump to navigation Jump to search
ExclamationPoint.jpg
Note: This page is a work in progress. Please help get it to a completed state by adding any useful information to it.


1 Introduction

Put system info here

2 Games

A list of solid state games by system and manufacturer (including those that aren't necessarily pinball). Source: http://www.ipdb.org

2.1 Bally MPU -17

  • Freedom
  • Night Rider
  • Black Jack
  • Evel Kenievel
  • Eight Ball
  • Power Play
  • Mata Hari
  • Strikes & Spares

2.2 Bally MPU -35

  • Lost World
  • The Six Million Dollar Man
  • Playboy
  • Voltan
  • Future Spa
  • Star Trek
  • Kiss
  • Paragon
  • Harlem Globetrotters
  • Supersonic
  • Dolly Parton
  • Nitro Ground Shaker
  • Silverball Mania
  • Space Invaders
  • Rolling Stones
  • Hotdoggin'
  • Mystic
  • Viking
  • Skateball
  • Frontier
  • Xenon
  • Flash Gordon
  • Eight Ball Deluxe
  • Embryon
  • Fireball II
  • Fathom
  • Medusa
  • Centaur
  • Elektra
  • Vector
  • Rapid Fire (flipperless)
  • Mr. & Mrs. Pacman
  • Speakeasy
  • Spectrum
  • BMX
  • Eight Ball Deluxe
  • Centaur II
  • Gold Ball
  • Grand Slam
  • X's & O's
  • Kings of Steel
  • Black Pyramid
  • Spy Hunter
  • Fireball Classic
  • Cybernaut

2.3 Bally MPU -133

  • Baby Pac-Man (pinball video game hybrid)
  • Big Bat (bat game)
  • Grand Slam
  • Granny & The Gators (pinball video game hybrid)

2.4 Stern M-100 MPU

  • Cosmic Princess
  • Dracula
  • Hot Hand
  • Lectronamo
  • Magic
  • Memory Lane
  • Nugent
  • Pinball
  • Stars
  • Stingray
  • Trident
  • Wild Fyre

2.5 Stern M-200 MPU

  • Ali
  • Big Game
  • Catacomb
  • Cheetah
  • Cue
  • Dragonfist
  • Flight 2000
  • Freefall
  • Galaxy
  • Hypnox
  • Iron Maiden
  • Lazer Lord
  • Lightning
  • Meteor
  • Nine Ball
  • Orbitor 1
  • Quicksilver
  • Seawitch
  • Split Second
  • Star Gazer
  • Viper

3 Technical Info

3.1 Bally/Stern MPU Board LED Flash Sequence

Bally and stern boards on startup have an LED that flashes to tell you the results of tests of various parts of their system. This section explains what is being tested and how, according to information from the Bally "FO-561-2 Theory of Operation rev. 5-1982" manual, and the Stern manual "Theory of Operation, Stern's Microprocessor Controlled Solid-State Games".

When power is first applied to the mpu board, the led by default is ON. The very first set of valid instructions in every bally/stern game is to turn the led off. This is more of a flicker than a flash, so is not counted as a flash in the 7 flash sequence.


First flash:

After the program is running (led flicker tells you the cpu chip was able to start a valid program stored in the eproms) the program performs a checksum of all program chips u1-u6. Most Bally games' programming is split between an operating system chip U6 and a game rom chip U2; Stern's games were a little looser - the operating system and game code are freely interspersed.

Bally checksums are calculated by summing each byte, discarding any carries. Most games check their code in $0400 blocks, so it would be possible to determine down to the chip which chip failed this checksum. (A 2716/9316 chip has hex $0800 space available in it - 2732 sized images are $1000 in size. The smallest chip used was a 474 PROM which has $0200 bytes available) However, to do so would require a way to read the X register from the 6800 cpu chip at the time of checksum failure, so if you do not get the first flash, it is best to replace the U6 chip first, then move onto the other chips U5, U2, and U1 (if present).

Stern checksums are calculated similarly, but not in chunks - the entire program space is summed and must equal $00 for the first flash to occur.

Regardless of the manufacturer being Bally or Stern, after the checksum is passed, the first flash occurs.


Second flash:

Next, the program tests the 6810 RAM chip at U7, by writing the data $00 to each memory location contained in the ram ($00-$7F). It then reads back each location to ensure that $00 is returned. It increments the data to $01 and repeats this test; this continues until the data read back is $FF (256), the maximum value any one byte can store in the RAM. If any of the tested locations returns an unexpected result, the program stops, alerting you to a problem with U7 (since you got the first rom checksum flash, but not the 2nd U7 OK flash)


Third flash:

Now, the program tests the 5101 Non-volatile RAM chip at U8 (U8 AND U13 on Stern mpu-200 boards). The 5101 stores bookkeeping data, game parameters, high scores, replay levels, etc. The program tests this ram ($200-$2FF) by reading the original nibble/byte (see sidebar) and saving it in a temporary location, then storing a test pattern in the location similar to the U7 test. After the byte successfully passes the test, the original data is returned to the location, and the program loops onto the next byte.

LEARN MORE: How does a 128 byte 5101 RAM occupy 256 memory locations?

If you look at a pinout of the 5101 memory, you will notice it is a 128 byte device. Yet, it is addressed by the mpu via 256 memory locations ($200-$2FF). This is because the 5101 is actually a 256 nibble device - a nibble is a half-byte (4 bits). So data stored to a 5101 in a pinball machine actually only stores half of the data byte being sent to it. Which half depends on the board design - Bally and Stern use the upper nibble for storage, and Williams used the lower nibble. Stern mpu-200 boards have an additional 5101 at U13 - this stores the lower nibble in conjunction with U8 storing the upper nibble of a byte saved to $200-$2FF, allowing mpu-200 games to store more data and avoid doing some fancy processing in getting the data in and out of the non-volatile ram area.

For example, here's some pseudo-machine code for what happens: LOAD #$24 (the data you want to store is 24); STORE $231 (you want to store the data 24 at memory location $231); READ $231 (you want to read back the data you just stored). The data returned is not #$24 as expected, but rather #$2F. The lower nibble was never stored, as the 5101 memory does not store data as bytes but rather as nibbles. To store #$24 properly would require splitting the byte into its nibbles '2' and '4', storing the 2 in one memory location, doing some shifting to the 4, and storing it in another memory location.

Showing the byte as binary might be helpful to visualize what's involved. The hex #$24 in binary is %00100100 - split into nibbles is %0010 (the 2) and %0100 (the 4). The upper nibble is the one the 5101 is able to store directly, but the position in the byte of the lower nibble prevents it from being stored. A shift operation is performed 4 times on the byte to reposition the lower nibble as the upper nibble, enabling it to be stored to the 5101. (Each shift moves the binary pattern to the left one bit - here's the full sequence: Start=%00100100, shift left=%0100100x, shift left=%100100xx, shift left=%00100xxx, shift left=%0100xxxx, giving you the #$4 in the high nibble) All byte data has to be split this way to be saved, and recombined on reading from the single 5101 ram boards (bally -17 and -35, stern mpu-100). You can see why Stern added the second 5101 ram to their boards, to make programming much easier!


Fourth and Fifth flashes:

Next, the program tests each of the 2 6820/6821 PIA's (peripheral interface adapters) at U10 and U11, starting with U10. The PIAs are set to a known state, then data is stored and read back from them to verify their registers are functioning properly. It is important to note that it is not possible for the PIA to be 100% tested with this test as external data would have to be fed in to do so, but the test will at least test the internal registers. (So it would be possible for a PIA to pass the self-test, but still not work properly with external inputs)

Assuming the PIAs pass, the fourth (U10) and fifth (U11) LED flashes occur. (The LED itself is connected to the U11 PIA - so if the LED is locked on, U11 might be bad. It's worth letting a locked on LED board 'sit' for a minute or so to see if the game boots all the way up without flashing each test step. This is an example of how a PIA can pass self test but still be bad, as the LED control pin has no feedback as to if the LED is in fact flashing)


Sixth flash:

The sixth flash waits for an external input on U11 pin 40 from the display interrupt generator circuit - this occurs 300 times a second. If you're missing the sixth flash, there may be a problem with either the U12 circuit, OR the input pin on the PIA. A logic probe, oscilloscope, or a multimeter on pin 40 can help you determine which. A logic probe will pulse if the display circuit is operating, the scope will show you the signal's waveform, and the multimeter should settle on a voltage somewhat between 0-5 volts. With no sixth flash but good results from the measurement, it's a safe bet that U11 is bad and needs to be replaced.

Note that the sixth flash does NOT check for the PROPER frequency of operation of the display generation circuitry. As long as there is a pulsing signal (technically, ONE state change), the test is marked good and the program allowed to continue.


Seventh flash:

The last flash waits for an external input on U10 pin 18 from the zero crossing detector circuit - this occurs 120 times a second (as the AC waveform passes or "crosses" 0 volts). Diagnosis of issues with the 7th flash are similar to the 6th flash; you can measure the input to pin 18 to determine if the signal is present or not. Signal present but no flash could mean a bad U10 PIA. Signal missing usually points to missing solenoid voltage (the source of the zero crossing signal is derived from this voltage delivered from the rectifier board) or if present, an issue with the zero crossing detection circuit itself.

Note again that the seventh flash does NOT check for the PROPER frequency from the zero crossing detector, it simply checks for a pulsing signal, and it only checks for ONE transition.


After the 7th flash, the program does some background setup, reads dip switches, enables the displays, attract modes, switch scanning etc. in a 'game over' mode, waiting for player input. The LED will sometimes be dimly glowing or even pulse as this happens, which is not a cause for alarm - you can rebuild the LED circuit around Q2 if this worries you, but it is harmless.


3.2 Bally Solenoid Driver for Dummies

First off, take a look at the picture below:

http://stevekulpa.net/pinball/ballycoil1.jpg

This is a typical Bally coil from a Mata Hari machine. Notice 3 things: The two big fat yellow wires going to one lug, the small skinny wire going to the other lug, and the diode connected to the two lugs.

One lug on every coil is visited by these fat wires, in what's called a daisy-chain. This is the wire that supplies each coil with positive 43 volts DC (+43VDC). So each coil is connected to the +43VDC bus. Most have two fat wires, but some may have one. Flipper coils have these wires too, but they are connected a little differently, and are discussed elsewhere. For now, just assume we're talking about regular solenoids here.

Next, you'll notice each coil has a small skinny wire on the other lug. This wire goes to the control circuits on the solenoid/regulator board. In order to energize the coil, there must be a path to ground for the +43VDC. Normally, there is not so the coil is relaxed. When the small skinny wire gets connected to ground, the path is complete and current will flow. This current flow turns the coil into an electro-magnet and then pulls the plunger into the coil. When the wire is disconneted from ground, current flow stops, the electro-magnet is turned off, and the plunger returns to it's normal position, with help from either a spring, or gravity.

Finally, the diode. When the current is quickly turned off on an energized coil, the magnetic field around the coil collapses quickly and causes the coil to generate a huge voltage spike. The job of this diode is to prevent the majority of this spike from reaching the solenoid driver circuity. If the diode is bad, or installed backwards, you'll pop the driver transistor the first time the coil is energized, then released. It's like the ignition in older cars - when the points open, the 12 volts is removed from the car's coil quickly, which causes another coil to generate a huge voltage spike, to the spark plug. The computer program that runs the machine also tries to limit this spike by turning off the coil near the zero crossing of the line AC. This helps because the DC that drives the coils is rectified, but not filtered, so it's not smooth DC, but "humpy", like in this picture. By energizing the coils just after the zero crossing, the in-rush of current caused by a coil is limited, and by turning them off just after the zero crossing, the voltage spike caused by the collapsing field is also kept to a minimum.

So, in the simplest form, the solenoid driver circuits in your Bally look like this:

http://stevekulpa.net/pinball/bsoledraw1.jpg

Look at it as a bunch of coils all connected to the +43VDC bus, and the other lugs going to switches which are also connected to ground. Then, if you were to close a switch, that would connect the circuit from +43VDC to ground, and the coil would energize as long as the switch is closed.

http://stevekulpa.net/pinball/bsoledraw2.jpg

Now see how the circuit is complete due to the switch being closed, and the coil is energized. Then you open the switch and the coil turns off and you're back to the first picture. If the diode were not there, when you opened the switch, there's be a big arc across the switch contacts at the moment they opened up.

Finally, take this one step further and replace the manual switches with transistors. Transistors are normally used as amplifiers, but you can also use them as switches too. There are 3 leads on a transistor, the base, the emitter, and the collector. For NPN transistors like the ones on your Bally solenoid driver, you can used the emitter and collector like a switch. With no current supplied to the base, there is no current flow between the collector and emitter, so the transistor switch is open, or OFF. If you supply a current to the base, current will then flow between the collector and emitter, so now the switch is closed, or ON.

http://stevekulpa.net/pinball/bsoledraw3.jpg

Without getting into too much detail - what happens is a current is applied to the base which is high enough to 'saturate' the transistor. This means the collector-to-emitter current will be amplified as high as it can, and the transistor will then conduct a large amount of current from COLLECTOR to EMITTER, in relation to the current flow from the BASE to the EMITTER. This is how it acts like a switch. The base goes high to turn it on, and low to turn it off. Since the collector is connected to the wire that goes to the coil (the small single wire), and the emitter is connected to ground, turning the transisor as the effect of connecting the collector to ground. This completes the circuit to the coil and it fires.

You may have heard that you can test a coil by grounding the tab on the coil's driver transistor. For the TIP-102 transistors used in the Bally solenoid driver, the metal tab is connected to the collector. Knowing this, and what you've just learned, you can now see that grounding the tab is the same as grounding the collector, which will complete the circuit to ground and fire the coil. Note that this test only tests the wiring from the solenoid driver to the coil. It DOES NOT test the transistor, or any circuitry before the transistor.

So, you can now replace the transistor and "control signal" in the simplified drawing above, with the actual circuit and more details found in the following section.

--Stevekulpa 21:06, 22 April 2011 (BST)

3.3 Bally Solenoid Driver

First off, everything mentioned on this page is in reference to the Bally AS-2518-22 model solenoid driver board, found in most Bally pins from 1977 through 1985. Since it is very silmilar to the AS-2518-16 board and is identical as far as the operation of the solenoid driver circuits, you can assume it is applicable for these boards as well.

Second, if all this is Greek to you and you have no idea how Decoder ICs work, or what a Transistor is, take a look at the Bally Solenoid Driver for Dummies article above first to learn the basics of how this stuff works.

Thirdly, this model of solenoid driver board actually has three functions: The first obviously is to drive the solenoid and relay coils of your pin, the second is a 5-volt regulator which provides a nice and steady 5 VDC to the other boards for their various logic circuits, and third is the high voltage regulator (190 VDC) for the display driver boards. I won't be discussing the voltage regulator stuff here, just the solenoid driver parts.

Finally, Don't forget that the Solenoid Driver board contains the high voltage circuitry for the displays. There is 190 volts DC here and if you're not careful, you'll get knocked on your ass. A shock from 190 volts DC will hurt. If you don't know what you're doing, then keep away from it and have a professional fix it instead. In addition to high voltages, there are static sensitive parts on this board, so if you're going to work on it, be sure to properly ground yourself before touching the board, and always work in a static-free workspace.

3.3.1 Overview

We'll be discussing things from two circuit boards: The MPU board (AS-2517-17 or -35) and the Solenoid Driver board (AS-2518-22 or -16). The solenoid driver gets signals from the MPU board. These signals tell the solenoid driver which solenoid to fire. Up to 15 momentary and 4 continuous solenoids can be controlled by the solenoid driver. The flipper solenoids are enabled or disabled from the solenoid driver too, but are not controlled like the other solenoids.

3.3.2 How the Solenoid Driver Works

The solenoid driver is responsible for energizing the solenoid coils of your pinball machine. Four signals from the U11 PIA integrated circuit on the MPU board travel out from the J4 to the J4 connector on the Solenoid Driver board. These four signals tell the Solenoid Driver which solenoid to fire. This is accomplished by using a decoder chip that takes the binary pattern of the four signals (16 different patterns) and decodes (or demultiplexes) them into one of sixteen different outputs. The four signals are applied to the decoder then the decoder is strobed. Normally, all sixteen of the decoder output lines are held high (+5 vdc). When strobed, the decoder lowers one of it's sixteen output lines, depending on the pattern of the four input signals. You can learn more about the 74LS154 decoder chip from here.

Take a look at the schematic below, which shows one typical output line and the associated circuitry to drive a single solenoid coil:

With no input supplied (strobe is high), the output lines of the decoder are high (+5 vdc). This puts a voltage at the base of Q1 (this transistor is one of 7 in the CA3081 chip). This turns Q1 "on" and the voltage supplied to it's collector via resistor R1 passes through the transistor to ground. At this point, little or no voltage is present at the base of Q2, and Q2 is "off". With Q2 off, the 40 vdc at the coil has no place to go, and the coil remains deenergized.

When the MPU board supplies the proper input signals (A-B-C-D) to the decoder, and the decoder is strobed (signal drops to low), the proper output signal will go low, which turns Q1 "off" (notice one of the two strobe lines goes to ground, so it's always low). This allows the +5 vdc at Q1's collector to flow through the diode instead of Q1 on it's way to ground via resistor R3. This also puts a voltage at the base of Q2 and turns this transistor "on". When Q2 turns on, the 40 vdc at the solenoid now has a path to ground through Q1 and current flows through the coil, thereby energizing it. Then the strobe to the decoder is released, the decoder output goes high again, Q1 turns on, Q2 turns off, and everything is back to normal.

http://stevekulpa.net/pinball/b_solenoid1.jpg

Diode D1, resistor R3 and capacitor C1 work to slow the speed at which Q2 and the solenoid are able to turn off. This is important to prevent the "inductive kick" voltage that builds up when you try to turn off a solenoid quickly. A solenoid coil can build up hundreds of volts if it is switched off too quickly. For example, the spark in the sparkplug of a car is generated from this inductive kick when the ignition coil is turned off quickly. In this case, D1 allows Q2 and the solenoid to turn ON quickly (which is OK) because the current that used to be flowing through Q1 can now flow forward through D1 and turn on Q2 quickly. However, when the decoder output goes back to high and Q1 turns back on, D1 prevents the charge from the base of Q2 from being sucked down Q1. The charge on C1 must drain off (slowly) through R3 and the base of Q2. This takes awhile and slows the turn-off of Q2 and the solenoid COIL, thus reducing the kick. Also, as the solenoid turns off and the voltage on the collector of Q2 starts to rise, this voltage is "fed back" by C1 to the base of Q2 and tends to keep Q2 on a little longer, slowing the turn-off of the solenoid even more. The OTHER diode (D2, across the solenoid) works to absorb the solenoid's turn-off kick by conducting when the voltage on the collector of Q2 is greater than about 40 volts.

--Stevekulpa 21:07, 22 April 2011 (BST)

3.4 How To Hook Up a Bally AS-2518-18 Rectifier Board

Often folks buy a new or used rectifier board and then when they get it, they realize that they have to hook it back up to the old wiring harness. If this is you, and you forgot to take notes or pictures before you removed your old board, then here you go. The photo below shows an original AS-2518-18 rectifier board connected to a factory wiring harness. As far as I know, the wire colors are the same for ALL AS-2518-18 applications.

http://stevekulpa.net/pinball/as2518-18-wiring.jpg

Key:

E1 - Red 18 AWG - Transformer Lug 5 - Primary AC Hot

E2 - Yellow 18 AWG - Transformer Lug 1 - Primary Neutral

E3 - Red 20 AWG - Transformer Lug 2 - Solenoid Bus Hot

E4 - White/Red 20 AWG - Transformer Lug 6 - Solenoid Bus Neutral

E5 - Green 20 AWG - Transformer Lug 8 - Display High Voltage Hot

E6 - White/Green 20 AWG - Transformer Lug 10 - Display High Voltage Neutral

E7 - Blue 18 AWG (2 wires) - Transformer Lug 17 - GI Bus Hot

E8 - Black 18 AWG (2 wires) - Transformer Lug 18 - GI Bus Neutral

E9 - Orange 18 AWG - Transformer Lug 13 - Controlled Lamp Bus Hot

E10 - Green 18 AWG - Transformer Lug 14 - Controlled Lamp Bus Neutral

E11 - White 20 AWG - Transformer Lug 15 - 12V Input for 5-Volt Regulator Hot

E12 - White/Black 20 AWG - Transformer Lug 16 - 12V Input for 5-Volt Regulator Neutral

AWG = American Wire Gauge (18 = fat, 20 = skinny)

"E" solder pads are labeled on the top side of the circuit board

--Stevekulpa 21:08, 22 April 2011 (BST)

4 Problems and Fixes

4.1 Power Driver Issues

This may not apply to some, as MPU might have been part of it.

4.2 MPU Issues

4.3 Power Supply Issues

4.4 Display Driver Board

Possibly doesn't apply to some, can't think of an example.

5 Game Specific Problems and Fixes

Example would be servo controller on Independence Day pinball

6 Repair Logs

Did you do a repair? Log it here as a possible solution for others.