WAIT! This is not an illegal ROM site; sorry if you were (mis)lead by
a search engine. You will not find any ROMs (of any kind, legal or not) on this
site. This page contains information about ROMs only.
After reading my introductory FAQ you know "ROMs"
are the games (I hope!?). There's a bit more to it than that though - what do
you want to know more about?
- "dumping" (backup units)
ROMs are made from game cartridges with hardware devices known usually as
backup units. These are (were - I think they lost their legal cases) available
for purchase over the web. The cheaper devices must be connected to a PC (via
a cable to the parallel port) in order to upload or download ROMs, the more
expensive ones contain writeable media drives such as the Zip, or conventional
CD-ROM drives, so they can be used independently of a PC.
- file extensions
Possible file extensions for N64 ROMs are: .n64, .v64, .z64, .rom, .bin, .jap,
.usa, .pal and more. The extension is supposed to denote which hardware
device was used to dump the ROM, and hence the byte order. However, people
are lazy about using the correct extension, so there is no guarantee. A good
ROM renaming utility will apply the
correct extension for you. The only officially 'correct' file extensions are
.v64 (for bytewapped ROMs) and .z64 (for non-byteswapped ROMs), so I recommend
sticking to these, otherwise your emulator might not be able to load your
game, you could get into trouble with ROM utilities, and so on.
- headers
The ROM file formats include a small amount of space set aside for information
about the ROM, a bit like the ID3 tags on MP3s. This data includes the "internal
name", which is just the name of the game stored in the ROM, often abbreviated
to fit space constraints. This is sometimes what is used by emulators to identify
what game a ROM is, so they can apply the settings that game needs (more advanced
emulators tend to use the CRCs instead). You can find out a ROM's
header using a ROM renaming utility,
or with an emulator (for example, the "Description" column in Nemu
shows all your ROMs' internal names taken from the headers).
- Manufacturer code
A letter representing the company who made the game, usually "N"
for Nintendo. This information is not used by emulators as far as I know.
- Card ID
Umm, not sure what this is (?!) Perhaps refers to circuit board/pcb type?
I don't think it's used for anything in emulation.
- CRCs
The CRCs (there are two: CRC1 and CRC2) (CRC stands for "cycle redundancy
check" numbers) are an exact way to identify a particular version of
a particular game. CRCs are calculated by the backup device at the time a
ROM is made, based on the data in the ROM, and stored in the file. This data
can later be used to check that a ROM has not been altered (see below). CRCs
also serve as a useful identifier for ROM naming utilities, and are used by
many emulators to identify ROMs - good (better than Internal Name) but not
perfect, because the file may have changed since the CRC was calculated.
- intros & trainers (hacking)
Sometimes a ROM is deliberately altered, usually to remove copy protection,
sometimes to insert an intro or trainer. "Intros" give a new title
screen before the game loads, (usually the name of the group who released
the ROM), trainers can give you a screen when you boot the game that lets
you cheat. Either way, as I see it these things are bad, and they sometimes
make games crash - so you want unhacked ROMs!
- corruption-
"bad roms"
Corruption, by contrast to hacking, is accidental alteration of ROMs' contents,
for example by a storage (hard drive) error, or most likely during transmission
across a network. All these alterations can be detected by comparing the CRC
of the suspect ROM to a known good value (this is what a ROM renaming utility
does). Corrupt ROMs tend not to work, but in strange and unpredictable ways...
When I say "maybe you have a bad rom" this means that your ROM image
is not a valid Nintendo 64 game, i.e. it wouldn't work on a real N64 and probably
won't work on an emulator either. One of the following reasons:
- file has been truncated (cut short) e.g. during download
- it was a bad dump (the ROM was never good in the 1st place)
- internal data was corrupted during download
If you download compressed (zippped) ROMs you will usually know when a file
is corrupted during transfer. There is no sensible way to repair a bad rom,
you should delete it and find another copy, preferably from a different source.
- "fixed" roms
The name is misleading - these are ROMs which someone has attempted to restore
to a working state... this are NOT the same as a "verified good dump"
and the ROMs should be considered BAD, and preferably not used - expect problems
with emulation.
- country codes
The N64 consoles sold in one part of the world are not always exactly the
same as those sold in another. This is partly an anti-import measure (like
the region encoding on DVD movies) and partly due to technical differences
in the TV standards across the world. The end result of all this is that N64
games come in three flavours: Japanese, American and European. These are abbreviated
to USA (sometimes called NTSC), JAP and PAL, or using the standard ROM country
codes: E, P and J. Sometimes a game is not released in all areas - Earthworm
Jim for example, was only released in Europe, and as a result there is only
version of it - PAL. It is important to pay attention to the country code
because (a) you might not want a JAP version if you don't understand the language
(!) and (b) often not all versions work in any particular emulator. For example,
only the JAP version of Wave Race works in UltraHLE.
- Mbits & Mbytes (size)
ROMs sizes are measured in megabits, not megabytes. There are eight bits in
a byte so to convert cartridge size to file size divide by 8 (or for vica-versa,
multiply by 8). ROMs are always exactly 8, 12, 16, 32 etc. megabytes (= 64,
96, 128, 256 etc. megabits) in size when uncompressed. As a side effect, this
serves a useful function - if,for example, an 8MB ROM isn't exactly 8,388,608
bytes long you know there is something wrong with it. ROMs tend to compress,
using .Zip format, to between 60-80% of original size, though in rare cases
as much as 40% or as little as 95%, it all depends on the internal content
of the game.
- byte order
(flipping)
There are three possible sequences for the byte order of a ROM. Some emulators
(e.g. uHLE) can load ROMs faster if the byte order is reversed - this is called
"flipping" and produces a "flipped ROM". However, other
emulators (e.g. Nemu) expect unflipped ROMs - Nemu loads ROMs faster if the
ROM is NOT flipped. There are utilities available
to convert from one state to the other. Most emulators can do the conversion
themselves on loading the ROM, but if it's a game you play often it would
be worth making the change permanent.
There are three possible byte orders for N64 ROMs:
| description |
backup unit |
byte order |
|
file |
| "byteswapped" |
Dr. V64 |
Doctor V64 |
[BADC] |
.v64 |
| "wordswapped" |
(Fliprom format) |
Little Endian |
[DCBA] |
.n64* |
| "not byteswapped" |
Mr. Backup Z64 |
Big Endian |
[ABCD] |
.z64 |
*or .rom
There are also some other non-standard file extensions that are sometimes
used: .bin, .mov, .pal, .eur, u64, and others. If you have a ROM with one
of these non-standard extensions you should check it's internal byte order
with a suitable ROM utility and give the file
the appropriate extension (if the utility doesn't do it for you!).
What you should not do is simply say "oh look, UltraHLE can't load Mario.z64,
so i'll rename it Mario.v64!" because you haven't changed the fact that
is still a .z64 format file! This might actually work for UltraHLE, but could
cause problems later, for example if you use different emulators or want to
patch the ROM.
Emulator/ROM compatibility:
please see chart
Just to make things really confusing, emulator can sometimes load ROMs they
say they can't, and vice-versa - UltraHLE can load .z64 files through the
menu, but won't list them in the GUI, and TRwin can load .n64 files if they
are renamed .rom.
I recommend converting all your ROMs to the non-byte-swapped (Z64) format
(if they aren't already) and giving them the extension .z64. If you do this
you can be sure that they are all in their original form and any emulator
or utility will be able to load them.
- revisions
It is not unknown for a game to undergo changes over the period of time it
is in retail. Game manufacturers take the opportunity to fix any bugs that
were discovered after release. These subsequent releases are called revisions
of the game. For example, there are at least three known versions of "The
Legend of Zelda" in the US, usually referred to either as v1.0, v1.1
and v1.2, or as rev0, rev1 and rev2 respectively (in Japan, there was only
one version, strangely). It is hard to tell which version of a game you have,
even with the cartridge, but ROM renaming utilities
will recognise the revision. The actual differences, in gameplay terms, between
revisions, tend to be minor, but it is quite common to make a difference to
compatibility with emulators!
Conclusions
So you can see that the ROM situation is far more complicated than you
might imagine. If you take the number of possible file formats, multiply by
the number of country codes, multiply by number of revisions, flipped or unflipped,
do the math, you can get over 50 (!) different possible files for each game
floating around on the Net. And this isn't even including all those corrupt
files and hacked headers, or ROMs with trainers and God knows what else attached.
This goes some way to explain why some people can get game X to work, whilst
others can't. It's a jungle out there...