Points
- It is highly recommended that you make regular native saves. Although state
saves usually work OK, this is not guaranteed due to many things that can
go wrong in the core and memory of the emulator. Native saves are more reliable
(and smaller!) than state saves. By using both methods (rather than just state
saves) you have a backup if anything goes wrong.
- For state saving to work the ROMs must be identical - that is, the ROM that
the game was saved from must match exactly the one that the state is loaded
into. You may be able to share native saves between different versions of
a game, but you cannot ever do this with state saves. Project64 tags state
files with ROM header information and will check for and prompt you on violation
of this rule.
- Native save files must not be Read Only, games need to be able to read/write
at any time. for example if you back up your save files to a CDR, when you
copy them back to your harddrive they may still be marked read-only - you
must change the attributes with Windows Explorer. Project64 does not do this
automatically, in case you don't want your file to be updated for any reason.
Native Saves
To understand the game data saving and loading of Project64, you must also
understand the N64's own saving and loading systems (if you aren't already familiar
with them), because Project64 emulates all those systems.
There are four types of save system used on the N64...
- EEPROM (a cartridge save type), which comes in two sizes:
- 4Kbit EEPROM
- 16Kbit EEPROM
- SRAM (a cartridge save type)
- FlashRAM (a cartridge save type)
- MemPak (an optional hardware accessory for the N64, plugs into controller*)
...which we will call the "native" N64 save systems (to differentiate
them state saving, which is something entirely different, see below).
The cartridge save types use either non-volatile memory (EEPROM, FlashRAM)
or a battery (SRAM) to keep a small amount of writeable memory intact inside
the actual game cartridge, when the power to the console is off. Although it
is on the same PCB, this save memory is physically seperate from the game ROM
chips - Project64 does not write to the ROM file or anything like that. You
don't have to worry about the difference between EEPROM, SRAM and FlashRAM,
because all three are handled the same from your point of view. You should be
aware that MemPaks, unlike that other save types, can be handled by input plugins,
which is logical if you consider the original system again.
- Whenever an N64 game would save to or load from its game cartridge, Project64
automatically updates a file called {internal ROM name}.{type}** on your hard
drive (you can configure folders
to choose the location). If this file does not exist, it is created as soon
as the ROM is first booted, and is the only file Project64 will use for this
game.
- Whenever the N64 game would save to a Controller Pack (MemPak), either Project64
creates a file on your hard drive, or the input plugin manages the saving
process, depending on the capabilties and configuration of the input plugin
(see plugin selection).
The resulting save files will be compatible with both other N64 emulators and
a real N64 system (if you possess the means to insert and extract them (see
importing and exporting).
*Mempak is required by some games to save, is an optional extra in some games,
is not used at all in some games. Any particular game can use any one
cartridge save type, and/or the Controller Pak. This is normally handled
transparently by the emulator.
** for example, you are playing the game Mario64. Mario 64 uses the EEPROM
save type, and your ROM has the internal name "SUPER MARIO 64". Therefore
the save file automatically created and managed by Project64 will be called
"SUPER MARIO 64.eep" in your configured
folder.
State Saves
In addition to emulating the native save types, Project64 is also capable of
saving the entire state of itself - everything that it needs to know
to recreate an exact point in time during the emulation of a particular game.
can be broken down into two types:
- slot saves ("Quick Save")
- named saves ("Save As..."
A game saved and loaded in this way does not "know" that it has been
saved and loaded - it is as if the interruption never happened. This is clearly
something quite different to what you can do a real N64. This is called "state
saving", the resulting file is a "state save" or "saved
state", and will be relatively large compared to a native save file.
State save files will not be compatible with other N64 emulators unless they
explicitly support the Project64 state save file format (at the time of writing,
several do). It is worth noting that a state save file will also save any errors
that may have occurred and be present in the memory of the emulator, and for
this reason, state saves are generally less reliable than native saves, especially
over a long period of time playing.
To provide you with more flexibility in state saving, a number of "slots"
are provided. A "slot" is simply a number, which is associated with
a particular keyboard key so that you can select the file with a single button
press. The advantage of slots is that you save switch between quickly, the disadvantage
is that you might have trouble remembering what you put in each slot! Every
game has its own independent set of 10 slots, so don't worry about one game
overwriting another.
Default Slot0 "Game
Name.pj0.zip" with a shortcut of
0
Slot1
"Game Name.pj1.zip" with a shortcut of 1, all the way to,
Slot 9 Game Name.pj9.zip,
with a shortcut of 9.
Save As... just means you can choose a filename and location for your state
save file. This is good when you finish a session and want to make a note of
where you were in the game.
It is normal for the system to pause for a short while while generating, compressing
and writing the save file. The quicker your system, the shorter the pause.
Importing and Exporting saves....
- ...to and from other emulators
- ...to and from a real N64 system
Project64 is compatible with the N64 saves (not necessarily state saves) from
other N64 emulators and a real N64 system, but you may need to byteswapp the
files (use e.g. Azimer's saveswapper utility) and you will definitely need to
rename the files to what Project64 expects (see your existing save folder for
the correct file name - if you are not sure what the filename should be, save
in the game anywhere a file will be created and you can use that name). The
format is also explained under "native saves" above.