SourMesen / Mesen-S

Mesen-S is a cross-platform (Windows & Linux) SNES emulator built in C++ and C#
GNU General Public License v3.0
414 stars 102 forks source link

Feature request: support multi-rom loading via "Explicit Archives" #55

Closed FitzRoyX closed 4 years ago

FitzRoyX commented 4 years ago

I'm primarily a dumper and preservationist. This is an idea I had years ago which has evolved a bit as more games have been dumped. I guess you could call them "explicit archives". The purpose is to apply consistent storage logic to any memory cart, regardless of what system it belongs to or how many distinct roms it contains.

Blobbing pieces together has problems, mostly obfuscation of basic data in the file browser (does this NES file have CHR? Is this checksum for PRG or PRG+CHR? Does this SFC file have coprocessor data? Is this checksum PRG or PRG+DSP1?). Also, needing to employ ordering rules, which I think is far more obstructive and arbitrary than naming rules. The more pieces there are, the worse it gets.

snes9x supports loading explicit archives now to an extent. Mostly to avoid MSU1 filenaming hell, since I don't think they do LLE yet. I'd appreciate you adding support as well.

These are the rules: the contents of a multi-rom container are named as such when present: program.rom (all games have this) character.rom (30% of nes games have this) data.rom (a few SFC SPC7110 games have this) cx4.data.rom dsp1.data.rom dsp1.program.rom dsp1b.data.rom dsp1b.program.rom dsp2.data.rom dsp2.program.rom dsp3.data.rom dsp3.program.rom dsp4.data.rom dsp4.program.rom sgb1.boot.rom sgb2.boot.rom st010.data.rom st010.program.rom st011.data.rom st011.program.rom st018.data.rom st018.program.rom

SourMesen commented 4 years ago

Are these essentially meant to be the same as higan's game folders? Or are they meant to be in zipped up in an archive file (asking since you called it an archive)?

FitzRoyX commented 4 years ago

ZIP archive, like MAME. ZIP is ubiquitous, avoids filename conflicts by having its own extension, and is treated like a file in hyperlink protocol and file systems. But there's really no conflict here that prevents you from also supporting "folders with extensions" if you wanted to make those loadable.

Your emulators, MAME, snes9x, and Nestopia are some examples of emulators that come with preset directories to which generated data (usually of fleeting importance) is written. This prevents having to houseclean rom directories from blockbuster form back to their original form. It also prevents user data hitching a ride like a tick in distribution channels. I find this to be good practice.

byuu, however, prefers to achieve this in a more elaborate way with two copies of the game. He has his virgin dumps on one HD, and then extracts a copy onto his main HD for play. It doesn't matter if this duplicate folder gets full of user data because it's just a burner dupe of the original.

Hopefully that explains everything.

FitzRoyX commented 4 years ago

I've lost interest in this idea, so I'm closing it out.