Not satisfied with the sprites in your NES game? This guide volition testify yous how to hack the ROM from a Nintendo Amusement Organisation* (NES) game to make your favorite games even better past 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 easily!

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

What's a ROM Anyhow?

ROM stands for "Read Only Retention" and is a file that contains information from a read only retentivity bit such equally a video game cartridge. ROM files are oftentimes 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 simply the clouds from the game.

Arcangel also hacked a mod of F1 Racer to feature merely 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 take NES files that can be edited on a computer and then no NES cartridge soldering is necessary!

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

For me, I played my kickoff Zelda game when I was pretty young, and at the time, I idea the gamedidstar 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 every bit Zelda. But like I said, I'one thousand an developed at present. There'southward 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

Photograph by Kenna W.

In addition to playing these cool mods on estimator emulators, we can too play them remotely on a handheld gaming device like the PyGamer. We can shop quite a few NES ROMs on the PyGamer (besides equally other boards with Adafruit Arcada support) to have our choice of a multitude of classics and mods where e'er we go!

Prerequisite Guides:

Pixel Fine art Fundamentals

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

NES Emulator for Arcada

  • If you plan to run whatever NES ROMs on hardware, looking through this guide before continuing would exist a practiced idea. This guide will show yous how to port and play NES ROMs on boards with Arcada back up such as the PyGamer, PyBadge, and PyBadge LC

Parts

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

Please annotation: yous may go a majestic blue or regal case with your starter kit (they're both lovely colors)What fits in your pocket, is fully Open...

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...

What's the size of a credit menu and can run CircuitPython, MakeCode Arcade or Arduino? That's correct, its the Adafruit PyBadge! We wanted to see how much we...

What's the size of a credit card and can run CircuitPython, MakeCode Arcade or Arduino even when y'all're on a upkeep? That'due south right, it's the Adafruit...

This here is your standard A to micro-B USB cablevision, for USB 1.1 or ii.0. Perfect for connecting a PC to your Metro, Plumage, Raspberry Pi or other dev-board or...

The "Incommunicable" Vision

In this guide nosotros'll cover:

  • How to find a ROM to hack.
  • How to edit the sprites and graphics in the ROM.
  • How to play the new game in an emulator or on Arcada supported hardware.

I inverseBurgerTime, the 1982 classic, to Impossible BurgerTime, starring a cow that makes found-based burgers!

Here's a sample of the original game starring a chef:

hacks_Screen_Shot_2019-06-24_at_4.41.24_PM.png

And here's a sample of the mod we'll create starring a moo-cow:

hacks_Screen_Shot_2019-06-21_at_5.02.38_PM.png

You can mod whatsoever NES game of your choosing and employ this guide equally a reference. On the adjacent page, learn how to discover some neat NES ROMS to hack up!

Now that y'all take the ROM you wanna hack, let's jump into editing the sprites in the game. First we'll demand to download an editor to be able to access the ROM. Download an editor based on the operating system you lot utilise.

Download an NES sprite editor

Mac Os

Windows

Linux

There isn't a well known NES sprite editor for Linux that I could find but you lot tin can e'er apply the Wine platform to run Windows on your Bone then run Tile Layer Pro from there.

Once you take an editor downloaded and an NES file, it'south time to start hacking away at those sprites. I will exist using the Mac OS NES CHR editor for this lesson, however if you are on Windows and using the Tile Layer Pro editor, the Mac Os editor works similarly and a lot of the same concepts and functionality will transfer over. If you get stuck with the Tile Layer Pro editor, this is a great guide that walks through how to use the editor.

What is NES CHR data?

The majority of NES cartridges store sprite data in a function of the ROM chosen CHR which is usually a single chip 8K or larger. Sprites and other pattern data are stored in 8 x viii pixel tiles. Virtually sprites are and then fabricated upwardly of multiple tiles put together. Mario, below is made up of 4 CHR tiles.

hacks_image.png

Paradigm source: http://www.romhacking.cyberspace/utilities/119/

Read more on how NES CHR data works here.

Open the NES file in the editor

  • hacks_Screen_Shot_2019-06-17_at_4.45.06_PM.png
  • Open up the editor.
  • Cull the NES file you lot want to alter and open it.

Navigating the NES CHR Editor

  • hacks_Screen_Shot_2019-06-17_at_4.46.15_PM.png
  • As mentioned before the sprites are divided upwardly into 8 x 8 blocks. More often than not you'll accept to adjust 4 blocks together to make a full sprite.
  • The organization of these blocks is something you'll have to effigy out equally each game is different.
  • In the correct window, you'll observe the CHR bank containing all the CHR tiles.
  • On the left, observe the editor where CHR tiles can exist arranged, changed and saved.

Find the Desired Sprites

Describe the New Sprite

You lot may want to apply an online sprite editor such equally Piskel, to play around with the shapes until you are ready to save to the CHR editor. Here's a great guide on pixel art fundamentals if you're new to this.

Picking Colors

You lot have iv options for picking colors. White is transparent, and the other three correspond to preset colors in each game. Unfortunately in that location is no electric current style to change the these preset colors.

hacks_Screen_Shot_2019-06-17_at_5.43.04_PM.png

The colour picker in the Mac NES CHR Editor

Draw the Sprite in the Editor

Relieve the New Sprite Tiles

  • hacks_Screen_Shot_2019-06-18_at_1.51.46_PM.png
  • One time the new sprite is all set, click the left relieve icon for each tile. This will save the state of the tiles you changed.
  • Brand sure to besides save the .nes file! You may desire to do a "save as" initially to have the original copy for reference.

The CHR editor may unexpectedly crash so please call back to relieve your files constantly!

Tips and Tricks

  • Use the copy and paste functions in the editor to copy and paste tiles that are reused or similar to ones y'all are trying to make.
  • Yous can click whatever of the boxes in the small 4x4 grid at the bottom right of the editor to change which quadrant the adjacent tile yous click from the CHR banking company goes into.
  • Tiles are non typically placed in any particular lodge in the CHR bank so make sure to proceed rails of which tiles correspond to which sprites.
  • The CHR editor may unexpectedly crash, and then delight call back to salve your files constantly!

Test out the New Game

Uploading to and Playing on Hardware

When you're set to upload the game to any hardware such as the PyGamer or PyBadge check out this guide!

If you want to change more than just a unmarried sprite you will have to do some more shuffling around in the CHR bank.

Observe some screen shots of the creation of "Impossible BurgerTime" beneath.

Find a link to the Piskel sprites here!

"Incommunicable BurgerTime" Mods

Irresolute Chef to Cow

Front

Back

Side

Attack (Throw Table salt)

("Dying" sprites non shown)

Ice Cream changed to Burger King Crown

  • hacks_Screen_Shot_2019-06-20_at_7.05.28_PM.png
  • A popular burger chain with a imperial logo carries the Impossible Burger, so it's simply natural that a crown gives our cow more common salt throw at enemies!

Splash or Title Screen

  • hacks_Screen_Shot_2019-06-21_at_5.02.38_PM.png
  • Letters added / modified.
  • Impossible Flag added.
  • Cow added inside of "B".

Our new mods in action!

Can you change the enemies to something more than artistic? Enjoy and happy ROM hacking!

This guide was start published on Jun 24, 2019. It was last updated on Jun 24, 2019.