The official home page of NSRT is: http://nsrt.edgeemu.com
Welcome to the ZSNES Documentation NSRT Guide. This is a guide written by the ZSNES Documentation Team, and is a companion to the main ZSNES Documentation.
NSRT is Nach's SNES ROM Tools. This utility provides many useful features for managing your SNES ROMs. Many of these features are closely related to SNES emulation and using ZSNES. This guide will cover the features of NSRT that are mentioned in the ZSNES Documentation.
Scope of this document
First off, you need to download NSRT. The direct link to the latest version of NSRT for Windows (as of the writing of this document, 3.3 Final) is http://nsrt.edgeemu.com/forum/download.php?id=229.
If you prefer to navigate to the download yourself:
- The official website of NSRT is currently located at http://nsrt.edgeemu.com.
- In the Navigation box on the left side of the page, click Files.
- Find the most recent version of NSRT and click the link to it. As of the writing of this document, the latest version of NSRT is 3.3 Final.
- Choose the appropriate version of NSRT for your operating system and click the Download link on the right side.
- Save NSRT to a location (such as the Desktop) that you can conveniently access after the download has finished.
Installing in Windows
- Find the file
nsrt33w.exethat you just downloaded (as explained in the section above).
nsrt33w.exe. This is usually done by double-clicking it.
nsrt33w.exefile is actually just a self-extracting 7zip archive. Choose a location to which to extract the NSRT program files, then click the Extract button.
- You're done! There is no installation program included with NSRT. You just run the program directly out of the folder to which you just extracted the program files.
Getting set up to use NSRT in Windows
There are two main things to consider when using NSRT with Windows. The first is that NSRT is a command-line program. You do not need to be terribly familiar with the Windows command prompt to use NSRT. The second thing to consider is that NSRT is almost useless by itself. Most of NSRT's functions operate on external files, like ROMs. Please read the ZSNES Docs for a more detailed explanation of ROMs.
The reason we need to consider these two things is that we need an easy way to use a command-line program to operate on files that may be located in many different folders. This document will cover two of many possible methods of accomplishing this.
Opening the command prompt at various locations
One of the easiest methods of opening the Windows command prompt is to open the Start Menu, then go to Run.... In the text box to the left of Open:, type cmd. This will open
C:\WINDOWS\system32\cmd.exe. This is the Windows command prompt executable. (Do not use command at the Start -> Run prompt; it is the old DOS command prompt.)
The problem with opening the command prompt using this method is that you will have to navigate to your ROM folders. For someone unfamiliar with the command prompt, this could be a very painful experience. Thus, we are going to enlist the help of a Microsoft Powertoy. If the preceding link no longer works, or if you want to navigate to this page yourself, follow these instructions:
- Go to http://www.microsoft.com.
- In the navigation bar on the right side of the page, click "Products & Related Technologies".
- In the new windows that pops up, click "Windows".
- In the navigation bar on the left side, under "Products", click "Windows XP". Wait for the new page to load.
- In the navigation bar on the left side, under "Resources", click "Downloads". Wait for the new page to load.
- Scroll down until you find "PowerToys and Add-ins for Windows XP" and click it. Wait for the new page to load.
- Within the main content of the page, under "PowerToys", click "PowerToys for Windows XP". Wait for the new page to load.
The PowerToy we are going to use is called "Open Command Window Here". If you read the PowerToys web site, you will see that this PowerToy fits our needs exactly:
This PowerToy adds an "Open Command Window Here" context menu option on file system folders, giving you a quick way to open a command window (cmd.exe) pointing at the selected folder.
To download this PowerToy, find it on the list on the right side of this page. This is a direct link that worked at the time of this writing.
Download the file to any convenient location, such as the Desktop. Before installing this PowerToy, please read all included instructions, including those on the top of the page from which you downloaded it.
You may have to restart your computer after installing this PowerToy. Once it is installed, you can try it out. Just right-click on any folder, and select Open Command Window Here. You will be presented with a nice little command prompt, already pointing at the folder that you right-clicked on.
When you are done using the command prompt, you can exit it by Xing out of the window, or by typing exit.
So the "Open Command Window Here" PowerToy solved the problem of opening a command prompt at some random folder. Now we need to find an easy way to access the NSRT executable (
Running the NSRT executable at various locations
If you have only a few ROMs, or all your ROMs are in a single folder, the easiest method of accessing NSRT from that folder is just to copy or move the NSRT executable to that folder. Once you have done this, you can just open a command prompt at that folder, and run NSRT.
This is not the ideal solution, however. You may very well have ROMs located in many different folders, partitions, hard drives, CDs, DVDs, etc. It may also be impossible to copy the NSRT executable to some of those mediums. Therefore, we are going to concentrate on a second solution.
The method you are about to use will give you access to the NSRT executable from anywhere on your system. What you are going to do is add the location of NSRT to your PATH environment variable. When you type in a command at the command prompt, Windows checks a number of locations, including all paths that are listed in the PATH environment variable, for executables with a filename matching what you typed in.
You will very likely need Administrative privileges in order to succesfully follow these instructions. To add the location of the NSRT executable to your PATH environment variable:
- Go to your Desktop.
- Right-click the "My Computer" icon, which opens a context menu.
- Left-click Properties, which opens the System Properties dialog.
- You can also access this dialog from the Control Panel (Start -> Control Panel -> System).
- Click on the Advanced tab.
- Click the Environment Variables button.
- There are two sections in the Environment Variables dialog. Make sure you make the following changes in the first section, which are User variables. Do not edit the second section, System variables.
- In the User variables for [username] section, you will see a list with two columns, Variable and Value. Look to see if the "PATH" variable already exists.
- If the PATH variable already exists:
- Click it so that it is highlighted, then click the Edit button.
- Click inside the Variable value: text box.
- Press the End button on your keyboard to move the text cursor to the end of the list.
- Type in a semicolon (;).
- Continue with step 10.
- If the PATH variable does not already exist:
- Click the New button.
- In the Variable name: box, type in PATH, in all capital letters.
- Click inside the Variable value: text box.
- Continue with step 10.
- You have two options for what location to specify in the Variable value: text box:
- You can specify the exact location of NSRT, such as
- Or, the better choice in my opinion, you can specify a generic folder, such as
C:\Data\PATH, to which you can move any executables that you want to be able to run from the command prompt. Then you would just copy the NSRT executable to this folder.
- Make your decision and type it in the Variable value: text box.
- You can specify the exact location of NSRT, such as
- Press the OK button in the "Edit User Variable" dialog. Press the OK button in the "Environment Variables" dialog. Press the OK button in the "System Properties" dialog.
- You will have to restart, or at the very least, log out and in again, for these changes to take effect.
- Once you have restarted, the new location you have added to the PATH variable will now be included when you type in commands at the command prompt.
We have now overcome both problems when working with NSRT. You can open a command prompt at any folder of your choosing, and run NSRT in that folder without needing to move/copy the executable to that folder. Now we can actually get down to using NSRT.
You should enable viewing of file extensions before you start to work with NSRT and your ROMs. File extensions are part of the complete filename, and are important when using NSRT. To enable viewing file extensions:
- Open the Control Panel (Start Menu -> Settings -> Control Panel).
- Open the Folder Options control panel applet.
- Click on the View tab.
- Make sure "Hide extensions for known file types" is unchecked (you may have to scroll down the list).
- Click the OK button.
Before proceeding, please read all documentation included with NSRT. This currently consists of the file
How to use NSRT:
- Open a command prompt at the folder of your choice.
- If you execute NSRT without any commands (by typing nsrt by itself), NSRT will list all available commands and how to use them. You should refer to this often.
- To operate on a ROM, type in nsrt followed by a command, followed by the name of the ROM. For example: nsrt -loginfo smw.sfc. Note that you must include the file extension.
- Some options can be used with other options. These are detailed in NSRT's documentation and also explained when you execute NSRT without any commands.
- If the filename of your ROM has any spaces, you must surround the filename with quotes. For example, nsrt -loginfo "Super Mario World.sfc".
- You can use the * wildcard by itself to make NSRT scan all files in a folder. You can also use it after a partial filename, like super* to scan all files that start with the text "super".
- If you want NSRT to scan subfolders as well, add the -r command.
One of the most important functions of NSRT is to give you information about your ROMs. There's no way to be sure if the ROM that you downloaded from some random site is a "perfect" dump. Even a [!] after the name of your ROM (a naming convention of GoodTools) does not confirm that it's a good dump. The NSRT database contains only those ROMs that are believed to be perfect dumps of actual game cartridges. There are no hacks, translations, or "public domain" ROMs in the NSRT database.
To scan a ROM to see its information, type nsrt "romfilename.ext". For example, nsrt "Super Mario World (U).sfc". You do not need to list any commands after nsrt in this case because the command -info is on by default. Example output from running nsrt "Super Mario World (U).sfc" might be:
---------------------Internal ROM Info---------------------- File: Super Mario World (U).sfc Name: SUPER MARIOWORLD Company: Nintendo Header: None Bank: LoROM Interleaved: No SRAM: 16 Kb Type: Normal + Batt ROM: 4 Mb Country: USA Video: NTSC ROM Speed: 200ns (SlowROM) Revision: 1.0 Checksum: Good 0xA0DA CRC32: B19ED489 --------------------------Database-------------------------- Name: Super Mario World Country: USA Revision: 1.0 Port 1: Gamepad Port 2: Gamepad Genre 1: Platform Genre 2: Side Scrolling
This is the output you would expect from a good dump of a ROM. After
Checksum: it says
Good, followed by the checksum itself. Also, this shows that the ROM is in NSRT's database. A ROM can have a good checksum but not be in NSRT's database. If the ROM isn't found in NSRT's database, you would see the following in the
Database section of the output:
--------------------------Database-------------------------- ROM wasn't found in the database (possible bad dump). You can try using -fix or -findover to see if the file has been slightly altered and rectifiable.
Veryifying a ROM to make a Bug Report
Please search the ZSNES Message Board (a built-in search function is provided) to see if a similar (or the exact same) bug has been reported already. If not, follow these instructions:
- If the ROM is not found in the NSRT database, it may be possible to modify your ROM so that it is found in the database. You can try some of the ROM-editing commands found below. If you have no success in getting your ROM detected by NSRT, do not report the bug. Get a new ROM, if applicable.
- If the ROM is found in the database, but after
Corrupt, you may need to fix your ROM by using a number of different ROM-editing commands. If by modifying your ROM you get a good checksum, try playing the game again to see if the bug still exists. If it still exists, please report the bug.
- There are a few exceptions to the above rule. Some Sufami Turbo and beta dumps that are in the NSRT db have a bad checksum and are unfixable.
- If the ROM is found in the database, and after
Good, your ROM is a "good dump." By all means, report the bug.
When you make a bug report, you need to include the verification information. In order to copy and paste this information from the command prompt, you should use the -loginfo command. For example, nsrt -loginfo "Super Mario World (U).sfc". This will output the verification information to a file,
nsrtlog.txt, in the same directory as the ROM. Just open
nsrtlog.txt and copy/paste the information into your bug report post.
There are a few cases when you may need to edit a ROM in order to get it to work with ZSNES.
If you are particularly attached to your ROMs, you should back them up before using any of the following commands.
The data within an interleaved ROM file has been re-arranged from its original order on the game cartridge. This is mostly a result of cartridge dumping hardware. Nach, the creator of NSRT, has written a document about the technical details of interleaved SNES ROMs, if you are interested.
ZSNES is able to load most ROMs that are interleaved. However, ZSNES may not be able to load some interleaved ROMs, and ZSNES can't load any interleaved SuperFX ROMs. If you have an interleaved ROM that won't load (including all SuperFX ROMs), you need to deinterleave it in order to play it.
In order to deinterleave a ROM, run NSRT with the -deint command. For example, nsrt -deint "Super Mario World 2 - Yoshi's Island (U).sfc".
You can deinterleave many ROMs at once by just running nsrt -deint *. Use -r too if you want NSRT to search subfolders. There is no downside to having un-interleaved ROMs, so don't worry about running this command on all your ROMs.
NSRT headers are special headers that you can add to your ROM files. You can add them only to ROMs that are found in the NSRT database. Please read the NSRT documentation file,
nsrt.txt for more information.
One of the most useful functions of NSRT headers is their integration with ZSNES. If your ROM has an NSRT header and the game uses special controllers such as an SNES Mouse or Super Scope, ZSNES will automatically enable the appropriate special controllers when you load the ROM.
To add NSRT headers to your ROMs, just run NSRT with the -addnsrt command. If you want to add NSRT headers only to those ROMs for games that use special controllers, instead use the -addspec command.
You can use the -control command by itself to see a list of all games known to use special controllers. The -loginfo command does not work with -control, so if you want to output this list to a file, use the following command: nsrt -control > filename. For example, nsrt -control > special_controllers.txt.
Run NSRT with the -remhead command.
Turning bad ROMs into good ones
Let's say you decide to add some NSRT headers to your ROMs so that the appropriate special input device is automatically enabled when you load the ROM into ZSNES. But let's also say that the ROM to which you want to add the NSRT header isn't detected in NSRT's database. This will prevent you from adding an NSRT header, because NSRT has no way to know that the ROM to which you want to add the header really is the game it says it is. There are two things we can do to a ROM that might make NSRT recognize it in its database. If the ROM is an overdump, NSRT can trim any extra empty space within the ROM in order to make it a good dump. Additionally, NSRT can change some known hacked ROMs into good dumps.
Run NSRT with the -findover command to make it list any ROMs that it believes are overdumps.
Run NSRT with the -trim command to make NSRT trim all ROMs that it believes are overdumps. However, you should not do this, because NSRT isn't foolproof about what ROMs it thinks are overdumps.
You should run NSRT with the -safetrim command. This will only trim a ROM if the trimmed ROM would be a good dump, found in the NSRT database.
Fixing hacked ROMs
nsrt.txt, NSRT can fix the following hacked ROMs:
|Bad CRC32||ROM Name||What is wrong|
|0xB2EDBF88||Metal Combat: Falcon's Revenge||Hacked to appear as SFX game|
|0x8745A442||Tales of Phantasia||Hacked checksum|
|0xDC1BEB4D||ToP Interleaved/Swapped||Hacked checksum|
|0x1BF3DB9A||Honkakuha Igo Gosei||Hacked to appear as SFX game|
|0x6810AA95||Bazooka Blitzkrieg||ROM size hacked|
|0x61E29C06||The Tick||Region hacked|
|0x8FC452A0||Drift King Shutokou Battle 2||Hacked name and checksum|
|0x1EF90F74||Jikkyou Keiba Simulation Stable Star||Region hack|
|0x45417117||Winter Gold FX||Company hack|
|0x4ab225b5||Krusty's Super Fun House||Region hack|
|0x77fd806a||Donkey Kong Country 2||Bad dump fix|
|0x340f23e5||Donkey Kong Country 3||Copier hack|
|0xDAC1C838||Silva Saga 2||Copier hack|
|0x1B3BC708||Star Fox 2||Older compile|
|0x1FB1CF76||Star Fox 2 newer||Inaccurate header|
|0x4E5E8810||Super Battletank (U)(R1.1)||Hacked name|
|0xC070DDF0||Rockman & Forte||Hacked company|
|0xDDAA7E6B||Dragon - The Bruce Lee Story||Internal name, copier hack|
|0x199A8FA2||Hebereke's Popoon||Region hack|
|0x3F79EAD7||Muhammad Ali Boxing||Internal name hacked|
To fix one of these ROMs, run NSRT with the -fix command.
Jipcy is the original author of this document. He began writing it on December 16, 2006.
Thank Nach and the NSRT Team for creating this wonderful tool!