Language…
10 users online: alef, aore gfhgft, Got_Breaded, HammerBrother, Hammerer, Mapsking, MM102, steelsburg, stormitive, Yairobot - Guests: 116 - Bots: 215
Users: 64,663 (2,406 active)
Latest user: NightSpark

A Beginners’ Guide to Super Mario World Hacking

Welcome to SMW Central! If you want to play Super Mario World hacks, learn how to make your own, or don’t know what ROM hacking is yet, this is a good place to start.

This guide will teach you the absolute basics. If you want to learn more, check out our F.A.Q. and our Tutorials forum. If you have further questions, you can ask in the Help forum and on our Discord server.

What is emulation?

Emulation is playing console games on your computer, by simulating the console hardware. It’s a great way to play old console games without needing the original hardware or an old TV!

All you need is:

  • An emulator
    • This is a program on your computer that simulates the original game console.
  • One or more ROM files
    • A ROM is a copy of an individual game turned into a computer file.

Simply open the ROM in the emulator to play the game.

A ROM file The emulator snes9x
A ROM file The emulator snes9x

What is ROM hacking?

You can change a game’s data by editing its ROM file, allowing you to create your own game using another game as a base! This is known as ROM hacking and the games you make by editing existing games are called hacks.

SMW Central is specifically dedicated to hacks of the game Super Mario World (SMW). We have over 1,000 SMW hacks you can download and play, and lots of tools and resources to make your own SMW hack.

How to play Super Mario World hacks

Step 1: Get an SNES emulator

To play SMW hacks, you need an SNES emulator. Popular choices are snes9x and bsnes. Never pay for an emulator!

 

Step 2: Get a Super Mario World ROM

You also need a ROM of the original Super Mario World. ROM files for SNES games are always either .smc or .sfc files.

We don’t distribute ROMs, and we can’t help you find a ROM! You’ll have to search for one yourself or make a backup of your personal copy of Super Mario World.

Make sure your ROM is clean (an exact, unmodified copy of the original game). If it’s not clean, the next steps won’t work. You can check if your ROM is clean using the ROMclean tool.

 

Step 3: Download the hack

Download the hack you want to play from the SMW Hacks section on SMW Central.

The download is a .zip file. A .zip file contains one or more original files that have been compressed. You have to unzip it to get the files out.

Inside the .zip file is a .bps file. That’s the hack you’re about to play.

Extracting a .zip file A .bps file

 

Step 4: Patch the .bps file to a ROM

A .bps file is not a ROM, so you can’t play it in an emulator! A .bps file is a patch– it has only the changes made to the original game.

To get a playable hack, patch the .bps file to your clean ROM file.

Patching

Use the online BPS patcher to patch the .bps file to the ROM:

  1. For “Base ROM”, select the clean ROM of the original game.
  2. For “Patch”, select the .bps file.
  3. Click “Apply patch”.
  4. Download the output ROM.

The output ROM is the hack! You can open it in an emulator to play it.

If you get an error, or if the hack doesn’t work, make sure your ROM is clean (see the information about ROMclean in Step 2).

Instead of the online BPS patcher, you can also use the program Floating IPS (“FLIPS”) to patch the .bps file. It does the same thing. Check this tutorial for details.

 

Why use .bps patches? Why not just share the ROMs?

We host hacks as .bps files for legal reasons. If we hosted them as ROMs, we’d be distributing parts of the game that belong to Nintendo. By using .bps files, we only distribute the changes that people made to the original game, not the game itself.

If you ever come across .ips files, don’t be confused: .bps files are the current standard, but .ips files work exactly the same way as .bps files. The only difference is that .ips files tend to be larger, and they don’t give you an error message when you patch them to the wrong ROM.

How to make Super Mario World hacks

SMW hacking is one of the easiest ways to make a game! However, it’s quite different from other game-making tools (like Mario Maker or game engines like Unity). We’re working with a game for the Super Nintendo Entertainment System, so everything has a special format: graphics aren’t just PNG, music isn’t just MP3, and so on. It also means you can’t do everything you may want to – the SNES just isn’t as powerful as a modern computer.

Some parts of SMW hacking are pretty easy, others are strangely hard, and getting the hang of it all can take some time. But once you do, you have a lot of creative freedom!

Lunar Magic

The level editor for Super Mario World is called Lunar Magic (LM). It can open Super Mario World ROMs, and it lets you edit levels, overworld maps, and more.

(Some people say “Lunar Magic” when they mean “SMW hacking” as a whole, but there are a lot more tools involved than just Lunar Magic.)

Two terms you’ll hear a lot are “objects” and “sprites”. Objects are things in the foreground that are fixed to a rigid grid (like ground, pipes, coins and question blocks). Sprites are things that can move independently of everything else (like enemies, powerups and platforms).

(Elsewhere, you might have heard “sprites” to mean just graphics, and “objects” to mean independently moving things. That’s also true, but it’s not what we’ve come to use in SMW hacking. Don’t get confused!)

Not all objects and sprites will look right! For example, Thwomps only look right in castle levels, and glitched in others. That’s normal in SMW. It’s because the SNES has limited graphics space: the game can’t have all graphics available at the same time, so each level has its own small set of graphics. That means you can never use all kinds of sprites in the same level – some of them will always look glitched.

 

Graphics

Graphics in SMW hacks don’t come in modern image formats like PNG or JPG. Instead, they’re .bin files.

To edit the game’s graphics, extract them from the ROM using Lunar Magic, then edit the GFX files with a tile editor, such as YY-CHR or Graphic Editor. Then, re-insert the graphics back into the ROM using Lunar Magic.

If you want to add new graphics to the game, use Extra Graphics (ExGFX). ExGFX give you more GFX files to work with, so you can add new graphics without affecting the graphics that are already there. Of course, for each individual level, you can still only use a limited amount at a time.

The SMW Graphics section has a whole lot of ExGFX packs you can download and insert.

Check the ExGFX guide for more info on how graphics work and how to insert them.

 

ASM

ASM (short for Assembly) is the SNES’s programming language. It’s the language that Super Mario World was programmed in, and all custom blocks/sprites/patches/etc. are also programmed in ASM.

You do not need to know ASM to insert things that other people have made. ASM knowledge is only needed if you want to write your own, new code.

(There are many other kinds of Assembly languages, but in SMW hacking, we use “ASM” to mean just SNES ASM.)

 

Blocks

Levels are made of 16x16 tiles called blocks. Custom blocks let you give new behaviors to tiles. For example, you can have a block that gives the player 10 coins, or a block that’s solid to the player but passable for enemies.

To insert custom blocks into your ROM, use a tool called GPS. A tutorial on how to use it can be found here.

The SMW Blocks section has a whole lot of custom blocks you can download and insert. There’s also a tool called Blockreator that lets you make your own blocks without needing to know ASM.

Custom blocks don’t come with graphics! Block behavior is separate from graphics, so when you insert a custom block to your ROM, it won’t look any different. Giving it graphics is a separate step (see “Graphics”).

Custom blocks can’t move! They’re part of the foreground. If you want something that can move, it will have to be a sprite.

Custom blocks are only active when the player (or a sprite) is touching them! To apply a more general effect to a level, try UberASM code.

 

Sprites

Sprites can move independently of the foreground and can be active even when the player isn’t touching them. Custom sprites can be new enemies, bosses, platforms, carriable items, and more.

To insert custom sprites into your ROM, use a tool called PIXI. A tutorial on how to use it can be found here.

The SMW Sprites section has a whole lot of custom sprites you can download and insert.

Sprite behavior is separate from graphics, so when you insert a custom sprite to your ROM, it won’t automatically look right. Sprites from the Sprites section usually come with graphics, but it’s your job to insert those graphics into the ROM and load them in the level (see “Graphics”).

 

Patches

Patches are code that rewrites parts of the ROM. You can apply a patch to your ROM to change the way the game works. For example, patches can give you multiple checkpoints per level, disable the status bar, give the player a health bar, and more. Patches are also used for very simple tweaks, like changing the amount of coins needed for a 1-Up, or fixing bugs in the original game.

To apply patches to your ROM, use a tool called Asar. A tutorial on how to use it can be found here. These patches come in the form of .asm files.

Be aware: in SMW hacking, the term "patch" can have one of two meanings – it can refer to an .asm file that changes a part of the game, or to a .bps file used to distribute a full hack. Both are correct, though the two formats are used differently:

  • .bps patches have to be applied to clean ROMs; .asm patches can be applied to ROMs that have already been edited.
  • .bps patches are applied with FLIPS; .asm patches are applied with Asar.
  • .bps patches aren’t human-readable; .asm patches are text files containing ASM code you can read and edit.

The SMW Patches section has a whole lot of patches you can download and apply.

 

UberASM

UberASM code is special code that can be run during specific parts of the game. For example, UberASM can be used to give the player a new ability that can be used in any level, change the player's gravity in one specific level, or display graphical effects when on the overworld map.

To add UberASM code to your ROM and set when it's run, use UberASMTool.

Unlike patches, UberASM code doesn’t rewrite part of the game – UberASM code is added on top of the game, and you can control where it runs.

The SMW UberASM section has a whole lot of uberASM code you can download and add to your ROM.

 

Music

Music for Super Mario World doesn’t come in modern audio formats like MP3 or WAV. Instead, music is written as text files that have note information.

To insert custom music into your ROM, use a tool called AddmusicK. A tutorial on how to use it can be found here.

The SMW Music section has a whole lot of custom music you can download and insert into your ROM.

AddmusicK also generates .spc files, which is the SNES’s music format. They’re not important for hacking, but you can listen to them. (Text files are for inserting, .spc files are for listening.) You can play them in an SPC player, such as the SNES SPC700 Player.

(Your computer may tell you .spc files are “PCKS#7 certificates”, but in SMW hacking, that’s wrong – it’s confusing them with a different file format also called .spc.)

 

SA-1

The SA-1 is a special chip inside the game cartridge that enhances the performance of the console. It was included in some SNES games, such as Super Mario RPG.

There’s a patch called the SA-1 pack that makes your ROM use the SA-1 chip. This lets you use more sprites at the same time with no lag, and more. It’s also a very complex patch that makes major changes to the game, so every block/sprite/patch/tool etc. has to be adapted to work with SA-1 ROMs. Luckily, almost everything on SMW Central is now made in such a way that it automatically detects if your ROM is using the SA-1 chip or not, and works either way.

Unlike other .asm patches, the SA-1 pack has to be applied to a clean, unmodified ROM. It comes with detailed instructions on how to use it.

If you’re just starting out, you don’t need the SA-1 pack. It’s mostly for large hacks that have a lot going on and suffer from lag. So if you’re confused about how to work with it, or wondering if you have to use it, don’t worry, you don’t need it!

 

Some other common terms

  • Vanilla: A vanilla hack is a hack that uses very few or no custom resources, such as sprites, patches, music etc. The exact definition of vanilla varies from person to person, but a common definition is to use only Lunar Magic on the ROM (and no other tools). The opposite of this is chocolate: a hack that uses custom resources not in the original game.
     
  • Porting: Porting has two meanings – 1) converting an existing song to the SMW format (i.e. a text file), or 2) starting your hack over with a new clean ROM and transferring all old levels/graphics/etc. over to it (sometimes necessary when something breaks your ROM and you need to start fresh).
     
  • Ripping: Converting existing graphics (either from SNES games or from other sources) to a format that’s ready for Lunar Magic to insert.
     
  • ROM: ROM has two meanings: 1) the game as a computer file, or 2) the contents of the game’s memory that don’t change during gameplay (all the code, graphics etc.). The SMW ROM Map lists all the parts of the ROM, and at which memory location they are. This is useful for making patches that change the ROM.
     
  • RAM: The part of the game’s memory that can change during gameplay (like the coin count, the player’s position on the screen etc.) While the game is running, it constantly changes the RAM. The SMW RAM Map shows how Super Mario World uses the RAM.
     
  • Freespace: Unused parts of the ROM where patches can put their own code.
     
  • Free RAM: RAM addresses that aren't used in the original game, that custom blocks/sprites/patches/etc. can use for their own purposes. Most resources that use free RAM say so at the top of the file. Be careful not to set two different resources to use the same free RAM address!

 

Submitting your hack

First things first: don’t submit ROMs to SMW Central! Your hack has to be a .bps patch.

Use FLIPS to create a .bps patch from your ROM:

  1. Click “Create Patch”.
  2. Select a clean (unmodified) ROM of Super Mario World. To check if it’s really clean, use the ROMclean tool.
  3. Select the ROM of your hack.
  4. Choose where you want to save the final .bps patch.

The .bps file you got in step 4 is the patch you submit! Compress it into a .zip file, then upload that .zip file to the SMW hacks section.

Make sure to read the submission guidelines on the page! If your hack doesn’t follow these guidelines, it might be rejected. You can still upload it elsewhere, such as your personal File Bin.

Generally, it’s not a good idea to submit your very first hack. SMW hacking takes time to learn, and your first attempt is often not as good as you might think it is. You'll learn a lot as you go, so it's wise to make your first hack just be a “trial run” for yourself.

SMW Central has a Works In Progress forum where you can share your work without officially submitting it. Getting other people's feedback is a great way to improve your skills!

 

Where to go from here?

This guide is meant to introduce you to the very basic concepts of SMW hacking. If you want to learn more, please check out these links:

  • SMW Central’s F.A.Q. page has lots of answers to beginners’ questions. It’s a good idea to give it a quick read. Whenever you have a question, come back to it and see if it already has the answer.
     
  • ➔ There’s also a Glossary page that explains many more commonly-used terms.
     
  • ➔ The Tutorials forum has detailed instructions on common hacking tasks (how to use tools, how to make your own resources etc.) If your question is “how do I use […]?”, check if there’s a tutorial for it!
     
  • ➔ The Help forum is a place on the forums where you can ask beginner questions. It’s a good idea to check the above links before posting your own question!
     
  • ➔ SMW Central also has a Discord server with a #help channel where you can ask all kinds of hacking questions. Again, it’s a good idea to check the above links before posting your own question!
     

Happy hacking!