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. 

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


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 with PCB, enclosure, buttons, and storage bag
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
Angled shot of Adafruit PyGamer for MakeCode Arcade, CircuitPython or Arduino.
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
Angled shot of a Adafruit PyBadge for MakeCode Arcade, CircuitPython, or Arduino.
What's the size of a credit card and can run CircuitPython, MakeCode Arcade or Arduino? That's right, its the Adafruit PyBadge! We wanted to see how much we...
Out of Stock
Angled Shot of Adafruit PyBadge - Low Cost.
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...
In Stock
USB cable - USB A to Micro-B - 3 foot long
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...
In Stock

This guide was first published on Jun 24, 2019. It was last updated on Mar 08, 2024.

This page (Overview) was last updated on Mar 08, 2024.

Text editor powered by tinymce.