The SNES ROM hacking guide

An easy understandable guide on how to create SNES ROM hacks.


##### Printable version #####

Visit "https://github.com/Techcrafter/SNES-ROM-Hacking" for the web version!


Chapters

Chapter 1: Introduction

Chapter 2: Requirements And Setup

Chapter 3: Regions And Headers

Chapter 4: Level Editors - Lunar Magic, Hyrule Magic , ...

Chapter 5: Choosing The Right ROM

More chapters coming soon...

If you like this guide, please give the GitHub repository a star!


Chapter 1: Introduction

Welcome to "The SNES ROM hacking guide"!

This guide will teach you how to create SNES / SFC ROM hacks on your own.

It features multiple chapters with different hacking categories and more.

This guide is about creating Super Nintendo Entertainment System / Super Famicom ROM hacks! Some information may apply to other consoles too, but this guide will only focus on the SNES / SFC.

This guide uses the short form SNES for the Super Nintendo Entertainment System AND the Super Famicom. The process is the same for both consoles!

What are you waiting for... let's begin!

What is a ROM (hack)?

If you read this guide, you probably know what a ROM and what a ROM hack is, but here is a short explanation anyways. ROM is the short form for "Read Only Memory". This is simply the name for the storage chips you can find inside your Game Pak.

The ROM chip is the big chip on the right side

The ROM chip is the big chip on the right side

These chips contain the game itself.

The ROM does NOT store your save games! This is done by the SRAM.

The ROM files you have on your PC are ROM dumps, but they are often simply called ROM's too.

A ROM hack is a modified version of a original game ROM. Those can change anything in the game like if you install a mod for a game on your PC!

This guide will only teach you how to create ROM HACKS! You will not find many useful information about creating your own SNES games here.

If you are fascinated by old games and you want to create your own ROM hacks, this guide should be the right one for you!

Knowledge you should already have

Yes, this is an "easy understandable" guide, but that does not mean you can start right away! Before you continue, you should ask yourself if you really want to learn more about this topic. The obvious answer would be yes, but ROM hacking will remain ROM hacking and this is NOT always easy. Even advanced people still struggle here and there. You have been warned!

Although this guide is meant to explain everything as uncomplicated as possible, you will not get around the assembly programming language (especially the 65816 for the SNES) as well as some knowledge about binary and hexadecimal.

A SNES game controller

A SNES game controller

If you do not have any programming experience (assembly would be optimal), you should maybe learn the basics of programming first and then come back here. Especially for the later parts, programming knowledge will become an essential part!

Legal notice

Downloading and publishing a ROM is illegal!

If you need a ROM... well, Google is your best friend. Please do not open an issue or write an e-mail in which you ask for a ROM file.

ROM hacks are being published as patches and those are legal because you still need the original ROM! A patch only contains the changes you have made to the ROM, but this will be covered in another chapter.

This guide is NOT affiliated or approved by Nintendo!


Chapter 2: Requirements And Setup

Requirements

You do not need a lot of stuff to start creating your own SNES ROM hacks. You simply need a PC running Windows or Linux.

If you use Linux, you must have the Wine compatibility layer for Windows applications installed!

Windows or Linux

Windows or Linux

The screenshots in this guide were taken on Linux, but the process is the same on Windows.

Mac OS with Wine compatibility layer installed was not tested! It may work, but there is no guarantee.

The Super Everdrive

This guide is not sponsored, but if you want to play your ROM hacks on a real Super Nintendo, you can use a Super Everdrive. It allows you to put your ROM files onto an SD-Card and play those on a real console to get the full experience, but this is fully optional. An emulator will work totally fine too!

A Super Everdrive cartridge

A Super Everdrive cartridge

Setup

There is not much setup to do for now. We only need a SNES emulator and a nice tool called SNEStuff. While you read through the other chapters, you will encounter more tools you need to download, but an emulator and SNEStuff is all we need for now.

Here are some recommended emulators, but others will probably work fine too:

And here you can download SNEStuff.

Once you have installed an emulator and extracted SNEStuff, you are ready to continue with the next chapter!


Chapter 3: Regions And Headers

Different Regions

It is pretty obvious that Nintendo released different console models for different regions. Those regions are the following:

Region Code Region Video Format Console name
J Japan NTSC Super Famicom
U United States NTSC Super Nintendo Entertainment System
E Europe PAL Super Nintendo Entertainment System

The main reason for this decision was to feature the different video formats for the different regions. Another, maybe not so obvious reason for this decision, was to prevent some Chinese and Japanese "manufacturers" to pirate games too fast.

A Super NES from the United States A Super NES from Europe

A Super NES from the United States / A Super NES from Europe

As you can see on the pictures above, even the designs of the consoles were very different!

But this is not all about the different regions. Some games like "A Link To The Past" or "Secret of Mana" were even translated into single languages. This happened because reading text is actually really important in those games, so they translated them in multiple languages.

A screenshot from the German version of ALTTP

A screenshot from the German version of ALTTP

Here is a list with the different region codes and their meaning.

Headers

Each official Nintendo ROM has a header. The header is important for the console because it contains information like cartridge/ROM size, additional chips (Super FX, SA-1, ...), if the game has a SRAM and more.

The header is only important for consoles! Most emulators will run ROM files without a header as well.

Removing and adding a header

The header of a game can be easily removed and added:

SNEStuff automatically adds or removes the header

SNEStuff automatically adds or removes the header

Patching ROM files

When patching a ROM it is important to check what for a ROM you need to patch! A ROM hack for a United States ROM will (in most cases) not work with a Japanese ROM for example. This depends on how similar both versions of the games are, but in most cases it will not work.

It is also important to check if you need a ROM with or without header.

Here's an example filename: Super Mario World (J) [!].smc

There are many different ROM patching tools out there, so watch out to use the right one! The most common one is 'Lunar IPS', but others like 'beat' or 'Delta Patcher' are often used too. You can simply find them by searching around the internet. Especially on Romhacking.net you should find them all.


Chapter 4: Level Editors - Lunar Magic, Hyrule Magic , ...

Level editors and their usage

First of all: This guide will NOT cover how to use level editors like Lunar Magic!

So, why is this chapter in here? Well, using level editors is by far the easiest way to create your own ROM hacks. If you simply want to create your own Super Mario World levels or a new A Link To The Past dungeon without adding any new features, then those level editors might already be everything you need.

Here are some recommended level editors for different games:

Lunar Magic Hyrule Magic Epic Edit

Lunar Magic / Hyrule Magic / Epic Edit

But this does not mean that level editors are not a part of ROM hacking! If there is a level editor available for the game you want to hack, you can use it as a great and useful help. If you want to create a Super Mario World hack with a new power-up and new levels for example, you can use the normal ROM hacking to add the new power-up and use Lunar Magic to create the new levels.

Keep in mind that you should be careful with the order in which you do these things. It is recommended to complete one of those actions first before starting with the next one (in this case it would be to add the power-up first)! If you haven't finished adding your new power-up for example, you should not start to create the new levels with Lunar Magic. Lunar Magic could corrupt your new power-up or even the entire ROM file.

If you want to learn how to use those level editors, search a bit around on the internet and you should find some great tutorials very easily!


Chapter 5: Choosing The Right ROM

After focusing on level editors and more, it is time to start with the ROM hacking part!

The first task is to choose the ROM you want to hack!

Obviously, it is your choice which game you want to hack, but as mentioned before, those games were released for different regions. If you create a new ROM hack, you probably want other people to play it. So before you start getting your ROM with a random region, it would be a good idea to take a look at Romhacking.net/hacks to check which regions of your game are often used for ROM hacks. Other aspects like an existing disassembly or level editor could play an important role too!

This guide will focus on 'F-ZERO [E] [!].sfc' first. Although there are not many F-ZERO hacks, this game is easy to hack and a good example for this guide.

F-ZERO - European Version

F-ZERO - European Version