top | item 34897668

Connecting a 1980s Pinball Machine to the Internet

137 points| elipsitz | 3 years ago |eli.lipsitz.net | reply

50 comments

order
[+] tannercollin|3 years ago|reply
Amazing, we are currently doing something very similar at our makerspace on a 1987 Road Kings pinball machine.

We first replaced the original RAM chip with a IDT 7132 SA100P dual-port RAM that sits on a breadboard:

https://pic.t0.vc/WPUO.jpg

The other port is accessed by an ATmega 1284 to the left of it. Its code responds to simple serial commands and can read and write to the RAM.

An ESP32 talks to the ATmega over UART and frequently asks it to dump 16 bytes at 0x00A0 to tell the game state and player number, and 0x0100 to get the four player scores. When it detects a new game, it offers the player a chance to scan their RFID member card and keeps track of their score:

https://pic.t0.vc/UQYK.jpg

After the game is complete, any players who have scanned in get their scores uploaded to our member portal where we can sort them by personal best:

https://pic.t0.vc/MZGY.png

We found there were sometimes read collisions and the ATmega would block the pinball machine from writing to RAM which would cause crashes or odd behavior. The latest version uses two RAM chips, one acting as a shadow copy -- similar to yours.

Eventually we'll make a PCB for it and open source everything. Currently only half the code (the ESP32) is on Github: https://github.com/Protospace/pinballwizard

[+] Rolpa|3 years ago|reply
Can this be used on any System 11 game? And can it be used to read the current state of the alphanumeric display?
[+] elipsitz|3 years ago|reply
Awesome! I really like the idea of scanning an RFID card to identify players.
[+] jvanvleet|3 years ago|reply
It just floors me that today you can order up a custom PCB for a few dollars if you are willing to wait a few weeks. What a world.
[+] soupfordummies|3 years ago|reply
The pinball community as a whole has been doing really cool things like this for years. Custom soundtracks for older games and now more recently we're seeing total rewrites of the rules/coding flashed onto chips or new PCBs like this. Super cool stuff.
[+] TehCorwiz|3 years ago|reply
JLPCB and a few others offer 2-4 day service as well. The scene exploded a couple years back and it keeps growing.
[+] iceflinger|3 years ago|reply
Do you have any plans of open-sourcing or releasing your work here? This stuff is awesome, it would be great to try and apply it to different eras of pinball machines as well.
[+] elipsitz|3 years ago|reply
Yeah, definitely if people are interested. Let me clean up the repo a little bit first :)

It's probably hard to directly apply this to other machines, but the interposer board idea would make it easy to take the same hardware and use it on any MC6808-based machine.

[+] stjrweyer|3 years ago|reply
https://github.com/BallySternOS/BallySternOS

ballysternos is a really neat arduino project that sits on the debug header of old bally and stern mpu boards. the arduino holds the 6800 in halt from the start and re-implements game code

i've seen at least two of these in the wild, one in a Bally Eight Ball running "Eight Ball Plus" code, and another in a Stern Meteor running "Meteor 2021". both add some neat super-features and game modes, the Meteor has an accompanying wav trigger board, speakers, and amp to add wav sound effects as well -- anyone who loves Meteor will appreciate (or hate) that it no longer screams your spinner value in a high pitched tones.

[+] aftbit|3 years ago|reply
Cool hack! Thanks for laying out the steps in such detail. One specific comment:

>While the board was out, I removed the battery holder from the MPU board. The board needs 3x AA batteries to keep the CMOS RAM powered to maintain the high score list while the machine is off. I’d read that these batteries could sometimes leak onto the circuit board, causing substantial damage.

You can also use Lithium primary AA batteries, not to be confused with rechargable lithium-ion cells. They are better than Alkalines in just about every way, including that they do not leak. The only reason Alkalines are so popular is that they are slightly cheaper. In this application, you probably want the best cells possible.

[+] mulmen|3 years ago|reply
You can also solder or plug in a remote battery pack. These older Williams boards put the battery pack at the top of the cabinet where it could leak all over. Later designs at least put it at the bottom where nothing important was below.

Another option is to replace the CMOS RAM with NVRAM.

[+] shove|3 years ago|reply
I interfaced an ESP8266 with the switch matrix to do much less impressive things on more modern pins so I’m kindof blown away. It’s tricky piggybacking the signal lines and I feel a little better hearing I wasn’t the only one who got it 99% working and started wondering if maybe my microcontroller was underpowered for the job.
[+] phanimahesh|3 years ago|reply
Interesting. Reminds me of something I built a few years ago.

To demonstrate low latency for a proxy we built, we decided to do a small publicity stunt at a local conference. We found an old pinball machine, managed to reverse engineer and findbfrom patchwork docs and some experimentation that we could send some commands to control flillers over a serial port.

Then we built a web application that would receive commands over http, and forward them appropriately. Ran this on a laptop connected to the pinball machine. Then we setup our proxy on a raspberry pi, setup some mobiles to access the webapp via the proxy, and had a fun little demo.

Users can tap left and right halves of screen on mobile web page to send requests, and could see the pinball flippers move. Our stunt was that see, it's pretty fast and low latency even with some simulated background load on the system.

[+] blockwriter|3 years ago|reply
Damn, this is amazing. I took up a lot of hobby electronics using Raspberry Pi 4 Model B and Pico Ws during the pandemic. I stopped short of custom PCBs or reviewing circuit schematics, but this makes me want to search out a basic project that would require doing so.
[+] shanebellone|3 years ago|reply
This is very cool.

I wonder if niche arcades could make a comeback with something like this. Imagine global competitions between clubs competing for rank, recognition, and reward.

[+] mulmen|3 years ago|reply
TBH I'm not a fan of comparing scores on different physical machines. Every pin is different. It is still fun to see scoreboards on local machines or to find the really out-there scores some people put up, but it's not like a video game where everyone is on equal footing.

To me that is part of the appeal of pinball. It is a local, physical, tangible thing.

[+] koz1000|3 years ago|reply
Stern tried this a long time ago to compete with Golden Tee Golf tournaments, since those games were paying people cash and killing pinball in street locations like bars.

The problem was stopping nefarious players from taking the glass off and rigging the score. It's an impossible thing to prevent.

[+] vikingerik|3 years ago|reply
They already have, for pinball in particular. Stern Pinball implemented a connectivity system for new machines (it reads your QR code), and there are many arcade locations that use that to track and display scores and achievements and leaderboards. Most mid-sized cities in the US now have at least one brewery or arcade with this running now. It's mostly particular to each location, but some organizers use it for global competitions as well.

https://insider.sternpinball.com/

[+] soupfordummies|3 years ago|reply
Next level awesome stuff!

It's like Stern Insider hacked into older games. Amazing!

Do you think this could be transferred and applied to other System 7 games?

[+] elipsitz|3 years ago|reply
Thanks! Yeah, it would work on any System 7 game, as long as you’re willing to solder in the 2x20 connector to the MPU. All of the memory locations should be exactly the same.
[+] relwin|3 years ago|reply
Nice work! I'm assuming score rollover is detected so your awesome final score is correct. Also saving game settings of total balls (3 or 5) and extra ball enabled is useful when comparing scores.

Anything pinball on HN is a good day :)

[+] elipsitz|3 years ago|reply
Fortunately I don’t have to worry about rollover. The game can score a maximum score of 99,999,999, and the highest I’ve been able to score is about 3,500,000.