Hacklet 22 – Retro Console Projects

Everyone loves arcade games, and it didn’t take long for designers to figure out that people would love to take the fun home. The home gaming console market has been around for decades. Through the early days of battery-powered pong style consoles through Atari and the video game crash of the early 80′s, to the late 8 and 16 bit era spearheaded by The Nintendo Entertainment System and The Sega Master System and beyond, consoles have become a staple of the hacker home. This week’s Hacklet features some of the best retro console projects from Hackaday.io!

52001We start with [ThunderSqueak] saving the world with her Atari 5200 Custom Controller Build. For those who don’t know, the Atari 5200 “Super System” was an 8 bit system ahead of its time. The 5200 was also saddled with on of the worst controller designs ever. The buttons would stop responding after a few hours of game play. With 17 buttons, (including a full number pad), that was a pretty major design flaw! [ThunderSqueak] hacked a cheap commercial fighting game stick to make it work with the 5200. 12 individual buttons were wired in a matrix to replace the telephone style keys on the original 5200 controller. Atari’s non-centering analog stick was converted over to a standard 4 switch arcade style stick. [ThunderSqueak] did leave the original pots accessible in the bottom of the enclosure for centering adjustments. Many 5200 games work great with the new setup.

 

snes[DackR] is bringing back the glory days of Nintendo with Super Famicade, a homebrew 4 SNES arcade system inspired by Nintendo’s Super System. Nintendo’s original Super System played several customized versions of games which were available on the Super Nintendo Entertainment System (SNES). [DackR] is building his own with parts from four SNES consoles. He’s also adding a few features, like a touch screen, video overlay, and enhanced RGB.

He’s going to add custom memory monitoring hardware, which will allow him to check how many lives a player has left and handle coin operation, all without the original Super System Hardware. If you’re curious what the original Super Systems looked like, check out Hackaday’s Tokyo Speedrun video.You might just catch a glimpse of one!

rgb[Bentendo64] is improving on the past with RGB For ‘Murica. European systems have enjoyed the higher quality afforded by separate red, green and blue video lines for decades. North American gamers, however were stuck in the composite or S-Video realm until shortly before the HDTV age. [Bentendo64] had an old hotel CRT based monitor, and decided to hack an RGB input. After opening up the back of the set, he removed the yolk board and added direct inputs to the video amplifiers. We’re not sure if this mod will work with every CRT, but it can’t hurt to try! Just be sure to discharge those high voltage capacitors before wrenching on these old video systems. Even if a set has been unplugged for days, the caps can give a seriously painful (and dangerous) shock!

snes2[Ingo S] is also working to improve the SNES with SNES AmbiPak, a mod which brings ambient lighting and “rumble pack” controller feedback to the vintage Super Nintendo. [Ingo S] used the popular SNES9X emulator to figure out where game data is stored while the SNES is running. His proof of concept was the original F-ZERO SNES game. [Ingo S] found that Every time the player’s car hits the wall, the system would perform a write on address 3E:0C23. All he would need to do is monitor that address on the real hardware, and rumble the controller on a write. The real hardware proved to be a bit harder to work with though. Even these “slow” vintage systems clock their ram at around 3MHz, way too fast for an Arduino to catch a bus access.  [Ingo S] is solving that problem with a Xilinx XC9572 Complex Programmable Logic Device (CPLD). CPLDs can be thought of as little brothers to Field Programmable Gate Arras (FPGAs). Even though they generally have less “room” for logic inside, CPLDs run plenty fast for decoding memory addresses.  With this change, [Ingo S] is back on track to building his SNES rumble pack!

It feels like we just got started – but we’re already out of space for this week’s Hacklet! As always, see you next week. Same hack time, same hack channel, bringing you the best of Hackaday.io!

Using Kinect To Play Super Mario Bros 3 On NES Ensures Quick Death

Why do only the new game consoles get all the cool peripherals? Being a man of action, [Paul] set out to change that. He had a Kinect V2 and an original Nintendo and thought it would be fun to get the two to work together.

Thinking it would be easiest to emulate a standard controller, [Paul] surfed the ‘net a bit until he found an excellent article that explained how the NES controller works. It turns out that besides the buttons, there’s only one shift register chip and some pull up resistors in the controller. Instead of soldering leads to a cannibalized NES controller, he decided to stick another shift register and some resistors down on a breadboard with a controller cable connected directly to the chip.

Kinect4NES wiring

An Arduino is used to emulate the buttons presses. The Arduino is running the Firmata sketch that allows toggling of the Arduino pins from a host computer. That host computer runs an application that [Paul] wrote himself using the Kinect V2 SDK that converts the gestures of the player into controller commands which then tells the Arduino which buttons to ‘push’. This is definitely a pretty interesting and involved project, even if the video does make it look very challenging to rescue Princess Toadstool from Bowser and the Koopalings!

If you’d like to help the project or just build one for yourself, check out the source files on the Kinect4NES GitHub page.

Continue reading “Using Kinect To Play Super Mario Bros 3 On NES Ensures Quick Death”

Demystifying NTSC Color And Progressive Scan

NTSC

Black and white NTSC is simple – it can, and was, done with vacuum tubes for a long, long time. Color is just weird, though. It runs at 29.976 frames per second, uses different phases of the carrier for different colors, and generally takes a while to wrap your head around. [Sagar] is doing a series on the intricacies of NTSC, and the latest post deals with color and progressive scanning versus interlacing, or as it is better known, how classic game consoles and home computers generate video.

The test bed for [Sagar]‘s video experimentations is a circuit containing an ATMega16, a 4-bit shift register, and a 14.31818 MHz clock. This clock is much faster than the 3.579545 MHz clock in an NTSC carrier frequency – exactly four times as fast – allowing the shift register to output four different phases of the carrier frequency a 0°, 90°. 180°, and 270°. Playing with some of the pins on the ATMega in the circuit results in a palette being generated on any old TV.

NTSC requires interlaced scanning, or sending an entire screen of even lines, then an entire screen of odd lines, at around 60 fields per second. The Nintendos and Segas of yesteryear didn’t bother with this, instead opting to send half the vertical resolution at double the frame rate. This is known as a progressive scan. [Sagar] found that this resulted in some image artifacts when displayed on a modern LCD, and moving back to an interlaced mode fixed the problem. All the code and files are up on the gits. If you’re feeling adventurous, this is exactly how projects like the Uzebox have created homebrew game consoles using little more than the ATMega found in [Sagar]‘s build.

BigBoy Advance, a Giant GBA for Big Hands

big boy advance

Ever wish Game Boys came in a slightly larger size? [John], aka [Bacteria] of Bacman, decided to try something different with this retro console mod — the BigBoy.

In case you’re not familiar with the Bacman website, it’s a site dedicated to retro video game console modding — and our hacker, [John] is the man behind the scenes. We’ve shared plenty of their projects before.

The BigBoy is basically a Game Boy Advance — with an 8″ display. It uses the electronics from a knockoff copy of a RetroBit in a custom case that [John] vacuum formed at home. He sketched out the proposed outline, built a mold out of plastic sheets and hot glue, and created a concrete dummy mold for the vacuum former — meaning if he ever wanted to recreate this project it would be a piece of cake!

Continue reading “BigBoy Advance, a Giant GBA for Big Hands”

Commodore 64 and Nintendo Make Beautiful Music Together with SYNCART

Cyncart

[Dan] has been hard at work developing CYNCART to get his Commodore 64 and original NES to play together. We’ve seen [Dan's] handiwork before, and it’s pretty clear that he is serious about his chip tunes.

This project starts with something called a Cynthcart. The Cynthcart is a Commodore 64 cartridge that allows you to control the computer’s SID chip directly. In effect, it turns your Commodore 64 into a synthesizer. [Dan] realized that the Commodore’s user port sends out simple eight bit values, which happens to match perfectly with the NES’ controller ports. In theory, he should be able to get these two systems communicating with each other.

[Dan] first modified the Cynthcart to send data out of the user port on the Commodore. This data gets sent directly to the NES’ 4021 shift register chip in the second player controller port. The NES runs a program to turn this data into sound on the NES’ audio chip. The first player controller can then be used to modify some other sound settings on the NES. Musical notes are played on the Commodore’s keyboard. This setup can also be used to play music on both systems at the same time. Be sure to watch the video of the system in action below.

Continue reading “Commodore 64 and Nintendo Make Beautiful Music Together with SYNCART”

Original NES Guts Upgraded with RetroPie

NES RetroPi

If you have an old broken NES lying around and have no idea what to do with it, you may want to check out [snoius's] latest project. He replaced the guts of his old NES with a Raspberry Pi. [snoius] started out by removing most of the electronics from his original NES to make room for the Pi. He left the original control panel board so he would be able to use the original power button and power LED. The NES power switch is an on/off toggle switch. [snoius] decided to just route the 5V USB power input directly through this switch. The result is a hard power switch for the tiny computer. The original power LED is wired up to the Pi’s 3.3V GPIO header through a 330 ohm resistor. Now when the Pi has power, the LED lights up.

The next step was controllers. It looks like [snoius] is using some USB SNES controller clones. He wanted to use the original NES controller ports but obviously the NES did not utilize USB. [snoius] used a saw to cut the backs off of the controller ports, leaving a flat surface. He then used a utility knife to carve out a hole in the shape of a female USB port. He mounted some ports in place and then wired the inside up to some short USB cables with male ends. These were plugged into a USB hub that is hidden inside of the NES case.

The Pi is also hooked up to a short HDMI cable and a short power cable. The loose ends of the cables are mounted to a small block of wood. Notches are cut out of the wood to better fit the cable ends. The rear of the NES has two holes cut out where the original connectors used to be in order to accommodate the new connectors.

With all of the hardware taken care of, [snoius] still needed a way to actually play his games. That’s where RetroPie saved the day. RetroPie is a Linux distribution for the Raspberry Pi that is specifically created to make it easy to play old video games. It includes emulators for many old systems including NES, SNES, SEGA Genesis, Gameboy, etc. [snoius] installed RetroPie onto an 8GB SD card and copied over all of the ROMs he could find. The end result is what appears to be an original NES at a glance, but is in fact multiple retro gaming systems in one. It also contains hundreds of video games in on board memory instead of requiring a large library of physical cartridges.

[via Reddit]

Dual Port RAM Teaches an Old NES New Tricks

nesDPR

[Andrew] is developing a game for the Nintendo Entertainment System (NES). Emulators are great for this, but [Andy] loves running on the real iron. To help, he’s created a dual port RAM interface for his NES. As the name implies, a dual port RAM is a memory with two separate data and address buses. The Cypress Semiconductor CY7C136 [Andy] used also includes arbitration logic to ensure that both ports don’t attempt to access the same memory cell and cause data corruption. In [Andy's] case the NES was on one side, oblivious to the new hardware. On the other side of the dual port RAM, [Andy] installed an ATmega164 running his own custom firmware.

The new hardware gives [Andy] a live view of what’s going on in the NES’s memory. He added a live memory view/edit screen similar to the FCEUX emulator. The window runs on a PC while the game itself is running on an NES. [Andy] was even able to add rudimentary break and step features by connecting his circuit to the Non Maskable Interrupt (NMI) line of the NES. By holding the NMI asserted, the ATmega can essentially freeze the game in progress.

[Andy] has even used his circuit to teach the NES some new tricks. By reading the timer and score memory locations on Ice Hockey, he was able to create a scoreboard and goal light. Similar techniques were used to give Contra a muzzle flash light which puts Ambilight systems to shame.

We don’t know what [Andy] is planning next, but we hope it’s a source release so we can start hacking some some games ourselves!

Click past the break to see a couple of [Andy's] Vine videos.

Continue reading “Dual Port RAM Teaches an Old NES New Tricks”