bsnes snes emulator

Setting up and Loading ROMS on BSNES

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.

What is a ROM file?

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.

Configuring ROM Directories

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.

How bsnes reads ROMS

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:

  1. The SNES Preservation Project database provided with bsnes (Database > Super Famicon.bml)
    • This provides accurate data for most commercially released games
  2. A manifest file stored beside the ROM file
    • Allows you to control the exact memory map the emulated game will see
  3. Heuristic analysis of the ROM file
    • Works for all commercially released games, but often broken for prototypes, betas, mods, and homebrew games

How to Download and Load SNES roms on BSNES

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.

How to override a Game's memory map (Fix a broken ROM)

Where to get a manifest

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

How to modify 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 sha256:name:, and 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.

Where to put it

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

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

Troubleshooting

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.