What's new

Is there a way to make game saves that multiple emulators can use?

Skull_Kid

New member
Whenever I save a game using an emulator it creates a save that apprently only that emulator can use. Is there a way to fix this? I'm sort of new to this, so sorry if the answer to this is obvious.
 
Last edited:

A.I.

Banned
Yeah, me too! I got PJ64 game saves (native) that i wanna use for 1964 but it wont let me! :angry:
 

Allnatural

New member
Moderator
Blind One said:
Yeah, me too! I got PJ64 game saves (native) that i wanna use for 1964 but it wont let me! :angry:
You'll need to change the filenames, but native saves are cross-compatible.
 

Allnatural

New member
Moderator
Blind One said:
Change to em what?
1964 includes the crc in the filename.

The simple answer is to just look at the save files generated by each emulator and make sure the names match before swapping.
 

Clements

Active member
Moderator
I hope one day that the 1964, PJ64 and Mupen64 teams will work together to develop a universal naming system for native save files.

We would no longer need to have three save directories when using these emulators and update them all manually.

With all SNES emulators, the save name is simply the filename of the game (like the Mupen64 format), so no renaming is required, so saves can be shared between ZSNES, Snes9x, bsnes, SNEeSe, Super Sleuth or what have you.

I already have a universal plugin folder that all three emulators use, so a universal save folder would save space and would be much easier to maintain.
 

Smiff

Emutalk Member
if we used filename different people sharing saves would have to rename the files. e.g. for the download section of pj64.net. also renaming the rom would break the link. so that would be more work & less reliable for most users.
we don't add CRC or similar ROM-specific tag because saves for nearly all games work across all versions of a ROM. so this saves most users work aswell. not many users use more than one version of a ROM either.
this is most of the reasoning off the top of my head behind the pj64 way of naming.

so... if anyone has a better naming idea than [internal name].[save type] we're open to suggestions. i guess we could drop the type extension and call them all .sav or something :/ (and still identify the type by size) but i don't particularly like this either..

there is no perfect naming method for all users, but we have given this some thought already and i think ours is better overall than any other idea we've had yet. it also happens to be what zilmar used from the start :p

BTW state save naming (NOT format) we have changed for 1.7 (from internal name to GoodName, because for states exact ROM does always matter) but there we only have to worry about compatibility with ourselves.

it is a topic worthy of discussion though and i'm not against a common naming format on principle, we just won't use it if we think it's worse than our current one. hope this makes sense!
 
Last edited:

Clements

Active member
Moderator
PJ64 in my view uses the least effective native save naming system of the three. 1964 and PJ64 are the only emulators I have come across that use internal names in native save names. The major flaws in this system are:

  • It can only differentiate between internal name, so you cannot play games from multiple regions or rom revisions (e.g. V1.0, V1.1) independently if the internal name is the same like you can with all other emulators.

    This notably causes major problems (including some graphics glitches) with Master Quest - you cannot play the original Ocarina of Time and Master Quest independently as they share an internal name (you must either use the rom that had the internal name and region altered, or not play the original Ocarina of Time). I must use 1964 or Mupen64 in order to play with the dump that I have.

    See below. I completed Ocarina of Time with PJ64. When I load up Master Quest, the game is already complete. Also, my name was garbled because it was using the Ocarina of Time save.
  • Japanese games also have Japanese characters in their internal names, so PJ64 calls them weird names such as ºÞ´ÓÝÓÉɹ½ºÞÛ¸.sra instead of something much simpler such as Tsumi to Batsu - Chikyuu no Keishousha (J) [!].sra, as there are no garbage characters. In general, the saves folder looks a bit messy, and harder to differentiate between saves.
  • Since the saves are named differently in each emulator, I use triple the hard drive space for exactly the same saves. I also need to manually edit filenames to get them to work with another emulator. If you complete a dungeon in Zelda with PJ64, your save files in Mupen64/1964 are now outdated and need to be copied over and renamed. If you have over a hundred games, this becomes counter-productive, complicated and time consuming. This is fine if all you use is PJ64, but many users such as myself use many. With Snes/Megadrive/NES/You name it emulators there is no issue here.

Mupen64's naming system is simplest - yet effective in all cases. With all rom images named to GoodN64, the saves get called the same as the filename, so it is easy to see which save corresponds to each rom. This also allows it to differentiate between roms 100% effectively. SNES emulators are also able to differentiate between regions as well. See below.

Format:

[Filename of rom image].[EXT]

The only flaw with Mupen64's system is that you need to rename saves downloaded from external sources. But then again, there are games that have a different internal name in different regions - so downloads from PJ64 are technically not always universal. Examples:

Code:
Hybrid Heaven (E) (M3) [!]      HYBRID HEAVEN PAL
Hybrid Heaven (J) [!]           HYBRID HEAVEN JP
Hybrid Heaven (U) [!]           HYBRID HEAVEN USA

WWF WrestleMania 2000 (E) [!]   WRESTLEMANIA2000
WWF WrestleMania 2000 (J) [!]   Ú¯½ÙÏƱ 2000
WWF WrestleMania 2000 (U) [!]   WRESTLEMANIA 2000

Different internal name in each region. Many Japanese games also have a unique internal name. There are at least 20 or so of these.

So, even an advanced option to change the format would be most welcome like so:

Code:
[X] PJ64 Format      [Internal Name].[EXT] (Default)
[-] Mupen64 Format   [GoodN64 name/Rom image filename].[EXT]
[-] 1964 Format      [Internal Name][CRC32][Region].[EXT]
 
Last edited:

Smiff

Emutalk Member
i think you clements, moving between 3 emus to play the same game, are not a typical user!
we would rather make things easier for less skilled users (the majority), than highly skilled users (the minority, like you).
your points are not wrong, but each way has pluses and minuses like i said.

Clements said:
PJ64 in my view uses the least effective native save naming system of the three. 1964 and PJ64 are the only emulators I have come across that use internal names in native save names. The major flaws in this system are:

1) It can only differentiate between internal name, so you cannot play games from multiple regions or rom revisions (e.g. V1.0, V1.1) independently if the internal name is the same like you can with all other emulators.
nearly always a good thing, because most people don't want to play different versions, and even if they do, it nearly always works and is then more convenient.
This notably causes major problems (including some graphics glitches) with Master Quest - you cannot play the original Ocarina of Time and Master Quest independently as they share an internal name (you must either use the rom that had the internal name and region altered, or not play the original Ocarina of Time). See below. I must use 1964 or Mupen64 in order to play with the dump that I have.
yes agreed in this one case it's not good (arguably that's the fault of the game for using same internal name but yes :p)

2) Japanese games also have Japanese characters in their internal names, so PJ64 calls them weird names such as ºÞ´ÓÝÓÉɹ½ºÞÛ¸.sra instead of something much simpler such as Tsumi to Batsu - Chikyuu no Keishousha (J) [!].sra, as there are no garbage characters. In general, the saves folder looks a bit messy, and harder to differentiate between saves.
normal users should not be messing with their save folders? the emu should just work. most users probably never even browse (or never want to have to browse) to their PJ64 folder. I was thinking of adding an import native option to copy files into there for them.

3) Since the saves are named differently in each emulator, I use triple the hard drive space for exactly the same saves. I also need to manually edit filenames to get them to work with another emulator. If you complete a dungeon in Zelda with PJ64, your save files in Mupen64/1964 are now outdated and need to be copied over and renamed. If you have over a hundred games, this becomes counter-productive, complicated and time consuming. With Snes/Megadrive/NES/You name it emulators there is no issue here.
hard drive space for native saves is almost a non-issue - they are tiny, even uncompressed.
normal users play a whole game in one emulator, or if they do change emus, they only do it rarely, like once per game if they find an un-workroundable issue. why on earth are you changing emus so much (if its for testing, great but you're not a typical user again).
...
Mupen64's naming system is simplest - yet effective in all cases. With all rom images named to GoodN64, the saves get called the same as the filename, so it is easy to see which save corresponds to each rom. This also allows it to differentiate between roms 100% effectively. SNES emulators are also able to differentiate between regions as well. See below.

Format [Filename of rom image].[EXT]
well, it would create more work for us and most users. we like not having to rename saves or worry about what the rom name is or GoodN64 changes etc..

The only flaw with Mupen64's system is that you need to rename saves downloaded from external sources. But then again, there are games that have a different internal name in different regions - so downloads from PJ64 are technically not always universal. Examples:

Hybrid Heaven (E) (M3) [!] - HYBRID HEAVEN PAL
Hybrid Heaven (J) [!] - HYBRID HEAVEN JP
Hybrid Heaven (U) [!] - HYBRID HEAVEN USA

WWF WrestleMania 2000 (E) [!] - WRESTLEMANIA2000
WWF WrestleMania 2000 (J) [!] - Ú¯½ÙÏƱ 2000
WWF WrestleMania 2000 (U) [!] - WRESTLEMANIA 2000

Different internal name in each region. Many Japanese games also have a unique internal name. There are at least 20 or so of these.
true but like i said non of the methods is perfect

So, even an advanced option to change the format would be most welcome like so:

[X] PJ64 Format - [Internal Name].[EXT] (Default)
[-] Mupen64 Format - [GoodN64 name/Rom image filename].[EXT]
[-] 1964 Format - [Internal Name][CRC32][Region].[EXT]

now this is maybe a nice advanced feature, perhaps a hidden option, the gui could be nasty, its a very "once everything else is done" kind of feature.
 
Last edited:

Doomulation

?????????????????????????
I believe that adding options that helps advanced users but does not hinder casual users could be nice to add, though. I mean, what casual users looks at the filename of the native saves?
 

Clements

Active member
Moderator
I am an advanced user with hundreds of games, and I was a major fan of the system. Due to the inaccuracies with N64 emulation at this time, I need to use pretty much every emulator and plugin to play certain games properly.

Mupen64 for example has special 'hooks' for Glide64, and so Glide64 works best with this emulator. If you use Glide64 with PJ64/1964, many framebuffer effects are broken since these emulators do not use these specific hooks.

Rice's Video works very badly with PJ64, as I get horrible stuttering. Rice's Video uses an extended zilmar spec with added framebuffer hooks that work with 1964 and not PJ64 - as exhibited in Dr. Mario - where the backgrounds only work correctly with 1964+Rice's Video.

So, to get certain games working as best as possible, you need all three emulators, and all the main plugins as well..

I merged the plugin folder some time ago, saving space and making it easier to update plugins. However, each emulator has their own proprietary Save directory, and there is nothing I can do about this to simplify it. When I wanted to test framebuffer hooks for Perfect Dark with Glide64 (recently), I had to copy a save and rename it to work so I have access to the Mauler gun and Device Training items. As such, I have to browse and copy the save folder contents all the time - a process that is not actually necessary if something as simple as a standard naming format existed.

Imagine if Snes9x used a proprietary naming system for native saves - a Windows Port of 1.50 was recently released by an outside coder, so if you wanted to test some games with some updated saves, you could need to rename hundreds of files manually from another emulator. What a headache! Luckily, there is no such problems, so I can use 6 or more different emulators with exactly the same save files.

As I use Jabo's Input plugin, each Controller Pak save is 0.25MB - one per game. If you save about 100 games, this alone takes up 25MB. This needs to be tripled in my case - giving 75MB. There is also the addition of the eep/sra saves, probably another 2MB for those in each emulator, about ~6MB tripled. As a result, you have almost 100MB in just save files, which isn't a lot, but is about a sixth of a CD. This can be cut down with N-Rage's but you have to change mempaks every time, know which saves are on which pak etc. The more games you play, the more space is wasted, and the harder and longer it takes to maintain saves.

I would be very thankful for an advanced option to save in another format. For casual users, that use a single emulator with a handful of games, it doesn't matter much, but there must be other enthusiast users like myself that like to use more than one emulator per system and have many games.
 

Smiff

Emutalk Member
ok thanks clements i'll make a link to this and we'll come back to this later

you are right if you include mempaks size starts to become an isssue, mempaks should be named the same way probably?

if anyone else has thoughts on this please add them here.
 

Poobah

New member
I agree with Clements on this. I, too, use "shared" folders between different emulators, and the different naming schemes are a nuisance.

Perhaps a new "saves" tab could be added to the configuration options, when in "advanced mode". This tab could have a few text-boxes where users could choose the exact names used, using escape sequences such as $INTERNAL_NAME or $FILE_NAME. Some radio buttons could also be present, allowing users to select either "custom" naming schemes (that would enable the text boxes mentioned above) or presets for compatibility with other emulators. Then, once the changes are made, the user could be prompted to have PJ64 rename all of the saves in the old format to use the new format just specified.
 
Last edited:

Smiff

Emutalk Member
i'm coming round to what clements wants - just using filenames
jabo likes that aswell
zilmar is not against the change, but is concerned about users upgrading and how we're supposed to update the filenames for them. um, any ideas?
 

Clements

Active member
Moderator
Although I'm not a dev, I know that tools such NSRT (for Snes rom images) can rename save files to match what your rom images are renamed to, so it is definitely possible to create a separate automated utility to rename save files accordingly en-masse. This could be built into the emulator. Here is a discription:

-saveren

Creates a batch file called saveren.bat. This file is used to rename the files in your emulator's save directory to the ROM's new name. Simply place the batch file into the emu's save directory and run it. Afterwards, your save states and SRAM files should work when you load your renamed roms. Implies -rename.

On *nix platforms, this works in conjunction with the bundled nren utility.

Even simpler than this, PJ64 perhaps could also search the save directory for either SUPER MARIO 64.eep or Super Mario 64 (U) [!].eep (basically the three formats we have today), and if found, the save is loaded and then renamed to whatever format (PJ64/1964/Mupen64) you selected in the advanced options once the game has been saved again. This would rename the saves one at a time rather than at once like the first method.
 

Poobah

New member
Smiff said:
i'm coming round to what clements wants - just using filenames
jabo likes that aswell
zilmar is not against the change, but is concerned about users upgrading and how we're supposed to update the filenames for them. um, any ideas?
PJ64 could also just still use the old naming scheme by default for compatibility, and when the users change the naming scheme, the save files could re renamed accordingly. This way "non-power-users" wouldn't have any problems, and "advanced-users" would still have the desired functionality.
 
Last edited:

Top