Super Nintendo (Super Famicom) - Reverse engineering & Modding

Edit on Github | Updated: 1st December 2024

Introduction

Welcome to our page dedicated to Super Nintendo reverse engineering! The Super Nintendo Entertainment System, or SNES, was a popular gaming console released by Nintendo in 1990. If you’re interested in learning more about the technical aspects of this console and how it works, you’ve come to the right place.

On this page, we’ve compiled a list of links to other pages that cover various topics related to Super Nintendo reverse engineering. Whether you’re interested in understanding the hardware architecture of the console, analyzing game code, or exploring the many mods and hacks that have been created by enthusiasts over the years, you’ll find a wealth of resources and information on the pages we’ve linked to.

So grab your SNES controller, and get ready to dive into the exciting world of Super Nintendo reverse engineering!

State of SNES Emulation

Every three years Near created an excellent article on the current status of Super Nintendo Emulation, the last version is from 2019, it covers both bsnes and higen.

SNES Emulation Status 2019

The latest status of Super Nintendo emulation, including new and upcoming features for bsnes and higen


SNES Game Development

How long did it take to develop games for the SNES back in the day?

On average, SNES game development could take anywhere from several months to a couple of years. Some simpler or shorter games might be developed more quickly, while larger, more complex titles could take longer.

Most game development teams only hand a handful of people working full time on the game, mostly programmers. Artists and Sound Engineers were often working on multiple projects at the same time. Music was usually created and added to the game near the end of the development process when the game was getting ready to be shipped.

Some examples of the length of time it took to develop Super Nintendo games are:

  • Spider Man & X-Men in Arcade’s revenge - Took roughly 6-7 months from start to final build using a team of 4 highly experienced game programmers, 2 talented musicians and 6 brilliant artists1:
    • Programmers: Mike Follin, Kevin Edwards, Stephen Ruddy and Michael Webb
    • Artwork: Anthony Anderson, Craig Houston, David McLachlan, James Clarke, Jonathan M. Smith and Ste Pickford
    • Music: Geoff Follin and Tim Follin
  • Super Mario World 2: Yoshi’s Island - Took exactly 3 years and 5 months to complete (February 1st, 1992 until June 29th 1995 2) with a team of 12 programmers.
  • RPM Racing (Interplay) - In an interview with SuperPro (October 1992) Brain Fargo explains that they only had 4-5 months to implement the game after finding out out the specs of the Super Nintendo. But he goes on to say that games after that took 1-3 years on average to get a better level of polish. It was developed with the Sluggo III SNES development kit 3.

What would you need to write SNES games?

Pretty much every development team had their own ways of working back then, some had official development hardware and others had to make their own or license it from a thrid party development tool company.

You would need the following on your desk:

  • Computer to write the code on (e.g Apple II 3, Sony NEWS workstation)
  • Either a modified retail SNES or a development Kit
  • A CRT Monitor to connect to the SNES
  • Cables to connect the modified SNES cart (or devkit) to the computer

On your computer of choice you would need:

  • Text editor
  • Assembler (e.g Merlin on the Apple II3, asm816 on a Sony NEWS workstation)
  • Linker
  • Program to send the ROM data to the console
  • Program to flash a ROM image to an EEPROM.
  • Program to create/edit sounds (e.g SynthLab for music composition or Sound Shop 3) and program to convert sound to a SNES sound format

What programming languages were used to write SNES games?

At least 90 percent for all commerical Super Nintendo games were written in raw 65c816 assembly language, however there have been some hints over the years of ORCA/C support but no confirmation on specific games 4.

Once such game written in C for the SNES was Super Noah’s Ark 3D, which although not licensed by Nintendo it was for sale in retail shops during the SNES lifespan 5.

Also The Western Design Center has documentation for its software development platform called Zardoz that has a section called Nintendo development which has features specifically targeted for the SNES such as being able to assemble binaries into the ISX format 6!

Were there any IDEs for the SNES?

Integrated Development Environments (IDEs) as we know them today were not as prevalent or sophisticated. However, there were some software tools and environments that provided integrated features for assembly language development back in the early 90s.

Merlin was a popular assembly language development environment for the Apple II. It provided an integrated editor, assembler, and debugger, making it a comprehensive tool for writing and debugging assembly code. This was used to write a number of Super Nintendo games for Interplay such as RPM Racing and the SNES port of Out Of This World3.

In Youtube footage from Pernoelle 7, we can see a programmer working on the Super Nintendo game Pilotwings using an IDE back in 1990, but it is unclear which IDE is being used: Pilotwings development

However looking closly at the keyboard the the PC we can see its a Sony NEWS workstation, so it must have been an IDE that supported that platform.

Was there an official SDK?

Yes, we have a seperate page for the Official Super Nintendo Software Development kits:

SNES (Super Famicom) Software Development Kit (SDK)

For more information about the **Super Nintendo** software development kit check out this post

How would teams send their games to QA or to the press?

FTP servers were setup for sending builds across the world but for local testing the code would be flashed to an EEPROM chip (Electrically Erasable Programmable Read-Only Memory) and put in a cartridge shell (either an modified retail cartridge or a specialised cartridge.

How large were SNES game development teams?

According to Brain Fargo of Interplay his SNES games had teams of 5 people on average working on a single game.

In an interview with Shigeru Miyamoto he states that development takes can get up to about 20 or so people in the later half of the development cycle 8:

For our development teams, for the beginning of the first year its usually comprised of 3 to 4 people, then about half a year in we start adding people until about the 8 month mark, where we reach a team of 20 or so. A new game system determines about 60% of the game creation process. In my case I work on that nucleus of the game first. The maps, story, etc are all about 10 or 20%.

How did SNES Game Development teams communicate?

Back in 1992 the internet was still finding its footing in the games industry and much of the communication was done via Fax, here is one example of a Fax sent between the Acclaim production team presumably in the US and the game programmers in the UK.

Although note that in the Fax they mention sending a build of the game to Nintendo via Modem for sound testing so the Internet was in use.

Email was also in use, even amongst japanese game developers such as Square as can be seen in an interview with Hironobu Sakaguchi who worked on Final Fantasy 8:

I use a Macintosh to make the tools we use at Squaresoft, and I also use it when making SFC games. Our team is also connected on the local network, and we pass ideas around via e-mail. This way when one person has an idea, it can be shared with everyone.


Sound and Music

For anyone interested in how Sound works on the SNES you should watch SNES Audio System Overview from Retro Game Mechanics Explained on Youtube:


Hardware

If you’re interested in reverse engineering software for the Super Nintendo gaming console, it’s important to have a thorough understanding of the hardware that powers it. By comprehending the inner workings of the Super Nintendo hardware, you can better understand how the software interacts with the hardware and how you can potentially modify or enhance it.

This segment of our guide will provide you with detailed information and resources on the hardware of the Super Nintendo, including retail, prototype, and development hardware.

Development Kit Hardware

We have a post all about the hardware that was used to develop for the Super Nintendo:

SNES (Super Famicom) Development Kit Hardware

For more information about the **Super Nintendo** development hardware check out this post


Retail Console Hardware

For an in-depth look at the SNES Retail hardware architecture check out the excellent post by Copetti.org:

Super Nintendo Entertainment System (SNES) Architecture - A Practical Analysis

Copetti.org has an excellent tear down of the SNES Hardware and how it works

Was the SNES backwards compatible with the NES?

No, but it was intended to be during early development of the SNES which we found out thanks to an interview with Masayuki Uemura 9:

In truth, we actually wanted the Super Famicom to be able to play Famicom games too. We used a CPU that’s equipped with a 6502 emulation mode and everything. However, the sheer amount of games released for the Famicom, plus the fact that they often used different types of ROMs and chips made it too difficult to produce a perfect conversion.


SNES in-flight Airplane hardware (Nintendo Gateway)

In 1993 Nintendo introduced an in-flight entertainment system called the Gateway, this system allowed passengers to play SNES games for about 4 USD an hour.

The Journalist Ernie Smith has written an excellent article on his site which you can access at Will the In-Flight Entertainment System Survive COVID-19? and also tweeted out the Nintendo Power article which talks about it:

Also if you prefer video-based content the youtuber Top Hat Gaming Man has created an excellent video on the subject:


## Satellaview The Satellaview was a satellite add on for the Super Famicom only ever released in Japan on the 24th April 1995. It allowed users to download games, virtual magazines and listen to radio broadcasts.

The sad thing about the Satellaview is due to the nature of the technology most of the content has been lost to time and has only been partially preserved by finding old recordings on people’s Satellaview cartridges. Some content was broadcast but never downloaded, or soon overwritten with newer content so there is no other way to obtain the data.

In 2020 Luigiblood did a presentation to the AirGap2020 conference about Satellaview Reverse Engineering which can be watched below:

The Satellaview has little Memory Packs with only 1MB (8 MegaBit) of flash storage space that would slot into the BSX Satellaview cartridges, it was a cartridge that had a smaller cartridge slot on top. Note that there was one other game that supported these Memory Packs, it was a game creator called RPG Maker.


Games

The SNES wouldn’t be as fondly remembered today if it didn’t have its huge library of both first-party and third party games. This section will look at some of those games for those of you looking for inspiration for a new reversing project.

Official Retail SNES Game Source Code

If you are interested to see officially released or leaked source code check for the Super Nintendo Entertainment System check out our other post:

Retail Console Game Source code (C/C++)

For the official source code check out this post.

Reverse Engineered SNES Games

If you are interested to see existing reversing projects for the SNES check out our other post specifically on this topic:

Decompiled Retail Console Games

For the list of decompiled games check out this post.

The Polygons of Another World

For an in-depth look at how the game Another World was ported to the Super Nintendo check out this article:

The polygons of Another World

The polygons of Another World

Remakes for the GBA

As soon as the Game Boy Advance (GBA) was annonced people were describing it as a portable Super Nintendo, Nintendo themselves contribute to this message by re-releasing many of their SNES games for the platform. In total 48 SNES games were released on the GBA, most from Nintendo themselves but third party publishers got on board too.

The GBA is a completely different beast from the SNES in terms of architecture and with most SNES games written in pure 6502 assembly it wasn’t possible to just do a straight port. Most of the games needed to be re-written from scratch to support the new portable console. During this process a lot of changes were made to fit the much smaller non-backlit screen of the GBA, such as increasing the sprite size and brightening the contrast.

The Youtuber CaptRobau has an excellent video showing off the graphical differences between all 48 games that were remade for the GBA:


Game Modification and ROM Hacking

Excellent video by Displaced Gamers on how to edit SRAM saves for a Link to the Past on Super Nintendo, this is not actually ROM Hacking as the ROM is exactly the same, it is only the SRAM that is modified.


All Posts

The 6502 Microprocessor - Gaming's Unsung Hero

Read all about The 6502 Microprocessor - Gaming's Unsung Hero in this s...

Gigaleak - Original F-Zero Source Code (SNES)

Read all about Gigaleak - Original F-Zero Source Code (SNES) in this s...

Gigaleak - SNES Source Code Leak

Read all about Gigaleak - SNES Source Code Leak in this s...

How Retro Cartridges/ROMS work

Read all about How Retro Cartridges/ROMS work in this s...

SNES (Super Famicom) Development Kit Hardware

Read all about SNES (Super Famicom) Development Kit Hardware in this s...

SNES (Super Famicom) Software Development Kit (SDK)

Read all about SNES (Super Famicom) Software Development Kit (SDK) in this s...


References

Want More?

Follow us on Twitter & Bluesky!