If you haven’t heard, retrogaming is a thing. 40-somethings are playing the games of their youth alongside millennials who are just discovering these classic games. There are even folks developing new homebrew games for consoles as far back as the Nintendo Entertainment System and the Atari 2600. This week on the Hacklet, we’re highlighting some of the best retrogaming console hardware hacks on Hackaday.io. Note that I did say hardware hacks. The focus this week is on games played on the original hardware. Don’t worry though, I’ll give emulated projects some love in a future Hacklet.
We start with [danjovic] and Atari 2600 Bankswitch Cartridge. The Atari 2600 is a legendary system. Millions of hackers’ first exposure to gaming came through its one button joystick. To make the unit affordable, Atari used a MOS Technology 6507 processor. Essentially it’s a 6502 in a 28-pin package. This meant several features got nerfed, most notably the address space. The 6507 can only address 8KB of RAM. In the Atari, only 4KB is available to the cartridge. Games got around the 4KB limit by bank switching – write a value to a magic address, and the bank switching logic would swap in a whole different section of cartridge ROM. There were several different bank switching schemes used over the years. [Danjovic] has created his own version of this bank switching logic, using only classic 74 series logic chips.
Next up is [ThunderSqueak] with Top Loader NES composite mod. Toward the end of the NES’s life, Nintendo introduced a cost-reduced version known as the “top loader”. This version had a top loading cartridge and no DRM lock-out chip. Unfortunately it also did away with composite AV ports. The only way to hook this NES to your TV was through the RF modulated output. [ThunderSqueak] and a number of other intrepid hackers have fixed this problem. All it takes is a 2N3906 PNP transistor and a few jellybean parts. The video and audio outputs are pulled from the motherboard before they enter the RF modulator. One nice feature is the clean connectors. [ThunderSqueak] used connectors from modular in-wall AV boxes for a setup that looks as good as it works.
Next we have [makestuff] with USB MegaDrive DevKit. Sega’s MegaDrive, or Genesis as it was known here in the USA, was a groundbreaking console. It used a Motorola 68000 16-bit CPU while most other systems were still running a Z80 or a 6502. People loved this console, and there are plenty who still want to develop software for it. Enter [makestuff] with his development kit. On a card with a $40 USD bill of materials, he’s managed to fit SDRAM, an FPGA, and a USB interface. This is everything you need to load and debug software on an unmodified console. The FPGA had enough logic left over that [makestuff] was able to implement a continuous bus cycle tracer over USB. Nice work!
Finally, we have our own [Joshua Vasquez] with R.O.B. 2.0. The original NES came in a deluxe version with a special pack in – a robot. Robotic Operating Buddy, or ROB for short, would play games with the player. Unfortunately ROB was a bit of a flop. It only worked with two games, Gyromite and Stack-Up Ice Climber. Most ROB units eventually found their way to the recycling bin. [Joshua] is building a new version of the ROB, with modern controls. He’s already modeled and 3D printed ROB’s head. I can’t wait to see this project come together!
If you want to see more retrogaming goodness, check out our new retrogaming hardware hacks list. See a project I might have missed? Don’t be shy, just drop me a message on Hackaday.io. That’s it for this week’s Hacklet, As always, see you next week. Same hack time, same hack channel, bringing you the best of Hackaday.io!
That USB MegaDrive DevKit. I have the same label on my Everdrive MD cart. I like it. Wonder if he got it from the same guy I got mine years ago.
But the 2600 cartridge alt doesn’t have acces to the 6507 r/w pin, how can you write a value to the bank switching cart?
It doesn’t matter. You can just set a certain address to respond to all accesses as writes. The R/W pin is just for telling RAM chips what you’re trying to do. On a write, the data and address busses coming into the cart will still contain the values, so you just need a way of knowing what the program’s trying to do, in this case by having an address that always responds as if it’s being written to.
Though some simple 2600 schemes ignored the data bus altogether. Accessing (I think) #7FFF would swap the current bank with the other one. A flip-flop on the upper ROM address pin. Keeping track of it all is down to your code, but since you’re coding with that hardware in mind, you manage. Coding for the 2600 is a nightmare anyway, everything’s realtime, got to be cycle-counted perfectly or you don’t even get a picture on the screen.
STELLA.TXT is very enlightening for what the poor sods of the 1970s had to go through. And they didn’t even get their names on the product, or any royalties.
When I say “set” btw I mean design your hardware so that all accesses to address X are taken as writes. And then don’t try and read that address in your code, only write to it.
Detecting an address that’s all 1s, like #7FFF, is easy. You just need a big AND gate on all the address pins. Then that either flips your bank, or if you want, you can read what’s on the data bus, put those bits in a latch, and use those to control the upper bits of your ROM.
>It only worked with two games, Gyromite and Ice Climber.
You mean Gyromite and Stack-up?
Whoops… Fixed! Nice catch
I really wanted R.O.B. but they were dead by the time my parents bought us a NES. Definitely following that build.
There have been a large number of hardware mods for the TI-99/4A. An early one was the Zenoboard which installed the speech synth, 32K RAM expansion and a couple of other things inside the console. There’s been many special cartridges which do stuff like add more RAM, allow various numbers of programs to be selectable without removing the cartridge – it’s a very long list.
The latest one is the Flash ROM cart which has an SD card slot. A positively staggering amount of software for an old microcomputer can be put onto a single SD card.
There’s also an FPGA direct drop in replacement for the TI 9918A Video Display Processor. It will also replace the 9928 and 9929 so consoles like the Colecovision/Tandyvision and the entire MSX1 computer line can use it.
Just scratching the surface of what has been and is available for the TI.
Well this article came at a convenient time, just picked up a free Genesis Model 2 today!
Thanks a lot. This really works!!