In order to take advantage of the best emulation experience available for Super Nintendo games, one needs access to ROMs. Here, we will explore what a ROM file is, how bsnes reads and opens a rom, how to download, fix, set up and use it with BSNES – the top rated SNES emulator.
ROM files are an invaluable asset, typically used to store exact replicas of a computer’s or video game cartridge’s read-only memory (ROMs). They can be employed for various applications, including emulation, updating the firmware on a device, and archiving ROM data.
SNES ROMs are ROM images of classic Super Nintendo games like Mario, Donkey Kong and Chrono Trigger, which can be played using a SNES emulator – such as BSNES – on your PC, Linux, Mac, Android or IOS devices.
When downloading SNES ROMS it’s best to save all your games into a single folder for easy access and ensuring all your SNES files are organized. To setup and configure the default directories, head over to the Settings tab and click on Paths…
You’ll notice that there are 6 sections you can assign. We’ve saved our BSNES install folder on our C drive and created individual folders for each section, as shown below. So the next time you download a game, place it in your designated “Games” folder.
In order to correctly emulate how a real Super Nintendo would play a particular game, bsnes needs to know how that game’s data would be arranged in the system’s memory map, and any extra hardware that might have been present in the game’s cartridge. This extra data describing a game is called a “manifest”. When searching for manifest data, bsnes uses the first source it finds in the following list:
A simple google search will reveal a lot of websites where one can download and find ROMs for Super Nintendo. However we recommend using our SNES ROM section on bsnes.org to get high quality and original Version 1.0 ROMs that fully supports our SNES Emulator.
The process of loading ROMs is straightforward; in BSNES, go to System and select “Load Game”. As per our path directory configuration previously, it should now load C:/bsnes/games/. If you haven’t configured your game paths, the default folder will lead to your “Downloads” folder. Locate your game (zip file) and click on open to launch the game.
The easiest place to get a working manifest is from the included game database. Open the Database/Super Famicom.bml file, search for the name of a game that’s similar to the one you want to get working, then copy the entire “game” block.
You should wind up with something that looks like this:
game sha256: 12b77c4bc9c1832cee8881244659065ee1d84c70c3d29e6eaf92e6798cc2ca72 label: Super Metroid name: Super Metroid region: SNS-RI-USA revision: SHVC-RI-0 board: SHVC-BA3M-01 memory type: ROM size: 0x300000 content: Program memory type: RAM size: 0x2000 content: Save
Alternatively, if you don’t know the name of a similar game, or if the same game has multiple different entries (for example, a USA and a Europe release), you can use the Manifest Viewer to copy the manifest from a working game.
Load up the working game in bsnes, then from the Tools menu, choose “Manifest Viewer”, and you’ll see the complete manifest bsnes is using. Again, you can copy the “game” block (ignore the separate “board” block below it).
You should paste the manifest into a “plain text” editor to modify it, like Notepad++ on Windows, or TextEdit (in plain-text mode) on macOS. Regular old Notepad may work if you’re using a version that can save files with Unix (LF) line-endings. Don’t use a word processor that can format text, like Microsoft Word or Wordpad, since bsnes doesn’t understand formatting codes and it will get confused.
You can remove the lines beginning with
revision:, if present, since they’re only useful for tracking which games are included in the official database. The text after
label: controls the name that bsnes will display in the title-bar when the game is loaded. The text after
region: tells bsnes whether the game expects to be run on an NTSC system (Japan, USA) or a PAL system (Europe, Australia). In the game database, this field holds the publisher’s unique identifier from which bsnes infers the correct region, but you can just write “NTSC” or “PAL”.
You should also check the “memory” block with
type: ROM. The
size: field describes the expected size of the ROM image, in bytes. In our example above, the size is 0x300000 in hexadecimal, which is 3,145,728 in decimal, which is the exact number of bytes in the Super Metroid ROM image. If the manifest you’re using as an example mentions a different size than the ROM image you’re trying to get working, it’s probably the wrong example and you should choose a different one.
Make sure you save your customised manifest as a plain text file, using Unix (LF) line endings, and the UTF-8 text encoding.
If your ROM image is in a higan-style game folder (a directory with the
.sfc extension, containing a
program.rom file), save the manifest in that directory, named
If your ROM image is a single file (probably with the
.sfc extension), save the manifest beside it with the
.bml extension. For example, if the ROM you’re trying to get working is called
myhomebrew.sfc, save the manifest beside it as
If your ROM now loads correctly, congratulations!
If it’s still broken, the easiest way to verify that bsnes is reading your manifest is to open the Manifest Viewer from the Tools menu. If you don’t see the manifest data as you created it, make sure the manifest data is saved in the correct location, with the correct name, and in the correct file format.
Also, note that bsnes ignores external manifests for games that appear in its game database.
If your manifest is being read correctly, but the game still doesn’t work, you should try basing your manifest off a different game.