Overview

Not satisfied with the sprites in your NES game? This guide will show you how to hack the ROM from a Nintendo Entertainment System* (NES) game to make your favorite games even better by allowing you to change the sprites and graphics within the game! Change the main character to your own creation! Or simplify the game into a mediative floating cloud paradise. The power is in your hands!

*The NES is a popular gaming system from the 80's.

What's a ROM Anyway?

ROM stands for "Read Only Memory" and is a file that contains data from a read only memory chip such as a video game cartridge. ROM files are often run in video game emulators to play the games they are copied from. But if ROM means read only memory, how can we write over it to add our own sprites? That's where the hacking comes in :)

A ROM Hacking History

Hacking ROMs is nothing new. Some famous examples include Cory Arcangel's Super Mario Clouds, a mod of the original 1985 Super Mario Bros. that features just the clouds from the game.

Arcangel also hacked a mod of F1 Racer to feature just the road and landscape. Peaceful!

* Images by Cory Arcangel

In order to hack these games, Arcangel had to dig into the game cartridge and do some soldering and other wizardy.

Fortunately we now have NES files that can be edited on a computer so no NES cartridge soldering is necessary! 

A more action-packed example comes from Kenna W, who decided to swap out Link for Zelda in the classic Legend of Zelda:

For me, I played my first Zelda game when I was pretty young, and at the time, I thought the game did star Princess Zelda. I figured I'd get to play as a magical battle princess that saved her kingdom. The game was fun, but I was bummed out that I never got to play as Zelda. But like I said, I'm an adult now. There's no one to stop me from eating candy before bed and there's nothing standing in the way of me creating the games I want to play. 

hacks_zelda_spritesheet.png
Photo by Kenna W.

In addition to playing these cool mods on computer emulators, we can also play them remotely on a handheld gaming device like the PyGamer. We can store quite a few NES ROMs on the PyGamer (as well as other boards with Adafruit Arcada support) to have our choice of a multitude of classics and mods where ever we go!

Prerequisite Guides:

Pixel Art Fundamentals

  • A great overview of pixel art, and methods of how to create your own sprites.

NES Emulator for Arcada

  • If you plan to run any NES ROMs on hardware, looking through this guide before continuing would be a good idea. This guide will show you how to port and play NES ROMs on boards with Arcada support such as the PyGamer, PyBadge, and PyBadge LC

Parts

Play your new games on (in theory) any board with Arcada support - but we recommend ones that have a gamepad + buttons:

Adafruit PyGamer Starter Kit

PRODUCT ID: 4277
Please note: you may get a royal blue or purple case with your starter kit (they're both lovely colors)What fits in your pocket, is fully Open...
OUT OF STOCK

Adafruit PyGamer for MakeCode Arcade, CircuitPython or Arduino

PRODUCT ID: 4242
What fits in your pocket, is fully Open Source, and can run CircuitPython, MakeCode Arcade or Arduino games you write yourself? That's right, it's the Adafruit...
OUT OF STOCK

Adafruit PyBadge for MakeCode Arcade, CircuitPython or Arduino

PRODUCT ID: 4200
Coming soon! Sign up to be notified when we have these in stockWhat's the size of a credit card and can run CircuitPython, MakeCode Arcade or Arduino? That's...
OUT OF STOCK

Adafruit PyBadge LC - MakeCode Arcade, CircuitPython or Arduino

PRODUCT ID: 3939
What's the size of a credit card and can run CircuitPython, MakeCode Arcade or Arduino even when you're on a budget? That's right, it's the Adafruit...
OUT OF STOCK

USB cable - USB A to Micro-B

PRODUCT ID: 592
This here is your standard A to micro-B USB cable, for USB 1.1 or 2.0. Perfect for connecting a PC to your Metro, Feather, Raspberry Pi or other dev-board or...
$2.95
IN STOCK
This guide was first published on Jun 24, 2019. It was last updated on Jun 24, 2019. This page (Overview) was last updated on Nov 19, 2019.