Archives for category: Uncategorized

I’ve always wanted a re-programmable Atari 2600 cart for some time now. There are already some on the market, including the Harmony Cartridge and the older Cuttle Cart, however these are expensive and overly complex. Plus building is more fun than buying.

Here’s are my goals for the ideal cart:

  • Holds only a single game at a time (avoiding the “tyranny of choice” created by a multicart).
  • Re-programmable via USB.
  • Supports all popular bankswitching methods.
  • Fabricated to a custom board.

Traditionally these carts use SRAM or flash chips in place of the mask ROM, however I wanted evaluate weather an Arduino could be used to emulate the mask ROM and associated logic. I testing how fast the pins could iterate bytes from an array, measuring the cycles from a Duemilanove board with a logic analyser (see below image).

write_speed_arduino_experiment

Arduino’s DigitalWrite() is SLOOOOOW. However, going lower level in AVR C I could read from PROGMEM (flash memory) and write directly to the ports with a more reasonable speed. Yet, this still didn’t satisfy my calculation for a cycle speed based on the 2600’s clock speed.

I’m now waiting on an order of a Maple Mini clone (STM32 based development board) that runs at 72Mhz (compared to Arduino Duemilanove’s 18Mhz). Whilst the STM32 has a different architecture to the AVR series, I have good confidence it will be fast enough as I believe it’s the same chip family as that powering the Harmony Cart (ARM 7).

To help me breadboard the build I sent a breakout board for the 2600’s cartridge port to fabrication at OSH Park. You can find the project here: https://oshpark.com/shared_projects/mh5CIxMW

Atari_2600_Cart_Breakout_Board

This is my first PCB so am excited to see how it turns out. Setting up the edge connector and PCB edge cut to fit a standard Atari 2600 cart case was painful to get accurate, especially as I was learning KiCAD as I went, but I think I got it right.

Next steps: Analyse the data response speed on real hardware (not just theoretical speeds) to get a clear target for the build, then build a simple emulation of Combat on STM32.

Back in February I picked up a pretty broken Briarwood Aspen pinball table on Craigslist for $50. I had gotten in to pinball as a game, was interested in the electromechanical engineering and was looking for a new project, so this seemed perfect. However, it turned out to be a much longer and more difficult challenge than I expected, but it was totally worth the time (and the stress).

Getting the Aspen home

Although I knew the table was a much maligned “home model” and not going to be comparable to any modern solid state table, I was super excited to work on it.

When I picked the table up the seller handed me a burnt out transistors from the main board and said “replace this”. The table did run, however, when hitting a switch on one of the matrix columns it was triggering a tilt.

Table on constant tilt

My first assumption was that there was a short, however, after spending a bunch of time tracing back the matrix and probing the board with my multimeter it seemed likely an IC, that I believe handles the matrix logic, had failed. This may have taken down the transistors (and so the chime box).

The suspected failed ITT 2002-5N

Unfortunately, it would appear this failed component (ITT 2002-5N) was custom and so getting a replacement was unlikely. However, I did track down The Pinball Resource who had picked up all of Briarwood’s spare parts when they had gotten out of pinball. I spoke with the owner Steve on the phone and he told me that they did indeed have a brand new replacement board, but that I shouldn’t buy it because it was $400 and “more than the machine is worth”.

This set me on a journey of building a replacement board using an Arduino Mega 2560 and some Veroboard.

Electronic Problems Solved

I ended up facing a lot of challenges during this project. The biggest amongst them was finding that I couldn’t get coils to fire through my transistor set up. It turns out looking at the table’s schematic proved real useful as each rail on the power supply was isolated, so as I was running logic off of 6v I couldn’t fire the 28v coils. I solved this by regulating a logic level off of the 28v rail. However, I did have to use a relay to switch the bonus lights which were on the 6v DC line.

The Power and Driver Board

Another was replacing the burned out chime coils. Lucky John at John’s Jukes managed to match the coils and the hammers could be saved.

The Burnt Chime Box

Code

I wrote a lot of custom (and some borrowed) code for the project and was at the time the biggest coding project I had undertaken. I ended up being able to control all of the hardware as well as have the machine score and offeral all of the features that the original board did. Surprisingly to me this was the most enjoyable part of the process as I’d traditionally considered myself more hardware than software inclined.

You can get the Arduino code at the GitHub repository.

Playfield Improvements

I made a couple of improvements to the playfield. The first was to buy a super kit which replaced the perished rubbers, but also all the bulbs, the ball and the plunger springs. The kit also came with a combined cleaner and wax for the playfield, which was great as it was in such a dirty state.

Whilst at the Northwest Pinball and Arcade Show in Tacoma, WA I also picked up a set of LED bulbs for the playfield from Pinball Bulbs. These are a really great addition to the table, making it much lighter.

Conclusion

Whilst the table isn’t the greatest to play, I ended up spending somewhere around $300 and it was pretty stressful at times, I would say I am very proud of this project.

It might seem odd that I spent so much time, effort and money in to rebuilding what many pinball fans consider junk, however to me the project taught me a lot. I learned a load about fault finding, switch matrixing, power supplies, code libraries,Arduino interrupts, pinball electromechanics and perseverance.

The table is now off to a new home (I’ve given it to a friend) and I’m on the look out for the next one already!